|
@@ -0,0 +1,475 @@
|
|
|
+VRC36与VR监控后台RS485通信协议
|
|
|
+
|
|
|
+ 版 本
|
|
|
+ 作者/修改者
|
|
|
+ 日 期
|
|
|
+ 备 注
|
|
|
+V1.0.0
|
|
|
+车娟
|
|
|
+2019-05-24
|
|
|
+创建
|
|
|
+V1.0.1
|
|
|
+车娟
|
|
|
+2021-03-31
|
|
|
+1 数据包增加CRC校验
|
|
|
+2 扩展交易命令,增加交易序列号与提挂枪时间
|
|
|
+3 增加回叫一笔交易命令
|
|
|
+ 4 增加回叫一天交易命令
|
|
|
+ V1.0.2
|
|
|
+陈华坤
|
|
|
+2021-07-19
|
|
|
+1 实时加油02增加上传油流速
|
|
|
+2 交易命令字04增加最大压力
|
|
|
+ V1.0.3
|
|
|
+陈华坤
|
|
|
+2021-08-30
|
|
|
+ VCC错误信息上传命令
|
|
|
+ 实时加油02和交易命令字04增加PWM值
|
|
|
+ 增加VCC错误信息表
|
|
|
+V1.0.4
|
|
|
+陈硕
|
|
|
+2021.12.15
|
|
|
+1、交易回复命令增加调整值字段;
|
|
|
+2、回叫交易增加调整值字段;
|
|
|
+V1.0.5
|
|
|
+陈硕
|
|
|
+2022.07.15
|
|
|
+1 扩展心跳命令,增加油枪状态发给监控后台
|
|
|
+V1.0.6
|
|
|
+陈硕
|
|
|
+2023.12.4
|
|
|
+读写配置工具的气液比和压损值分为改为A枪效率和B枪效率
|
|
|
+V1.0.7
|
|
|
+陈华坤
|
|
|
+2024.08.19
|
|
|
+实时交易增加电流值
|
|
|
+
|
|
|
+一、 后台监控数据内容:
|
|
|
+a) 枪号、枪状态、油品、提枪时间、挂枪时间;
|
|
|
+b) 实时数据内容:气体积,油体积,气流速,油流速,气压力;
|
|
|
+c) 挂枪后数据内容:气体积、平均气体压力、平均气流速、油体积、平均油流速、气液比;
|
|
|
+
|
|
|
+二、 连接方式:
|
|
|
+ RS485方式, 监控后台为主设备,VRC为从设备,监控后台通过轮询的方式与多块VRC板通信。
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+三、 数据说明
|
|
|
+数据项
|
|
|
+数据格式
|
|
|
+长度
|
|
|
+备注
|
|
|
+加油点
|
|
|
+Bin
|
|
|
+1Byte
|
|
|
+
|
|
|
+枪号
|
|
|
+Bin
|
|
|
+1Byte
|
|
|
+
|
|
|
+枪状态
|
|
|
+Bin
|
|
|
+1Byte
|
|
|
+
|
|
|
+油品
|
|
|
+BCD
|
|
|
+4Byte
|
|
|
+
|
|
|
+提枪时间
|
|
|
+BCD
|
|
|
+7 Byte
|
|
|
+
|
|
|
+挂枪时间
|
|
|
+BCD
|
|
|
+7 Byte
|
|
|
+
|
|
|
+油体积
|
|
|
+HEX
|
|
|
+3 Byte
|
|
|
+小数点2
|
|
|
+油流速
|
|
|
+HEX
|
|
|
+2 Byte
|
|
|
+小数点1
|
|
|
+气体积
|
|
|
+HEX
|
|
|
+3 Byte
|
|
|
+小数点2
|
|
|
+气流速
|
|
|
+HEX
|
|
|
+2 Byte
|
|
|
+小数点1
|
|
|
+气压力
|
|
|
+HEX
|
|
|
+2 Byte
|
|
|
+无小数点
|
|
|
+气液比(效率)
|
|
|
+HEX
|
|
|
+2 Byte
|
|
|
+小数点3
|
|
|
+压力
|
|
|
+HEX
|
|
|
+2Byte
|
|
|
+
|
|
|
+PWM
|
|
|
+HEX
|
|
|
+2Byte
|
|
|
+
|
|
|
+VCC错误ID
|
|
|
+HEX
|
|
|
+1Byte
|
|
|
+
|
|
|
+调整值
|
|
|
+HEX
|
|
|
+2Byte
|
|
|
+
|
|
|
+电流值
|
|
|
+HEX
|
|
|
+2Byte
|
|
|
+
|
|
|
+
|
|
|
+四、 通信协议:
|
|
|
+4.1 数据包格式
|
|
|
+包头(0xfa)+ 目标地址+源地址+控制/帧号+数据长度+命令字+数据 + CRC校验
|
|
|
+名称
|
|
|
+包头
|
|
|
+目标地址
|
|
|
+源地址
|
|
|
+控制/帧号
|
|
|
+数据长度
|
|
|
+命令字
|
|
|
+数据
|
|
|
+CRC
|
|
|
+长度
|
|
|
+1
|
|
|
+2
|
|
|
+2
|
|
|
+1
|
|
|
+2
|
|
|
+
|
|
|
+
|
|
|
+2
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+BCD
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+各字段定义说明如下:
|
|
|
+ 包头(0xfa)
|
|
|
+ 0xfa为转义字符,在数据里每两个 0xfa 替换为一个 0xfa;在目标地址、源地址、帧号/控制、有效数据长度中不能出现 0xfa,转义字符不计入 CRC 中,CRC 中采用转义。
|
|
|
+ 监控后台默认地址为0, VRC的地址从1-31,通过拨码开关设置。后台向VRC发送消息,源地址为0,目标地址为VRC的地址,反之VRC向监控后台发送消息,源地址为VRC的地址,目标地址为0。
|
|
|
+ 帧号占用5bits(bit0-bit4),帧号由监控后台组织,从1-0x1f循环累加使用。VRC返回消息帧号的低5位填充接收到帧号。当VRC返回多条信息时,最后一条消息的帧号bit7位置为1,中间消息的帧号bit7位置为0,只返回一条消息帧号的bit7位也置为1。
|
|
|
+ CRC校验
|
|
|
+ 从目标地址到到数据域计算CRC值
|
|
|
+4.2 命令字
|
|
|
+4.2.1 长心跳命令
|
|
|
+命令字:0x6
|
|
|
+功能: 同步VRC36的系统时间与监控后台的系统时间,锁枪/解锁枪,每?分钟发送一次。
|
|
|
+后台发送(len: 24, 长度字段之后):
|
|
|
+0x6 + PC当前时间(7) + 当前操作(16)
|
|
|
+注:当前操作是后台该油机主板8个油枪位的枪号+该油枪的锁枪状态。油枪位1的枪号+状态1+油枪位2的枪号+状态2+.......+油枪位8的枪号+状态8 (状态 0-正常,1-锁枪。 油枪位没油枪填0,且放到末端)。
|
|
|
+
|
|
|
+VRC应答:(len: 24, 长度字段之后)
|
|
|
+长度(2Byte)+ 命令字 + PC当前时间(7) + 当前操作(16,可只传四条枪与状态共8字节)
|
|
|
+
|
|
|
+
|
|
|
+4.2.2 短心跳命令(获取状态命令)(注:版本V1.0.5改为回上面的长心跳命令)
|
|
|
+命令字:0x60
|
|
|
+功能: 获取VRC各加油点的状态或交易数据。
|
|
|
+后台发送(len: 1, 长度字段之后):
|
|
|
+0x60
|
|
|
+
|
|
|
+VRC应答:
|
|
|
+ VRC处于空闲状态,返回命令字,
|
|
|
+ 0x60(len: 1, 长度字段之后)
|
|
|
+ 加油点处于非空闲状态,返回非空闲状态加油点的状态,可能一次回复多条状态消息。
|
|
|
+ 状态消息定义:
|
|
|
+状态字
|
|
|
+长度
|
|
|
+数据内容
|
|
|
+备注
|
|
|
+0x1
|
|
|
+14
|
|
|
+0x1 + 加油点(1)+ 枪(1) + 加油开始时间(7)+ 油品(4)
|
|
|
+提枪
|
|
|
+0x2
|
|
|
+23
|
|
|
+0x2 + 加油点(1)+ 枪(1) + 油量(3)+ 气量(3)+ 气流速(2) + 气液比(2) + 气压力(2)+气体流量计错误个数(2)+油流速(2)
|
|
|
++PWM(2)+电流值(2)
|
|
|
+实时加油
|
|
|
+0x3
|
|
|
+10
|
|
|
+0x3 + 加油点(1)+ 枪(1) + 加油结束时间(7)
|
|
|
+挂枪
|
|
|
+0x4
|
|
|
+39
|
|
|
+0x4 + 加油点(1)+ 枪(1)+交易序列号(4) +总油量(3)+ 最大油流速(2)+ 总气量(3)+ 最大气流速(2)+气液比(2)+提枪时间(7)+挂枪时间(7)+气体流量计错误个数(2)+ 气压力(2)+PWM(2)+平均电流值(2)
|
|
|
+交易数据,缓冲2笔交易
|
|
|
+
|
|
|
+
|
|
|
+枪(1)+交易序列号(4) +总油量(3)+ 最大油流速(2)+ 总气量(3)+ 最大气流速(2)+气液比(2)+提枪时间(7)+挂枪时间(7)+气体流量计错误个数(2)+ 气压力(2)+PWM(2)+ 调整值(2)
|
|
|
+回叫交易(交易回叫命令里的交易数据,从枪号开始)
|
|
|
+0xc
|
|
|
+6
|
|
|
+后台下发:(len: 6, 长度字段之后)
|
|
|
+长度(2Byte)+ 命令字 + 加油点(1byte)+交易序列号(4byte)
|
|
|
+
|
|
|
+油机应答: (length: 7+0/33)
|
|
|
+长度(2Byte)+ 命令字 + 加油点(1byte)+交易序列号(4byte)+ 结果(1byte)+回叫交易(与交易数据有区别,详见前面)
|
|
|
+结果:0-成功,返回交易数据;1-失败,没有交易数据
|
|
|
+
|
|
|
+回叫一笔交易
|
|
|
+0xd
|
|
|
+8 + n *37
|
|
|
+后台下发:(len: 7, 长度字段之后,请求回叫一天的交易)
|
|
|
+长度(2Byte)+ 命令字 + 0x1 + 加油点(1byte)+日期(4byte)
|
|
|
+油机应答: (length: 8 + n *33)
|
|
|
+长度(2Byte)+ 命令字 + 0x2 + 加油点(1byte)+ 日期(4byte) +传输状态(1byte)+ 传输交易序笔数(1byte)+回叫交易(与交易数据有区别,详见前面)
|
|
|
+0101000101xxxx0d020120210331010a...
|
|
|
+传输状态:0-失败,没有交易数据,1-首次传输,2-传输中,3-最后一次传输
|
|
|
+传输交易笔数:默认每次传输10笔,最后一次传输根据实际情况
|
|
|
+
|
|
|
+后台应答:(length: 8, 长度字段之后,确认接收回叫交易)
|
|
|
+长度(2Byte)+ 命令字 + 0x2 + 加油点(1byte)+ 日期(4byte) +结果
|
|
|
+010100010100070d02012021033100
|
|
|
+结果:0-成功,返回交易数据;1-失败,没有交易数据
|
|
|
+
|
|
|
+回叫一天的交易
|
|
|
+0x0E
|
|
|
+0x24+2*n
|
|
|
+长度(2)+ 命令字 (1)+加油点(1)+ 枪(1)+交易序列号(4)+提枪时间(7)+挂枪时间(7)+ 错误组数(1) +错误ID1(1) +ID1数量(1)+错误ID2 +ID2数量......+错误IDn+IDn数量
|
|
|
+交易结束发送错误信息
|
|
|
+错误类型含义如下表
|
|
|
+ VCC错误信息表
|
|
|
+错误ID
|
|
|
+含义
|
|
|
+102
|
|
|
+设置、配置和校准数据写入闪存时发生闪存错误
|
|
|
+103
|
|
|
+未初始化的闪存,未校准的VCC,在VCC测试台上重新校准VCC和/或更换为校准装置
|
|
|
+104
|
|
|
+不支持的闪存版本VCC软件更新至不会产生此错误的软件版本,或使用校准的备用件更换设备
|
|
|
+105
|
|
|
+闪存CRC不正确,更换VCC单元
|
|
|
+112
|
|
|
+VCC A侧压力测量错误,可能原因VCC有缺陷、VR系统堵塞、阀门未打开、VR过滤器堵塞、喷嘴是否指向"向下"位置?、软管是否无扭曲?、检查系统堵塞、
|
|
|
+113
|
|
|
+VCCA侧流量传感器连接断开,更换装置
|
|
|
+114
|
|
|
+VCC B侧压力测量错误,可能原因VCC有缺陷、VR系统堵塞、阀门未打开、VR过滤器堵塞、喷嘴是否指向"向下"位置?、软管是否无扭曲?、检查系统堵塞、
|
|
|
+115
|
|
|
+VCC B侧流量传感器连接断开,更换装置
|
|
|
+120
|
|
|
+有部分压力、堵塞时未测量到流量
|
|
|
+123
|
|
|
+与流量相比,压力过高
|
|
|
+124
|
|
|
+与流量相比,压力过低
|
|
|
+128
|
|
|
+VCC A测流量传感器失去平衡,检查是否堵塞
|
|
|
+129
|
|
|
+VCC B测流量传感器失去平衡,检查是否堵塞
|
|
|
+131
|
|
|
+ADC测量到的通道与预期的不同
|
|
|
+132
|
|
|
+初始化ADC通信失败,ADC是否存在/损坏?
|
|
|
+135
|
|
|
+校准测量可能已取消,重新校准VCC
|
|
|
+140
|
|
|
+在VCC启动时的压力传感器A侧自检期间,在测量一个ADC通道的零电平时发现问题,可能存在故障的VFM
|
|
|
+141
|
|
|
+在VCC启动时压力传感器A侧自检期间,在测量一个ADC通道的某些电流时发现问题
|
|
|
+144
|
|
|
+在VCC启动时的压力传感器A侧自检期间,在测量一个ADC通道的零电平时发现问题,可能存在故障的VFM
|
|
|
+145
|
|
|
+在VCC启动时压力传感器A侧自检期间,在测量一个ADC通道的某些电流时发现问题
|
|
|
+142
|
|
|
+在VCC启动时的压力传感器B侧自检期间,在测量一个ADC通道的零电平时发现问题,可能存在故障的VFM
|
|
|
+143
|
|
|
+在VCC启动时压力传感器B侧自检期间,在测量一个ADC通道的某些电流时发现问题
|
|
|
+146
|
|
|
+在VCC启动时的压力传感器B侧自检期间,在测量一个ADC通道的零电平时发现问题,可能存在故障的VFM
|
|
|
+147
|
|
|
+在VCC启动时压力传感器B侧自检期间,在测量一个ADC通道的某些电流时发现问题
|
|
|
+
|
|
|
+4.2.3 确认交易命令
|
|
|
+命令字:0x7
|
|
|
+功能: 监控后台确认交易已收到
|
|
|
+后台发送(len:9, 长度字段之后):
|
|
|
+0x7 + 枪(1) + 交易序列号(4)+ 加油点(1byte)+ 调整值(2)
|
|
|
+VRC不需要应答。储存调整值到对应交易中,回叫交易里时带该字段
|
|
|
+
|
|
|
+4.2.4 读取配置数据
|
|
|
+命令字:0x21
|
|
|
+功能: 获取VRC的配置数据,在配置工具中实现
|
|
|
+后台发送(len:n, 长度字段之后):
|
|
|
+0x21 + 数据个数(2byte)+ data_id_1(2byte) + ... + data_id_n(2byte)
|
|
|
+VRC应答(len: n, 长度字段之后):
|
|
|
+0x21 + 数据个数(2byte)+ data_id_1(2byte)+ data_id_1_len(1byte)+ data1(data_id_1_len byte) + ... + data_id_n(2byte)+ data_id_n_len(1byte)+ datan(data_id_n_len byte)
|
|
|
+4.2.5 写入配置数据
|
|
|
+命令字:0x22
|
|
|
+功能: 更新VRC的配置数据,在配置工具中实现
|
|
|
+后台发送(len: n, 长度字段之后):
|
|
|
+0x22 + 数据个数(2byte)+ data_id_1(2byte)+ data_id_1_len(1byte)+ data1(data_id_1_len byte) + ... + data_id_n(2byte)+ data_id_n_len(1byte)+ datan(data_id_n_len byte)
|
|
|
+后台根据上面21命令油机的回复修改需要修改的字段再回发22命令
|
|
|
+VRC应答(len: 2, 长度字段之后):
|
|
|
+0x22 + error(1byte)
|
|
|
+error定义:
|
|
|
+0:成功
|
|
|
+1:数据包格式错误
|
|
|
+2:非空闲态
|
|
|
+3: 写入配置数据失败
|
|
|
+data_id 定义:
|
|
|
+数据项
|
|
|
+data_id
|
|
|
+格式
|
|
|
+长度
|
|
|
+备注
|
|
|
+外部枪号
|
|
|
+0x1
|
|
|
+BIN
|
|
|
+8Byte
|
|
|
+8条枪,未连接的枪值为0
|
|
|
+每升的油脉冲个数
|
|
|
+0x2
|
|
|
+BIN
|
|
|
+2Byte
|
|
|
+默认值为100
|
|
|
+大气压
|
|
|
+0x3
|
|
|
+BIN
|
|
|
+2Byte
|
|
|
+默认值30
|
|
|
+交易检测模式
|
|
|
+0x4
|
|
|
+BIN
|
|
|
+1Byte
|
|
|
+0-枪信号, 1-脉冲,默认值0
|
|
|
+挂枪后交易结束延迟时间
|
|
|
+0x5
|
|
|
+BIN
|
|
|
+1Byte
|
|
|
+默认20, 单位100ms,范围:10-50
|
|
|
+
|
|
|
+波特率
|
|
|
+0x6
|
|
|
+BIN
|
|
|
+1Byte
|
|
|
+0-9600(默认值), 1-14400,2-19200,3-38400,4-56000, 5-57600
|
|
|
+版本号
|
|
|
+0x11
|
|
|
+Char
|
|
|
+9Byte
|
|
|
+格式xx.xxx.xx,只读参数
|
|
|
+调试信息
|
|
|
+0x12
|
|
|
+Bin
|
|
|
+1Byte
|
|
|
+0-关闭调试信息,1-打开调试信息
|
|
|
+IP地址
|
|
|
+0x21
|
|
|
+Char
|
|
|
+15Byte
|
|
|
+默认值192.168.1.5 不足15后面留空,对应ascii码为0
|
|
|
+监控IP地址
|
|
|
+0x22
|
|
|
+Char
|
|
|
+15Byte
|
|
|
+默认值192.168.1.100
|
|
|
+端口号
|
|
|
+0x23
|
|
|
+BIN
|
|
|
+2Byte
|
|
|
+默认值10000
|
|
|
+气液比
|
|
|
+0x24
|
|
|
+HEX
|
|
|
+2Byte
|
|
|
+小数点 3
|
|
|
+压损值
|
|
|
+0x25
|
|
|
+HEX
|
|
|
+2Byte
|
|
|
+无小数点
|
|
|
+恢复出厂设置
|
|
|
+0x26
|
|
|
+Bin
|
|
|
+1Byte
|
|
|
+0-不恢复出厂设置,1-恢复出厂设置
|
|
|
+
|
|
|
+4.2.6 读日志信息
|
|
|
+命令字:0x31
|
|
|
+功能: 从VRC中读取日志信息,在配置工具中实现
|
|
|
+后台发送(len:3, 长度字段之后):
|
|
|
+0x31 + 日志条数(2byte)
|
|
|
+注:日志条数:0-8000,0表示所有日志
|
|
|
+
|
|
|
+VRC应答(len: n, 长度字段之后):
|
|
|
+0x31 + 1条日志记录()
|
|
|
+或 0x31 + 错误代码
|
|
|
+错误代码:
|
|
|
+1:日志为空
|
|
|
+2: 读取日志数据失败
|
|
|
+3:非空闲状态
|
|
|
+注: 每次发送1条记录,连续发送直到发送完毕。
|
|
|
+
|
|
|
+4.2.7 读交易信息
|
|
|
+命令字:0x32
|
|
|
+功能: 从VRC中读取交易记录,在配置工具中实现
|
|
|
+后台发送(len:4, 长度字段之后):
|
|
|
+0x32 + 加油点(1byte) + 记录条数(2byte)
|
|
|
+注:加油点:1-4, 记录条数:0-2000,0表示所有记录
|
|
|
+
|
|
|
+油机应答(len: n, 长度字段之后):
|
|
|
+0x32 + 1条交易记录
|
|
|
+或 0x32 + 错误代码
|
|
|
+错误代码:
|
|
|
+1:记录为空
|
|
|
+2: 读取记录数据失败
|
|
|
+3:非空闲状态
|
|
|
+4:加油点超出范围
|
|
|
+注:每次发送1条记录,连续发送直到发送完毕。
|
|
|
+
|
|
|
+4.3 短心跳命令(获取状态命令)消息交互过程描述
|
|
|
+4.3.1 返回枪状态
|
|
|
+例如: VRC有4个加油点,其中加油点1在提枪状态,加油点2正在加油,加油点3在挂枪状态,加油点4在空闲状态。VRC收到短心跳命令后,检查各加油点状态,将加油点1、2、3的状态分三条消息(每条消息都包含包头与CRC校验)依次发送给后台,最后一条消息的帧号bit7为置为1,本次消息交互结束。
|
|
|
+
|
|
|
+4.3.2 返回枪状态与交易数据
|
|
|
+例如:加油点1在提枪状态,加油点3加油结束,有新交易未上传,加油点2、4在空闲态。VRC收到短心跳命令后,检查各加油点状态,将加油点1、3的状态分二条消息发送给后台。监控后台接收到加油点3的交易数据后,发送交易确认命令给VRC,本次消息交互结束,加油点3转为空闲状态。在下一次接收到短心跳命令后,只返回加油点1的提枪状态。
|
|
|
+
|
|
|
+如果VRC没有收到来自后台的交易确认命令,在下一次的短心跳命令将再次上传交易数据。每个加油点有2个交易缓存。如果有新的交易开始,上一次的交易还没有上传成功,上次的交易还可以继续上传。若超过两条未上传的交易,最早的交易被覆盖。
|
|
|
+
|
|
|
+
|
|
|
+12 (回叫一笔交易)
|
|
|
+后台下发:(len: 6, 长度字段之后)
|
|
|
+长度(2Byte)+ 命令字 + 加油点(1byte)+交易序列号(4byte)
|
|
|
+010100010100060c0100000001
|
|
|
+油机应答: (length: 7+0/33)
|
|
|
+长度(2Byte)+ 命令字 + 加油点(1byte)+交易序列号(4byte)+ 结果(1byte)+回叫交易(与交易数据有区别,详见前面)
|
|
|
+结果:0-成功,返回交易数据;1-失败,没有交易数据
|
|
|
+
|
|
|
+13(回叫一天的交易)
|
|
|
+后台下发:(len: 7, 长度字段之后,请求回叫一天的交易)
|
|
|
+长度(2Byte)+ 命令字 + 0x1 + 加油点(1byte)+日期(4byte)
|
|
|
+010100010100070d010120210331
|
|
|
+
|
|
|
+油机应答: (length: 8 + n *33)
|
|
|
+长度(2Byte)+ 命令字 + 0x2 + 加油点(1byte)+ 日期(4byte) +传输状态(1byte)+ 传输交易序笔数(1byte)+ 回叫交易(与交易数据有区别,详见前面)
|
|
|
+0101000101xxxx0d020120210331010a...
|
|
|
+传输状态:0-失败,没有交易数据,1-首次传输,2-传输中,3-最后一次传输
|
|
|
+传输交易笔数:默认每次传输10笔,最后一次传输根据实际情况
|
|
|
+
|
|
|
+后台应答:(length: 8, 长度字段之后,确认接收回叫交易)
|
|
|
+长度(2Byte)+ 命令字 + 0x2 + 加油点(1byte)+ 日期(4byte) +结果
|
|
|
+010100010100070d02012021033100
|
|
|
+结果:0-成功,返回交易数据;1-失败,没有交易数据
|
|
|
+
|
|
|
+
|
|
|
+ Engineering Department, Tokheim
|
|
|
+ Engineering Department, Tokheim
|