打工人福音⚡:公牛充电协议,建议收藏!

推荐一套企业级开源充电桩平台:完整代码包含多租户、硬件模拟器、多运营商、多小程序,汽车 电动自行车、云快充协议;——(慧哥)慧知开源充电桩平台;https://liwenhui.blog.csdn.net/article/details/134773779?spm=1001.2014.3001.5502

目录

1 总则

1.1 协议概述
1.2 通信接口
1.3 接入流程

2 通信协议结构

3 应用层报文帧格式

3.1 应用层数据结构
3.2 数据格式定义
3.3 名词解释

4 帧类型定义一缆表

5 通信协议流程

5.1 上电流程
5.2 app 充电流程
5.3 刷卡充电
5.4 离线充电模式

6 注册心跳帧类型码数据定义

6.1 充电设备登录认证
6.2 登录认证应答
6.3 充电设备心跳包
6.4 心跳包应答
6.5 计费模型验证请求
6.6 计费模型验证请求应答
6.7 充电设备计费模型请求
6.8 计费模型请求应答

7 实时数据帧类型码数据定义

7.1 读取实时监测数据
7.2 上传实时监测数据
7.3 充电握手
7.4 参数配置
7.5 充电结束
7.6 错误报文
7.7 充电阶段 BMS 中止
7.8 充电阶段充电机中止
7.9 充电过程 BMS 需求与充电机输出
7.10 充电过程 BMS 信息

8 运营交互帧类型码数据定义

8.1 充电设备主动申请启动充电
8.2 运营平台确认启动充电
8.3 运营平台远程控制启机
8.4 远程启动充电命令回复
8.5 运营平台远程停机
8.6 远程停机命令回复
8.7 交易记录
8.8 交易记录确认
8.9 远程账户余额更新
8.10 余额更新应答
8.11 离线卡数据同步
8.12 离线卡数据同步应答
8.13 离线卡数据清除
8.14 离线卡数据清除应答
8.15 离线卡数据查询
8.16 离线卡数据查询应答

9 运营平台设置帧类型码数据定义

9.1 充电设备工作参数设置
9.2 充电设备工作参数设置应答
9.3 对时设置
9.4 对时设置应答
9.5 计费模型设置
##### 9.6 计费模型应答
9.7 二维码信息设置
9.8 二维码信息应答

10 车位锁通信协议定义

10.1 地锁数据上送
10.2 遥控地锁升锁与降锁命令
10.3 充电设备返回数据(上行)

11 电设备远程维护帧类型码数据定义

11.1 远程重启
11.2 远程重启应答
11.3 远程更新
11.4 远程更新应答

12 附录

12.1 充电停止原因代码表
12.2 CRC16 校验的计算方法
12.3 协议需知

1 总则

1.1 协议概述

本协议适用于公司所有充电产品包括交直流充电桩、电瓶车桩,交流桩及电瓶车桩在本协议中部分数
据无需上送,具体内容在下面协议部分均有标注。

1.2 通信接口

充电设备和充电运营管理系统之间的通信接口采用基于 TCP/IP Socket 的通信方式实现,按照长连接
工作模式。两个系统可部署在同一个或者不同的企业网络环境中,可以通过局域网或者互联网实现互相连
接通信。

充电设备通信联接方式支持有线或无线连接运营平台服务器或者多个充电设备经过集中器与运营平台
连接。

充电设备支持服务器的直接 IP 地址与网络域名解析,地址与连接端口均为可设置参数。

1.3 接入流程

详见上电流程。

2 通信协议结构

本协议的通信协议结构如图 1 所示。本协议采用的 TCP/IP 传输定义与标准定义一致。

3 应用层报文帧格式

3.1 应用层数据结构

数据结构定义说明:

  • 前导域代表一帧数据的开始,固定为 0x5A、0xA5;
  • 版本域为协议版本号,用于协议有升级时,解析新老协议差异内容;本协议版本号为1.0.0.01,两字节分别为 0x11、0x27(十进制的 10001);
  • 序号域即数据包的发送顺序号,用于业务实现收发一致性校验。从 0 开始顺序增加,如是应答数据包,则与询问数据包序号保持一致,当充电设备与平台网络断开重新建立连接或者溢出后归 0;
  • 加密标志只针对消息体(数据单元),0x00:不加密,0x01:AES128(CBC);
  • 命令字定义了上下行帧类型,表示不同的功能要求,充电设备的帧类型码为奇数,运营平台的帧类型码为偶数;
  • 长度域即前导域到校验域的整个数据帧长度,加密时,按加密后的长度,长度不超过 1036 字节;
  • 数据域即具体数据帧内容;
  • 校验域为从前导域到数据域的 CRC 校验,校验多项式为 0x180D,低字节在前,高字节在后,计算方式见附录。
3.2 数据格式定义

数据格式包括 BCD 码、ASCII、BIN 码(BIN 码均为低位在前高位在后)。协议中小数值均乘倍率(保留小数点位数)上送平台(例如:电压为 220.1,保留一位小数,上送到平台值为 2201,即
0x899)。

