欣仰邦噪声扬尘小主机modbus从站接口通信详解
发表时间:2021-12-17作者:xmsiyb
1. 修改地址和波特率
参数设置
①、选择正确的COM口(“我的电脑—属性—设备管理器—端口”里面查看COM端口),列举出几种不同的485转换器的驱动名称。
②、单独只接一台设备并上电,点击软件的测试波特率,软件会测试出当前设备的波特率以及地址,默认波特率为9600bit/s,默认地址为0x01。
③、根据使用需要修改地址以及波特率,同时可查询设备的当前功能状态。
④、如果测试不成功,请重新检查设备接线及485驱动安装情况。
2.2 数据帧格式定义
采用Modbus-RTU 通讯规约,格式如下:
初始结构 ≥4 字节的时间
地址码 = 1 字节
功能码 = 1 字节
数据区 = N 字节
错误校验 = 16 位CRC 码
结束结构 ≥4 字节的时间
地址码:为变送器的起始地址,在通讯网络中是唯一的(出厂默认0x01)。
功能码:主机所发指令功能指示。
数据区:数据区是具体通讯数据,注意16bits数据高字节在前!
CRC码:二字节的校验码。
主机问询帧结构:
从机应答帧结构:
虚拟多地址说明:
例如起始地址为1,则不同的地址代表的设备及0号和1号寄存器存放的内容如下表所示:
另外500到512号寄存器中的内容如下表所示(支持03/04功能码):
此外700-702寄存器为控制寄存器,(支持03/04/06/16功能码)
2.4 通讯协议示例以及解释
假设起始地址为1,通过0x00 00号和0x00 01号寄存器读取数据
2.4.1通过不同地址问询0号和1号寄存器
应答帧(例如读到风速为1.2m/s,风力为1级风)
风速:
0x000C (十六进制)= 12 =>风速= 1.2m/s
风力:
0x0001(十六进制)=1=> 风力 = 1级风
应答帧(例如读到风向为西南风)
风向计算:
风向值:0x0105(十六进制)= 5=> 风向值 = 5(西南风)
风向值:0x00E1(十六进制)=225=>风向值225度(西南风)
采集值对应换算关系:
应答帧(例如读到温度为-10.1℃,湿度为65.8%RH)
温度:当温度低于0℃时以补码形式上传
0xFF9B(十六进制)= -101 => 温度 = -10.1℃
湿度:
0x0292(十六进制)=658=> 湿度 = 65.8%RH
应答帧(例如读到噪声值为50.8dB)
噪声计算:
噪声值:0x01FC(十六进制)= 508=> 噪声值 = 50.8dB
5. 问询PM10和PM2.5
应答帧(例如读到PM2.5为85ug/m3,PM10为156ug/m3)
PM10计算:
PM10:0x009C (十六进制)= 156 => PM10 = 156ug/m3
PM2.5计算:
PM2.5:0x0055(十六进制)= 85=> PM2.5 = 85ug/m3
6. 问询大气压力值
应答帧(例如读到大气压力值为15.1Kpa)
气压计算:
气压值值:0x0097(十六进制)= 151=> 大气压力值 = 15.1Kpa
7. 问询光照
问询帧
应答帧(例如读到光照度为132808Lux)
产品为0~20万量程变送器,单位为1Lux
0x00 02 06 C8(十六进制) = 132808=> 光照度=132808Lux
8. 问询TSP
应答帧(例如读到TSP值为50.8ug/m3)
TSP计算:
TSP值:0x01FC(十六进制)= 508=> TSP值 = 50.8ug/m3
2.4.2问询500号以上寄存器
例如问询温湿度值:设备地址为01
应答帧(例如读到温度为-10.1℃,湿度为65.8%RH)
温度:当温度低于0℃时以补码形式上传
0xFF9B(十六进制)= -101 => 温度 = -10.1℃
湿度:
0x0292(十六进制)=658=> 湿度 = 65.8%RH
2.4.3控制继电器及设置虚拟多设备使能
1. 关闭虚拟多设备
写入数据帧
应答帧
2. 控制继电器1闭合
写入数据帧
应答帧
使用03功能码,可查询当前的设置值
参数设置
①、选择正确的COM口(“我的电脑—属性—设备管理器—端口”里面查看COM端口),列举出几种不同的485转换器的驱动名称。
②、单独只接一台设备并上电,点击软件的测试波特率,软件会测试出当前设备的波特率以及地址,默认波特率为9600bit/s,默认地址为0x01。
③、根据使用需要修改地址以及波特率,同时可查询设备的当前功能状态。
④、如果测试不成功,请重新检查设备接线及485驱动安装情况。
2. 通信协议
2.1 通讯基本参数编 码 | 8位二进制 |
数据位 | 8位 |
奇偶校验位 | 无 |
停止位 | 1位 |
错误校验 | CRC(冗余循环码) |
波特率 | 2400bit/s、4800bit/s、9600 bit/s可设,出厂默认为9600bit/s |
采用Modbus-RTU 通讯规约,格式如下:
初始结构 ≥4 字节的时间
地址码 = 1 字节
功能码 = 1 字节
数据区 = N 字节
错误校验 = 16 位CRC 码
结束结构 ≥4 字节的时间
地址码:为变送器的起始地址,在通讯网络中是唯一的(出厂默认0x01)。
功能码:主机所发指令功能指示。
数据区:数据区是具体通讯数据,注意16bits数据高字节在前!
CRC码:二字节的校验码。
主机问询帧结构:
地址码 | 功能码 | 寄存器起始地址 | 寄存器长度 | 校验码低位 | 校验码高位 |
1字节 | 1字节 | 2字节 | 2字节 | 1字节 | 1字节 |
地址码 | 功能码 | 有效字节数 | 数据一区 | 第二数据区 | 第N数据区 | 校验码 |
1字节 | 1字节 | 1字节 | 2字节 | 2字节 | 2字节 | 2字节 |
2.3 通讯寄存器地址说明
设备的地址为起始地址,当702寄存器数值为1时设备可虚拟多地址,若起始地址为1,则问询1-8地址都应答,连续8个地址分别代表8种不同的设备。当702寄存器数值为0时,虚拟多地址功能则无效,若起始地址为1,既询问2-8号设备不会再有应答,此时只可使用1号地址询问500-512号寄存器;虚拟多地址说明:
例如起始地址为1,则不同的地址代表的设备及0号和1号寄存器存放的内容如下表所示:
地址 | 代表设备 | 0号寄存器 | 1号寄存器 |
1 | 风速设置 | 风速值(实际值10倍) | 风力值(实际值) |
2 | 风向设备 | 风向值0-7档(实际值) | 风向值0-360(实际值) |
3 | 温湿度设备 | 湿度值(实际值10倍) | 温度值(实际值10倍) |
4 | 噪声设备 | 噪声值(实际值10倍) | |
5 | PM2.5和PM10设备 | PM10值(实际值) | PM2.5值(实际值) |
6 | 大气压力设备 | 大气压值(实际值10倍) | |
7 | 光照设备 | 20万光照值高位(实际值) | 20万光照值(实际值) |
8 | TSP设备 | TSP设备(实际值) |
另外500到512号寄存器中的内容如下表所示(支持03/04功能码):
寄存器地址 | PLC或组态地址 | 内容 | 操作 |
500 | 40501 | 风速值(实际值10倍) | 只读 |
501 | 40502 | 风力值(实际值) | 只读 |
502 | 40503 | 风向值0-7 | 只读 |
503 | 40504 | 风向值0-360 | 只读 |
504 | 40505 | 湿度值(实际值10倍) | 只读 |
505 | 40506 | 温度值(实际值10倍) | 只读 |
506 | 40507 | 噪声值(实际值10倍) | 只读 |
507 | 40508 | PM2.5值(实际值) | 只读 |
508 | 40509 | PM10值(实际值) | 只读 |
509 | 40510 | TSP值(实际值) | 只读 |
510 | 40511 | 气压值(实际值10倍) | 只读 |
511 | 40512 | 20W的Lux值高16位值(实际值) | 只读 |
512 | 40513 | 20W的Lux值低16位值(实际值) | 只读 |
寄存器地址 | PLC或组态地址 | 内容 | 操作 |
700 | 40701 |
控制继电器1 写1闭合 写0断开 |
读写 |
701 | 40702 |
控制继电器2 写1闭合 写0断开 |
读写 |
702 | 40703 |
设备虚拟多地址使能 写1:设备可虚拟成多地址 写0:多地址功能禁用 |
读写 |
假设起始地址为1,通过0x00 00号和0x00 01号寄存器读取数据
2.4.1通过不同地址问询0号和1号寄存器
- 问询风速值
地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 |
0x01 | 0x03 | 0x00 0x00 | 0x00 0x02 | 0xC4 | 0x0B |
地址码 | 功能码 | 有效字节数 | 风速值 | 风力值 | 校验码低位 | 校验码高位 |
0x01 | 0x03 | 0x04 | 0x00 0x0C | 0x00 0x01 | 0xFB | 0xF0 |
0x000C (十六进制)= 12 =>风速= 1.2m/s
风力:
0x0001(十六进制)=1=> 风力 = 1级风
- 问询风向
地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 |
0x02 | 0x03 | 0x00 0x00 | 0x00 0x02 | 0xC4 | 0x38 |
地址码 | 功能码 | 有效字节数 | 风向(0-7) | 风向(0-360) | 校验码低位 | 校验码高位 |
0x02 | 0x03 | 0x04 | 0x00 0x05 | 0x00 0xE1 | 0x19 | 0x7A |
风向值:0x0105(十六进制)= 5=> 风向值 = 5(西南风)
风向值:0x00E1(十六进制)=225=>风向值225度(西南风)
采集值对应换算关系:
采集值(0-7档) | 采集值(0-360°) | 对应方向 |
0 | 0° | 北风 |
1 | 45° | 东北风 |
2 | 90° | 东风 |
3 | 135° | 东南风 |
4 | 180° | 南风 |
5 | 225° | 西南风 |
6 | 270° | 西风 |
7 | 315° | 西北风 |
- 问询温湿度值
地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 |
0x03 | 0x03 | 0x00 0x00 | 0x00 0x02 | 0xC5 | 0xE9 |
地址码 | 功能码 | 有效字节数 | 湿度值 | 温度值 | 校验码低位 | 校验码高位 |
0x03 | 0x03 | 0x04 | 0x02 0x92 | 0xFF 0x9B | 0x79 | 0xFD |
0xFF9B(十六进制)= -101 => 温度 = -10.1℃
湿度:
0x0292(十六进制)=658=> 湿度 = 65.8%RH
- 问询噪声
地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 |
0x04 | 0x03 | 0x00 0x00 | 0x00 0x01 | 0x84 | 0x5F |
地址码 | 功能码 | 有效字节数 | 噪声值 | 校验码低位 | 校验码高位 |
0x04 | 0x03 | 0x02 | 0x01 0xFC | 0x75 | 0x95 |
噪声值:0x01FC(十六进制)= 508=> 噪声值 = 50.8dB
5. 问询PM10和PM2.5
地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 |
0x05 | 0x03 | 0x00 0x00 | 0x00 0x02 | 0xC5 | 0x8F |
地址码 | 功能码 | 有效字节数 | PM10值 | PM2.5值 | 校验码低位 | 校验码高位 |
0x05 | 0x03 | 0x04 | 0x00 0x9C | 0x00 0x55 | 0xAF | 0x8A |
PM10:0x009C (十六进制)= 156 => PM10 = 156ug/m3
PM2.5计算:
PM2.5:0x0055(十六进制)= 85=> PM2.5 = 85ug/m3
6. 问询大气压力值
地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 |
0x06 | 0x03 | 0x00 0x00 | 0x00 0x01 | 0x85 | 0xBD |
地址码 | 功能码 | 有效字节数 | 大气压力值 | 校验码低位 | 校验码高位 |
0x06 | 0x03 | 0x02 | 0x00 0x97 | 0x4C | 0x2A |
气压值值:0x0097(十六进制)= 151=> 大气压力值 = 15.1Kpa
7. 问询光照
问询帧
地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 |
0x07 | 0x03 | 0x00 0x00 | 0x00 0x02 | 0xC4 | 0x6D |
地址码 | 功能码 | 有效字节数 | 20万光照高 | 20万光照低 | 校验码低位 | 校验码高位 |
0x07 | 0x03 | 0x04 | 0x00 0x02 | 0x06 0xC8 | 0x3F | 0xC5 |
0x00 02 06 C8(十六进制) = 132808=> 光照度=132808Lux
8. 问询TSP
地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 |
0x08 | 0x03 | 0x00 0x00 | 0x00 0x01 | 0x84 | 0x93 |
地址码 | 功能码 | 有效字节数 | TSP值 | 校验码低位 | 校验码高位 |
0x08 | 0x03 | 0x02 | 0x01 0xFC | 0x65 | 0x94 |
TSP值:0x01FC(十六进制)= 508=> TSP值 = 50.8ug/m3
2.4.2问询500号以上寄存器
例如问询温湿度值:设备地址为01
地址码 | 功能码 | 起始地址 | 数据长度 | 校验码低位 | 校验码高位 |
0x01 | 0x03 | 0x01 0xF8 | 0x00 0x02 | 0x44 | 0x06 |
地址码 | 功能码 | 有效字节数 | 湿度值 | 温度值 | 校验码低位 | 校验码高位 |
0x01 | 0x03 | 0x04 | 0x02 0x92 | 0xFF 0x9B | 0x5A | 0x3D |
0xFF9B(十六进制)= -101 => 温度 = -10.1℃
湿度:
0x0292(十六进制)=658=> 湿度 = 65.8%RH
2.4.3控制继电器及设置虚拟多设备使能
1. 关闭虚拟多设备
写入数据帧
地址码 | 功能码 | 寄存器地址 | 写入内容 | 校验码低位 | 校验码高位 |
0x01 | 0x06 | 0x02 0xBE | 0x00 0x00 | 0xE8 | 0x56 |
地址码 | 功能码 | 寄存器地址 | 写入内容 | 校验码低位 | 校验码高位 |
0x01 | 0x06 | 0x02 0xBE | 0x00 0x00 | 0xE8 | 0x56 |
写入数据帧
地址码 | 功能码 | 寄存器地址 | 写入内容 | 校验码低位 | 校验码高位 |
0x01 | 0x06 | 0x02 0xBC | 0x00 0x01 | 0x88 | 0x56 |
地址码 | 功能码 | 寄存器地址 | 写入内容 | 校验码低位 | 校验码高位 |
0x01 | 0x06 | 0x02 0xBC | 0x00 0x01 | 0x88 | 0x56 |
使用03功能码,可查询当前的设置值
相关资讯
17850532774