4. PLC 与称重模块通讯:接线方式、协议基础与数据读取
在包装作业称重校验系统中,PLC 与称重模块的通讯是实现实时重量采集与控制的核心环节。本节将围绕三种主流接线方式、Modbus RTU 协议基础以及典型数据读取示例展开,帮助学员掌握从物理层到应用层的完整通讯链路。
4.1 PLC 与称重模块的接线方式
根据称重模块的输出信号类型,PLC 的接线方式主要分为模拟量输入和数字量通讯两大类。下表对比了两种方式的典型特征与适用场景:
| 接线方式 | 信号类型 | 典型接口 | 传输距离 | 抗干扰能力 | 适用场景 |
|---|---|---|---|---|---|
| 模拟量输入 | 4-20mA / 0-10V | PLC AI 模块 | ≤ 200m | 中等(需屏蔽线) | 单点称重、低成本改造 |
| 数字量通讯 | RS-485 / RS-232 | PLC 串口 / 通讯模块 | ≤ 1200m (RS-485) | 高(差分信号) | 多点称重、高速采集 |
4.1.1 模拟量接线方式
模拟量称重模块(如称重变送器)将传感器信号转换为 4-20mA 或 0-10V 标准信号,直接接入 PLC 的模拟量输入模块。接线时需注意:
- 屏蔽层单端接地:避免地环路干扰。
- 电源隔离:称重模块与 PLC 使用独立 DC 24V 电源。
- 量程匹配:PLC 模拟量模块的输入范围必须与变送器输出一致。
4.1.2 数字量通讯接线方式(RS-485)
数字量通讯方式下,称重模块作为 Modbus 从站,PLC 作为主站通过 RS-485 总线读取重量数据。典型接线要点:
- A/B 线:正负差分信号线,需双绞屏蔽。
- 终端电阻:总线两端各并联 120Ω 电阻,抑制信号反射。
- 偏置电阻:在总线空闲时保持 A 高 B 低,防止误触发。
- 接地:屏蔽层单端接大地,模块电源负极共地。
选型建议: 对于包装线多工位称重(≥4 台),优先采用 RS-485 数字通讯方式,可大幅减少 PLC 模拟量模块数量,且数据精度不受线损影响。
4.2 Modbus RTU 协议基础
Modbus RTU 是工业自动化领域最通用的串行通讯协议之一,采用主从架构。在称重校验系统中,PLC 通常作为主站,称重模块作为从站。以下为协议核心要素:
| 参数 | 说明 | 典型值 |
|---|---|---|
| 物理层 | RS-485 半双工 | 9600 bps, 8, N, 1 |
| 帧结构 | 地址码 + 功能码 + 数据 + CRC | 11 字节(典型) |
| 功能码 03 | 读取保持寄存器 | 读取重量值 |
| 功能码 06 | 写单个寄存器 | 置零/去皮 |
| 数据格式 | 32 位浮点 / 16 位整数 | IEEE 754 或 0.1g 分辨率 |
4.2.1 帧结构详解
Modbus RTU 帧以 3.5 字符静默时间开始和结束,帧内字节连续发送。以读取称重模块重量为例:
主站请求:01 03 00 00 00 02 C4 0B
从站响应:01 03 04 00 00 01 2C 7A 43
- 01:从站地址(称重模块 ID)
- 03:功能码(读取保持寄存器)
- 00 00:起始寄存器地址(重量寄存器)
- 00 02:读取寄存器数量(2 个 = 32 位)
- C4 0B:CRC 校验(低字节在前)
- 04:响应数据字节数
- 00 00 01 2C:重量值(十六进制,300 十进制)
- 7A 43:CRC 校验
4.3 数据读取示例:PLC 通过 Modbus RTU 读取称重值
以下以西门子 S7-1200 PLC 为例,演示通过 Modbus_Comm_Load 和 Modbus_Master 指令读取称重模块重量值的完整流程。
4.3.1 硬件组态与参数配置
- 在 TIA Portal 中添加 CM1241 RS-485 通讯模块。
- 设置波特率 9600、数据位 8、无校验、停止位 1。
- 在 OB1 中调用 Modbus_Comm_Load 配置端口。
- 调用 Modbus_Master 发送请求并接收响应。
4.3.2 梯形图代码示例
// 主程序 OB1 中调用
// 配置端口
"Modbus_Comm_Load_DB"(
PORT := 269, // CM1241 硬件标识符
BAUD := 9600,
PARITY := 0, // 0=无校验
FLOW_CTRL := 0,
RTS_ON_DLY := 0,
RTS_OFF_DLY := 0,
RESP_TO := 1000, // 超时 1s
DONE => "CommDone",
ERROR => "CommErr",
STATUS => "CommStatus"
);
// 读取称重值(每 500ms 执行一次)
"Modbus_Master_DB"(
EN := "Cycle_500ms",
MB_ADDR := 1, // 称重模块地址
MODE := 0, // 0=读取
DATA_ADDR := 40001, // 保持寄存器起始地址
DATA_LEN := 2, // 读取 2 个字(32 位)
DATA_PTR := "WeightRaw", // 指向 DB 中的数组
DONE => "ReadDone",
ERROR => "ReadErr",
STATUS => "ReadStatus"
);
4.3.3 数据解析与工程单位转换
称重模块返回的原始数据通常为 32 位整数或浮点数。以 32 位整数为例,假设分辨率为 0.1g:
// 将两个 16 位寄存器合并为 32 位整数
WeightInt := "WeightRaw"[1] * 65536 + "WeightRaw"[2];
// 转换为实际重量(单位:g)
Weight_g := WeightInt * 0.1;
常见问题排查:
- 通讯超时:检查从站地址、波特率、校验位是否匹配;确认终端电阻已接入。
- 数据异常:验证寄存器地址是否正确(部分模块地址从 0 或 1 开始)。
- CRC 错误:检查线缆屏蔽与接地,避免强电磁干扰。
4.4 接线与通讯架构总览
下图展示了 PLC 与称重模块之间的典型接线与通讯架构,涵盖模拟量与数字量两种路径:
4.5 模拟量 vs 数字量:关键对比总结
| 对比维度 | 模拟量(4-20mA) | 数字量(Modbus RTU) |
|---|---|---|
| 接线复杂度 | 每台称重模块需独立 3 芯屏蔽线 | 总线拓扑,所有模块共用 2 芯双绞线 |
| 数据精度 | 受线损、变送器精度影响(通常 0.1% FS) | 数字传输无衰减,精度取决于模块 ADC(0.01% FS) |
| 扩展性 | 每增加 1 台需增加 1 个 AI 通道 | 总线可挂载 32 台(RS-485),仅需增加从站地址 |
| 故障诊断 | 断线检测有限(需 4-20mA 下限判断) | 通讯超时、CRC 错误、从站无应答均可诊断 |
| 典型成本 | 变送器 + AI 模块,单点成本较低 | 称重模块 + 通讯模块,多点成本优势明显 |
工程注意: 无论采用哪种接线方式,称重模块的电源必须与 PLC 电源隔离,避免大功率设备启停时产生的浪涌损坏模块。建议使用隔离 DC-DC 模块或独立开关电源供电。