2. PLC基础回顾:工作原理、常见品牌与数据块

在厂务数据上云项目中,PLC(可编程逻辑控制器)是数据采集的源头。理解PLC的工作原理、熟悉主流品牌特性、掌握数据块(DB)的寻址方式,是正确配置边缘网关转发逻辑的前提。本章从工程实践角度梳理PLC核心基础,为后续网关配置提供知识支撑。

2.1 PLC工作原理:循环扫描与数据刷新

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

  1. 自诊断:检查CPU硬件、I/O模块及通信接口状态。
  2. 读取输入:将物理输入信号(DI/AI)批量读入输入映像区(PII)。
  3. 执行用户程序:按梯形图或ST语言逻辑,从输入映像区读取数据,运算后写入输出映像区(PIQ)。
  4. 写入输出:将输出映像区的状态一次性刷新到物理输出模块。
  5. 通信与系统任务:处理通信请求、中断事件、时间片任务。
关键理解: 边缘网关读取PLC数据时,实际读取的是数据块(DB)或映像区中的缓存值,而非直接读取物理I/O。扫描周期决定了数据更新的实时性上限。
PLC扫描周期流程图 PLC 循环扫描周期(5阶段) ① 自诊断 CPU状态检查 ② 读取输入 PII 刷新 ③ 执行程序 逻辑运算 ④ 写入输出 PIQ → 物理输出 ⑤ 通信 网关交互 扫描周期结束,自动进入下一周期 💡 边缘网关通常在阶段⑤读取DB块数据 不干扰PLC正常扫描,保证数据一致性
工程要点: 若PLC扫描周期为50ms,网关采集周期建议设为200ms以上(至少4倍周期),避免读取到不一致的“半刷新”数据。

2.2 常见PLC品牌与选型对比

厂务监控项目中,西门子、三菱、欧姆龙是三大主流品牌。下表从通信协议、数据块结构、编程软件三个维度进行对比:

品牌 典型系列 上位通信协议 数据块(DB)特点 编程软件
西门子 S7-1200 / S7-1500 S7通信(ISO-on-TCP) 全局DB、背景DB;支持结构化数据类型(UDT) TIA Portal
三菱 FX5U / L系列 / Q系列 MC协议(3E帧 / 4E帧) 文件寄存器(D/R)、标签数据;无独立DB概念 GX Works3 / GX Developer
欧姆龙 NJ / NX / CP1H FINS协议 / EtherNet/IP 变量表(Global Variables);支持结构体 Sysmac Studio / CX-One
选型建议: 西门子S7-1200/1500在厂务项目中占比最高,其全局数据块(Global DB)结构清晰,边缘网关通过S7协议可直接按符号名称寻址,配置效率最高。

2.3 PLC编程基础与数据块(DB)结构

数据块(Data Block, DB)是PLC中用于存储用户数据的结构化内存区域。在厂务数据上云场景中,网关读取的正是DB中的工艺参数、设备状态、能耗数据等。

2.3.1 数据块类型

  • 全局数据块(Global DB):所有程序块(OB/FC/FB)均可访问,适合存放共享工艺参数。
  • 背景数据块(Instance DB):与某个功能块(FB)绑定,存放该FB的实例数据。
  • 系统数据块(System DB):由系统自动生成,存放硬件组态或通信参数,网关一般不直接读取。

2.3.2 数据块内部结构示例(西门子TIA Portal)

以下是一个典型的全局数据块定义,用于存储厂务空调系统的监控数据:

// 全局数据块 "AHU_Data"(空调机组数据)
DATA_BLOCK "AHU_Data"
  STRUCT
    Supply_Fan_Status : Bool;        // 送风机运行状态
    Return_Fan_Status : Bool;        // 回风机运行状态
    Supply_Temp : Real;              // 送风温度(℃)
    Return_Temp : Real;              // 回风温度(℃)
    Valve_Opening : Int;             // 水阀开度(0-100%)
    Filter_Alarm : Bool;             // 过滤器堵塞报警
    Energy_Consumption : DInt;       // 累计能耗(kWh)
    Timestamp : Array[0..6] of Byte; // 时间戳(BCD码)
  END_STRUCT;
END_DATA_BLOCK
⚠️ 网关配置注意: 边缘网关读取DB时,必须严格匹配PLC侧的数据类型和字节对齐规则。例如:Real 占4字节,Bool 占1字节但通常按位寻址。建议在PLC程序中为每个DB变量添加注释,并导出符号表供网关配置使用。
PLC数据块与边缘网关交互架构 PLC 数据块(DB)与边缘网关交互架构 西门子 S7-1500 PLC 全局数据块 DB1: AHU_Data Supply_Temp (Real) Valve_Opening (Int) 背景数据块 DB2: FB_PID_Instance S7协议 边缘网关 S7 驱动模块 数据解析引擎 MQTT 转发模块 MQTT 云平台 数据存储 时序数据库 可视化 Web仪表盘 🔑 网关通过S7协议按DB编号+偏移地址读取数据,解析后通过MQTT转发至云平台 数据块结构必须与PLC程序保持严格一致,否则会导致解析错误

2.4 数据块寻址方式与网关配置映射

边缘网关配置数据采集点时,需要明确PLC数据块的寻址路径。以西门子S7-1200为例,常见寻址方式如下:

数据类型 PLC内部地址示例 网关配置地址 说明
Bool(位) DB1.DBX0.0 DB1.0.0 DB1第0字节的第0位
Byte(字节) DB1.DBB2 DB1.2 DB1第2字节
Int(16位整数) DB1.DBW4 DB1.4 DB1第4-5字节
Real(32位浮点) DB1.DBD10 DB1.10 DB1第10-13字节
DInt(32位整数) DB1.DBD20 DB1.20 DB1第20-23字节
配置技巧: 在TIA Portal中导出DB的符号导出文件(.xlsx或.udt),直接导入边缘网关配置工具,可避免手动输入地址偏移错误。对于三菱PLC,则需使用MC协议中的“软元件编号”方式寻址(如 D100 对应文件寄存器)。

2.5 本章小结

  • PLC采用循环扫描机制,网关读取数据时应考虑扫描周期对实时性的影响。
  • 西门子、三菱、欧姆龙在数据块结构和通信协议上存在差异,网关配置需针对性适配。
  • 数据块(DB)是厂务数据上云的核心数据源,其内部变量类型、偏移地址、字节对齐方式必须与网关配置严格一致。
  • 推荐在PLC编程阶段就为每个DB变量添加符号名和注释,便于后续网关配置和运维排查。