4. OPC UA通信机制

OPC UA 的通信机制并不是“一个协议包打天下”,而是由多种交互模式、安全层、会话层和传输绑定共同组成的通信栈。理解这套机制,是后续把 AI 模型、数据采集与工业现场可靠连接起来的基础。本节围绕四个关键点展开:客户端/服务器架构、发布/订阅模式、安全通道、会话管理与传输协议。

一、核心原理:两种交互模式与四层通信结构

OPC UA 最基础的交互模式是客户端/服务器(Client/Server)。客户端主动发起服务请求,服务器响应并返回结果,典型服务包括 Read、Write、Browse、Call、CreateSubscription 等。它适合按需查询、参数下发、方法调用等“请求—响应”场景。

第二种模式是发布/订阅(Pub/Sub)。发布者把数据编码为 DataSet,通过消息中间件或 UDP 多播发送;订阅者按主题或数据集接收,不需要与发布者建立点对点会话。它适合高吞吐、多消费者、低耦合的数据分发,例如把产线传感器数据同时推送给 AI 推理服务、历史库和看板。

从纵向看,OPC UA 通信可理解为四层:传输绑定层(TCP、HTTPS、UDP、MQTT、AMQP)、安全通道层(签名、加密、证书)、会话层(Session、认证、超时、续期)、服务/信息模型层(节点、方法、订阅、事件)。AI 集成时,数据语义由信息模型层决定,而可靠性、实时性和安全性主要由下面三层决定。

OPC UA 通信机制总览 客户端/服务器 · 发布/订阅 · 安全通道 · 会话与传输 客户端 / 服务器模式 OPC UA 客户端 Read / Write / Call OPC UA 服务器 地址空间 / 节点 请求 响应 典型服务调用 • Browse:浏览地址空间节点 • Read / Write:读写变量值 • Call:调用服务器方法 发布 / 订阅模式 Publisher DataSet 编码 消息中间件 / 多播 MQTT · AMQP · UDP Broker / Multicast 多订阅者并行消费 • AI 推理服务:实时特征输入 • 历史数据库:时序归档 • 可视化看板:状态展示 互补 OPC UA 通信栈(自下而上) 传输绑定层 TCP · HTTPS · UDP · MQTT · AMQP · WebSocket 安全通道层 X.509 证书 · 签名 · 加密 · 安全策略(None/Basic256Sha256 等) 会话层 Session · 用户认证 · 超时 · 续期 · 激活/关闭 服务与信息模型层 节点 · 变量 · 方法 · 订阅 · 事件 · 类型定义 封装

二、方法流程:一次安全会话的建立过程

以客户端/服务器模式为例,一次完整通信通常经历以下步骤:

  1. 传输连接:客户端与服务器建立 TCP 或 HTTPS 连接,默认端口 4840(opc.tcp)。
  2. 安全通道建立:双方交换证书,协商安全策略与消息安全模式,生成对称密钥。
  3. 创建会话:客户端发送 CreateSession 请求,携带应用实例证书和用户身份令牌。
  4. 激活会话:ActivateSession 完成用户认证,会话正式可用。
  5. 服务调用:执行 Read、Browse、CreateSubscription 等操作。
  6. 会话维护:通过心跳或超时机制保持会话,必要时续期。
  7. 关闭会话:CloseSession 释放资源,关闭安全通道。

发布/订阅模式则不同:发布者与订阅者不建立会话,而是通过 Broker 或 UDP 多播交换数据。发布者配置 PublishedDataSet 和 WriterGroup,订阅者配置 DataSetReader 和 ReaderGroup,双方通过数据集名称和版本匹配。

三、安全通道与会话管理的关键参数

安全通道决定“数据在传输中是否可信”,会话管理决定“谁在访问、访问多久”。两者常被混淆,实际职责不同。下表列出常见配置项与作用。

配置项 所属层 作用 常见取值/示例
SecurityPolicy 安全通道 决定签名与加密算法 None、Basic256Sha256、Aes256Sha256RsaPss
MessageSecurityMode 安全通道 消息保护级别 None、Sign、SignAndEncrypt
UserTokenType 会话 用户身份认证方式 Anonymous、UserName、Certificate
SessionTimeout 会话 会话空闲超时时间 60000 ms、3600000 ms
PublishingInterval 订阅 数据发布周期 100 ms、1000 ms
TransportProfile 传输 传输绑定类型 opc.tcp、https、mqtt、udp
提示:安全通道与会话是两层独立机制。安全通道保护“管道”,会话标识“用户”。即使安全通道为 None,会话仍可要求用户名密码;反之,安全通道加密也不代表用户已认证。

四、案例场景:AI 质检产线的数据链路

某 AI 质检产线需要把 20 台相机的检测结果、PLC 状态和机器人坐标同时送入推理服务、MES 和历史库。若全部用客户端/服务器轮询,服务器压力大且延迟高。更合理的做法是:

  • PLC 与相机网关作为 Publisher,把检测结果、状态字、坐标打包为 DataSet,通过 MQTT Broker 发布。
  • AI 推理服务、MES、历史库作为 Subscriber,各自订阅所需数据集,互不干扰。
  • 参数下发、配方切换、方法调用等低频操作,仍走 客户端/服务器 模式,保证确认与回执。
  • 安全通道启用 Basic256Sha256 + SignAndEncrypt,用户令牌使用证书认证。

这样既保留了请求—响应的可控性,又获得了发布/订阅的扩展性。AI 模型只需关注数据集语义,不必关心底层是 MQTT 还是 UDP。

五、误区与复盘

常见误区一:把发布/订阅当成“更快的客户端/服务器”。实际上 Pub/Sub 没有会话、没有逐条响应,可靠性依赖 Broker 或 QoS 配置,不能简单替换所有 C/S 场景。
常见误区二:只配置安全策略却忽略证书信任链。客户端与服务器必须互相导入并信任对方证书,否则安全通道建立失败,日志中常见 BadCertificateUntrusted。
常见误区三:会话超时设置过短。AI 推理服务若长时间计算后再访问服务器,会话可能已失效,需要重新创建。建议根据业务节奏设置 SessionTimeout,并实现自动重连。

复盘时可用一段配置片段检查关键参数:

Endpoint: opc.tcp://192.168.10.20:4840
SecurityPolicy: Basic256Sha256
MessageSecurityMode: SignAndEncrypt
UserTokenType: Certificate
SessionTimeout: 3600000
Subscription:
  PublishingInterval: 200
  SamplingInterval: 100
  QueueSize: 10
PubSub:
  Transport: MQTT
  Broker: mqtt://192.168.10.30:1883
  DataSet: Line1QualityResult

掌握这四类机制后,AI 与 OPC UA 的集成就有了清晰的落点:用客户端/服务器做控制与确认,用发布/订阅做高吞吐数据分发,用安全通道和会话管理保证可信访问,再根据现场条件选择合适的传输绑定。这样构建的系统,既能满足工业现场的确定性要求,也能为 AI 模型提供稳定、语义明确的数据入口。