MODBUS-RTU 通信协议
一.概述:
MODBUS-RTU 通信协议
x协议遵守 MODBUS 通信协议,采用了 MODBUS 协议中的子集 RTU 方式.RS485 半双工工作方式.
二.串行数据格式:
串口设置:无/奇/偶校验,8 位数据,1 位停止位.
举例:9600,N,8,1 含义:9600bps,无校验,8 位数据位,1 位停位.本 变 送 器 支 持 的 串 口 x x 率 为 : 1200,2400,4800,9600,19200,38400,57600,115200
CRC 校验的多项式:0xA001.
通信协议可以传输有符号整形数,也可以传输浮点类型数据。三.通信格式:
有符号整形数输出:
A. 发送读命令格式:
地址 | 功 能 码 | 数据起始 (H) | 数据起始 (L) | 数据个数 (H) | 数据个数 (L) | CRC16 (L) | CRC16 (H) |
0X01 | 0X03 | 0X00 | 0X00 | 0X00 | 0X01 | 0X84 | 0X0A |
B.返回读数据格式:举例
地址 | 功 能 码 | 数据长度 | 数据 (H) | 数据 (L) | CRC16 (L) | CRC16 (H) |
0X01 | 0X03 | 0X02 | 0X00 | 0X01 | 0X79 | 0X84 |
2.写命令格式(06 功能码)举例
地址 | 功 能 码 | 数据起始 (H) | 数据起始 (L) | 数据 (H) | 数据 (L) | CRC16 (L) | CRC16 (H) |
0X01 | 0X06 | 0X00 | 0X00 | 0X00 | 0X02 | 0X08 | 0X0B |
B.返回读数据格式:举例
地址 | 功 能码 | 数据起始 (H) | 数据起始 (L) | 数据 (H) | 数据 (L) | CRC16 (L) | CRC16 (H) |
0X01 | 0X06 | 0X00 | 0X00 | 0X00 | 0X02 | 0X08 | 0X0B |
3.异常应答返回
地址 | 功 能 码 | 异常码 | CRC16 (L) | CRC16 (H) |
0X01 | 0X80 + 功能码 | 0x01(非法功能) 0x02( 非法数据地址) 0x03(非法数据 |
整形数支持的命令及命令和数据意义:
功能码 | 数据偏移 (10 进制) | 数据 个数 | 字 节 | 数据范围 | 指令意义 |
0x03 功能码读取数据 | |||||
整形数读取范围 | |||||
0x03 | 0 | 1 | 2 | 1-255 | 读取从机地址 |
0x03 | 1 | 1 | 2 | 0-1200 1-2400 2-4800 3-9600 4-19200 5-38400 6-57600 7-115200 | xx率读取 |
0x03 | 2 | 1 | 2 | 0- 无校验 1- ODD 2- EVEN | 0- 无校验 1- 奇数校验 2- 偶数校验 |
0x03 | 3 | 1 | 2 | 0- Kpa 1- Mpa 2- Ma 3- % 4- Inh2o 5- Fth2o 6- MmH2O 7- MmHg 8- PSI 9- Bar 10- Mbar 11- Kg/cm2 12- Pa 13- Torr 14- Atm 15- 空 16- M 17- Cm 18- Mm 19- inHg 20- mHg 21- Mh2O 22- ℃ | 压力单位 |
0x03 | 4 | 1 | 2 | 0-#### 0-###.# 0-##.## 0-#.### 0-#.#### | 小数点分别代表 0-4 位小数点,小数点位置可以调整显示的分辨率。 |
0X03 | 5 | 1 | 2 | 整形测量值输 出 | 显示范围-32768~32767 |
0x03 | 6 | 1 | 2 | 0-电流显示 1-压力显示 2-百分比显示 | 主屏显示模式 |
0x03 | 7 | 1 | 2 | 0-不显示 1-显示温度 | 付屏显示模式 | |
0x03 | 8 | 1 | 2 | 0-线性输出 1-开方输出 | 电流输出模式 | |
0X03 | 9 | 1 | 2 | 0-30 | 滤波系数 | |
整形数据用户需要的列举完毕 | ||||||
浮点数读取范围 | ||||||
功 能 码 (16 进制) | 偏移地址 (10 进制) | 字数 | 字 节数 | 数据范围 | 备注 | |
0x03 | 20-21 | 2 | 4 | 0-20.000 | 理论电流输出 | |
0x03 | 22-23 | 2 | 4 | -19999-99999 | 压力输出(主变量输出) | |
0x03 | 24-25 | 2 | 4 | -19999-99999 | 主变量偏移值 | |
0x03 | 26-27 | 2 | 4 | -19999-99999 | 变送量程低点 | |
0x03 | 28-29 | 2 | 4 | -19999-99999 | 变送量程高点 | |
0x03 | 30-31 | 2 | 4 | -19999-99999 | 传感器量程低点 | |
0x03 | 32-33 | 2 | 4 | -19999-99999 | 传感器量程高点 | |
0x03 | 42-43 | 2 | 4 | 0-1.00000 | 主变量增益系数 | |
0X03 | 181-182 | 2 | 4 | -40-120℃ | 内部温度传感器 | |
以上是浮点数读取数据的范围 | ||||||
0x06 功能码写数据 | ||||||
0x06 | 0 | 1 | 2 | 1-255 | 改写从机地址 | |
0x06 | 1 | 1 | 2 | 0-1200 1-2400 2-4800 3-9600 4-19200 5-38400 6-57600 7-115200 | 修改xx率 | |
0x06 | 2 | 1 | 2 | 0- 无校验 1- ODD 2- EVEN | 修改通信校验方式 | |
0x06 | 24-25 | 2 | 4 | -19999-99999 | 零位偏移值.压力输出值= 校准测量值+零位偏移值 | |
保存 |
0x06 | 65535 | 1 | 2 | 0- 保存到用户区 |
浮点数的传输请参考 MODBUS-RTU 协议中关于多字节浮点数传输的规定。读取压力命令举例:(hex)
01 从机地址,03 功能码,00 16 偏移地址,00 02 读取的字数。
Rx:01 03 04 BE 40 E6 12 15 A2
01 从机地址,03 功能码,04 字节数,BE 40 E6 12 为IEE754
的浮点数。
注意区分协议中的数据进制,比如偏移地址 22(10 进制),16 进制表示为
16,注意区分此区别。