1. 课程导入

在智能制造与工业物联网(IIoT)快速融合的今天,PLC 不再只是孤立的现场控制器,而是需要向上层 MES、SCADA、云平台乃至移动终端持续输出结构化数据。CODESYS 作为 IEC 61131-3 编程平台的代表,内置了 OPC UA 服务器与 MQTT 客户端能力,使一台普通控制器可以同时扮演"语义化数据源"和"轻量级消息发布者"两种角色。本课程围绕这两条通信主线展开,帮助你把现场变量安全、规范、高效地送达各类消费端。

一、为什么需要 OPC UA 与 MQTT 协同

OPC UA 与 MQTT 并非互相替代,而是面向不同层次、不同约束的互补技术。理解它们的定位差异,是后续所有配置与编程决策的基础。

  • OPC UA:面向语义建模与请求/响应,具备类型系统、地址空间、订阅机制和安全通道,适合 SCADA、MES、边缘网关等需要"读懂数据含义"的场景。
  • MQTT:面向发布/订阅与低带宽传输,采用轻量报文和 Broker 中转,适合跨公网、多设备、弱网环境下的数据汇聚与云端上报。
  • 协同价值:用 OPC UA 保证数据语义与安全,用 MQTT 解决广域分发与解耦,形成"现场语义化 + 云端轻量化"的完整链路。
核心判断:如果消费端需要浏览变量树、读取数据类型与工程单位,优先 OPC UA;如果消费端只关心"某个测点在某时刻的值"且网络不稳定,优先 MQTT。

二、整体课程框架与数据流全景

本课程共 30 章,按"概念—配置—编程—集成—实战—排障"递进。下图给出从 CODESYS 运行时到最终消费端的整体数据流与关键组件关系,后续章节将逐段展开。

CODESYS 运行时 PLC 应用 全局变量 / 结构体 IEC 61131-3 程序 OPC UA 服务器 地址空间 / 节点 订阅 / 安全策略 MQTT 客户端 Topic / QoS 发布 / 订阅 MQTT Broker 消息路由 主题分发 会话保持 SCADA / MES OPC UA Client 浏览 / 订阅 云平台 / 数据库 MQTT Subscriber 时序存储 / 看板 变量映射 数据发布 UA 二进制 / HTTPS TCP/TLS 订阅推送

图中可见两条并行路径:上方 OPC UA 路径强调语义与安全,下方 MQTT 路径强调轻量与解耦。实际项目中二者常同时启用,由同一份 PLC 变量分别映射到地址空间和 MQTT 主题。

三、学习目标与能力清单

完成本课程后,你应能独立完成从变量规划到云端可视化的完整链路。下表列出核心能力与对应章节重点。

能力维度 具体目标 关键产出
概念理解 区分 OPC UA 与 MQTT 的适用边界 选型判断表
配置能力 启用 OPC UA 服务器、配置 MQTT 客户端参数 可运行的通信配置
编程能力 用 ST 语言组织变量、映射节点与主题 结构化 PLC 程序
集成能力 对接 SCADA、Broker 与云平台 端到端数据链路
排障能力 定位连接失败、数据不更新等问题 排障检查清单

四、实战项目预览与典型误区

课程实战以一个"智能产线监控"项目贯穿:PLC 采集温度、压力、节拍与报警状态,通过 OPC UA 供本地 SCADA 浏览,通过 MQTT 将关键测点上报云平台。下面是一段典型的变量声明与主题规划示例,后续章节会逐步完善。

VAR_GLOBAL
    rTemperature : REAL := 0.0;   // 温度 ℃
    rPressure    : REAL := 0.0;   // 压力 bar
    iCycleTime   : INT  := 0;     // 节拍 ms
    bAlarm       : BOOL := FALSE; // 报警标志
END_VAR

// MQTT 主题规划示例
// factory/line1/temperature
// factory/line1/pressure
// factory/line1/cycle
// factory/line1/alarm
常见误区一:把 OPC UA 当成"更快的 MQTT",或把 MQTT 当成"能浏览变量树的 OPC UA"。二者定位不同,强行互换会导致安全模型或语义丢失。
常见误区二:变量未做单位与量纲统一,导致云端数据无法解释。建议在变量命名和主题命名中固定单位约定。
常见误区三:忽略 QoS 与安全策略,生产环境直接使用匿名连接,留下隐患。