物联网之扩展设备类型(四)

本文以热水锅炉为例,介绍如何扩展支持新的设备类型。

一、通讯参数配置

参数
接口类型 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
"params": {
"dir": "up",
"id": "02102825090400039863",
"MAC": "D4AD20D579E7",
"r_data": [
{ "name": "boiler_water_temp", "value": "85", "err": "0" },
{ "name": "hot_water_out_temp", "value": "82", "err": "0" },
{ "name": "hot_water_in_temp", "value": "40", "err": "0" },
{ "name": "flue_gas_temp", "value": "180", "err": "0" },
{ "name": "target_temp_set", "value": "80", "err": "0" },
{ "name": "burner_status", "value": "3890", "err": "0" },
{ "name": "circ_pump_status", "value": "3940", "err": "0" },
{ "name": "vacuum_pump_status", "value": "0", "err": "0" },
{ "name": "controller_status", "value": "2", "err": "0" },
{ "name": "small_fire_hours", "value": "1234", "err": "0" },
{ "name": "big_fire_hours", "value": "567", "err": "0" },
{ "name": "boiler_temp_sens_flt", "value": "21845", "err": "0" },
{ "name": "hw_out_temp_sens_flt", "value": "21845", "err": "0" },
{ "name": "hw_in_temp_sens_flt", "value": "21845", "err": "0" },
{ "name": "flue_temp_sens_flt", "value": "21845", "err": "0" },
{ "name": "flue_temp_high_alm", "value": "43690", "err": "0" },
{ "name": "boiler_temp_high_alm", "value": "21845", "err": "0" },
{ "name": "hw_out_temp_high_alm", "value": "21845", "err": "0" },
{ "name": "extreme_low_water", "value": "21845", "err": "0" },
{ "name": "over_pressure_alm", "value": "21845", "err": "0" },
{ "name": "burner_fault", "value": "21845", "err": "0" },
{ "name": "gas_leak_alarm", "value": "21845", "err": "0" },
{ "name": "gas_press_low_alm", "value": "21845", "err": "0" },
{ "name": "gas_press_high_alm", "value": "21845", "err": "0" }
]
}
}

字段说明

字段 来源 说明
id params.id 设备唯一标识(deviceId),作为设备表主键
MAC params.MAC 设备MAC地址
deviceType Topic 第2部分 设备类型: hot_water_boiler
deviceName Topic 第3部分 设备名称(用户定义)
r_data params.r_data 采集数据数组

五、解析后数据结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
"furnaceWaterTemp": 85,
"hotWaterOutletTemp": 82,
"hotWaterInletTemp": 40,
"exhaustGasTemp": 180,
"targetTemp": 80,
"controllerStatus": 2,
"burnerStatus": {
"autoMode": true,
"mainPump": true,
"running": true,
"output": 50
},
"circulationPumpStatus": {
"autoMode": true,
"mainPump": true,
"running": true,
"output": 100
},
"vacuumPumpStatus": {
"autoMode": true,
"mainPump": true,
"running": false,
"output": 0
},
"lowFireHours": 1234,
"highFireHours": 567,
"alarms": {
"boilerWaterTempSensor": false,
"hotWaterOutTempSensor": false,
"hotWaterInletSensor": false,
"flueGasTempSensor": false,
"flueGasTempHigh": true,
"boilerWaterTempHigh": false,
"hotWaterOutTempHigh": false,
"extremeLowWater": false,
"overPressure": false,
"burnerFault": false,
"gasLeak": false,
"gasPressureLow": false,
"gasPressureHigh": false
}
}

六、状态字解析代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
* 解析状态字 (16位)
* @param value 原始采集值
*/
function parseStatusWord(value: number) {
return {
autoMode: ((value >> 14) & 0x03) === 0, // true=自动, false=手动
mainPump: ((value >> 12) & 0x03) === 0, // true=主泵, false=备泵
running: ((value >> 8) & 0x0f) === 0x0f, // true=启动, false=停止
output: value & 0xff, // 输出量 0-100
};
}

/**
* 解析报警状态
* @param value 原始采集值
*/
function parseAlarmStatus(value: number): boolean {
return value === 43690; // 0xAAAA = 报警
}

// 示例:解析燃烧器状态
const burnerStatus = parseStatusWord(3890);
// 结果: { autoMode: true, mainPump: true, running: true, output: 50 }

// 示例:解析报警
const isAlarm = parseAlarmStatus(43690);
// 结果: true

七、与蒸汽锅炉的差异

特性 热水锅炉 蒸汽锅炉
设备类型 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 倍率

九、小结

本文介绍了热水锅炉设备的扩展流程:

  1. 通讯参数配置 - RS485/MODBUS_RTU 协议
  2. 采集点定义 - 共 24 个采集点,统一使用 03 功能码
  3. MODBUS地址映射 - 包含温度、状态、报警等全部点位
  4. MQTT消息格式 - Topic 结构和 Payload 格式
  5. 数据解析 - 状态字 bit 位解析、报警值判断
  6. 与蒸汽锅炉差异 - 功能码、数据类型、告警判断方式不同

关键要点:

  • 所有采集点统一使用 03 功能码(读保持寄存器)
  • 状态字需进行 bit 位拆分解析
  • 报警采用固定值判断(21845=正常,43690=报警)
  • 温度值直接使用,无需换算

物联网之扩展设备类型(四)
https://cszy.top/20260404-物联网之扩展设备类型(四)/
作者
csorz
发布于
2026年4月4日
许可协议