主题
南向配置 - Modbus RTU
本章介绍如何通过 Modbus RTU(RS485 串口)配置南向采集。通用流程(新建、发布、下发)见 南向配置。
1. 适用场景
- 网关通过 RS485 总线连接仪表、传感器、PLC 等从站设备
- 单条总线上挂多个从站(通过 从站地址 区分)
- 需要按 寄存器地址 + 功能码 读取温度、湿度、开关量等数据
2. Modbus RTU 配置步骤
在 南向配置 新建配置后,按以下 Modbus 专用步骤完成:
1. 添加驱动 → 选择「Modbus RTU」→ 填写串口通信参数(须与现场仪表一致)
2. 在驱动下添加设备(从站地址、字节顺序)
3. 为每个设备添加属性(寄存器地址、功能码、数据类型、运算方式等)
4. 状态检测为「就绪」→ 发布 → 绑定网关并下发(见南向配置 §5)可从 系统设置 → 产品型号 → 物模型 导出南向格式再导入,减少录入,说明见 南向配置 · 与物模型的关系。
3. 配置 Modbus RTU 驱动
在配置详情页点击 「添加驱动」,在 Modbus 驱动 分类中选择 Modbus RTU。
3.1 通信参数
| 参数 | 说明 | 常见取值 |
|---|---|---|
| 串口 | 网关使用的物理串口 | COM1~COM5(与硬件接线一致) |
| 波特率 | 串口通信速率 | 9600(最常见)、19200、115200 |
| 数据位 | 每帧数据位数 | 8(常用)、7 |
| 停止位 | 停止位数 | 1(常用)、2 |
| 校验位 | 奇偶校验 | none(8N1 最常见)、even、odd |
| 超时时间(ms) | 单次请求超时 | 1000~3000 |
| 缓存字节数 | 串口接收缓冲 | 按驱动默认值或现场要求 |
| 请求间隔(ms) | 两次轮询间隔 | 避免总线拥塞,可适当加大 |
现场核对要点:网关串口参数必须与 所有从站设备 的 Modbus 通信参数一致(尤其波特率、校验位)。不一致会导致完全无响应或 CRC 错误。
3.2 驱动配置示例
典型温湿度仪表场景常用 9600-8-N-1:
- 波特率:9600
- 数据位:8
- 停止位:1
- 校验位:none
4. 添加 Modbus 设备(从站)
在已配置的 Modbus RTU 驱动下,点击 「添加设备」。
| 字段 | 说明 |
|---|---|
| 设备名称 | 便于识别的名称 |
| 设备标识符 | 配置内唯一编码(如 10001) |
| 从站地址 | Modbus 从站号,范围 1~247,须与仪表拨码/设置一致 |
| 字节顺序 | 多字节数据解析顺序,见下表 |
| 设备描述 | 可选备注 |
4.1 字节顺序说明
| 选项 | 含义 | 适用 |
|---|---|---|
| ABCD | 大端序 | 多数仪表默认 |
| CDAB | 大端字节交换 | 部分 PLC/仪表 |
| BADC | 小端字节交换 | 较少见 |
| DCBA | 小端序 | 较少见 |
若实时数值明显错误(如温度显示异常大),优先尝试更换字节顺序。
5. 配置属性(数据点/寄存器)
选中设备后,进入 属性管理,为每个采集点添加一条属性。
5.1 Modbus 专有字段
除 属性通用字段 与 上报设置 外,Modbus 属性还需配置:
| 字段 | 说明 |
|---|---|
| 寄存器地址 | Modbus 地址(如 40001 表示保持寄存器) |
5.2 功能码
读取功能码(常用):
| 功能码 | 含义 |
|---|---|
| 03 | 读保持寄存器(最常用) |
| 04 | 读输入寄存器 |
| 01 | 读线圈 |
| 02 | 读离散输入 |
写入功能码(可写属性):
| 功能码 | 含义 |
|---|---|
| 06 | 写单个保持寄存器 |
| 16 | 写多个保持寄存器 |
| 05 | 写单个线圈 |
| 15 | 写多个线圈 |
5.3 运算方式配置示例
运算方式语法与 Web/Excel 填写说明见 南向配置 · 数据转换表达式。
Modbus 寄存器读数通常是整数,需经转换后才得到工程量(温度、压力、百分比等)。以下为 RTU 现场常见配置示例:
配置示例
示例 1:温度(寄存器值 = 实际温度 × 10)
- 寄存器地址:
40001,功能码03,数据类型float或int16 - 数据转换表达式:
MUL(0.1) - 单位:
°C - 若寄存器读数为
235,平台上显示23.5 °C
示例 2:湿度(线性公式 y = 0.1x − 5)
- 数据转换表达式:
LINEAR(0.1, -5) - 寄存器
150→ 上报10
示例 3:运行状态(第 3 位为故障标志)
- 数据类型:
uint16或int16 - 数据转换表达式:
BIT(3, 3) - 结果为
0或1,可作布尔量展示
示例 4:组合寄存器高字节为模式字
BIT_MUL(8, 15, 1)解析高 8 位模式- 低 8 位可用另一条属性
BIT(0, 7)单独采集
填写与排障注意
- 与字节顺序配合:转换表达式作用于「按字节顺序解析后的数值」;若原始值本身就不对,应先调整 字节顺序,再配置转换。
- 与数据类型配合:
float/int32等占多个寄存器时,确保地址与类型匹配后再配置 LINEAR/MUL。 - Excel 批量导入:「数据转换表达式」列见 第 6 节 模板说明。
5.4 属性级从站地址(高级)
默认继承设备的从站地址。若同一逻辑设备需访问不同从站,可在属性 高级选项 中单独指定从站地址。
6. Excel 批量导入属性
操作步骤见 南向配置 · 批量导入。以下为 Modbus 模板主要列:
| 列名 | 对应字段 | 必填 |
|---|---|---|
| 属性代码 | code | 是 |
| 属性名称 | name | 是 |
| 数据类型 | dataType | 是 |
| 寄存器地址 | address | 是 |
| 是否可写 | writable | 否 |
| 读功能码 | readFunc | 否(如 03) |
| 写功能码 | writeFunc | 否(如 06、16) |
| 从站地址 | slaveId | 否(默认继承设备) |
| 数据转换表达式 | transform | 否,语法见 4.3 节 |
| 上传模式 | uploadMode | 否,见 4.5 节 |
| 上传间隔ms | uploadInterval | 否 |
属性代码命名规则见 4.4 节。
7. 常见问题与排障
Q: 配置已下发但网关下没有设备?
A: 先确认 发布与下发 是否完成(已发布、网关在线、下发成功),再检查 Modbus 现场项:
- 驱动串口参数是否与现场一致
- 从站地址是否正确,RS485 接线 A/B 是否反接
- 下发后需等待网关扫描/发现,设备较多时可能需要更长时间
Q: 设备在线但数据全为 0 或不变?
A: 检查:
- 寄存器地址是否正确(注意 40001 与 0 基址习惯)
- 读功能码是否匹配(保持寄存器用 03,输入寄存器用 04)
- 数据类型是否匹配(float 占 2 个寄存器等)
Q: 数值量级明显不对(如温度上千)?
A: 按顺序排查:
- 字节顺序(ABCD/CDAB 等)是否正确
- 数据转换表达式是否遗漏或写错(常见应配
MUL(0.1)却留空),语法见 南向配置 4.3 - 数据类型是否与寄存器长度匹配(如 float 占 2 个寄存器)
- 暂时去掉运算方式,查看原始值 x,再反推
LINEAR(a,b)或MUL(a)参数;示例见 5.3 节
Q: 写控制失败?
A: 检查:
- 属性是否设置为可写
- 写功能码是否正确(06/16/05/15)
- 设备是否支持该寄存器写入
- 是否有设备控制权限
Q: 多条总线设备互相干扰?
A: 适当增大 请求间隔(ms),避免轮询过快;检查终端电阻与屏蔽接地。
发布、停用、修改已发布配置等通用问题见 南向配置 · 常见问题。更多跨模块问题见 常见问题索引 · 网关与南向接入 FAQ。
8. Modbus TCP 简要说明
若设备通过以太网以 Modbus TCP 通信(非 RS485),流程与 RTU 类似,区别在驱动层:
- 选择 Modbus TCP 驱动
- 配置 网口、超时、请求间隔 等
- 在 设备 层填写目标设备的 IP 地址 和 端口(默认 502)
- 属性层寄存器、功能码配置与 RTU 相同
发布与下发见 南向配置 §5。