3.3 名词解释
  • 充电卡:平台默认充电卡为 M1 卡(不带储值),读卡器读取到的卡号为印刷在卡面上的逻辑卡号,用于充电设备与服务器数据交互。IC 卡或者 CPU 卡均采用平台 M1 卡的鉴权模式,不使用数据储存与写入功能。
  • 交易流水号:交易流水号为一次充电操作过程的统一标记,从远程启动充电或者卡鉴权回复时产生到最后设备结束充电的交易记录均使用同一个流水号,由平台产生(离线模式由设备按此规则生成),生成规则为 格式设备号(7bytes)+枪号(1byte)+年月日时分秒(6bytes)+自增序号(2bytes);示例:15010600019236012001061803423060。
  • 计损比例:计损比例定义在费率帧中,此项非零时,充电设备需要对上送平台充电量加上此比例,如<实时监测数据>中“计损电度”,则为“电度”基础上加上此比例得到的值。同理见<交易记录>中“计损尖电量”、“计损峰电量”、 “计损平电量”、 “计损谷电量”、“计损总电量”(计损比例置 0,则表示不计损)。
  • 设备编号:由平台生成提供给设备使用,不支持设备企自行生成的设备编号。示例:1501060001923601
  • 枪号:由 7 个字节设备编号+1 个字节的枪号生成。示例:1501060001923601/1501060001923602

4 帧类型定义一缆表

充电设备的帧类型码为奇数,运营平台的帧类型码为偶数;帧类型码分段定义,已定义的帧类型码不可重定义为其他定义;

5 通信协议流程

5.1 上电流程

充电设备在上电或者离线恢复后连接到平台,首先上送充电设备登陆认证,平台对设备的信息进行校验,并回复登陆认证应答,如果不符合则会断开当前建立的连接,如果验证通过,则设备先检查是否有离线状态下本地储存的实时监测数据或者交易数据,如果有则先上送到平台进行处理,随后充电设备发起充电计费模型的请求,平台检测计费模型与当前运营费率是否一致,并回复计费模型请求应答,如果不一致,设备需要向平台请求新的计费模型。

5.2 app 充电流程

app 充电流程与刷卡充电流程互通,即 app 充电可以用卡结束,app 鉴权时会将用户绑定的卡信息下发到充电设备,用于卡结束验证,卡充电可以用 app 结束充电。

5.3 刷卡充电

5.4 离线充电模式

6 注册心跳帧类型码数据定义

6.1 充电设备登录认证

6.2 登录认证应答

6.3 充电设备心跳包

6.4 心跳包应答

6.5 计费模型验证请求

6.6 计费模型验证请求应答

6.7 充电设备计费模型请求

6.8 计费模型请求应答

7 实时数据帧类型码数据定义

7.1 读取实时监测数据

7.2 上传实时监测数据

7.3 充电握手

7.4 参数配置

7.5 充电结束

7.6 错误报文

7.7 充电阶段 BMS 中止

7.8 充电阶段充电机中止

7.9 充电过程 BMS 需求与充电机输出

7.10 充电过程 BMS 信息

8 运营交互帧类型码数据定义

8.1 充电设备主动申请启动充电

8.2 运营平台确认启动充电

8.3 运营平台远程控制启机

8.4 远程启动充电命令回复

8.5 运营平台远程停机

8.6 远程停机命令回复

8.7 交易记录

8.8 交易记录确认

8.9 远程账户余额更新

8.10 余额更新应答

8.11 离线卡数据同步

8.12 离线卡数据同步应答

8.13 离线卡数据清除

8.14 离线卡数据清除应答

8.15 离线卡数据查询

8.16 离线卡数据查询应答

9 运营平台设置帧类型码数据定义

9.1 充电设备工作参数设置

9.2 充电设备工作参数设置应答

9.3 对时设置

9.4 对时设置应答

9.5 计费模型设置

9.6 计费模型应答

9.7 二维码信息设置

9.8 二维码信息应答

10 车位锁通信协议定义

地锁状态变化需要传输给平台,若地锁出现故障,则传输故障码至平台,若检测出现故障则,默认地锁为降下状态;若为升降出现故障,则保持现有状态

10.1 地锁数据上送

10.2 遥控地锁升锁与降锁命令

10.3 充电设备返回数据(上行)

11 电设备远程维护帧类型码数据定义

11.1 远程重启

11.2 远程重启应答

11.3 远程更新

11.4 远程更新应答

12 附录

12.1 充电停止原因代码表

12.2 CRC16 校验的计算方法

