2. 工业通信基础
在 CODESYS 项目中,通信并不是“能连上就行”的附属功能,而是决定系统实时性、可扩展性和数据可用性的基础架构。现场总线、工业以太网、OPC UA 与 MQTT 分别处于工业通信体系的不同层次,理解它们的定位差异,是后续在 CODESYS 中正确配置 OPC UA 服务器与 MQTT 客户端的前提。
一、四类通信技术的层次定位
从控制现场到云端,工业通信通常呈现“现场层—控制层—信息层—云/应用层”的分层结构。现场总线解决的是控制器与传感器、执行器之间的确定性数据交换;工业以太网在控制层提供更高带宽和更开放的组网能力;OPC UA 面向信息层,强调语义化建模、跨平台互操作与安全传输;MQTT 则面向广域、弱网、多对多的消息分发场景,适合把设备数据发布到平台或云端。
需要强调的是,这四者并非替代关系,而是互补关系。一个典型的 CODESYS 控制系统可能同时使用 EtherCAT 连接伺服轴、使用 Modbus TCP 采集仪表、通过 OPC UA 向 SCADA 提供结构化数据,并通过 MQTT 将关键运行指标上传到云平台。
二、核心差异对比
四类技术在实时性、数据模型、传输语义和适用距离上差异明显。下表从工程选型角度进行归纳,便于在 CODESYS 项目中快速判断应使用哪一类通信方式。
| 对比维度 | 现场总线 | 工业以太网 | OPC UA | MQTT |
|---|---|---|---|---|
| 典型协议 | EtherCAT、CANopen、Modbus RTU | PROFINET、EtherNet/IP、Modbus TCP | OPC UA TCP、HTTPS、PubSub | MQTT 3.1.1 / 5.0 |
| 实时性 | 硬实时,微秒至毫秒级 | 软实时至硬实时,毫秒级 | 非实时,毫秒至秒级 | 非实时,秒级,受网络影响大 |
| 数据模型 | 过程数据,无统一语义 | 过程数据,厂商相关 | 面向对象信息模型,语义完整 | 主题+载荷,语义由应用约定 |
| 通信模式 | 主从/轮询/过程数据 | 主从/生产者-消费者 | 客户端/服务器、发布/订阅 | 发布/订阅,经 Broker 中转 |
| 安全性 | 通常依赖物理隔离 | 依赖网络分段与防火墙 | 内置证书、签名、加密 | 支持 TLS,依赖 Broker 鉴权 |
| 典型距离 | 设备内/产线内,百米级 | 车间级,百米至公里级 | 厂级至跨厂,可跨互联网 | 广域,可跨地域、跨云 |
三、典型应用场景
- 现场总线:多轴运动控制、高速 IO 采集、安全回路。例如 CODESYS SoftMotion 通过 EtherCAT 连接伺服驱动器,要求周期抖动极小。
- 工业以太网:车间级控制器互联、HMI 与 PLC 通信、视觉系统数据交换。适合需要较大带宽但实时性要求相对宽松的场景。
- OPC UA:SCADA 采集、MES 集成、跨厂商设备互操作、需要统一信息模型的场合。CODESYS 可作为 OPC UA 服务器对外暴露变量。
- MQTT:设备远程运维、云端数据汇聚、多站点集中监控、带宽受限或网络不稳定的场合。
选型提示:如果数据需要在同一控制周期内参与闭环运算,优先选择现场总线或工业以太网;如果数据用于监控、分析、跨系统共享,优先选择 OPC UA;如果数据需要跨越公网、多站点汇聚或与云平台对接,优先选择 MQTT。
四、选型原则与常见误区
选型时建议遵循以下顺序:先明确数据的用途和实时性要求,再确定通信边界,最后考虑协议栈的成熟度和运维成本。具体可归纳为四条原则:
- 实时性优先原则:闭环控制数据不经过 OPC UA 或 MQTT 中转,避免引入不确定延迟。
- 语义清晰原则:需要跨系统理解的数据,优先使用 OPC UA 信息模型,而不是裸变量名。
- 网络边界原则:OT 网络与 IT 网络之间应通过 OPC UA 或 MQTT 网关隔离,避免直接打通。
- 可运维原则:广域场景优先 MQTT,因其对断线重连、弱网、多订阅者的支持更成熟。
常见误区:一是认为“工业以太网可以替代现场总线”,忽略了硬实时同步需求;二是把 OPC UA 当作实时协议使用,导致控制周期被拉长;三是 MQTT 主题设计随意,后期难以维护;四是忽视证书与鉴权,把 OPC UA 或 MQTT 直接暴露在公网。
五、在 CODESYS 中的配置要点
在 CODESYS 工程中,不同通信方式对应不同的设备描述与库。以下是一个典型的 OPC UA 服务器与 MQTT 客户端共存时的配置片段,用于说明参数关注点:
// CODESYS OPC UA 服务器关键参数
OPC_UA_Server:
Endpoint: opc.tcp://192.168.1.10:4840
SecurityPolicy: Basic256Sha256
UserAuth: 用户名/密码 或 证书
Namespace: 自定义变量空间
SamplingInterval: 100 ms
// CODESYS MQTT 客户端关键参数
MQTT_Client:
Broker: tcp://broker.example.com:1883
ClientID: codesys_plc_01
KeepAlive: 60 s
Topic: factory/line1/plc01/telemetry
QoS: 1
Retain: false
配置时应重点关注:OPC UA 的采样周期不要小于控制任务周期;MQTT 的 QoS 等级要与数据重要性匹配,遥测数据可用 QoS 0 或 1,关键告警建议 QoS 1 并配合 Retain;主题命名应包含站点、产线、设备、数据类型等层级,便于后续订阅与权限控制。
六、小结与复盘
现场总线、工业以太网、OPC UA 与 MQTT 分别解决“实时控制”“车间组网”“语义互操作”“广域分发”四类问题。在 CODESYS 项目中,合理的做法是让它们各司其职:底层用现场总线保证确定性,控制层用工业以太网保证带宽与开放,信息层用 OPC UA 保证语义与安全,云侧用 MQTT 保证解耦与可达。选型时始终从数据用途出发,而不是从协议热度出发,才能避免后期架构返工。