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 运行时到最终消费端的整体数据流与关键组件关系,后续章节将逐段展开。
图中可见两条并行路径:上方 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 与安全策略,生产环境直接使用匿名连接,留下隐患。
常见误区二:变量未做单位与量纲统一,导致云端数据无法解释。建议在变量命名和主题命名中固定单位约定。
常见误区三:忽略 QoS 与安全策略,生产环境直接使用匿名连接,留下隐患。