CRC(Cyclical Redundancy Check)由两字节组成,生成函数如下:
1、CRC 计算函数
WORD ModbusCRC(BYTE * pData, BYTE len)
{
BYTE byCRCHi = 0xff;
BYTE byCRCLo = 0xff;
BYTE byIdx;
WORD crc;
while(len--)
{
byIdx = byCRCHi ^* pData++;
byCRCHi = byCRCLo ^ gabyCRCHi[byIdx];
byCRCLo = gabyCRCLo[byIdx];
}
crc = byCRCHi;
crc <<= 8;
crc += byCRCLo;
return crc;
}
CRC 码表高字节
BYTE gabyCRCHi[] =
{
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,
0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,
0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,
0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,
0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,
0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,
0x81,0x40,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,
0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,
0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,
0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,
0x01,0xc0,0x80,0x41,0x00,0xc1,0x81,0x40,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40,0x00,0xc1,0x81,0x40,
0x01,0xc0,0x80,0x41,0x01,0xc0,0x80,0x41,0x00,0xc1,
0x81,0x40,0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,
0x00,0xc1,0x81,0x40,0x01,0xc0,0x80,0x41,0x01,0xc0,
0x80,0x41,0x00,0xc1,0x81,0x40
};

CRC 码表高字节

BYTE gabyCRCLo[] =
{
0x00,0xc0,0xc1,0x01,0xc3,0x03,0x02,0xc2,0xc6,0x06,
0x07,0xc7,0x05,0xc5,0xc4,0x04,0xcc,0x0c,0x0d,0xcd,
0x0f,0xcf,0xce,0x0e,0x0a,0xca,0xcb,0x0b,0xc9,0x09,
0x08,0xc8,0xd8,0x18,0x19,0xd9,0x1b,0xdb,0xda,0x1a,
0x1e,0xde,0xdf,0x1f,0xdd,0x1d,0x1c,0xdc,0x14,0xd4,
0xd5,0x15,0xd7,0x17,0x16,0xd6,0xd2,0x12,0x13,0xd3,
0x11,0xd1,0xd0,0x10,0xf0,0x30,0x31,0xf1,0x33,0xf3,
0xf2,0x32,0x36,0xf6,0xf7,0x37,0xf5,0x35,0x34,0xf4,
0x3c,0xfc,0xfd,0x3d,0xff,0x3f,0x3e,0xfe,0xfa,0x3a,
0x3b,0xfb,0x39,0xf9,0xf8,0x40,0x28,0xe8,0xe9,0x29,
0xeb,0x2b,0x2a,0xea,0xee,0x2e,0x2f,0xef,0x2d,0xed,
0xec,0x2c,0xe4,0x24,0x25,0xe5,0x27,0xe7,0xe6,0x26,
0x22,0xe2,0xe3,0x23,0xe1,0x21,0x20,0xe0,0xa0,0x60,
0x61,0xa1,0x63,0xa3,0xa2,0x62,0x66,0xa6,0xa7,0x67,
0xa5,0x65,0x64,0xa4,0x6c,0xac,0xad,0x6d,0xaf,0x6f,
0x6e,0xae,0xaa,0x6a,0x6b,0xab,0x69,0xa9,0xa8,0x68,
0x78,0xb8,0xb9,0x79,0xbb,0x7b,0x7a,0xba,0xbe,0x7e,
0x7f,0xbf,0x7d,0xbd,0xbc,0x7c,0xb4,0x74,0x75,0xb5,
0x77,0xb7,0xb6,0x76,0x72,0xb2,0xb3,0x73,0xb1,0x71,
0x70,0xb0,0x50,0x90,0x91,0x51,0x93,0x53,0x52,0x92,
0x96,0x56,0x57,0x97,0x55,0x95,0x94,0x54,0x9c,0x5c,
0x5d,0x9d,0x5f,0x9f,0x9e,0x5e,0x5a,0x9a,0x9b,0x5b,
0x99,0x59,0x58,0x98,0x88,0x48,0x49,0x89,0x4b,0x8b,
0x8a,0x4a,0x4e,0x8e,0x8f,0x4f,0x8d,0x4d,0x4c,0x8c,
0x44,0x84,0x85,0x45,0x87,0x47,0x46,0x86,0x82,0x42,
0x43,0x83,0x41,0x81,0x80,0x40
};

12.3 协议需知

下载地址:
链接: https://pan.baidu.com/s/1kW15Nfe9cjPDFLGPYJ-zUg?pwd=agq2
提取码: agq2

分享《一套免费开源充电桩物联网系统,是可以立马拿去商用的!》

Last Updated: 2024/08/31 19:53:11
中电联系列一:rocket🌟手把手教你理解中电联协议! 【挑战全网】最全高德地图充电桩接入指南,流量必火!
OωO 取消
  • |´・ω・)ノ
  • ヾ(≧∇≦*)ゝ
  • (☆ω☆)
  • (╯‵□′)
  •  ̄﹃ ̄
  • (/ω\)
  • →_→
  • (ノ°ο°)ノ
  • ⌇●﹏●⌇
  • (ฅ´ω`ฅ)
  • φ( ̄∇ ̄o)
  • ヾ(´・ ・`。)ノ"
  • (ó﹏ò。)
  • Σ(っ °Д °;)っ
  • ( ,,´・ω・)ノ
  • ╮(╯▽╰)╭
  • (。•ˇ‸ˇ•。)
  • >﹏<
  • ( ๑´•ω•)
  • "(´っω・`。)
  • "(ㆆᴗㆆ)