2. 工业通信基础

在 CODESYS 项目中,通信并不是“能连上就行”的附属功能,而是决定系统实时性、可扩展性和数据可用性的基础架构。现场总线、工业以太网、OPC UA 与 MQTT 分别处于工业通信体系的不同层次,理解它们的定位差异,是后续在 CODESYS 中正确配置 OPC UA 服务器与 MQTT 客户端的前提。

一、四类通信技术的层次定位

从控制现场到云端,工业通信通常呈现“现场层—控制层—信息层—云/应用层”的分层结构。现场总线解决的是控制器与传感器、执行器之间的确定性数据交换;工业以太网在控制层提供更高带宽和更开放的组网能力;OPC UA 面向信息层,强调语义化建模、跨平台互操作与安全传输;MQTT 则面向广域、弱网、多对多的消息分发场景,适合把设备数据发布到平台或云端。

需要强调的是,这四者并非替代关系,而是互补关系。一个典型的 CODESYS 控制系统可能同时使用 EtherCAT 连接伺服轴、使用 Modbus TCP 采集仪表、通过 OPC UA 向 SCADA 提供结构化数据,并通过 MQTT 将关键运行指标上传到云平台。

工业通信分层定位与典型数据流 现场层 控制层 信息层 云/应用层 现场总线 EtherCAT / CANopen 传感器/执行器 IO 模块 / 伺服驱动 实时数据 周期 ≤ 1 ms 工业以太网 PROFINET / EtherNet/IP CODESYS 控制器 SoftPLC / 运动控制 过程数据 周期 10~100 ms OPC UA 信息模型 / 安全通道 SCADA / MES 监控 / 生产管理 语义化数据 变量 / 类型 / 方法 MQTT 发布/订阅 / Broker 云平台 / 数据库 远程监控 / 大数据 消息流 异步 / 弱网适应 确定性优先 硬实时 / 同步 带宽与开放 标准以太网 / 组网灵活 互操作与语义 跨厂商 / 信息建模 广域与解耦 多对多 / 弱网 现场总线保实时 · 工业以太网保组网 · OPC UA 保语义与安全 · 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。

四、选型原则与常见误区

选型时建议遵循以下顺序:先明确数据的用途和实时性要求,再确定通信边界,最后考虑协议栈的成熟度和运维成本。具体可归纳为四条原则:

  1. 实时性优先原则:闭环控制数据不经过 OPC UA 或 MQTT 中转,避免引入不确定延迟。
  2. 语义清晰原则:需要跨系统理解的数据,优先使用 OPC UA 信息模型,而不是裸变量名。
  3. 网络边界原则:OT 网络与 IT 网络之间应通过 OPC UA 或 MQTT 网关隔离,避免直接打通。
  4. 可运维原则:广域场景优先 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 保证解耦与可达。选型时始终从数据用途出发,而不是从协议热度出发,才能避免后期架构返工。