2. PLC基础回顾:工作原理、常见品牌与地址映射

在厂务实时数据同步场景中,PLC(可编程逻辑控制器)是边缘节点直接对接的底层设备。理解PLC的扫描周期、寄存器分类以及品牌差异,是后续调试数据链路、诊断通信故障的前提。本节从工作原理、主流品牌、寄存器与地址映射三个维度进行系统回顾。

2.1 PLC工作原理:循环扫描与中断机制

PLC采用“循环扫描”的工作模式,一个完整的扫描周期包含以下五个阶段:

  1. 自诊断:检查CPU、内存、I/O模块状态,异常时报警或停机。
  2. 读取输入:将物理输入信号(DI/AI)批量读入输入映像区。
  3. 执行用户程序:按梯形图或结构化文本逻辑,从映像区读取数据并计算输出。
  4. 刷新输出:将输出映像区的值一次性写入物理输出模块(DO/AO)。
  5. 通信与后台任务:处理以太网/串口通信、中断事件、系统时间等。
关键概念: 扫描周期(Scan Cycle)通常在1~100ms之间,取决于程序规模和CPU性能。边缘节点读取PLC数据时,必须考虑扫描周期带来的延迟,避免在输出刷新阶段读取不一致的中间值。
PLC扫描周期流程图 PLC 循环扫描周期(Scan Cycle) ① 自诊断 CPU/内存检查 ② 读取输入 DI/AI → 映像区 ③ 执行程序 梯形图/ST逻辑 ④ 刷新输出 映像区 → DO/AO ⑤ 通信 以太网/中断 循环执行(周期 T ) ⚠ 调试要点 • 边缘节点读取数据时,应避开输出刷新阶段(阶段④),否则可能读到旧值或中间态。 • 扫描周期过长(>200ms)会导致边缘节点数据延迟,需优化程序或启用中断。

2.2 常见PLC品牌与选型对比

厂务系统中常见的PLC品牌包括西门子、三菱、罗克韦尔,此外还有施耐德、欧姆龙、汇川等。下表从通信协议、编程软件、寄存器模型三个维度进行对比:

品牌 典型系列 编程软件 主流通信协议 寄存器模型特点
西门子 S7-1200 / S7-1500 / S7-300 TIA Portal (Step 7) Profinet / Profibus / S7通信 I/Q/M/DB区,地址如 I0.0, DB1.DBW0
三菱 FX系列 / L系列 / Q系列 GX Works2 / GX Works3 CC-Link / MC协议 (3E/4E) X/Y/M/D区,地址如 X0, D100
罗克韦尔 ControlLogix / CompactLogix Studio 5000 EtherNet/IP / ControlNet Tag型变量,无固定地址,如 Tank1.Pressure
选型建议: 厂务系统若以水处理、空调机组为主,西门子S7-1200/1500性价比高;若设备以日系为主(如注塑机、空压机),三菱FX5U兼容性好;罗克韦尔多用于大型半导体厂务,支持复杂数据结构。
三大品牌寄存器模型对比 常见PLC品牌寄存器模型对比 西门子 S7-1500 I0.0~I7.7 (数字量输入) Q0.0~Q7.7 (数字量输出) M0.0~M999.7 (中间位) DB1.DBW0~DBn.DBW65534 PIW/PQW (模拟量外设) 地址格式: 区+字节.位 三菱 FX5U X0~X377 (八进制输入) Y0~Y377 (八进制输出) M0~M7679 (辅助继电器) D0~D7999 (数据寄存器) T/C (定时器/计数器) 地址格式: 字母+数字 罗克韦尔 CompactLogix Tag型变量 (无固定地址) Local:1:I.Data (输入) Local:1:O.Data (输出) Tank1.Pressure (自定义) Array[0]~Array[n] 地址格式: 标签名.成员

2.3 PLC数据寄存器与地址映射

PLC数据寄存器是边缘节点读取的核心对象。不同品牌对寄存器的分类和地址编码规则差异较大,但逻辑上可分为以下三类:

  • 位寄存器(Bit):存储开关量(0/1),如西门子I区、三菱X/Y区。
  • 字/双字寄存器(Word/DWord):存储模拟量、计数器、定时器值,如西门子DBW、三菱D区。
  • 特殊寄存器(System):存储PLC状态、错误代码、系统时钟等,如西门子SM区、三菱SD区。

2.3.1 地址映射示例

以下表格展示边缘节点通过Modbus TCP或S7协议读取PLC寄存器时的地址映射关系:

PLC品牌 物理地址示例 Modbus地址映射 数据类型 说明
西门子 S7-1200 DB1.DBW0 40001 (保持寄存器) UInt16 需通过S7-1200的Modbus TCP库映射
三菱 FX5U D100 40101 (保持寄存器) UInt16 MC协议直接映射,偏移量+1
罗克韦尔 CompactLogix Tank1.Pressure 无固定Modbus地址 REAL 需通过EtherNet/IP CIP读取Tag
⚠ 常见陷阱: 地址偏移量因品牌而异。例如三菱D100在Modbus中对应地址40101(起始地址为0),而西门子DB1.DBW0在Modbus中可能映射到40001或400001,取决于网关配置。调试时必须使用对应品牌的地址计算规则,否则会导致数据错位。

2.3.2 边缘节点读取PLC数据的典型流程

  1. 确定PLC型号与固件版本:确认支持的协议(Modbus TCP / Profinet / EtherNet/IP)。
  2. 获取寄存器地址表:从PLC程序导出符号表或变量表。
  3. 配置边缘节点网关:在边缘节点(如树莓派、工业网关)中填写PLC IP、端口、寄存器起始地址。
  4. 设置数据采集周期:通常为100ms~1s,需大于PLC扫描周期。
  5. 验证数据一致性:对比边缘节点读取值与PLC在线监控值,确认无字节序(Endian)或偏移错误。
边缘节点读取PLC数据流程 边缘节点读取PLC数据流程 ① 确定PLC型号 ② 获取地址表 ③ 配置网关 ④ 设置采集周期 ⑤ 验证一致性 🔧 调试检查清单 • 确认PLC IP地址与边缘节点在同一网段,防火墙未阻断端口(Modbus TCP:502, S7:102)。 • 验证字节序:西门子默认大端(Big-Endian),三菱默认小端(Little-Endian),需在网关中配置。 • 使用Wireshark抓包对比请求/响应报文,确认地址和数据类型匹配。

2.4 小结