霍尼艾格Honeyeagle仪表RS485通讯协议

在线式多合一气体浓度检测仪通讯协议

本探头使用的是基于 RS485 硬件接口 ModbusRTU 通讯协议。支持 03 和 06 两个功能码。03 功能码:读取单个或多个保持寄存器

主机(PLC、PC 等设备)发送:

地址 03 起始地址高位 起始地址低位 寄存器数量高位 寄存器数量低位 CRCL CRCH

从机回复:

地址 03 字节数 n*2 数据 1 高位 数据 1 低位 …… 数据 n 高位 数据 n 低位 CRCL CRCH

06 功能码:修改单个保持寄存器

主机(PLC、PC 等设备)发送:

地址 06 地址寄存器高位 地址寄存器低位 修改数值高位 修改数值低位 CRCL CRCH

从机回复

地址 06 地址寄存器高位 地址寄存器低位 修改数值高位 修改数值低位 CRCL CRCH

被测气体示例:

请先浏览系统参数表中的“数据发送模式”参数。

假设本机地址为 1,数据发送模式为:被动-2

读取 SO2 实时浓度寄存器指令示例:

主机发送:01 03 00 00 00 01 84 0A
从机回复:01 03 02 00 64 B9 AF (SO2 实时浓度为 100,需按小数点位数 缩小,即需除以 10,实际浓度为 100÷10=10.0ppm)

修改 CH4 低报寄存器指令示例:

主机发送:04 06 00 05 00 FA 19 DD
从机回复:04 06 00 05 00 FA 19 DD(把 CH4 的低报修改为 0xFA,即 250,实际低报值为 250÷10=25.0%LEL)

部分寄存器地址表:气体参数

名称 地址 备注
通道一 实时浓度 0x0000 03 功能码:读取实时浓度 06 功能码:调零
状态 0x0001 03 功能码:读取当前状态 06 功能码:标定
量程 0x0002 限制最小 0x0064,即最小限制 100 01 06 00 02 03 E8 CRCL CRCH
修改 0x0002 内容为 0x03E8,即 1000
单位 0x0003 0x0000-0x0012,即 0-18,共 19 个单位 0-空,1-ppm,2-pphm,3-ppb,4-%LEL,5-%VOL,6-ug/m3,7-mg/m3,8-g/m3,9-mg/L,10-%RH,11-℃,12-Nm3/h,13-MPa,14-KPa,15-Pa,16-mm,17-m3/h,18-M/S
精度 0x0004 0x0000-0x0004;即 0-4,最多 4 位小数
低报 0x0005 0-0xFFFF,即 0-65535
高报 0x0006 0-0xFFFF,即 0-65535
回差 0x0007 0-0xFFFF,即 0-65535
气体名称第 2、1 字符 0x0008 单个字符范围 0x0000-0x007F
气体名称第 4、3 字符 0x0009 单个字符范围 0x0000-0x007F
气体名称第 6、5 字符 0x000A 单个字符范围 0x0000-0x007F
气体名称第 8、7 字符 0x000B 单个字符范围 0x0000-0x007F
4mA DAC 值 0x0010 限制最大 0x0F9F,即 3999
20mA DAC 值 0x0011 限制最大 0x0F9F,即 3999
报警模式 0x0012 取值范围:0x0001,0x0002,0x0003,0x0004。以下情况不报警:
模式 1:V<L<H,浓度值<低报值<高报值 模式 2:L<V<H,低报值<浓度值<高报值 模式 3:H<V<L,高报值<浓度值<低报值 模式 4:H<L<V,高报值<低报值<浓度值
传感器信号类型 0x0013 0-正信号,1-负信号
读取浓度比例

写强制输出电流标志
0x001B 03 功能码:读取当前浓度与量程的比例 06 功能码:
0-随浓度比例输出
4-强制输出 4mA
20-强制输出 20mA
其他值:报错误码 03

部分寄存器地址表:系统参数

名称 地址 备注
系统参数 本机地址 0x0080 0x0001-0x00C7,即 1-199 号
与外部设备通信波特率 0x0081 0x0000-0x0008,即 0-8
0-2400,1-4800,2-9600,3-14400,4-19200, 5-38400,6-56000,7-57600,8-115200
数据发送模式 0x0082 0x0000,0x0001,0x0002
0x0000:单地址的被动发送模式,一台 检测仪仅有一个 ModbusRTU 通讯地址,显示为“被动-1”,此检测仪通讯地址即 为系统设置界面下的“本机地址”。气

