
物联网 · 盛世宏博 · Modbus TCP、工业以太网温湿度传感器、Modbus Poll、PLC 集成、上位机组态、寄存器映射

第一步不是 ping,是先看说明书确认设备类型:
判定项 | 真以太网 Modbus TCP | 伪以太网(RS485 换壳) |
|---|---|---|
物理接口 | RJ45,走交换机,支持 PoE | RJ45 外形,但内部是 485 电平 |
寻址 | IP + Port 502 + Unit ID | 从站地址 1~247 |
是否需要终端电阻 | 不需要 | 必须手拉手 + 末端 120Ω |
供电 | PoE 或独立 24V | 通常 24V,无 PoE |
抓包特征 | TCP 三次握手 + MBAP 头 | 串口波形,无 TCP 会话 |
把"485 换壳"当真以太网接交换机,会出现"link 灯亮但怎么都读不到数据"——因为它根本不吃 TCP。
出厂常见默认 192.168.1.100 或 192.168.0.100。
1. 电脑设同网段静态 IP(如 192.168.1.50/24)
2. 直连设备,ping 192.168.1.100
3. 通了 → 进 Web 管理页改目标 IP
4. 不通 → 查网线/供电/VLAN,别急着怀疑设备show power inline
→ 每口实际 1.2~2.8W,总余量 >20%telnet 192.168.1.100 502
# 或
nc -zv 192.168.1.100 502502 不通就别进 Poll 了——先查设备 Modbus TCP 功能是否开启、防火墙/ACL 是否放行、端口是否被改成 1502/5020 等非标端口。
Connection → Connect
- Connection: Modbus TCP/IP
- IP Address: 192.168.1.100
- Port: 502
- Slave ID: 1(Unit ID,多设备网关场景需映射)Read/Write Definition:
- Slave ID: 1
- Function: 03 Read Holding Registers(或 04 Read Input Registers)
- Address: 0 ← 注意是 0-based
- Quantity: 6 ← 一次读 6 个寄存器手册常见写法 40001,代码和 Poll 里填 0:
40001 → offset 0
40002 → offset 1
40003 → offset 2Display:
- Show Data As: Decimal / Float
- Swap Word/Byte Order: 按手册选
- PLC Addresses: 勾选可显示 40001 便于对照缩放设置:
Scale:
- Multiply: 0.1 ← 250 → 25.0
- Divide: 1报错 | 含义 | 排查 |
|---|---|---|
Timeout | 无响应 | IP/端口/Slave ID/防火墙/网线 |
Illegal Function (0x01) | 功能码不支持 | 换 03/04 试 |
Illegal Data Address (0x02) | 地址不存在 | 查手册起始地址、0基1基 |
Illegal Data Value (0x03) | 数量超限 | Quantity 调小 |
Slave Device Failure (0x04) | 设备内部错 | 重启/固件问题 |
Acknowledge (0x05) | 设备忙 | 稍后重试 |
Slave Device Busy (0x06) | 设备忙 | 降低轮询频率 |
Modbus 数据模型:
00001~09999 线圈(读/写)
10001~19999 离散输入(只读)
30001~39999 输入寄存器(只读)
40001~49999 保持寄存器(读/写)协议帧里是 0 基偏移:
手册 40001 → 填 0
手册 40002 → 填 1
手册 40003 → 填 2寄存器原始值 250 → 实际 25.0℃
需设置 Multiply = 0.1 或 Divide = 10常见映射:
40001 INT16 ×0.1 → 温度 ℃
40002 INT16 ×0.1 → 湿度 %RH
40003 INT16 ×0.1 → 露点 ℃
40004 UINT16 ×1 → PM2.5 μg/m³
40005 UINT16 → 状态字(位域)
40006~40007 FLOAT → 温度/露点(占 2 寄存器,32 位)16 位整数一般 Big Endian(AB CD),32 位浮点要管两层:
Poll 里 Swap Word/Byte Order 轮换试,配合设备手册给的测试值(如强制写 25.5)确认。
功能码 | 用途 | 温湿度传感器常见支持 |
|---|---|---|
01 | 读线圈 | 部分 |
02 | 读离散输入 | 部分 |
03 | 读保持寄存器 | 普遍 |
04 | 读输入寄存器 | 普遍 |
06 | 写单寄存器 | 部分(写设定值) |
10(0x10) | 写多寄存器 | 部分 |
16(0x10 十进制) | 写多寄存器 | 同上 |
有些设备只支持 03+10,用 06 写单寄存器会回
Illegal Function。Poll 里测试写操作前务必先确认手册。
硬件配置:
- 添加 CPU
- 添加 CM/CP 通信模块(PROFINET/以太网)
- 或直接使用 CPU 内置 PN 口
编程:
- 调用 MB_CLIENT(S7-1200/1500 用 MB_CLIENT,非 MB_MASTER)
- 参数:
REQ: 触发条件(如 1Hz 时钟)
DISCONNECT: FALSE
CONNECT_ID: 1(唯一标识)
IP_OCTET_1~4: 192.168.1.100
REM_PORT: 502
MB_UNIT_ID: 1
MB_FUNCTION: 3(读保持寄存器)
DATA_ADDR: 40001(TIA 里填 40001,软件自动转 0 基)
DATA_LEN: 6
DATA_PTR: &DB1.TempData[0](目标数据块)
- 输出处理:
DB1.TempData[0] × 0.1 → 实际温度
DB1.TempData[1] × 0.1 → 实际湿度注意点:
DATA_ADDR 在 TIA 里填 40001 形式(1-based),老软件版本才要求 0-based CONNECT_ID 区分,不要同时触发多个 MB_CLIENT GX Works3:
- 参数 → 模块信息 → 以太网端口
- 添加 Modbus TCP 主站设置
- 配置读取对象:
从站 IP: 192.168.1.100
Unit ID: 1
功能码: 03H
起始地址: 0(对应 40001)
点数: 6
目标软元件: D100(存温度)Sysmac Studio:
- 添加 Ethernet/IP 或 Modbus TCP 主站单元
- 建立 Modbus TCP 通道
- 用 _MBTCP_ReadHoldingRegisters 功能块
- 地址填 40001(1-based)1. 新建设备 → 选 Modbus TCP 驱动
2. 配置连接:
- IP: 192.168.1.100
- Port: 502
- Unit ID: 1
- 超时: 2000~3000ms
- 重试: 2~3 次
- 周期: ≥2000ms
3. 建数据点:
- 地址 40001 → 名称 Temp → 类型 INT16 → 线性转换 ×0.1 → ℃
- 地址 40002 → 名称 Hum → 类型 INT16 → 线性转换 ×0.1 → %RH
4. 浮点变量:显式选 FLOAT32 + 字序
5. 画面绑定 + 告警 + 曲线软件 | 设备驱动选择 | 地址格式 | 备注 |
|---|---|---|---|
力控 | Modbus TCP | 40001 | 1-based |
亚控 KingView | Modbus TCP | 40001 | 1-based |
MCGS | Modbus TCP | 40001 | 1-based |
WinCC | Modbus TCP(需 Channel/Device) | 40001 | 注意字序 |
Ignition | Modbus TCP Driver | 40001 | 支持自动发现 |
1. 查说明书 → 确认真以太网 or 485 换壳
2. 电脑设同网段静态 IP → ping 通设备
3. telnet/nc 验证 502 端口可达
4. Modbus Poll 连 502,Slave ID=1
5. 读 40001,确认地址偏移、缩放、字节序
6. 读连续多个寄存器,验证合并读是否正常
7. 测试写操作(06/10),确认功能码支持
8. 多设备轮询测试(2~5s 周期,队列方式)
9. PLC 侧 MB_CLIENT 配置,验证数据写入 DB
10. 上位机组态建点,验证画面绑定
11. 异常值过滤(0xFFFF/超范围/冻结)
12. 72h 长稳测试,无断流、无假死异常值 | 处理 |
|---|---|
0xFFFF / 0x7FFF | 传感器故障/离线,标 INVALID,不进库 |
温度 <5 或 >55℃(室内) | 探头脱落/异常,标 INVALID |
湿度 <0 或 >100%RH | 数据异常,标 INVALID |
连续 10 周期值不变 | 设备冻结,标 STALE |
单次跳变 >3℃ 或 >8%RH | 中值滤波,不触发告警 |
超过 2 个周期无更新 | 标 STALE,平台弹"数据不新鲜" |
Modbus TCP 温湿度传感器调试,记住三个"差一位就错": 40001 在 Poll 里填 0、原始值 250 要乘 0.1、浮点先校字节序。 PLC 侧别混 MBUS_MSG 和 MB_CLIENT,上位机组态别忘线性转换——这三件事做对,剩下的就是网络连通性问题,按 ping → 502 → Poll → PLC/SCADA 的顺序一层层剥。
关键词:Modbus TCP、工业以太网温湿度传感器、Modbus Poll、PLC 集成、上位机组态、寄存器偏移、缩放因子、字节序、MB_CLIENT、异常值过滤
标签:#ModbusTCP #工业以太网 #温湿度传感器 #ModbusPoll #PLC集成 #上位机组态 #寄存器映射 #字节序 #MB_CLIENT #工业调试 #动环监控
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。