如何实现串口转CAN的通信?
的有关信息介绍如下:远程IO设备实现Modbus通信时,均作为从机,遵循Modbus通信过程,采用了MODBUS-RTU协议的命令子集,使用读寄存器命令(03)和单寄存器设置命令(06)。每消息的开头和结尾至少有3.5个字节时间的间隔。
注:
03命令用于主机读取远程IO设备的采集数据或端口状态;
06命令用于设置设备参数或远程控制IO设备继电器动作;
· 功能码03(读指令)
利用Modbus通信协议的03功能码,读取设备的数值。
主机请求数据格式:从机地址、功能码、起始地址、数据个数及CRC码
例如: 从机地址为01,读取设备寄存器地址=0000的数值(1个数值)。
从机响应数据格式:从机地址、功能码、字节数、数据区及CRC码
寄存器数据为二个字节,高位在前。CRC码都是二个字节,低位在前。
例如: 从机地址为01返回:
01 03 02 DATA0H DATA0L CRCL CRCH
· 功能码06(写指令)
利用Modbus通信协议的06功能码,设置设备的一个寄存器的数值。
主机请求数据格式:从机地址、功能码、寄存器地址、设置的数据及CRC码
常用指令示例
设备串口出厂参数如下:
CRC值的计算可网上搜索CRC在线计算。
以下以设备485地址为1,举例:
1)读设备所有寄存器内容:0001至0016,共22个,每个寄存器内容占2个字节,
上位主机发送:01、 03、 00、 01、 00、 16 、95 、C4
从机设备返回:01、03 、2C、 (44字节数据) 、CRCL 、CRCH
2)读485地址(03读指令)
上位主机发送:01、 03 、00 、01、 00、 01、 D5 、CA
从机设备返回:01 、03、 02、 00 、01、
79、 84(地址为1)
3)设485地址(06写指令)
上位主机发送:00 、06 、00、 01 、00 、01 、
18、 1B(设置地址为1)
从机设备返回:01、 06 、00 、01、 00、 01 、19 、CA