查看“汽车充电桩通讯文档-设备(完整版)”的源代码
←
汽车充电桩通讯文档-设备(完整版)
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
== 总则 == === 协议概述 === 本协议定义杭州东骏科技有限公司汽车充电桩通讯模块(或认证的充电桩设备)与波塞冬物联平台通讯的流程、格式和内容。 === 通讯接口 === 该通讯文档采用二进制编码通讯,使用串口,波特率为115200,8数据位,1停止位,无校验位。 两条通讯指令之间间隔不小于100ms。 == 通讯协议定义== 该通讯文档采用三种报文格式,一种是二进制传输方式,另一种是ASCII字符传输方式,第三种时东骏模块桥接方式。一台设备只能使用一种格式。通讯报文可以通过ASCII形式通讯、二进制性质的通讯或者通过东骏通讯模块桥接通讯三种方式进行传输,但是同一台设备只能使用一种通讯方式,也就是说同一台设备不可以部分指令用ASCII形式,另一些用二进制形式或东骏通讯模块桥接方式。 === 字符顺序 === 该文档设计的通讯所有字段均采用大端序。 === ASCII方式命令格式=== 使用客户自身通讯模块+东骏平台 服务器下发命令: {| class="wikitable" |- !SOP!!LEN!!CMD!!SESSION_ID!!SEP!!CONTENT!!EOF |- |1byte||3byte||3byte||6byte||1byte||n byte||2byte |- |开始标识||报文长度||命令名称||会话ID||分隔符||内容||结束标识 |} 1、开始标识:固定“_”为开始标识 2、报文长度:整个报文的总长度,包括开始标识和结束标识,不足三字节前面补0 3、命令名称:全为大写字母,第一个字节为“A”的命令为保留命令 4、会话ID:6个字节的可见字符(每一字节0x00-0x3D之间数字+偏移量0x31,当然如果使用A-Za-z0-9就一定在这个范围之内了),由服务器下发或文档特别约定,每次不同的通讯的会话ID都需要不一样(服务器发起的通讯至少连续的20次通讯不一样,除了特殊说明以外,当然我们的建议还是让每次通讯的会话ID尽可能的不一样),通常设备会在获取到服务器指令执行以后需要回复结果的会返回相同的会话ID给服务器,服务器可以通过会话ID获得设备当前回应的数据是哪一个会话的。同一个会话ID设备会认为是同一次通讯的重复发送,如果设备已经处理了相关的指令,就会丢弃之后相同会话ID的指令。设备由于内存限制,比对的会话ID是之前10次通讯的会话ID,为了可靠期间服务器只要保证连续的20次服务器发起的通讯会话ID不一致就可以了确保设备不会触发丢弃操作而影响指令的执行。另外如果有些命令服务器为了使设备一定收到,但设备只需要执行一次的,这样的命令多次发送用同一会话ID发送就可以了 5、分隔符:固定值“/” 6、内容:命令的有效载荷,具体业务二进制数据的十六进制字符串,比如{0x01 0x02 0x03}则为”010203” 7、结束标识:”\r\n”[0x0D 0x0A] 设备上报命令: {| class="wikitable" |- !SOP!!TYPE!!CMD!!SESSION_ID!!LEN!!CONTENT!!EOF |- |1byte||2byte||3byte||6byte||3byte||n byte||2byte |- |开始标识||响应类型||命令名称||会话ID||内容长度||内容||结束标识 |} 1、开始标识:固定值“_” 2、响应类型:PG-ping,DV-设备号(IMEI),ID-SIM卡ICCID号,RP-数据上报,RS-命令响应,TM-设备服务器对时 3、命令名称:大写英文字母 4、会话ID:(无服务器会话ID则返回”000000”,文档中指令的会话ID有特殊定义的,以定义为准) 5、内容长度:内容字段的长度,不足三字节在前面补0,如”030” 6、内容:命令的有效载荷,具体业务二进制数据的十六进制字符串,比如{0x01 0x02 0x03}则为”010203” 7、结束标识:”\r\n”[0x0D 0x0A] === 二进制方式命令格式=== 平台直接透传(当前东骏平台尚未开发) 服务器下发及上报格式: {| class="wikitable" |- !SOP!!LEN!!CMD!!TYPE!!CTRL!!SESSION!!DATA!!CHECKSUM |- |2byte||2byte||1byte||1byte||1byte||6byte||n byte||2byte |- |开始标识||报文长度||命令编号||消息类型||控制码||会话ID||内容||校验和 |} 1、开头标识:0xAA 0x55 2、报文长度:整个报文的长度 3、命令编号:每个不同业务指令用不同命令号代表 4、消息类型:0x00-服务器下发命令,0x01-心跳数据,0x02-IMEI数据,0x03-ICCID,0x04-客户端交互命令,0x05-服务器命令响应,0x06-设备上报,0x07-时间校准命令,0x08-主板模块间应答(用在东骏模块桥接方式) 5、控制码:位控制标识报文的通讯设置,从最高有效位开始以此为: {| class="wikitable" |- !Bit7!!Bit6-bit5!!Bit4!!Bit3-Bit0 |- |传输方向(1为服务器下发,0为设备上传)||通讯版本号(目前为01)||加密标识(0-内容字段未加密,1-内容字段加密)||不加密时全为0,加密时为最后分组的补零数量 |} 6、会话ID:每次不同的通讯的会话ID都需要不一样(服务器发起的通讯至少连续的20次通讯不一样,除了特殊说明以外,当然我们的建议还是让每次通讯的会话ID尽可能的不一样),通常设备会在获取到服务器指令执行以后需要回复结果的会返回相同的会话ID给服务器,服务器可以通过会话ID获得设备当前回应的数据是哪一个会话的。同一个会话ID设备会认为是同一次通讯的重复发送,如果设备已经处理了相关的指令,就会丢弃之后相同会话ID的指令。设备由于内存限制,比对的会话ID是之前10次通讯的会话ID,为了可靠期间服务器只要保证连续的20次服务器发起的通讯会话ID不一致就可以了确保设备不会触发丢弃操作而影响指令的执行。另外如果有些命令服务器为了使设备一定收到,但设备只需要执行一次的,这样的命令多次发送用同一会话ID发送就可以了 7、有效载荷:指令的实际业务内容,如果控制字段的加密标识为1则有效载荷需要进行DES加密,密钥为注册平台时约定,如果加密则内容字段字节长度为8的倍数,不足8的倍数在后面补零,并且最后补零个数在控制字段中Bit3-Bit0标识 8、校验码,采用crc16 modbus进行校验,校验字段为大端序,从LEN字段到DATA字段进行crc校验 === 东骏通讯模块桥接命令格式=== 使用东骏通讯模块+东骏平台 服务器下发及上报格式: {| class="wikitable" |- !SOP!!LEN!!CMD!!SESSION_ID!!DATA!!SUM |- |1byte||1byte||1byte||6byte||n byte||2byte |- |开始标识||命令长度||命令号||会话ID||有效载荷||校验和 |} 1、开始标识:模块下发给设备为0xEE,设备上传给模块用0x66 2、命令长度:从CMD字段到SUM字段的字节数 3、命令号:详见业务有效载荷章节 4、会话ID:6个字节,用户服务器识别通讯会话。如果服务器发起的会话,设备应答时需要带上服务器下发的会话ID。如果设备主动发起会话则为业务有效载荷章节指令的会话ID,文档为明确标识的会话ID为“000000”。 5、有效载荷:指令的实际业务内容 6、校验和:采用crc16 modbus进行校验,校验字段为大端序,从LEN字段到DATA字段进行crc校验 == 业务有效载荷== === 查询设备状态 === [[文件:1-1.jpg|缩略图|左]] 该命令用于服务端查询设备每个端口的状态,由服务端发起,设备应答。 '''服务端发起''' {| class="wikitable" |- !命令名称!!STA!!命令编号!!0x01!! |- |传输方向||服务端->设备 |- !消息类型!!0x00!!响应类型!! !! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||查询标识||BIN||1||固定值0 |} EE 0A 01 4B 69 77 53 41 59 00 AA C8 '''设备应答''' {| class="wikitable" |- !命令名称!!STA!!命令编号!!0x01!! |- |传输方向||设备->服务端 |- !消息类型!!0x05!!响应类型!!RS!! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口数量||BIN||1|| |- |2||第一端口状态||BIN||1||0x01-枪已插好并且没有在充电;0x02-枪正在充电;0x03-枪被禁用;0x04-枪故障;0x05-枪未插好 |- |3-n||第n端口状态||BIN||n||0x01-枪已插好并且没有在充电;0x02-枪正在充电;0x03-枪被禁用;0x04-枪故障;0x05-枪未插好 |} 66 0B 01 4B 69 77 53 41 59 01 01 03 3A === 扫码启动充电 === [[文件:1-2.jpg|缩略图|左]] 用户通过扫码支付的方式或者服务端主动下发的方式启动充电,由服务器下发,设备接收之后响应处理结果。 '''服务端下发''' {| class="wikitable" |- !命令名称!!RUN!!命令编号!!0x02!! |- |传输方向||服务端->设备 |- !消息类型!!0x00!!响应类型!! !! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1||0x01标识1端口,0x02标识2端口 |- |2||订单编号||ASCII||23|| |- |3||计费模式||BIN||1||主计费方式 ,0x01-时间计费,0x02-电量计费,0x03-金额计费,0x0A-先到为准,0x0B-后到为准。 |- |4||充电电量||BIN||4||单位为瓦时,0xFFFFFFFF代表该参数忽略。 |- |5||充电时间||BIN||2||单位为分钟,0xFFFFFFFF代表该参数忽略。 |- |6||充电金额||BIN||4||单位为分,0xFFFFFFFF代表该参数忽略。 |- |||总长度|| ||35||仅供核对查看,非协议内容。 |} EE 2C 02 4B 32 4D 76 75 37 01 32 30 32 31 30 31 32 36 31 30 35 34 31 32 34 30 36 35 37 34 34 38 38 03 FF FF FF FF FF FF 00 00 11 39 2C 4A 主计费模式是指断电的准信号,比如时间计费,那么设备以下发的时间为准,时间用完则断电,先到为准则是充电电量、充电时间、充电金额中有一个走完则停止充电,后到为准则是充电电量、充电时间、充电金额中全部走完则停止充电。 '''设备接收之后响应处理结果''' {| class="wikitable" |- !命令名称!!RUN!!命令编号!!0x02!! |- |传输方向||设备->服务端 |- !消息类型!!0x05!!响应类型!!RS!! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1|| |- |2||订单号||ASCII||23|| |- |3||启动结果||BIN||1||0x01-成功,0x02-充电枪故障,0x03-端口已经被使用,0x04-计费方式不支持,0x05-充电枪号不存在,0x06-整机故障 |- |||总长度|| ||25||仅供核对查看,非协议内容。 |} 66 22 02 4B 32 4D 76 75 37 01 32 30 32 31 30 31 32 36 31 30 35 34 31 32 34 30 36 35 37 34 34 38 38 01 16 4C === 刷卡或VIN码充电=== 用户刷卡或VIN码启动充电 [[文件:1-3.jpg|缩略图|左]] '''刷卡或VIN码上报信息''' {| class="wikitable" |- !命令名称!!SRD!!命令编号!!0x03!! |- |传输方向||设备->服务端 |- !消息类型!!0x06!!响应类型!!RP !! |- |会话ID||A10006 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1|| |- |2||启动方式||BIN||1||0x01-刷卡启动充电,0x02-VIN码启动充电 |- |3||是否需要密码||BIN||1||0x00-不需要,0x01-需要 |- |4||账号或物理卡号||BIN||8||不足8byte在前面补零,刷卡启动需要,其他为全0。 |- |5||密码||ASCII||32||MD5值,不需要密码为全0。 |- |6||VIN码||ASCII||17||启动方式为VIN码需要,否则为全0。 |- |||总长度|| ||60||仅供核对查看,非协议内容。 |} 66 45 03 31 32 33 34 35 36 01 01 00 00 00 00 00 DF 69 FE 45 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 4E '''服务端下发鉴权信息''' {| class="wikitable" |- !命令名称!!SRK!!命令编号!!0x04!! |- |传输方向||服务端->设备 |- !消息类型!!0x00!!响应类型!! !! |- |会话ID||服务器下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1|| |- |2||订单号||ASCII||23|| |- |3||启动方式||BIN||1||0x01-刷卡启动充电,0x02-VIN码启动充电 |- |4||物理卡号||BIN||8|| |- |5||逻辑卡号||ASCII||20||显示在屏幕上的卡号,不足在前面补零 |- |6||VIN码||ASCII||17|| |- |7||账号余额||BIN||4||0.01元为单位 |- |8||结果||BIN||1||0x00-成功,0x01-卡号或账号不存在,0x02-卡号或账号冻结,0x03-余额不足,0x04-存在未结账记录,0x05-端口停用,0x06-账户为绑定该桩,0x07-密码错误,0x08-服务器其他失败 |- |||总长度|| ||75||仅供核对查看,非协议内容。 |} EE 54 04 4C 47 30 56 56 44 01 32 30 32 31 30 31 32 36 31 31 30 36 35 32 30 31 37 34 39 35 39 30 33 01 00 00 00 00 DF 69 FE 45 00 00 00 00 00 00 00 00 00 00 00 00 00 00 32 33 35 36 38 39 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 D0 00 5F 2E '''设备上报启动信息''' {| class="wikitable" |- !命令名称!!SRK!!命令编号!!0x04!! |- |传输方向||设备->服务端 |- !消息类型!!0x06!!响应类型!!RP !! |- |会话ID||A10007 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1|| |- |2||订单号||ASCII||23|| |- |3||启动结果||BIN||1||0x01-成功,0x02-充电枪故障,0x03-端口已经被使用,0x04-充电桩异常,0x05-用户取消,0x06-端口存在未结账订单 |- |||总长度|| ||25||仅供核对查看,非协议内容。 |} '''备注:该指令设备需要做重传机制,如果没有收到服务端“设备刷卡VIN码启动应答”则需要重传,重传间隔建议为30秒,最长重传超时为1小时。''' 66 22 04 31 32 33 34 35 36 01 32 30 32 31 30 31 32 36 31 31 30 36 35 32 30 31 37 34 39 35 39 30 33 01 EB C4 '''设备刷卡VIN码启动应答''' {| class="wikitable" |- !命令名称!!SRJ!!命令编号!!0x07!! |- |传输方向||服务端->设备 |- !消息类型!!0x00!!响应类型!! !! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1|| |- |2||订单号||ASCII||23|| |- |3||启动结果||BIN||1||0x00-成功 |- |||总长度|| ||25||仅供核对查看,非协议内容。 |} EE 22 07 4C 47 31 64 51 49 01 32 30 32 31 30 31 32 36 31 31 30 36 35 32 30 31 37 34 39 35 39 30 33 00 20 26 === 充电结束=== 当某个枪的电动车已经充电结束,调用了该接口,该次交易即已经结束,用户再插上线路,肯定是不能再充电的。 '''充电结束上报:''' {| class="wikitable" |- !命令名称!!UWC!!命令编号!!0x05!! |- |传输方向||设备->服务端 |- !消息类型!!0x06!!响应类型!!RP !! |- |会话ID||A10001 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1|| |- |2||订单号||ASCII||23|| |- |3||结束原因||BIN||1||1-主计费正常结束,2-时间到结束,3-电量到结束,4-金额到结束,5-远程停止充电,6-充电桩故障结束,7-电池异常结束,8-手动停止充电,9-充满自停,0x0A-设备断电或断网,0x0B-充电中断开 |- |4||尖电费单价||BIN||4||0.01元/KWh(0.00001元/Wh)为单位, 若首字节最高bit位为1, 则为5位精度0.00001 |- |5||尖电量||BIN||4||0.001KWh |- |6||计损尖电量||BIN||4||001KWh |- |7||尖电费金额||BIN||4||0.01元, 若首字节最高bit位为1, 则为4位精度0.0001 |- |8||尖充电时间||BIN||4||Min |- |9||尖服务费单价||BIN||4||0.01元/KWh或0.01元/Min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |10||尖服务费金额||BIN||4||0.01元, 若首字节最高bit位为1, 则为4位精度0.0001 |- |11||峰电费单价||BIN||4||0.01元/KWh(0.00001元/Wh)为单位, 若首字节最高bit位为1, 则为5位精度0.00001 |- |12||峰电量||BIN||4||001KWh |- |13||计损峰电量||BIN||4||001KWh |- |14||峰电费金额||BIN||4||0.01元, 若首字节最高bit位为1, 则为4位精度0.0001 |- |15||峰充电时间||BIN||4||Min |- |16||峰服务费单价||BIN||4||0.01元/KWh或0.01元/Min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |17||峰服务费金额||BIN||4||0.01元, 若首字节最高bit位为1, 则为4位精度0.0001 |- |18||平电费单价||BIN||4||0.01元/KWh(0.00001元/Wh)为单位, 若首字节最高bit位为1, 则为5位精度0.00001 |- |19||平电量||BIN||4||001KWh |- |20||计损平电量||BIN||4||001KWh |- |21||平电费金额||BIN||4||0.01元, 若首字节最高bit位为1, 则为4位精度0.0001 |- |22||平充电时间||BIN||4||Min |- |23||平服务费单价||BIN||4||0.01元/KWh或0.01元/Min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |24||平服务费金额||BIN||4||0.01元, 若首字节最高bit位为1, 则为4位精度0.0001 |- |25||谷电费单价||BIN||4||0.01元/KWh(0.00001元/Wh)为单位, 若首字节最高bit位为1, 则为5位精度0.00001 |- |26||谷电量||BIN||4||001KWh |- |27||计损谷电量||BIN||4||001KWh |- |28||谷电费金额||BIN||4||0.01元, 若首字节最高bit位为1, 则为4位精度0.0001 |- |29||谷充电时间||BIN||4||Min |- |30||谷服务费单价||BIN||4||0.01元/KWh或0.01元/Min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |31||谷服务费金额||BIN||4||0.01元, 若首字节最高bit位为1, 则为4位精度0.0001 |- |32||服务费计费方式||BIN||1||0x00-不计算服务费,0x01-按时间计费服务费,0x02-按电量计费服务费 |- |33||起始荷电状态(BSD)||BIN||1||1% |- |34||中止荷电状态(BSD)||BIN||1||1% |- |35||总电量||BIN||4||0.001KWh |- |36||总计损电量||BIN||4||0.001KWh |- |37||总金额||BIN||4||0.01元,总金额=尖电费金额+尖服务费金额+峰电费金额+峰服务费金额+平电费金额+平服务费金额+谷电费金额+谷服务费金额 |- |38||VIN码||ASCII||17|| |- |39||总充电时间||BIN||4||分钟为单位 |- |40||异常停止状态||BIN||1||见底下备注 |- |41||使用的计费模型编号||BIN||2||没有使用服务端计费模型,报0x0000 |- |42||设备端的开始时间||BIN||7||CP56Time2a格式 |- |43||设备端的结束时间||BIN||7||CP56Time2a格式 |- |||总长度|| ||190||仅供核对查看,非协议内容。 |} 66 C7 05 31 32 33 34 35 36 01 32 30 32 31 30 31 32 36 31 30 35 34 31 32 34 30 36 35 37 34 34 38 38 05 00 00 00 64 00 00 00 3C 00 00 00 00 00 00 00 06 00 00 00 08 00 00 00 64 00 00 00 06 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 00 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 00 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 00 00 00 00 00 00 00 3C 00 00 00 00 00 00 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 4B F8 2A F6 EA 5A 01 15 C8 AF 02 0B 5A 01 15 C5 A9 备注:异常停止状态,当停止上报结束原因位6或者7,该字段不能位0x00。 0x00-无异常,0x4A-启动失败,充电桩系统故障(需要重启或自动恢复);0x4B-启动失败,控制导引断开;0x4C-启动失败,断路器跳闸;0x4D-启动失败,电表通讯失败;0x4F-启动失败,充电模块故障;0x50-启动失败,急停开路;0x51-启动失败,防雷器异常;0x52-启动失败,BMS未就绪;0x53-启动失败,温度异常;0x54-启动失败,电池反接故障;0x55-启动失败,电子锁异常;0x56-启动失败,合闸失败;0x57-启动失败,绝缘异常;0x59-启动失败,接收BMS握手报文BHM超时;0x5A-启动失败,接收BMS和车辆的辨识报文超时BRM;0x5B-启动失败,接收电池充电参数报文超时BCP;0x5C-启动失败,接收BMS完成充电准备报文超时BRO AA;0x5D-启动失败,接收电池充电总状态报文超时BCS;0x5E-启动失败,接收电池充电要求报文超时BCL;0x5F-启动失败,接收电池状态信息报文超时BSM;0x60-启动失败,GB2015电池在BHM阶段有电压不允许充电;0x61-启动失败,GB2015辨识阶段在BRO_AA时候电池实际电压与BCP报文电池电压差距大于5%;0x62-启动失败,GB2015充电桩在预充电阶段从BRO_AA变成BRO_00状态;0x63-启动失败,接收主机配置报文超时;0x64-启动失败,充电桩未准备就绪,我们没有回CRO_AA;0x65-启动失败,绝缘故障;0x6A-充电异常终止,系统闭锁;0x6B-充电异常终止,导引断开;0x6C-充电异常终止,断路器跳闸;0x6D-充电异常终止,电表通信中断;0x6E-充电异常终止,余额不足;0x6F-充电异常终止,交流保护动作;0x70-充电异常终止,直流保护动作;0x71-充电异常终止,充电模块故障;0x72-充电异常终止,急停开路;0x73-充电异常终止,防雷器异常;0x74-充电异常终止,温度异常;0x75-充电异常终止,输出异常;0x76-充电异常终止,电流异常;0x77-充电异常终止,电子锁异常;0x79-充电异常终止,总充电电压异常;0x7A-充电异常终止,总充电电流异常;0x7B-充电异常终止,单体充电电压异常;0x7C-充电异常终止,电池组过温;0x7D-充电异常终止,最高单体充电电压异常;0x7E-充电异常终止,最高电池组过温;0x7F-充电异常终止,BMV单体充电电压异常;0x80-充电异常终止,BMT电池组过温;0x81-充电异常终止,电池状态异常停止充电;0x82-充电异常终止,车辆发报文停止充电;0x83-充电异常终止,充电桩断电;0x84-充电异常终止,接收电池充电总状态报文超市;0x85-充电异常终止,接收电池充电要求报文超时;0x86-充电异常终止,接收电池状态信息报文超时;0x87-充电异常终止,接收BMS终止充电报文超时;0x88-充电异常终止,接收BMS充电统计报文超时;0x89-充电异常终止,接收CCS报文超时;0xFA-未知原因异常。 '''备注:该指令设备需要做重传机制,如果没有收到服务端“充电结束应答”则需要重传,重传间隔建议为30秒,最长重传超时为1小时。''' '''充电结束应答:''' {| class="wikitable" |- !命令名称!!UWC!!命令编号!!0x05!! |- |传输方向||服务端->设备 |- !消息类型!!0x00!!响应类型!!!! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1||0x01标识1端口,0x02标识2端口 |- |2||处理结果||BIN||1||0x01-服务端处理成功,此时主板可认为已正常结束 0x02-格式错误,一般是字节数和定义的不一致, 需要再次重发, 若该原因连续产生多次可以考虑放弃 0x03-数据异常,一般是某个业务数据不符合常理或约定, 需要再次重发, 若该原因连续产生多次可以考虑放弃 |- |3||订单号||ASCII||23|| |- |||总长度|| ||25||仅供核对查看,非协议内容。 |} EE 22 05 4C 43 79 73 4C 69 01 01 32 30 32 31 30 31 32 36 31 30 35 34 31 32 34 30 36 35 37 34 34 38 38 BB 56 === 实时状态上报=== 电桩每个正在使用的端口需要每分钟上报一次当前状态数据。 {| class="wikitable" |- !命令名称!!SDT!!命令编号!!0x06!! |- |传输方向||设备->服务端 |- !消息类型!!0x06!!响应类型!!RP !! |- |会话ID||A10002 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1|| |- |2||订单号||ASCII||23|| |- |3||状态||BIN||1||0x01:故障, 0x02:空闲, 0x03:充电 |- |4||是否获取到电池数据||BIN||1||1-获取到BMS电池信息,2-未获取到电池信息 |- |5||输出类型||BIN||1||1-直流,2-交流 |- |6||当前计费类型||BIN||1||1-尖计费,2-峰计费,3-平计费,4-谷计费 |- |7||当前计费类型充电量||BIN||4||0.001KWh为单位 |- |8||当前计费类型计损电量||BIN||4||0.001KWh为单位 |- |9||当前计费类型电价金额||BIN||4||0.01元, 若首字节最高bit位为1, 则为4位精度0.0001 |- |10||当前计费类型充电时间||BIN||2||分钟为单位 |- |11||当前服务费计费方式||BIN||1||0x00-不计算服务费,0x01-按时间计费服务费,0x02-按电量计费服务费 |- |12||当前服务费计费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |13||当前计费类型服务费金额||BIN||4||0.01元, 若首字节最高bit位为1, 则为4位精度0.0001 |- |14||当前计费类型总金额||BIN||4||0.01元,当前计费类型总金额=当前计费类型电价金额+当前计费类型服务费金额, 若首字节最高bit位为1, 则为4位精度0.0001 |- |15||电压需求(BCL)||BIN||2||0.1V |- |16||电流需求(BCL)||BIN||2||0.1A |- |17||充电模式(BCL)||BIN||1||0x01-恒压充电,0x02-恒流充电,0x09-其他充电 |- |18||输出电压(CCS)||BIN||2||0.1V |- |19||输出电流(CCS)||BIN||2||0.1A |- |20||充电电压测量值(BCS)||BIN||2||0.1V |- |21||充电电流测量值(BCS)||BIN||2||0.1A |- |22||当前荷电状态||BIN||1||分辨率1%,0%偏移量,0-100% |- |23||估算剩余充电时间||BIN||2||分辨率1min |- |24||枪线温度||BIN||1||偏移量-50℃,单位1℃, 即实际0℃上报为50 |- |25||电池组温度||BIN||1||偏移量-50℃,单位1℃, 即实际0℃上报为50 |- |26||累计充电时间||BIN||2||分钟为单位 |- |27||充电电量||BIN||4||0.001KWh为单位 |- |28||计损电量||BIN||4||0.001KWh为单位 |- |29||已充总金额||BIN||4||0.01元, 若首字节最高bit位为1, 则为4位精度0.0001 |- |30||故障码||BIN||2||Bit位表示(0否1是),低维到高维,Bit1:急停按钮动作故障,Bit2:无可用整流模块,Bit3:出风口温度过高,Bit4:交流防雷故障,Bit5:交直流模块故障,Bit6:绝缘监测模块故障,Bit7:电度表故障,Bit8:预留,Bit9:电池通讯故障,Bit10:风扇调速板故障,Bit11:直流熔断器故障,Bit12:高压接触器故障,Bit13:门打开 |- |||总长度|| ||89||仅供核对查看,非协议内容。 |} 66 62 06 31 32 33 34 35 36 01 32 30 32 31 30 31 32 36 31 30 35 34 31 32 34 30 36 35 37 34 34 38 38 03 02 02 01 00 00 00 14 00 00 00 00 00 00 00 02 00 03 02 00 00 00 64 00 00 00 02 00 00 00 04 09 1C 00 12 09 09 1C 00 12 09 1C 00 12 00 00 00 52 52 00 03 00 00 00 14 00 00 00 00 00 00 00 04 00 00 AB 19 === 充电开始BMS信息上报=== 充电开始时设备主动上报一次。如果需要可以重复发送。 {| class="wikitable" |- !命令名称!!STX!!命令编号!!0x14!! |- |传输方向||设备->服务端 |- !消息类型!!0x06!!响应类型!!RP !! |- |会话ID||A10005 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1|| |- |2||订单号||ASCII||23|| |- |3||BMS通讯协议版本号||BIN||3|| |- |4||预留||BIN||4|| |- |5||BMS电池类型||BIN||1||电池类型:01-铅酸电池,02-氢电池,03-磷酸铁锂电池,04-锰酸锂电池,05-钴酸锂电池,06-三元材料电池,07-聚合物锂离子电池,08-钛酸锂电池,FF-其他 |- |6||BMS整车动力蓄电池系统额定容量||BIN||2||0.1AH为单位 |- |7||BMS整车动力蓄电池系统额定总电压||BIN||2||0.1V |- |8||BMS电池生产厂商名称||ASCII||4|| |- |9||BMS电池组序号||BIN||4|| |- |10||BMS电池组生产日期年||BIN||1||1985年偏移量 |- |11||BMS电池组生产日期月||BIN||1||1-12 |- |12||BMS电池组生产日期日||BIN||1||1-31 |- |13||BMS电池组充电次数||BIN||3|| |- |14||BMS电池组产权标识||BIN||1||0x00-租赁,0x01-车自有 |- |15||BMS车辆识别码||BIN||17||VIN |- |16||BMS软件版本号||BIN||8|| |- |17||BMS上报信息获取时间||BIN||7||CP56Time2a格式 |- |||总长度|| ||83||仅供核对查看,非协议内容。 |} '''服务端查询''' {| class="wikitable" |- !命令名称!!STX!!命令编号!!0x14!! |- |传输方向||服务端->设备 |- !消息类型!!0x00!!响应类型!! !! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1||0x01标识1端口,0x02标识2端口 |- |2||订单号||ASCII||23|| |- |3||接受结果||BIN||1||0x01-接受成功,0x02-接收异常 |- |||总长度|| ||25||仅供核对查看,非协议内容。 |} === 主动端口状态上报=== 设备端口状态变更后主动上报。如果需要可以重复发送。 {| class="wikitable" |- !命令名称!!PTA !!命令编号!!0x21!! |- |传输方向||设备->服务端 |- !消息类型!!0x06!!响应类型!!RP !! |- |会话ID||A10008 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口数量||BIN||1|| |- |2||端口1状态||BIN||1|| |- |3||端口N状态||BIN||1|| |} '''应答''' {| class="wikitable" |- !命令名称!!PTA!!命令编号!!0x21!! |- |传输方向||服务端->设备 |- !消息类型!!0x00!!响应类型!! !! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||接收状态||BIN||1||0x01-表示接受成功,0x02表示接收失败 |} === 充电过程BMS信息实时上报=== 充电过程中每五分钟上报一次,发现异常跳变瞬时上报。 {| class="wikitable" |- !命令名称!!SBY!!命令编号!!0x15!! |- |传输方向||设备->服务端 |- !消息类型!!0x06!!响应类型!!RP !! |- |会话ID||A10004 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1|| |- |2||订单号||ASCII||23|| |- |3||BMS最高单体动力蓄电池电压所在编号||BIN||1||数据范围:1-255 |- |4||BMS最高动力蓄电池温度||BIN||1||偏移量-50℃,单位1℃, 即实际0℃上报为50 |- |5||最高温度监测点编号||BIN||1||数据范围:1-128 |- |6||最低动力蓄电池温度||BIN||1||偏移量-50℃,单位1℃, 即实际0℃上报为50 |- |7||最低动力蓄电池温度监测点编号||BIN||1||数据范围:1-128 |- |8||BMS单体动力蓄电池电池电压状态||BIN||1||0x00-正常,0x01-过高,0x02-过低 |- |9||BMS整车动力蓄电池荷电状态SOC状态||BIN||1||0x00-正常,0x01-过高,0x02-过低 |- |10||BMS动力蓄电池充电过电流||BIN||1||0x00-正常,0x01-过流,0x02-不可信状态 |- |11||BMS动力蓄电池温度过高||BIN||1||0x00-正常,0x01-过流,0x02-不可信状态 |- |12||BMS动力蓄电池绝缘状态||BIN||1||0x00-正常,0x01-过流,0x02-不可信状态 |- |13||BMS动力蓄电池组输出连接器链接状态||BIN||1||0x00-正常,0x01-过流,0x02-不可信状态 |- |14||充电禁止||BIN||1||0x00-进制,0x01-允许 |- |||总长度|| ||36||仅供核对查看,非协议内容。 |} === 计费模型下发=== 服务器下发计费模型 '''服务端下发计费模型:''' {| class="wikitable" |- !命令名称!!SJA!!命令编号!!0x08!! |- |传输方向||服务端->设备 |- !消息类型!!0x00!!响应类型!! !! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||计费模型编码||BIN||2||充电模型从0x0001开始 |- |2||尖电费单价||BIN||4||0.01元/KWh, 若首字节最高bit位为1, 则为5位精度0.00001 |- |3||尖服务费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |4||峰电费单价||BIN||4||0.01元/KWh, 若首字节最高bit位为1, 则为5位精度0.00001 |- |5||峰服务费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |6||平电费单价||BIN||4||0.01元/KWh, 若首字节最高bit位为1, 则为5位精度0.00001 |- |7||平服务费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |8||谷电费单价||BIN||4||0.01元/KWh, 若首字节最高bit位为1, 则为5位精度0.00001 |- |9||谷服务费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |10||计损比例||BIN||4||0.1% |- |11||服务费计费方式||BIN||1||0x00-不计算服务费,0x01-按时间计费服务费,0x02-按电量计费服务费 |- |12||0:00-0:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |13||0:30-1:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |14||1:00-1:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |15||1:30-2:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |16||2:00-2:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |17||2:30-3:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |18||3:00-3:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |19||3:30-4:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |20||4:00-4:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |21||4:30-5:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |22||5:00-5:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |23||5:30-6:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |24||6:00-6:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |25||6:30-7:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |26||7:00-7:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |27||7:30-8:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |28||8:00-8:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |29||8:30-9:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |30||9:00-9:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |31||9:30-10:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |32||10:00-10:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |33||10:30-11:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |34||11:00-11:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |35||11:30-12:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |36||12:00-12:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |37||12:30-13:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |38||13:00-13:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |39||13:30-14:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |40||14:00-14:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |41||14:30-15:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |42||15:00-15:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |43||15:30-16:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |44||16:00-16:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |45||16:30-17:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |46||17:00-17:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |47||17:30-18:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |48||18:00-18:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |49||18:30-19:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |50||19:00-19:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |51||19:30-20:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |52||20:00-20:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |53||20:30-21:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |54||21:00-21:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |55||21:30-22:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |56||22:00-22:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |57||22:30-23:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |58||23:00-23:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |59||23:30-00:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |||总长度|| ||87||仅供核对查看,非协议内容。 |} EE 60 08 4C 4C 47 69 6E 48 00 4B 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F7 53 '''计费模型下发应答:''' {| class="wikitable" |- !命令名称!!SJA!!命令编号!!0x08!! |- |传输方向||设备->服务端 |- !消息类型!!0x05!!响应类型!!RS !! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||计费模型编码||BIN||2|| |- |2||下发结果||BIN||1||0x01-下发成功,0x02-下发失败,0x03-下发成功,但不存储 |} 66 0C 08 4C 4C 47 69 6E 48 00 4B 01 9C EF === 设备请求计费模型=== 设备主动请求计费模型 '''设备请求服务端下发计费模型:''' {| class="wikitable" |- !命令名称!!SJF!!命令编号!!0x09!! |- |传输方向||设备->服务端 |- !消息类型!!0x06!!响应类型!!RP !! |- |会话ID||A10003 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||计费模型编码||BIN||2||充电模型从0x0001开始,设备请求时,如果模型编号为0x0000表示请求服务端默认的模型,否则为请求指定模型 |} 66 0B 09 31 32 33 34 35 36 00 00 6C E1 '''服务端响应计费模型:''' {| class="wikitable" |- !命令名称!!SJF!!命令编号!!0x09!! |- |传输方向||服务端->设备 |- !消息类型!!0x00!!响应类型!! !! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||计费模型编码||BIN||2||充电模型从0x0001开始 |- |2||尖电费单价||BIN||4||0.01元/KWh, 若首字节最高bit位为1, 则为5位精度0.00001 |- |3||尖服务费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |4||峰电费单价||BIN||4||0.01元/KWh, 若首字节最高bit位为1, 则为5位精度0.00001 |- |5||峰服务费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |6||平电费单价||BIN||4||0.01元/KWh, 若首字节最高bit位为1, 则为5位精度0.00001 |- |7||平服务费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |8||谷电费单价||BIN||4||0.01元/KWh, 若首字节最高bit位为1, 则为5位精度0.00001 |- |9||谷服务费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |10||计损比例||BIN||4||0.1% |- |11||服务费计费方式||BIN||1||0x00-不计算服务费,0x01-按时间计费服务费,0x02-按电量计费服务费 |- |12||0:00-0:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |13||0:30-1:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |14||1:00-1:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |15||1:30-2:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |16||2:00-2:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |17||2:30-3:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |18||3:00-3:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |19||3:30-4:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |20||4:00-4:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |21||4:30-5:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |22||5:00-5:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |23||5:30-6:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |24||6:00-6:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |25||6:30-7:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |26||7:00-7:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |27||7:30-8:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |28||8:00-8:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |29||8:30-9:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |30||9:00-9:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |31||9:30-10:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |32||10:00-10:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |33||10:30-11:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |34||11:00-11:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |35||11:30-12:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |36||12:00-12:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |37||12:30-13:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |38||13:00-13:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |39||13:30-14:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |40||14:00-14:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |41||14:30-15:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |42||15:00-15:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |43||15:30-16:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |44||16:00-16:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |45||16:30-17:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |46||17:00-17:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |47||17:30-18:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |48||18:00-18:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |49||18:30-19:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |50||19:00-19:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |51||19:30-20:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |52||20:00-20:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |53||20:30-21:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |54||21:00-21:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |55||21:30-22:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |56||22:00-22:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |57||22:30-23:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |58||23:00-23:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |59||23:30-00:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |||总长度|| ||87||仅供核对查看,非协议内容。 |} EE 60 09 4B 59 30 78 4B 4F 00 4B 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A3 D4 EE 0A 0F 30 30 30 30 30 30 0D 2D 9B === 服务器请求计费模型=== 设备主动请求计费模型 '''服务器请求服务端下发计费模型:''' {| class="wikitable" |- !命令名称!!SJG!!命令编号!!0x0A!! |- |传输方向||服务器->设备 |- !消息类型!!0x00!!响应类型!!!! |- |会话ID||服务器下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||计费模型编码||BIN||2||充电模型从0x0001开始,设备请求时,如果模型编号为0x0000表示请求服务端默认的模型,否则为请求指定模型 |} EE 0B 0A 4C 52 56 6D 71 45 00 01 34 62 '''设备响应计费模型:''' {| class="wikitable" |- !命令名称!!SJG!!命令编号!!0x0A!! |- |传输方向||设备->服务端 |- !消息类型!!0x05!!响应类型!!RS!! |- |会话ID||服务器下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||计费模型编码||BIN||2||充电模型从0x0001开始 |- |2||尖电费单价||BIN||4||0.01元/KWh, 若首字节最高bit位为1, 则为5位精度0.00001 |- |3||尖服务费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |4||峰电费单价||BIN||4||0.01元/KWh, 若首字节最高bit位为1, 则为5位精度0.00001 |- |5||峰服务费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |6||平电费单价||BIN||4||0.01元/KWh, 若首字节最高bit位为1, 则为5位精度0.00001 |- |7||平服务费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |8||谷电费单价||BIN||4||0.01元/KWh, 若首字节最高bit位为1, 则为5位精度0.00001 |- |9||谷服务费单价||BIN||4||0.01元/KWh或0.01元/min, 若首字节最高bit位为1, 则为5位精度0.00001 |- |10||计损比例||BIN||4||0.1% |- |11||服务费计费方式||BIN||1||0x00-不计算服务费,0x01-按时间计费服务费,0x02-按电量计费服务费 |- |12||0:00-0:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |13||0:30-1:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |14||1:00-1:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |15||1:30-2:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |16||2:00-2:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |17||2:30-3:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |18||3:00-3:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |19||3:30-4:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |20||4:00-4:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |21||4:30-5:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |22||5:00-5:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |23||5:30-6:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |24||6:00-6:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |25||6:30-7:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |26||7:00-7:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |27||7:30-8:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |28||8:00-8:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |29||8:30-9:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |30||9:00-9:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |31||9:30-10:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |32||10:00-10:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |33||10:30-11:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |34||11:00-11:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |35||11:30-12:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |36||12:00-12:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |37||12:30-13:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |38||13:00-13:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |39||13:30-14:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |40||14:00-14:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |41||14:30-15:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |42||15:00-15:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |43||15:30-16:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |44||16:00-16:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |45||16:30-17:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |46||17:00-17:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |47||17:30-18:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |48||18:00-18:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |49||18:30-19:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |50||19:00-19:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |51||19:30-20:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |52||20:00-20:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |53||20:30-21:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |54||21:00-21:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |55||21:30-22:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |56||22:00-22:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |57||22:30-23:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |58||23:00-23:30时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |59||23:30-00:00时段计费方式||BIN||1||0x00-尖费率,0x01-峰费率,0x02-平费率,0x03-谷费率 |- |||总长度|| ||87||仅供核对查看,非协议内容。 |} EE 60 0A 4C 52 56 6D 71 45 00 01 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 64 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A3 D4 EE 0A 0F 30 30 30 30 30 30 0D 9E 5F === 远程停止充电=== 服务端停止正在充电的端口。 {| class="wikitable" |- !命令名称!!STP!!命令编号!!0x0B!! |- |传输方向||服务端->设备 |- !消息类型!!0x00!!响应类型!! !! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1|| |- |2||订单号||ASCII||23|| |} EE 21 0B 4C 43 75 67 48 4F 01 32 30 32 31 30 31 32 36 31 30 35 34 31 32 34 30 36 35 37 34 34 38 38 EB EE '''设备上报 ''' {| class="wikitable" |- !命令名称!!STP!!命令编号!!0x0B!! |- |传输方向||设备->服务端 |- !消息类型!!RS-0x05 |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||端口号||BIN||1|| |- |2||订单号||ASCII||23|| |- |3||接受结果||BIN||1||0x01-停止成功,0x02-枪号不匹配,0x03-订单不匹配,0x04-枪未处于充电状态,0x05-其他原因失败 |- |||总长度|| ||25||仅供核对查看,非协议内容。 |} 注意:远程停止应答后,设备应主动上报0x05,并且0x05“充电结束”的RESULT字段应该为5-远程停止充电。如果远程停止后服务端5分钟之内没有收到上报0x05,但收到0x0B的响应,则服务端结束状态为“远程停止无账单”,并且通过0x06实时状态上报如果上报计费账单;如果及时收到0x05则为“远程停止结束”,并根据0x05上报的账单计算最终账单。 66 22 0B 4C 43 75 67 48 4F 01 32 30 32 31 30 31 32 36 31 30 35 34 31 32 34 30 36 35 37 34 34 38 38 01 8C 1E == 主板有效载荷== === 询问设备是否在线 === 推荐使用4.3询问模块通讯状态(使用4.3询问模块通讯状态此条可不做) 当主板使用东骏的通讯模块进行连网时,主板获取通讯模块是否连网 {| class="wikitable" |- !命令名称!!BBB!!命令编号!!0x0C!! |- |传输方向||主板->模块 |- !消息类型!!0x08!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |无 |} 66 09 0C 31 32 33 34 35 36 48 A8 询问设备是否在线接口依然可以使用,但是我们建议客户使用【询问通讯模块状态】接口,接口编号0xB1,该接口满足了询问设备是否在线以、信号值以及模块信息等内容。 此接口仍然会保留,但是建议使用新接口。 {| class="wikitable" |- !命令名称!!BBB!!命令编号!!0x0C!! |- |传输方向||模块->主板 |- !消息类型!!0x08!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||是否在线||BIN||1||0x00-离线,0x01-在线 |} EE 0A 0C 30 30 30 30 30 30 01 3D DB === 获取信号值 === 推荐使用4.3询问模块通讯状态(使用4.3询问模块通讯状态此条可不做) {| class="wikitable" |- !命令名称!!BBC!!命令编号!!0x0F!! |- |传输方向||主板->模块 |- !消息类型!!0x08!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |无 |} 66 09 0F 31 32 33 34 35 36 48 9B {| class="wikitable" |- !命令名称!!BBB!!命令编号!!0x0F!! |- |传输方向||模块->主板 |- !消息类型!!0x08!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||信号值||BIN||1||数值型, 0-31:信号差-优 99表示无法获取到信号值 |} EE 0A 0F 30 30 30 30 30 30 0D 2D 9B === 询问模块通讯状态 === 当主板使用东骏的通讯模块进行连网时,主板获取通讯模块连网状态的指令 {| class="wikitable" |- !命令名称!!BBA!!命令编号!!0xB1!! |- |传输方向||主板->模块 |- !消息类型!!0x08!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||主板名称||ASCII||5||主板约定的名称代号 |- |2||主板软件版本号||BIN||3||版本号格式为X.X.X,第一个字节大版本号,第二个字节小版本号,第三个字节编译版本号 |- |3||主板状态||BIN||1||0X01-正常,0x02-异常 |} 66 12 B1 30 30 30 30 30 30 31 32 33 34 35 01 00 01 01 07 19 '''模块应答主板状态''' {| class="wikitable" |- !命令名称!!BBA!!命令编号!!0xB1!! |- |传输方向||模块->主板 |- !消息类型!!0x08!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||IMEI||ASCII||15||未获取IMEI时为全0 |- |2||ICCID||ASCII||20||未获取ICCID时为全0 |- |3||连网状态||BIN||1||0x00-未连网,0x01-已连网,0x02-已注网未连网,0x03-网络故障 |- |4||信号值||BIN||1||0-31 |- |5||误码率||BIN||1||0-99 |- |6||网络试制||BIN||1||0x01-2G, 0x02-HSPA, 0x03-WCDMA, 0x04-LTE, 0x05-CDMA, |- |7||软件版本号||BIN||3||版本号格式为X.X.X,第一个字节大版本号,第二个字节小版本号,第三个字节编译版本号 |- |||总长度|| ||42||仅供核对查看,非协议内容。 |} EE 89 B1 30 30 30 30 30 30 38 36 33 38 36 36 30 34 38 35 36 32 37 35 35 38 39 38 36 30 37 42 36 31 39 31 39 37 30 33 39 38 33 37 35 01 0D 63 04 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4F FB === 设备与服务器对时 === {| class="wikitable" |- !命令名称!!TIM!!命令编号!!0x0D!! |- |传输方向||设备->服务端 |- !消息类型!!0x07!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||设备当前的时间戳||BIN||4||Unix时间戳 |} 66 0D 0D 31 32 33 34 35 36 00 00 00 00 45 55 '''服务器对时''' {| class="wikitable" |- !命令名称!!TIM!!命令编号!!0x0D!! |- |传输方向||服务端->设备 |- !消息类型!!0x07!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||设备当前的时间戳||BIN||4||Unix时间戳 |} EE 0D 0D 30 30 30 30 30 30 60 0F 8B 6B 7C 99 === 获取扫码URL === 下位机主板按需要主动获取模块扫码URL, 可用于生成二维码 {| class="wikitable" |- !命令名称!!BBE!!命令编号!!0x0E!! |- |传输方向||主板->模块 |- !消息类型!!0x08!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |无 |} 66 09 0E 31 32 33 34 35 36 88 8B '''通讯模块返回扫码URL字符串''' {| class="wikitable" |- !命令名称!!BBE!!命令编号!!0x0E!! |- |传输方向||模块->主板 |- !消息类型!!0x08!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||URL||ASCII||64||模块完整的扫码URL, 请按字符串处理, 有效字节都为可见字符的ascii码, 如果URL长度不到64byte则多余字节以0x00占位 '''注意: ''' '''在模块启动就绪过程中, 如果过早地获取URL会得到64字节的0x00即没有有效字符''' '''可以等待几秒后重试, 4G推荐在上电30秒后获取''' |} EE 49 0E 30 30 30 30 30 30 68 74 74 70 3A 2F 2F 73 63 61 6E 2E 73 75 70 65 65 64 65 72 2E 63 6F 6D 3F 64 65 76 69 63 65 4E 6F 3D 38 36 33 38 36 36 30 34 38 35 36 32 37 35 35 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7D FE == 握手与心跳有效载荷 == 连网握手流程图 [[文件:1-4.jpg|缩略图|左]] ===设备心跳(ASCII形式)=== {| class="wikitable" |- |'''发送方'''||通信模块 |- |'''说明'''||设备连接成功后,轮询发送心跳包,保持长连接。 综合考虑运营商GPRS的超时、路由映射缓存超时、流量节省等因素, 心跳间隔建议在60秒 |- |'''开始标志'''||1byte,“_” |- |'''响应类型'''||2byte,PG |- |'''会话ID'''||6byte,000000 |- |'''内容长度'''||3byte,001 |- |'''内容'''||信号值:0-31(,分割) 误码率:0-7(#/#分割) 上次心跳响应时间:整数值(可能为负,10ms为单位,上次心跳发出时间到上次接收到服务器心跳返回的时间,可以初略估计出网络的传输和服务器的响应速度,#/#分割) 网络制式:GPRS、HSPA、WCDMA、LTE、CDMA等 |- |'''结束标志'''||2byte,\r\n(0x0D 0x0A) |} '''示例:''' _ PG AXT 000000 016 31 , 0 #/# 74 #/# GPRS 0x0D 0x0A ===设备心跳(二进制)=== {| class="wikitable" |- !命令名称!!AXT!!命令编号!!0xF1!! |- |传输方向||设备->服务端 |- !消息类型!!0x01!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||信号值||BIN||1||0-31 |- |2||误码率||BIN||1||0-99 |- |3||网络试制||BIN||1||0x01-2G, 0x02-HSPA, 0x03-WCDMA, 0x04-LTE, 0x05-CDMA, |} ===服务器响应心跳(ASCII形式)=== {| class="wikitable" |- |'''发送方'''||服务器 |- |'''说明'''||服务器回复心跳 |- |'''开始标志'''||1byte,“_” |- |'''报文长度'''||3byte,表示整个报文的总长度,ASCII数字表示 |- |'''命令'''||3byte,AXT |- |'''会话ID'''||6byte,000000 |- |'''分隔符'''||1byte,“/” |- |'''参数'''||P |- |'''结束标志'''||2byte,\r\n(0x0D 0x0A) |} '''示例:''' _ 017 AXT 000000 / P 0x0D 0x0A ===服务器响应心跳(二进制)=== {| class="wikitable" |- !命令名称!!AXT!!命令编号!!0xF1!! |- |传输方向||设备->服务器 |- !消息类型!!0x01!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||服务器时间戳||BIN||4||Unix时间戳 |} ===询问IMEI(ASCII)=== {| class="wikitable" |- |'''发送方'''||服务器 |- |'''说明'''||在设备连接服务端成功后,服务端立即发送指令请求该设备的设备号 现在约定设备的GSM模块的IMEI号作为唯一设备号 |- |'''开始标志'''||1byte,“_” |- |'''报文长度'''||3byte,表示整个报文的总长度,ASCII数字表示 |- |'''命令'''||3byte,ADV |- |'''会话ID'''||6byte,000000 |- |'''分隔符'''||1byte,“/” |- |'''参数'''||IMEI |- |'''结束标志'''||2byte,\r\n(0x0D 0x0A) |} '''示例''' _ 020 ADV 000000 / IMEI 0x0D 0x0A ===询问IMEI(二进制)=== {| class="wikitable" |- !命令名称!!ADV!!命令编号!!0xF2!! |- |传输方向||服务端->设备 |- !消息类型!!0x01!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||询问标识||BIN||1||固定值0x00 |} ===应答IMEI(ASCII)=== {| class="wikitable" |- |'''发送方'''||通讯模块 |- |'''说明'''||设备收到设备号请求时,返回设备号 现在约定设备的GSM模块的IMEI号作为唯一设备号 设备号返回后才能开始真正的业务级别通讯 |- |'''开始标志'''||1byte,“_” |- |'''响应类型'''||2byte,DV |- |'''命令'''||3byte,ADV |- |'''会话ID'''||6byte,000000 |- |'''内容长度'''||3byte,表示内容长度,ASCII数字表示 |- |'''内容'''||2byte ID类型:IMEI 2byte 编码长度:IMEI号长度,一般为15 (一般15byte)设备号:GSM模块IMEI号 |- |'''结束标志'''||2byte,\r\n(0x0D 0x0A) |} '''示例''' IMEI号: 987654321012345 _ DV ADV 000000 019 IM 15 987654321012345 0x0D 0x0A ===应答IMEI(二进制)=== {| class="wikitable" |- !命令名称!!ADV!!命令编号!!0xF2!! |- |传输方向||设备->服务端 |- !消息类型!!0x02!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||IMEI||ASCII||15|| |} ===询问ICCID(ASCII)=== {| class="wikitable" |- |'''发送方'''||服务器 |- |'''说明'''||在设备返回设备号后,服务端发送指令获取SIM卡的ICCID |- |'''开始标志'''||1byte,“_” |- |'''报文长度'''||3byte,表示整个报文的总长度,ASCII数字表示 |- |'''命令'''||3byte,AID |- |'''会话ID'''||6byte,000000 |- |'''分隔符'''||1byte,“/” |- |'''参数'''|| |- |'''结束标志'''||2byte,\r\n(0x0D 0x0A) |} '''示例''' _ 016 AID 000000 / 0x0D 0x0A ===询问ICCID(二进制)=== {| class="wikitable" |- !命令名称!!AID!!命令编号!!0xF3!! |- |传输方向||服务端->设备 |- !消息类型!!0x00!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||询问标识||BIN||1||固定值0x00 |} ===应答ICCID(ASCII)=== {| class="wikitable" |- |'''发送方'''||通讯模块 |- |'''说明'''||设备收到ICCID请求时,返回ICCID |- |'''开始标志'''||1byte,“_” |- |'''响应类型'''||2byte,ID |- |'''命令'''||3byte,AID |- |'''会话ID'''||6byte,000000 |- |'''内容长度'''||3byte,表示内容长度,ASCII数字表示 |- |'''内容'''||ICCID号(#/#分割) 软件版本号(#/#) 硬件版本号 |- |'''结束标志'''||2byte,\r\n(0x0D 0x0A) |} '''示例''' ICCID号 : 898602B3131650175846 _ ID AID 000000 045 898602B3131650175846 #/# mc-2.3.0 #/# DJ-BSD-8202 0x0D 0x0A ===应答ICCID(二进制)=== {| class="wikitable" |- !命令名称!!AID!!命令编号!!0xF3!! |- |传输方向||设备->服务端 |- !消息类型!!0x03!!响应类型!! !! |- |会话ID||0x30 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||ICCID||ASCII||20|| |- |2||软件版本号||BIN||5||前面2字节为项目名称,后面三字节为版本号 |- |3||硬件版本号||BIN||5||前面2字节为项目名称,后面三字节为版本号 |} ===询问设备类型(ASCII)=== {| class="wikitable" |- |'''发送方'''||服务器 |- |'''说明'''||请求设备的类型编号,服务端约定 |- |'''开始标志'''||1byte,“_” |- |'''报文长度'''||3byte,表示整个报文的总长度,ASCII数字表示 |- |'''命令'''||3byte,ASY |- |'''会话ID'''||6byte,000000 |- |'''分隔符'''||1byte,“/” |- |'''参数'''|| |- |'''结束标志'''||2byte,\r\n(0x0D 0x0A) |} '''示例''' _ 016 ASY 000000 / 0x0D 0x0A ===询问设备类型(二进制)=== {| class="wikitable" |- !命令名称!!ASY!!命令编号!!0xF4!! |- |传输方向||服务端->设备 |- !消息类型!!0x00!!响应类型!! !! |- |会话ID||服务端下发 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||询问标识||BIN||1||固定值0x00 |} ===应答设备类型(ASCII)=== {| class="wikitable" |- |'''发送方'''||通讯模块 |- |'''说明'''||响应设备的类型编号 |- |'''开始标志'''||1byte,“_” |- |'''响应类型'''||2byte,RP |- |'''命令'''||3byte,ASY |- |'''会话ID'''||6byte,A00003 |- |'''内容长度'''||3byte,表示内容长度,ASCII数字表示 |- |'''内容'''||设备类型 |- |'''结束标志'''||2byte,\r\n(0x0D 0x0A) |} '''示例''' _ RP ASY A00003 001 1 0x0D 0x0A ===应答设备类型(二进制)=== {| class="wikitable" |- !命令名称!!ASY!!命令编号!!0xF4!! |- |传输方向||设备->服务端 |- !消息类型!!RP-0x06 |- |会话ID||0x41 0x30 0x30 0x30 0x30 0x30 |- |具体参数说明: |- !序号!!参数名称!!数据类型!!长度(Byte)!!备注 |- |1||设备类型||BIN||1||不足三字节前面补0 |} ==代码参考== ===CRC16校验=== CRC校验函数参考: const unsigned char auchCRCHi[] = { 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低位字节值表*/ const unsigned char auchCRCLo[] = { 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, 0x38, 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 } ; unsigned short crc16(unsigned char *puchMsg, unsigned short usDataLen) { unsigned char uchCRCHi = 0xFF ; /* 高CRC字节初始化 */ unsigned char uchCRCLo = 0xFF ; /* 低CRC 字节初始化 */ unsigned int uIndex ; /* CRC循环中的索引 */ while (usDataLen--) /* 传输消息缓冲区 */ { uIndex = uchCRCHi ^ *puchMsg++ ; /* 计算CRC */ uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ; uchCRCLo = auchCRCLo[uIndex] ; } return (uchCRCHi << 8 | uchCRCLo) ; } ===Unix时间戳到年月日时分秒转换=== /* 日期结构体 */ typedef struct{ uint32_t Year; uint8_t Month; uint8_t Day; uint8_t Hour; uint8_t Min; uint8_t Sec; uint8_t Week; } Time; /** * @brief 计算传入日期的星期 * @note * @param year 年份 * @param month 月份 * @param day 天 * @retval 星期几 */ uint8_t RTC_Week(uint32_t year, uint8_t month, uint8_t day) { uint32_t tmp; uint8_t YH,YL; uint8_t week_M[12] = {0, 3, 3, 6, 1, 4, 6, 2, 5, 0, 3, 5}; YH = year / 100; YL = year % 100; if (YH > 19) { YL+=100; } tmp = YL+YL / 4; tmp = tmp % 7; tmp = tmp + day + week_M[month - 1]; if (YL % 4 == 0 && month < 3) { tmp--; } return (tmp % 7); } /** * @brief 获取转化后的当前时间(只考虑中国东8区), 年月日时分秒星期 * @note * @param None * @retval 当前时间, @see struct Time */ Time NowTime(uint32_t clockCount) { uint32_t temp, ytemp; uint32_t now_clock; now_clock = clockCount + 28800; // +东8区 temp = now_clock / 86400; // 根据秒数,换算出天数 ytemp = 1970; // 从1970年开始计算 if(temp != 0) { while(temp >= 365) { if((ytemp % 4 == 0 && ytemp % 100 != 0) || ytemp % 400 == 0) //是否闰年 { if(temp >= 366) //闰年的秒数 { temp -= 366; } else { ytemp++; break; } } else { temp -= 365; //非闰年 } ytemp++; } } clock.Year = ytemp; //年 ytemp=0; while(temp >= 28) //超过了一个月 { if((clock.Year % 4 == 0) && ytemp == 1) //闰年 2月 { if(temp >= 29) { temp -= 29; //闰年2月有29天 } else { break; } } else if((clock.Year % 4 != 0) && ytemp == 1) //不是闰年 2月 { if(temp >= 28) { temp -= 28; //非闰年2月有28天 } else { break; } } else if(ytemp == 0 || ytemp == 2 || ytemp == 4 || ytemp == 6 || ytemp == 7 || ytemp == 9 || ytemp == 11) //大月月份 { if(temp >= 31) { temp -= 31; } else { break; } } else if(ytemp == 3 || ytemp == 5 || ytemp == 8|| ytemp == 10) //小月月份 { if(temp >= 30) { temp -= 30; } else { break; } } ytemp++; } clock.Month = ytemp + 1; //月份 clock.Day = temp + 1; //日 temp = now_clock % 86400; //得到秒钟数 clock.Hour = temp / 3600; //计算出小时 clock.Min = (temp % 3600) / 60; //计算出分钟 clock.Sec = (temp % 3600) % 60; //计算出秒钟 clock.Week = RTC_Week(clock.Year, clock.Month, clock.Day);//计算出星期数 return clock; }
返回至
汽车充电桩通讯文档-设备(完整版)
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息