数据帧格式定义
来源:
zhiliaoadmin
发布时间:
2021-07-06 14:25:31
浏览次数:
0
1.通讯基本参数
编 码 | 8位二进制 |
数据位 | 8位 |
奇偶校验位 | 无 |
停止位 | 1位 |
错误校验 | CRC(冗余循环码) |
波特率 | 2400bit/s、4800bit/s、9600 bit/s可设,出厂默认为4800bit/s |
2数据帧格式定义
采用Modbus-RTU 通讯规约,格式如下:
初始结构 ≥4 字节的时间
地址码 = 1 字节
功能码 = 1 字节
数据区 = N 字节
错误校验 = 16 位CRC 码
结束结构 ≥4 字节的时间
地址码:为变送器的地址,在通讯网络中是唯一的(出厂默认0x01)。
功能码:主机所发指令功能指示,本变送器只用到功能码0x03(读取寄存器数据)。
数据区:数据区是具体通讯数据,注意16bits数据高字节在前!
CRC码:二字节的校验码。
主机问询帧结构:
地址码 | 功能码 | 寄存器起始地址 | 寄存器长度 | 校验码低位 | 校验码高位 |
1字节 | 1字节 | 2字节 | 2字节 | 1字节 | 1字节 |
从机应答帧结构:
地址码 | 功能码 | 有效字节数 | 数据一区 | 第二数据区 | 第N数据区 | 校验码 |
1字节 | 1字节 | 1字节 | 2字节 | 2字节 | 2字节 | 2字节 |
5.3寄存器地址
寄存器 地址 | PLC或组态地址 | 内容 | 操作 | 定义说明 |
0000 H | 40001 (十进制) | 含水率 | 只读 | 含水率实时值(扩大10倍) |
0001 H | 40002 (十进制) | 温度值 | 只读 | 温度实时值(扩大10倍) |
0050 H | 40081 (十进制) | 温度校准值 | 读写 | 整数(扩大10倍) |
0051 H | 40082 (十进制) | 含水率校准值 | 读写 | 整数(扩大10倍) |
07D0 H | 42001 (十进制) | 设备地址 | 读写 | 1~254(出厂默认1) |
07D1 H | 42002 (十进制) | 设备波特率 | 读写 | 0代表2400 1代表4800 2代表9600 |
注意:单水分设备无温度值及温度校准值寄存器
4 通讯协议示例以及解释
举例:读取设备地址0x01的温湿度值
问询帧(16进制):
地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 |
0x01 | 0x03 | 0x00 0x00 | 0x00 0x02 | 0xC4 | 0x0B |
应答帧(16进制):(例如读到温度为-9.7℃,湿度为48.6%RH)
地址码 | 功能码 | 返回有效 字节数 | 湿度值 | 温度值 | 校验码 低位 | 校验码 高位 |
0x01 | 0x03 | 0x04 | 0x01 0xE6 | 0xFF 0x9F | 0x1B | 0xA0 |
温度计算:
当温度低于 0 ℃ 时温度数据以补码的形式上传。
温度:FF9F H(十六进制)= -97 => 温度 = -9.7℃
湿度计算:
湿度:1E6 H (十六进制)= 486 => 湿度 = 48.6%RH