3. OPC UA通信模式

OPC UA 协议栈提供了两种核心的通信模式来满足工业自动化中不同场景的数据交换需求:请求/响应模式(Client/Server)和订阅/发布模式(Pub/Sub)。这两种模式在实时性、网络拓扑和资源消耗上各有侧重。此外,所有通信都建立在会话(Session)与安全通道(Secure Channel)的可靠基础之上。本章将深入解析这三种核心机制的原理、建立流程及在SCADA集成中的实战应用。

3.1 请求/响应模式(Client/Server)

这是 OPC UA 最经典的通信模式,适用于点对点的查询与控制场景。客户端主动发起请求,服务器处理并返回响应。在厂务数据采集中,常用于读取设备参数、写入设定值或调用方法。

3.1.1 核心交互流程

  1. 客户端构建请求:封装服务调用(如 Read、Write、Call)。
  2. 发送请求:通过已建立的安全通道发送至服务器。
  3. 服务器处理:解析请求,访问地址空间,执行操作。
  4. 返回响应:将结果或错误状态码封装成响应报文。
  5. 客户端解析:处理响应数据,更新本地缓存或触发业务逻辑。
实战要点:在SCADA轮询大量点位时,应使用批量读取(ReadMultiple)而非单点读取,以减少网络往返次数。请求/响应模式不适合高频变化的数据,因为轮询间隔会造成带宽浪费和数据延迟。

3.1.2 请求/响应模式交互图

OPC UA 请求/响应模式交互流程 OPC UA 客户端 OPC UA 服务器 1. 构建请求 (Read/Write) 2. 处理请求 3. 返回响应 (Data/Status) 4. 解析响应 说明:请求/响应模式是同步的,客户端必须等待服务器响应。 适用于读取设备状态、写入设定值、调用方法等场景。

3.2 订阅/发布模式(Pub/Sub)

订阅/发布模式是 OPC UA 规范中为高实时性和一对多通信场景设计的模式。在厂务数据采集中,对于温度、压力、流量等连续变化的模拟量,使用订阅模式可以显著降低网络负载并提高数据刷新率。

3.2.1 核心概念

角色 功能描述 SCADA 集成示例
发布者(Publisher) 定期采集数据并发布到消息中间件或直接发送给订阅者。 PLC 作为发布者,每 100ms 发布一次设备状态。
订阅者(Subscriber) 订阅感兴趣的数据源,接收发布者推送的数据。 SCADA 服务器订阅多个 PLC 的温度数据。
数据集(DataSet) 一组被发布的数据变量的集合。 包含“电机电流、转速、振动”的集合。
发布间隔(Publishing Interval) 发布者发送数据的时间周期。 50ms、100ms、1s 等,根据实时性要求配置。

3.2.2 订阅/发布模式架构图

OPC UA 订阅/发布模式架构 发布者 (PLC) 数据集 温度: 25.3°C 压力: 0.6 MPa 消息网络 订阅者 (SCADA) 订阅者 (HMI) 说明:订阅/发布模式支持一对多通信,发布者无需知道订阅者身份。 在厂务数据采集中,一个 PLC 可以同时向 SCADA、HMI 和数据库推送数据。 发布间隔通常设置为 50ms~1000ms,需根据网络带宽和实时性要求调整。
选型建议:对于周期性变化的数据(如温度、压力、流量),优先使用订阅/发布模式;对于偶发性操作(如设备启停、参数修改),使用请求/响应模式。在SCADA集成中,两种模式通常混合使用。

3.3 会话(Session)与安全通道(Secure Channel)建立

无论是请求/响应还是订阅/发布模式,通信前都必须先建立安全通道和会话。安全通道负责传输层的加密与签名,会话负责应用层的身份认证与状态管理。

3.3.1 建立流程

  1. 发现端点:客户端获取服务器支持的端点列表(协议、安全策略)。
  2. 打开安全通道:协商安全策略(如 Basic256Sha256),交换证书,建立加密通道。
  3. 创建会话:客户端提供身份令牌(用户名/密码、证书),服务器验证并创建会话。
  4. 激活会话:客户端激活会话,开始进行数据读写或订阅操作。
  5. 关闭会话/通道:通信结束后,依次关闭会话和安全通道,释放资源。

3.3.2 会话与安全通道建立时序图

OPC UA 会话与安全通道建立时序 客户端 服务器 1. 发现端点 (GetEndpoints) 返回端点列表 (安全策略) 2. 打开安全通道 (OpenSecureChannel) 返回安全通道令牌 3. 创建会话 (CreateSession) 返回会话ID 4. 激活会话 (ActivateSession) 激活成功,开始数据通信 说明:安全通道提供加密传输,会话提供身份认证。两者生命周期独立,但通常一起建立和关闭。

3.3.3 安全策略对比

安全策略 加密算法 签名算法 适用场景
None 无 无 测试环境或内部安络
Basic256 AES-256 HMAC-SHA1 一般工业控制网络
Basic256Sha256 AES-256 HMAC-SHA256 高安全要求的厂务系统
Aes128Sha256RsaOaep AES-128 SHA-256 资源受限的嵌入式设备
常见问题:在SCADA集成调试中,90%的通信失败问题源于证书不匹配或安全策略不一致。务必确保客户端和服务器使用相同的安全策略,并正确导入对方证书到信任列表中。

3.4 通信模式对比总结

对比维度 请求/响应模式 订阅/发布模式
通信方向 客户端主动请求,服务器被动响应 发布者主动推送,订阅者被动接收
实时性 中等(取决于轮询间隔) 高(发布间隔可低至10ms)
网络负载 高(频繁轮询产生大量无效请求) 低(数据变化时推送,无变化不通信)
典型应用 设备启停、参数写入、报警确认 温度、压力、流量等连续数据采集
SCADA集成复杂度 低(标准OPC UA客户端即可) 中(需要配置发布间隔和数据集)

在实际的厂务数据采集项目中,建议根据数据特性和实时性要求灵活组合两种模式。例如,使用订阅模式采集所有模拟量数据,使用请求/响应模式进行设备控制和参数修改。同时,务必确保安全通道和会话的正确建立,这是所有通信的基础保障。