当前位置:文档之家› MODBUS_RTU通信协议_

MODBUS_RTU通信协议_

MODBUS RTU通信协议

本通信协议采用标准ModBus协议,采用RTU(十六进制数)传输模式。ModBus协议是一种主---从式协议。任何时刻只有一个设备能够在线路上进行发送。由主站管理信息交换,且只有主站能发起。主站会依次对从站进行轮流查询。只有当从站地址与轮询地址相匹配,从站才能回复消息。从站之间不能进行直接通信。协议桢中不包含任何消息报头及消息结束符,消息的开始和结束依靠间隔时间来识别,当间隔时间长于或等于3.5个字符时,即作为检测到桢结束。如果网络内没有与查询地址相一致的从站或从站接收时CRC校验出错,主站将不会接收到返回桢,这时主站根据超时设定判断是否超时,如超时,作出重发或弹出异常错误窗口动作。

协议桢定义如下:

从站地址功能代码数据区CRC16

从站地址:地址必须在1---247之间。

在同个主站网络中每个从站地址必须唯一。

设定仪表二级参数DE。

功能代码:包含读、写多个寄存器。

数据:以二进制代码传输。

CRC16:循环冗余校验,校验从从站地址到数据区最后一个字节,计算多项式码为A001(hex)。

通讯口设置

通讯方式异步串行通讯接口,如RS-485,RS-232,RS-422等

波特率1200~9600bps(可由设定仪表二级参数自由更改,设定仪表二级参数BT,默认9600)见表10 字节数据格式 HEX

. 一位起始位

. 八位数据位

. 一位停止位

. 无校验

起始位数据位(从低到高)停止位

消息桢格式(读、写功能是从主站角度定义的)

读寄存器桢

读寄存器返回桢

写寄存器桢

写寄存器返回桢

错误返回桢

功能代码表:1

错误代码表:2

寄存器

0x03,0x10命令对应的保持寄存器地址表,MODBUS地址40001 对应于寄存器地址0。

所以MODBUS上面传输的地址应该是寄存器地址+ 40001。每个通道的起始地址为40001

注:1. 继电器在低危险报警浓度和高危险报警浓度都工作。

2.必须在控制器上面使用 1066 的指令来读取所有探头的高低报警数值,MODBUS里面的低危险报警值和低危险报警值,以及报警状态才能有正确的数值反馈。

3.在读取数据的时候,建议先读取连接状态,判断探头是否在线,然后再读取其他数据。

气体名称

#define GAS_O2 0x01

#define GAS_EX 0x02

#define GAS_CO 0x03

#define GAS_H2S 0x04

#define GAS_SO2 0x05

#define GAS_NO 0x06

#define GAS_NO2 0x07

// 0x08

#define GAS_CL2 0x08

#define GAS_NH3 0x09

#define GAS_H2 0x0A

#define GAS_HCN 0x0B

#define GAS_PH3 0x0C

#define GAS_O3 0x0D

#define GAS_CLO2 0x0E

#define GAS_C2H4O 0x0F

// 0x10

#define GAS_CH2O 0x10

#define GAS_SIH4 0x11

#define GAS_HF 0x12

#define GAS_F2 0x13

#define GAS_COCL2 0x14

#define GAS_CO2 0x15

#define GAS_SO2F2 0x16

#define GAS_C2H2 0x17

#define GAS_CH4O 0x18

// 0x18

#define GAS_N2 0x19

#define GAS_C6H6 0x1A

#define GAS_VOC 0x1B

#define GAS_HCL 0x1C

#define GAS_THT 0x1D

#define GAS_C2H4 0x1E

#define GAS_CH3BR 0x1F

#define GAS_CH4 0x20

#define GAS_NOX 0x21 #define GAS_SF6 0x22 #define GAS_B2H6 0x23 #define GAS_ASH3 0x24 #define GAS_C2H6O 0x25

相关主题