体 1 寄存器地址范围:0x0000-0x001F;气体 2 寄存器地址范围:0x0020-0x003F;气体 3 寄存器地址范围:0x0040-0x005F;气体 4 寄存器地址范围:0x0060-0x007F;

0x0001:多地址的被动发送模式,一台 检测仪有多个 ModbusRTU 通讯地址,显 示为“被动-2”,例如检测仪系统设置界 面下的“本机地址”为 5,则气体 1 的通 讯 地 址 为 5 , 寄 存 器 地 址 范 围 :0x0000-0x001F;气体 2 的通讯地址为 6,寄存器地址范围:0x0000-0x001F;气体 3 的通讯地址为 7,寄存器地址范围:0x0000-0x001F;气体 4 的通讯地址为 8,寄存器地址范围:0x0000-0x001F;

0x0002:单地址的主动发送模式,数据 协议为 ModbusRTU 协议,一条数据包含 4 个气体的实时浓度,不含小数点①,发 送间隔由“数据主动发送间隔”控制。

数据格式见②。

数据主动发送间隔 0x0083 0x0005-0xEA5F,即 5-59999 秒(约 16.666 小时)
恢复出厂设置对象 0x0084 0x0000-0x0005,即 0-5
0-气体 1,1-气体 2,2-气体 3,3-气体 4,4-系统参数,5-全部参数
语言 0x0085 0x0000,0x0001,即 0 和 1 0-简体中文,1-English
开机倒计时 0x0086 0x0000-0x012B,即 0-299 秒,5 分钟
开机自检 0x0087 0x0000,0x0001,即 0 和 1 0-开机不自检,1-自检
版本号 0x0088 (只读)十进制 10=V1.0
主动上传开关 0x0089 0x0000,0x0001,即 0 和 1 设为主动上传模式时有效

0-停止主动上传
1-启用主动上传(上电默认状态)

气体 1 实时浓度 0x00A0 只读,以整数传递,真实值需结合小数 点位数换算,可使用“本机地址”连续 读取③
气体 2 实时浓度 0x00A1 同上
气体 3 实时浓度 0x00A2 同上
气体 4 实时浓度 0x00A3 同上
气体 1 运行状态 0x00A4 只读,1-正常,2-低报,3-高报,4 故障
气体 2 运行状态 0x00A5 同上
气体 3 运行状态 0x00A6 同上
气体 4 运行状态 0x00A7 同上
气体 1 高限报警值 0x00B0 只读,以整数传递,真实值需结合小数 点位数换算
气体 1 低限报警值 0x00B1 同上
气体 1 报警回差值 0x00B2 同上
气体 2 高限报警值 0x00B3 同上
气体 2 低限报警值 0x00B4 同上
气体 2 报警回差值 0x00B5 同上
气体 3 高限报警值 0x00B6 同上
气体 3 低限报警值 0x00B7 同上
气体 3 报警回差值 0x00B8 同上
气体 4 高限报警值 0x00B9 同上
气体 4 低限报警值 0x00BA 同上
气体 4 报警回差值 0x00BB 同上
设为出厂参数 0x00EE 0-设为出厂值,非 0-设为当前值

①、不含小数点,即数据传输时都是传输整数,例如一个气体的量程为 10.00ppm,实时浓 度为 0.12,在传输时会传输 12,而不是 0.12,可以理解为放大了 100 倍传输,接收端收到 数据后要响应的缩小 100 倍。各个气体的小数点位数可以根据量程上的小数点位数获得。

②、单地址的主动发送模式通信示例:

上图是一个四合一的有毒气体检测仪,包含了四种气体,100.0ppm 的 SO2,50.00mg/m3 的 VOCs,30.00%VOL 的 O2,还有 100.0%LEL 的 CH4,在系统菜单下,给每个气体分配了一 个序号,SO2 为 1,VOCs 为 2,O2 为 3,CH4 为 4。

