物联网之扩展设备类型(四)
本文以热水锅炉为例,介绍如何扩展支持新的设备类型。
一、通讯参数配置
| 参数 | 值 |
|---|---|
| 接口类型 | RS-485 |
| 协议 | MODBUS_RTU |
| 波特率 | 9600 |
| 数据位 | 8位 |
| 停止位 | 1位 |
| 校验位 | 无 |
| 站号范围 | 0-255 |
| 模式 | 从机 |
二、采集点总览
本设备共 24 个采集点,分类如下:
| 分类 | 数量 | 功能码 |
|---|---|---|
| 模拟量温度采集 | 5 | 03 |
| 设备状态寄存器 | 3 | 03 |
| 控制器状态 | 1 | 03 |
| 累计燃烧时间 | 2 | 03 |
| 报警采集 | 13 | 03 |
三、MODBUS地址映射
3.1 模拟量温度采集(5个点)
| 字段名 | 中文名称 | MODBUS地址 | 寄存器地址 | 数据类型 | 换算规则 |
|---|---|---|---|---|---|
| boiler_water_temp | 炉水温度 | 102h | 40259 | INT16 | 实际值 = 采集值 |
| hot_water_out_temp | 热水出口温度 | 146h | 40327 | INT16 | 实际值 = 采集值 |
| hot_water_in_temp | 热水进口温度 | 151h | 40338 | INT16 | 实际值 = 采集值 |
| flue_gas_temp | 排烟温度 | 101h | 40258 | INT16 | 实际值 = 采集值 |
| target_temp_set | 目标温度 | 503h | 41284 | INT16 | 实际值 = 采集值 |
典型工作范围:
| 字段 | 范围 | 单位 |
|---|---|---|
| 炉水温度 | 60 ~ 95 | ℃ |
| 热水出口温度 | 50 ~ 90 | ℃ |
| 热水进口温度 | 30 ~ 60 | ℃ |
| 排烟温度 | 80 ~ 250 | ℃ |
| 目标温度 | 60 ~ 90 | ℃ |
3.2 设备状态寄存器(3个点)
| 字段名 | 中文名称 | MODBUS地址 | 寄存器地址 | 数据类型 |
|---|---|---|---|---|
| burner_status | 燃烧器状态 | 800h | 42049 | UINT16 |
| circ_pump_status | 循环泵状态 | 81Ah | 42075 | UINT16 |
| vacuum_pump_status | 真空泵状态 | 808h | 42057 | UINT16 |
状态字解析规则(16位):
| 位 | 说明 | 值含义 |
|---|---|---|
| Bit15-Bit14 | 控制模式 | 00=自动, 11=手动 |
| Bit13-Bit12 | 泵组选择 | 00=主泵, 11=备泵 |
| Bit11-Bit8 | 运行状态 | 0000=停止, 1111=启动 |
| Bit7-Bit0 | 输出量 | 0-100(燃烧器=火力级别,泵=百分比) |
典型值示例:
| 场景 | 十六进制 | 十进制 | 拆解说明 |
|---|---|---|---|
| 自动/主泵/启动/50%输出 | 0x0F32 | 3890 | 常见运行状态 |
| 自动/主泵/启动/100%输出 | 0x0F64 | 3940 | 满负荷运行 |
| 自动/主泵/停止/0%输出 | 0x0000 | 0 | 停止状态 |
| 手动/备泵/启动/100%输出 | 0xF064 | 61540 | 手动模式运行 |
3.3 控制器状态(1个点)
| 字段名 | 中文名称 | MODBUS地址 | 寄存器地址 |
|---|---|---|---|
| controller_status | 控制器状态 | 602h | 41539 |
状态值含义:
| 值 | 含义 |
|---|---|
| 0 | 关机 |
| 1 | 待机 |
| 2 | 运行 |
| 3 | 报警 |
3.4 累计燃烧时间(2个点)
| 字段名 | 中文名称 | MODBUS地址 | 寄存器地址 | 单位 |
|---|---|---|---|---|
| small_fire_hours | 小火工作时间 | 61Ah | 41563 | 小时 |
| big_fire_hours | 大火工作时间 | 61Bh | 41564 | 小时 |
3.5 报警采集(13个点)
| 字段名 | 中文名称 | MODBUS地址 | 寄存器地址 |
|---|---|---|---|
| boiler_temp_sens_flt | 炉水温度传感器故障 | 702h | 41795 |
| hw_out_temp_sens_flt | 热水出口温度传感器故障 | 746h | 41863 |
| hw_in_temp_sens_flt | 热水进口温度传感器故障 | 751h | 41874 |
| flue_temp_sens_flt | 排烟温度传感器故障 | 701h | 41794 |
| flue_temp_high_alm | 排烟温度高报警 | 770h | 41905 |
| boiler_temp_high_alm | 炉水温度高报警 | 771h | 41906 |
| hw_out_temp_high_alm | 热水出口温度高报警 | 7D8h | 42009 |
| extreme_low_water | 极限低水位报警 | 774h | 41909 |
| over_pressure_alm | 超压报警 | 773h | 41908 |
| burner_fault | 燃烧器故障 | 77Ah | 41915 |
| gas_leak_alarm | 燃气泄漏报警 | 77Bh | 41916 |
| gas_press_low_alm | 燃气压力低报警 | 77Ch | 41917 |
| gas_press_high_alm | 燃气压力高报警 | 77Eh | 41919 |
报警值判断:
| 值 | 十六进制 | 含义 |
|---|---|---|
| 21845 | 0x5555 | 正常 |
| 43690 | 0xAAAA | 报警 |
四、MQTT消息格式
4.1 Topic 结构
格式: device/{deviceType}/{deviceName}
| 部分 | 说明 | 示例 |
|---|---|---|
| device | 固定前缀 | device |
| deviceType | 设备类型 | hot_water_boiler |
| deviceName | 设备名称(用户定义) | 1号锅炉 |
示例 Topic: device/hot_water_boiler/1号锅炉
4.2 实时数据上报
1 | |
字段说明:
| 字段 | 来源 | 说明 |
|---|---|---|
| id | params.id | 设备唯一标识(deviceId),作为设备表主键 |
| MAC | params.MAC | 设备MAC地址 |
| deviceType | Topic 第2部分 | 设备类型: hot_water_boiler |
| deviceName | Topic 第3部分 | 设备名称(用户定义) |
| r_data | params.r_data | 采集数据数组 |
五、解析后数据结构
1 | |
六、状态字解析代码
1 | |
七、与蒸汽锅炉的差异
| 特性 | 热水锅炉 | 蒸汽锅炉 |
|---|---|---|
| 设备类型 | hot_water_boiler | steam_boiler |
| 功能码 | 统一 03 | 01/03 混用 |
| 数据类型 | 全部 16 位整数 | 含 32 位浮点 |
| 线圈点位 | 无 | 有 |
| 告警判断 | 固定值(0x5555/0xAAAA) | 位运算解析 |
| 温度单位 | 整数℃ | 需 ÷10 |
| 压力单位 | 无 | 需 ÷100 |
八、采集点配置对照表
| 中文点位名称 | 英文name | sadd | rtype | radd | Quantity | Display | dtype | magn | 软件Function |
|---|---|---|---|---|---|---|---|---|---|
| 排烟温度 | flue_gas_temp | 1 | 3 | 257 | 1 | Unsigned | 2 | 1 | 03 Holding Register |
| 炉水温度 | boiler_water_temp | 1 | 3 | 258 | 1 | Unsigned | 2 | 1 | 03 Holding Register |
| 热水出口温度 | hot_water_out_temp | 1 | 3 | 326 | 1 | Unsigned | 2 | 1 | 03 Holding Register |
| 热水进口温度 | hot_water_in_temp | 1 | 3 | 337 | 1 | Unsigned | 2 | 1 | 03 Holding Register |
| 目标温度(设定值) | target_temp_set | 1 | 3 | 1283 | 1 | Unsigned | 2 | 1 | 03 Holding Register |
| 控制器状态 | controller_status | 1 | 3 | 1538 | 1 | Unsigned | 2 | 1 | 03 Holding Register |
| 小火工作时间(小时) | small_fire_hours | 1 | 3 | 1562 | 1 | Unsigned | 2 | 1 | 03 Holding Register |
| 大火工作时间(小时) | big_fire_hours | 1 | 3 | 1563 | 1 | Unsigned | 2 | 1 | 03 Holding Register |
| 排烟温度传感器故障 | flue_temp_sens_flt | 1 | 3 | 1793 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 炉水温度传感器故障 | boiler_temp_sens_flt | 1 | 3 | 1794 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 热水出口温度传感器故障 | hw_out_temp_sens_flt | 1 | 3 | 1862 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 热水进口温度传感器故障 | hw_in_temp_sens_flt | 1 | 3 | 1873 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 排烟温度高报警 | flue_temp_high_alm | 1 | 3 | 1904 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 炉水温度高报警 | boiler_temp_high_alm | 1 | 3 | 1905 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 超压报警 | over_pressure_alm | 1 | 3 | 1907 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 极限低水位报警 | extreme_low_water | 1 | 3 | 1908 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 燃烧器故障 | burner_fault | 1 | 3 | 1914 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 燃气泄漏报警 | gas_leak_alarm | 1 | 3 | 1915 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 燃气压力低报警 | gas_press_low_alm | 1 | 3 | 1916 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 燃气压力高报警 | gas_press_high_alm | 1 | 3 | 1918 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 热水出口温度高报警 | hw_out_temp_high_alm | 1 | 3 | 2008 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 燃烧器状态 | burner_status | 1 | 3 | 2048 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 真空泵状态 | vacuum_pump_status | 1 | 3 | 2056 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
| 循环泵状态 | circ_pump_status | 1 | 3 | 2074 | 1 | Unsigned/Binary | 2 | 1 | 03 Holding Register |
字段说明:
| 字段 | 说明 |
|---|---|
| sadd | 从机地址(站号) |
| rtype | 功能码:3=读保持寄存器 |
| radd | 协议地址(= 寄存器地址 - 40001) |
| Quantity | 寄存器数量 |
| dtype | 数据类型:2=16位无符号 |
| magn | 倍率 |
九、小结
本文介绍了热水锅炉设备的扩展流程:
- 通讯参数配置 - RS485/MODBUS_RTU 协议
- 采集点定义 - 共 24 个采集点,统一使用 03 功能码
- MODBUS地址映射 - 包含温度、状态、报警等全部点位
- MQTT消息格式 - Topic 结构和 Payload 格式
- 数据解析 - 状态字 bit 位解析、报警值判断
- 与蒸汽锅炉差异 - 功能码、数据类型、告警判断方式不同
关键要点:
- 所有采集点统一使用 03 功能码(读保持寄存器)
- 状态字需进行 bit 位拆分解析
- 报警采用固定值判断(21845=正常,43690=报警)
- 温度值直接使用,无需换算
物联网之扩展设备类型(四)
https://cszy.top/20260404-物联网之扩展设备类型(四)/