MODBUSRTU通信协议
本通信协议采用标准ModBus协议,采用RTU(十六进制数)传输模式。ModBus协议是一种主从式协议。任何时刻只有一个设备能够在线路上进行发送。由主站管理信息交换,且只有主站能发起。主站会依次对从站进行轮流查询。只有当从站地址与轮询地址相匹配,从站才能回复消息。从站之间不能进行直接通信。协议桢中不包含任何消息报头及消息结束符,消息的开始和结束依靠间隔时间来识别,当间隔时间长于或等于35个字符时,即作为检测到桢结束。如果网络内没有与查询地址相一致的从站或从站接收时CRC校验出错,主站将不会接收到返回桢,这时主站根据超时设定判断是否超时,如超时,作出重发或弹出异常错误窗口动作。协议桢定义如下:
从站地址
功能代码
数据区
CRC16
从站地址:地址必须在1247之间。在同个主站网络中每个从站地址必须唯一。设定仪表二级参数DE。功能代码:包含读、写多个寄存器。数据:以二进制代码传输。CRC16:循环冗余校验,校验从从站地址到数据区最后一个字节,计算多项式码为A001hex。
通讯口设置通讯口设置
通讯方式波特率异步串行通讯接口,如RS485,RS232,RS422等1200~9600bps(可由设定仪表二级参数自由更改,设定仪表二级参数BT,默认9600)见表10
字节数据格式HEX
一位起始位八位数据位一位停止位无校验
1起始位
1停止位
数据位(从低到高)
f消息桢格式(读、写功能是从主站角度定义的)
读寄存器桢
从站地址1字节1247功能代码1字节03H首寄存器地址2字节AddrHAddrL寄存器数N2字节NHNL(124)CRC162字节CrcLCrcH
读寄存器返回桢读寄存器返回桢
从站地址1字节1247功能代码1字节03H字节数1字节N2寄存器数据N2字节DataHDataLCRC162字节CrcLCrcH
写寄存器桢写寄存器桢
从站地址1字节1247功能代码1字节10H首寄存器地址2字节AddrHAddrL寄存器数N2字节NHNL124字节数1字节N2寄存器数据N2字节DataHDataLCRC162字节CrcLCrcH
写寄存器返回桢写寄存器返回桢
从站地址1字节1247功能代码1字节10H首寄存器地址2字节AddrHAddrL寄存器数N2字节NHNL124CRC162字节CrcLCrcH
错误返回桢
从站地址1字节1247功能代码1字节查询功能代码80H错误代码1字节见表2CRC162字节CrcLCrcH
功能代码表:功能代码表:1
功能代码03H10HModBus名ReadHoldi
gRegistersWriteMultipleRegisters功能名读N个寄存器值写N个寄存器值广播NoNo一次连续的N的最大值2424
错误代码表:错r