例如系统设置界面下的“本机地址”为 1,则检测仪会间隔“数据主动发送间隔”时间 主动的通过 RS485 接口向外发送数据,格式如下:
01 03 10 00 64 06 C2 08 16 02 28 00 01 00 02 00 01 00 03 CRCL CRCH
0x01:本机地址;
0x03:功能码;
0x10:后续有 0x10 个字节是数据,即 16 个数据;
0x0064:SO2 的无小数点的实时浓度,100,实际浓度除以 10,即 10.0ppm;
0x06C2:VOCs 的无小数点的实时浓度,1730,实际浓度除以 100,即 17.30mg/m3; 0x0816:O2 的无小数点的实时浓度,2070,实际浓度除以 100,即 20.70%VOL; 0x0228:CH4 的无小数点的实时浓度,552,实际浓度除以 10,即 55.2%VOL; 0x0001:SO2 的运行状态,正常;
0x0002:VOCs 的运行状态,低报;
0x0001:O2 的运行状态,正常;
0x0003:CH4 的运行状态,高报;
CRCL:CRC16 冗余校验码低字节;
CRCH:CRC16 冗余校验码高字节。

③、使用“本机地址”一次读取多个实时浓度数据:被动-1 和被动-2 模式下均可 在“系统设置”列表下的第 0x00A0 号地址开始存储了各个气体的实时浓度和运 行状态,第 0x00B0 号地址开始存储了各个气体的报警阈值。

一条指令读取 4 种气体实时浓度,格式如下:
主机发送:01 03 00 A0 00 04 44 2B
0x01:此检测仪“系统设置”下的“本机地址”
0x03:读保持寄存器
0x00A0:读保持寄存器的起始地址,即从第 0x00A0 号地址开始读取 0x0004:读保持寄存器的个数,连续读 4 个
442B:即 0x2B44,CRC16 循环冗余校验码,发送指令时低位在前高位在后 从机回复:01 03 08 00 64 06 C2 08 16 02 28 2B 7C
0x01:此检测仪“系统设置”下的“本机地址”
0x03:读保持寄存器

0x08:后面有 8 个字节的数据,不包含末尾的 2 个 CRC16 校验码
0x0064:SO2 的无小数点的实时浓度,100,实际浓度除以 10,即 10.0ppm;0x06C2:VOCs 的无小数点的实时浓度,1730,实际浓度除以 100,即 17.30mg/m3;0x0816:O2 的无小数点的实时浓度,2070,实际浓度除以 100,即 20.70%VOL;0x0228:CH4 的无小数点的实时浓度,552,实际浓度除以 10,即 55.2%VOL;2B7C:即 0x7C2B,CRC16 循环冗余校验码,发送指令时低位在前高位在后

Modbus 错误码(10 进制)

功能码
说明
01 非法功能。对于服务器(或从站)来说,询问中接收到的功能码是不可允许的 操作,可能是因为功能码仅适用于新设备而被选单元中不可实现同时,还指出 服务器(或从站)在错误状态中处理这种请求,例如:它是未配置的,且要求 返回寄存器值。
02
非法数据地址。对于服务器(或从站)来说,询问中接收的数据地址是不可允
许的地址,特别是参考号和传输长度的组合是无效的。对于带有 100 个寄存器
的控制器来说,偏移量 96 和长度 4 的请求会成功,而偏移量 96 和长度 5 的请
求将产生异常码 02。
03 非法数据值。对于服务器(或从站)来说,询问中包括的值是不可允许的值。该值指示了组合请求剩余结构中的故障。例如:隐含长度是不正确的。modbus 协议不知道任何特殊寄存器的任何特殊值的重要意义,寄存器中被提交存储的 数据项有一个应用程序期望之外的值。
04
从站设备故障。当服务器(或从站)正在设法执行请求的操作时,产生不可重
新获得的差错。
05 确认。与编程命令一起使用,服务器(或从站)已经接受请求,并且正在处理 这个请求,但是需要长持续时间进行这些操作,返回这个响应防止在客户机(或 主站)中发生超时错误,客户机(或主机)可以继续发送轮询程序完成报文来 确认是否完成处理。
06
从属设备忙。与编程命令一起使用。服务器(或从站)正在处理长持续时间的程序
命令。张服务器(或从站)空闲时,用户(或主站)应该稍后重新传输报文。
08 CRC16 码校验错误,从站接收来自服务器(或主机)的数据后,计算数据的校 验码异常,表明接收的数据本身的校验码是错误的,或者在传输过程中数据发

生了变化,导致校验失败。

 

转载请注明出处:  https://www.cntworld.cn
智能工控 » 霍尼艾格Honeyeagle仪表RS485通讯协议

发表回复

提供最优质的资源集合

立即查看 了解详情