在时间敏感网络上实现OPC UA 协议是一个热门话题,OPC UA 很热,TSN 也很热。从网络上的许多文章描述,OPC UA over TSN 代表了现场总线的未来。它们既能完成数字化建模,又能实现实时通信。看起来非常的完美。但是评估任何一项技术,离开了实际的测试数据,都是不够充分的。就拿这两项技术而言,实时性能力到底能达到什么水平?有的文章说能够达到100us 的周期(cycle),也有的讲400us 到1 ms。这种数据其实也是似是而非的。因为还要看每个节点的使用什么处理器(Intel 的i7与cortex-A 的处理器有很大的区别),每个周期传输多少数据,网络上有多少个节点。网络能够看到的测试还比较少。
一个测试
在网络上找到这一篇文章,他们做了一些测试,
Real-time capable OPC-UA Programs over TSN for distributed industrial control
实验结果
我在此摘要上述文章中一些实验结果:
1 采用Intel Core i7-3615QE 四核 CPU(2.3G主频)的工业电脑
2 Intel i210网卡互联
3 具有实时能力的Preempt-RT Linux Kernel 5.0.14.
4 使用开源OPC UA open62541 PubSub 模式
测试结果
测试的方法是不同长度的数据,发送一小时,测试的结果如下:
当传输8 到 160个字节(周期=200us) 测量事件1小时 数据消息大约180 million。
文章中没有提及CPU 占用的时间,他们使用的工业PC的性能还是比较高的。如果换作低性能ARM 处理器 的话,OPC UA 的协议栈处理时间也是要从分考虑的因素。阅读过open62541 协议栈源代码的读者可以发现,OPC UA 协议栈涉及了许多的小函数,实现数据帧的拼接和分拆。这些操作无法使用DMA 等方式来加速。当传输的数据种类多,数据量大的话。协议栈的执行时间也是比较多的
由此看来,UPC UA 在1ms 量级周期中传输小量数据能够满足实时性要求。例如在机器人控制中,1ms 内至少传输6 个浮点数。
笔者认为,OPC UA /TSN 更适合分布式系统中设备之间的数据交换。设备之间的数据交换的数据量相对少,周期超过1ms。它们可能不适合EtherCAT 高速现场数据传输的应用场合。
目前有一些自动控制厂商在产品中增加了OPC UA 的协议。对于小型设备而言,增加OPC UA 协议不能够影响原有控制功能的实时性要求。一种简单的方式是开发以太OPC UA 网关设备。或者在PLC 中增加一个独立的OPCUA模块。
OPC UA 的应用场景
- 设备与SCADA 系统之间的接口
- 设备与IT 系统(ERP,MES)的接口
- 设备与云端的接口
- 构建以OPC UA 协议为基础的控制系统
大概只有最后一种更需要实时性保证。
OPC UA/TSN 构建控制系统
使用opc ua/tsn 构建控制大致有两种
Client/server
客户端/服务器模型已在典型的 SCADA 场景中成功使用,不同应用程序之间的连接数量不是很高时它会蓬勃发展。如果您有数十或数百台设备(即服务器)需要不断连接 - 或类似数量的客户端需要连接到任何服务器,您最终可能会遇到资源问题,因为每个连接和订阅都需要内务管理和它们导致网络中的单独流量。
pub/sub 模式
在 PubSub 模型中,我们有一个Publisher组件,它可以定义包含变量或 EventNotifier 的DataSet 。然后,发布者将发布DataSetMessages,其中分别包含 DataChanges 或 Events。
OPC UA 为 PubSub 定义了两种不同的网络类型。
消息队列代理 - 实际上可以是 MQTT 或 AMQP 代理。在这种情况下,消息通常是 JSON 消息,尽管 UADP 可用于提高性能。OPC 基金会为消息定义了标准的内容结构,但基本上任何 JSON 订阅者都可以解释它们。
pub/sub模型的最大好处是能够实现一个设备发布,多个设备订阅。非常灵活。不过类似于MQTT 那样,使用broker 实现消息转发的话,实时性会大打折扣。适合OT/IT 之间的消息交换。
本地网络 -
在本地Ethernet 上构建实时网络有许多种方式,例如EtherCAT ,PowerLink 都是一种实时网络,与工业现场大多数时间触发实时网络不同,tsn采取了预留带宽,优先可以使用 UDP 广播(或在某些情况下为单播)或以太网 APL。消息是优化的二进制 UADP,在 OPC UA 规范中定义。因此,只有 OPC UA 订阅者可以解释消息。
为了提高实时通信,底层网络可以使用TSN。不过值得注意的是TSN 是一种预留带宽和优先级分配带宽的通信策略。与EtherCAT,Powerlink 这种时间触发实实时网络相比,实时性与网络中信息量有关。
如果底层的pub/sub 协议不是一个开放性协议的话,设备的互联互通也将成为一个问题,因此,采用本地网络上实现OPC UA 同样存在兼容性问题。
实现实时网络的协议有许多种类,要根据具体的应用而定。没有放之四海而皆准的方法。
OPC UA 落地的关键
笔者在多个场合都说过,OPC UA 落地的关键是使用它为具体的设备建模,只有大多数设备构建了OPC UA 模型。但是在发展的初期,为自己的设备建立OPC UA 模型并不能够为企业带来直接的利益,大多数企业采取的策略是除非客户指定,才会增加opc ua 模型。没有主动去做这项工作的动力。有许多场合技术的推进决定于商业模式,而不是技术本身。