发布时间:2023-12-16 11:04:57 浏览次数:56次
固定式氧浓度变送器通信协议 (V1.0.0版)
一、基本协议
通信格式为MODBUD-RTU方式,8位数据位,1位停止位,无校验。波特率:9600BPS,支持03和06两条MODBUS命令。
通信时为从机方式。主机提出命令请求,设备响应;接收数据后做数据分析, 如果数据满足通信规约,从机做出响应。(采样周期最好>200ms,以免过于频繁响应中断,影响设备采用浓度周期。)
从接收完命令帧到开始应答的时间小于100 ms。若从机检测数据错,或不及时响应主机。主机做超时处理。
主从机间的通信主机发送的每一帧数据包含以下信息(16 进制):
从机地址 | 命令字 | 信息字 | 校验码 |
从机地址:(1 个字节):从机设备号,主机利用从机地址来识别进行通讯的从机设备。表明由用户设置地址的从机,将接收由主机发送来的信息。每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送。地址范围0x01-0xF7(1-247),0x00(00)为广播地址。
命令字:(1个字节):主机发送的功能码,告诉从机执行什么任务。支持03读和06写两条命令。
信息字:(N个字节):包括进行两机通讯中各种数据信息,数据长度,读写的数据等。
校验码:(2个字节):用于检测数据通信错误,采用循环冗余码CRC16, 低位在前,高位在后。
通信命令:
读寄存器: 03命令
从机地址 |
03 | 寄存器地址高位 | 寄存器地址 低位 | 寄存器数量 高位 | 寄存器数量 低位 | 校验码 | 校验码 |
ADRH | ADRL | N_H | N_L | CRC_L | CRC_H |
正确应答:
从机地址 |
03 | 数据字节数 | 数据 | 校验码 | 校验码 |
(N_H*16+N_L)*2 | (N_H*16+N_L)*2字节数据 | CRC_L | CRC_H |
单寄存器写:06命令
从机地址 |
06 | 寄存器地址 高位 | 寄存器地址低位 | 寄存器值高位 | 寄存器值低位 | 校验码 | 校验码 |
ADRH | ADRL | D_H | D_L | CRC_L | CRC_H |
正确应答:(当使用00广播地址写的时候,从机返回的也是00地址)
从机地址 |
06 | 寄存器地址 高位 | 寄存器地址低位 | 寄存器值高位 | 寄存器值低位 | 校验码 | 校验码 |
ADRH | ADRL | D_H | D_L | CRC_L | CRC_H |
二、数据地址表
寄存器地址 | 变量名称 | 变量说明 | 备注 | |
HEX | DEC | |||
0X0100 | 256 | 设备状态 | 0-16;(0:正常;1:低报;2:高报; 16:通信故障) | 只支持03指令
|
0X0101 | 257 | 测量浓度值 | 0-65535 | 只支持03指令 |
0X0102 | 258 | 小数点位置 | 0-4(0:无;1:1位小数;2:2位小数;3:3位小数;4:4位小数;最高位为1,表示负数;最高位为零,表示正数) | 支持03/06指令
|
0X0103 | 259 | 测量单位 | 0-8;(0:PPM;1:PPB;2:%VOL;3:%LEL;4:mg/m3;5:℃;6:RH%;7:Kpa) | 支持03/06指令
|
0X0104 | 260 | 气体类型 | 0-255,详见附表1 | 支持03/06指令 |
0X0105 | 261 | 高限报警值 | 00-65535 | 支持03/06指令 |
0X0106 | 262 | 低限报警值 | 00-65535 | |
0X0107 | 263 | 检测量程 | 00-65535 | 只支持03指令
|
0X0108 | 264 | 设备地址 | 01-247 | 支持03/06指令
|
0X0109 | 265 | ADC值 | 读取和修改当前ADC值(ADC最高位为1,表示ADC为负值。ADC最高位为0,表示ADC为正值。) | 只支持03指令
|
0X0110 | 272 | 出厂调零 | 写入0X00AA值才有效 |
只支持06指令 (生产商用) |
0X0111 | 273 | 出厂标定值 | 00-65535 | |
0X0112 | 274 | 用户调零 | 写入0X00AA值才有效 | 只支持06指令 (用户用) |
0X0113 | 275 | 用户标定值 | 00-65535 | |
0X0114 | 276 | 恢复出厂值 | 写入0X00AA值才有效 |
三、读寄存器测试命令举
读取 1#设备工作状态
主机发送: 01 03 01 00 00 01 85 F6
从机回复: 01 03 02 00 00 B8 44 (工作状态为:正常)
读取 1#设备测量浓度值
主机发送: 01 03 01 01 00 01 D4 36
从机回复: 01 03 02 00 20 B9 9C (气体实时浓度为:32)
读取 1#设备小数位数
主机发送: 01 03 01 02 00 01 24 36
从机回复: 01 03 02 00 01 79 84(小数点:1)//注:气体浓度32/小数点10,真实浓度3.2
小数点如2位,那就是除以100,三位是1000
读取 1#设备测量单位
主机发送: 01 03 01 03 00 01 75 F6
从机回复: 01 03 02 00 00 B8 44 ( 设备单位:ppm)
0000:PPM; 0001:PPB; 0002:PPM; 0003:‰; 0004:%;
0005:%LEL; 0006:%VOL;0007:Mg/m3; 0008:Mg/L)
读取 1#设备检测气体(详细气体种类见附表 1)
主机发送: 01 03 01 04 00 01 C4 37
从机回复: 01 03 02 00 01 79 84 ( 检测气体:CO )
读取 1#设备高限报警值
主机发送: 01 03 01 05 00 01 95 F7
从机回复: 01 03 02 01 F4 B8 53 ( 高报值为: 500)
读取 1#设备低限报警值
主机发送: 01 03 01 06 00 01 65 F7
从机回复: 01 03 02 00 C8 B9 D2 ( 低报值为: 200)
读取 1#设备检测量程
主机发送: 01 03 01 07 00 01 34 37
从机回复: 01 03 02 03 E8 B8 FA ( 此处的0x03E8表示产品的满量程是: 1000)
读取设备地址(不知道设备地址情况下使用广播地址 00,适用于 03、06 所有指令)
主机发送: 00 03 01 08 00 01 05 E5
从机回复: 01 03 02 00 01 79 84 ( 地址:1#)
读取 1#设备所有信息
主机发送: 01 03 01 00 00 0A C4 31
从机回复: 01 03 14 00 00 00 00 00 01 00 02 00 05 00 64 00 32 00 C8 00 01 00 0B 0C 3F
状态 浓度值 小数点 测量单位 气体类型A2 A1 量程 地址 ADC CRC16
正常 00 1 %VOL NO2 10.0 5.0 20.0 01 11 0C3F
四、写寄存器测试命令举例
修改 1#设备高限报警值 | |
主机发送: 01 06 01 05 01 90 99 CB | CB |
从机回复: 01 06 01 05 01 90 99 CB | CB (高报值修改为: 400)
|
修改 1#设备低限报警值 | |
主机发送:01 06 01 06 00 64 69 DC | DC |
从机回复:01 06 01 06 00 64 69 DC | DC (低报值修改为: 100) |
修改设备地址为 1#(广播地址 00,只允许连接 1 个设备,总线上的设备不能有重复地址
主机发送: | 00 | 06 | 01 | 08 | 00 | 01 | C9 | E5 | |
从机回复: | 00 | 06 | 01 | 08 | 00 | 01 | C9 | E5 | (设备地址修改为:1#) |
对1#设备出厂调零
主机发送: 01 06 01 10 00 AA 09 8C
从机回复: 01 06 01 10 00 AA 09 8C ( 设备调整当前零点值)
对 1#设备进行出厂校准(设备必须通入标准气体后,等数值稳定后才能进行校准操作)
主机发送: 01 06 01 11 01 F4 D8 24
从机回复: 01 06 01 11 01 F4 D8 24 ( 设备通入 50.0 数值标准气,重新校准为:50.0)
对 1#设备进行恢复出厂值(恢复默认值后,设备会重新启动,没异常请不要恢复!!)
主机发送: 01 06 01 14 00 AA 48 4D
从机回复: 01 06 01 14 00 AA 48 4D ( 设备恢复所有数据为:出厂数值,并重启)
附表1 气体检测种类
编号 | 气体类型 | 中文 | 编号 | 气体类型 | 中文 |
0 | N2 | 氮气 | 42 | C3H8O | 丙醇 |
1 | CO | 一氧化碳 | 43 | iC3H8O | 异丙醇 |
2 | H2S | 硫化氢 | 44 | C4H10O | 丁醇 |
3 | O2 | 氧气 | 45 | CH2O | 甲醛 |
4 | EX | 可燃 | 46 | C2H4O | 乙醛 |
5 | SO2 | 二氧化硫 | 47 | C3H6O | 丙醛 |
6 | NH3 | 氨气 | 48 | C3H4O | 丙烯醛 |
7 | H2 | 氢气 | 49 | C2H2 | 乙炔 |
8 | CH3Br | 溴甲烷 | 50 | C6H6 | 苯 |
9 | O3 | 臭氧 | 51 | C7H8 | 甲苯 |
10 | TVOC | 总挥发物 | 52 | C8H10 | 二甲苯 |
11 | CL2 | 氯气 | 53 | C8H8 | 苯乙烯 |
12 | HCL | 氯化氢 | 54 | C6H6O | 苯酚 |
13 | NO | 一氧化氮 | 55 | ETO | 环氧乙烷 |
14 | NO2 | 二氧化氮 | 56 | C2H8O2 | 乙酸乙酯 |
15 | PH3 | 磷化氢 | 57 | NMHC | 非甲烷总烃 |
16 | ArH3 | 砷化氢 | 58 | F2S2O | 硫酰氟 |
17 | HCN | 氰化氢 | 59 | GAS | |
18 | CO2 | 二氧化碳 | 60 | ||
19 | SF6 | 六氟化硫 | 61 | ||
20 | Br2 | 溴气 | 62 | ||
21 | HBr | 溴化氢 | 63 | ||
22 | F2 | 氟气 | 64 | ||
23 | HF | 氟化氢 | 65 | ||
24 | N2O | 笑气 | 66 | ||
25 | H2O2 | 过氧化氢 | 67 | ||
26 | NOX | 氮氧化物 | 68 | ||
27 | SOX | 硫化物 | 69 | ||
28 | Odor | 臭气 | 70 | ||
29 | VOC | 挥发物 | |||
30 | CH4 | 甲烷 | |||
31 | C2H6 | 乙烷 | |||
32 | C3H8 | 丙烷 | |||
33 | C4H10 | 丁烷 | 100 | Temperature | 温度 |
34 | iC4H10 | 异丁烷 | 101 | Humidity | 湿度 |
35 | C5H12 | 戊烷 | 102 | Pressure | 气压 |
36 | C2H4 | 乙烯 | |||
37 | C3H6 | 丙烯 | |||
38 | C4H8 | 丁烯 | |||
39 | iC4H8 | 异丁烯 | |||
40 | CH4O | 甲醇 | |||
41 | C2H6O | 乙醇 |
附表2 气体检测数据单位
序号 | 单位 |
0 | PPM |
1 | PPB |
2 | %VOL |
3 | %LEL |
4 | Mg/m3 |
5 | g/m3 |
6 | ug/m3 |
7 | ℃ |
8 | %RH |
9 | Kpa |
10 | umol/mol |
11 | Mpa |