OPC UA是工业自动化领域的一项重要的通信协议。它是一种基于信息模型的通信协议。当一个信息系统中都采用了OPC UA通信协议之后,组件之间能够以模型中的对象,变量,方法和事件来相互交换信息。它将是工业4,0 技术的重要组成部分。
IEC61499是分布式控制系统建模标准,它的核心是基于事件的功能块。是被人们看好的一项开放自动化领域的技术标准。
这两项技术貌似并不相干,解决的问题也各有不同。但是它们也有相似的地方,它们都是一种建模的方法,OPC UA 侧重于信息交换的信息模型,关注设备之间的互联互通,而IEC61499 侧重于分布式控制测量系统执行组件的建模。关注程序的执行。所以也称为分布式自动化的可执行建模语言。它们之间的互补性非常大。另一方面,它们都是基于面向对象的思想,许多的方法,概念和术语具有相似性。
目前阶段,IEC61499 运行时已经增加了对OPC UA 信息服务器功能的支持。施耐德的IEC61499 PAC 中也包含的OPC UA 服务器。但是它们大多数停留在为IEC61499 运行时提供一个OPC UA 接口,使外部设备能够访问到IEC 61499 功能块应用的内部参数。国内外专家也对利用OPC UA信息模型构建IEC61499 模型的课题做了研究(可见文章结尾的链接)。
本文从信息模型的角度做一些对比和介绍,并探讨两项标准深度融合的可能性已经会产生何种结果。
OPC UA和IEC61499 都是一种建模方式。我们在这里对这两项技术做一些对比:
表-1
OPC UA |
IEC61499 |
|
建模的能力 |
强 |
弱 |
是否面向对象思想 |
是 |
是 |
是否支持分布式部署 |
否 |
是 |
侧重点 |
信息模型 |
可执行模型 |
建模难度 |
难 |
容易 |
普及程度 |
逐步普及 |
不普及 |
从上面的对比来看,OPC UA的适应性更强,建模的能力更加灵活。OPC UA也更加普及,但是OPC UA 是一种Client/Server 架构的通信协议。它对服务器内部程序的编排,特别是分布式系统程序编排的支持相对比较弱。而IEC61499 正巧弥补了OPC UA 的不足。
IEC61499 的模型相对比较简单,完全能够使用OPC UA来构建,反过来,以IEC61499 的模型来构建OPC UA 信息模型要简单的多。
OPC UA 与IEC61499 深度融合的另一个优点也许是可以使用IEC61499 图形化的建模方法来构建OPC UA 的信息模型。使设计者集中地建立模型,而不是纠结细节。使用类似uaModeler 这样的工具要设置的参数太多。
单从IEC61488 的外部封装来看,IEC61499功能块包括了事件的输入,事件的输出,数据的输入和数据的输出。它们完全可以使用OPC UA 信息模型来构建功能块。下图是一个简单Inv功能块的OPC UA 模型封装示意图。
从图中看出,IEC61499 功能块中的事件使用了condition 来建模。为什么不之间使用EVENT 呢?这是因为OPCUA 模型中的Event类型在地址空间是不可见的。而condition 类型事件类型派生出来的对象类型,
IEC614999 的应用是功能块网络。功能块网络是功能块实例通过连接(connection)构成的。在OPC UA信息模型中,connection 对应于reference。我们可以使用hasConnection来作为功能块的连连接。
例如下面是一个最简单的IEC61499 功能块网络
IEC-61499 构建的系统是一个分布式控制系统,它的模型如下:
IEC61499的模型中,应用是整体开发,分段部署到分布式的设备上运行的。在上图中,Application1 的gong功能块网络被部署到了系统的Device1~Device4 的设备上的。
从IEC61499 分布式系统的特点出发,为IEC611499 构建OPC UA 的信息模型的方式会有多种方法。
为IEC61499构建OPC UA 模型.
这种方式为IEC61499 系统构建了整体的信息模型,OPC UA能够访问IEC614499 系统的所有参数。IEC61499 OPC UA服务器实现网关的作用。OPC UA 客户端软件通过OPC UA 访问IEC61499的所有参数,并将它们转换成为IEC61499 的命令。
表-2
IEC61499 |
OPC UA 服务 |
Request Create FB |
AddNodes |
Request Create Connection |
AddReferences |
Request Start/Stop |
Call(method) |
Create Watch |
CreateSubsccrriiption |
Delete Watch |
DeleteSubscription |
这种方法的优点是对系统构建一个整体的模型。而且保证了IEC611499 的运行时没有任何的改变。设备之间的通信协议仍然是采用IEC614499 的协议。OPC UA Server 与IEC 61499 之间采用了IEC61499 profile 中规定的管理命令方式。不过在笔者看来,一个集中的网关软件并不符合分布式系统的要求,并且增加了网络的带宽和复杂性。
另一个问题是,对于自动化系统运维而言,他们喜欢直接访问IEC61499 的信息模型,还是将它们提取出来做成设备的模型更合适?当然,这是容易做到的。
另一种封装IEC61499 的方法是针对每个设备建立OPC UA信息模型。每一个设备中都构建一个OPC UA 服务器,·并且能够将IEC61499 的模型部署到设备中,如下图所示:
IEC61499 开发环境中同样可以输出模型的文本描述文件,它们是XML 格式的文档。要将它们自动转换成为opcua 信息模型。当然你也可以使用OPC UA 的方法来构建。
可以增加一套IEC61499 Engineering 的工具软件(前一阶段我曾经做过这方面的工作),实现这种转换工作。从OPC UA 信息模型的角度,IEC61499 Engineering 是Client类型的程序。
可以采取OPC UA 的服务机制(Service)来实现IEC61499 功能块的远程部署。OPC UA中Service 定义了应用层数据通信。Service 是Client 端访问服务器端信息模型的方法。在(UA Part4)对Service 进行了抽象定义。表-2 中罗列了IEC61499 管理命令与UA service 之间的对比。
另一方面,IEC61499 标准并没有对功能块之间的通信协议做出具体的规定。通过SIFB选择不同的通信协议。与OPC UA 融合之后,可以统一规范成OPC UA协议。因此使用OPC UA 信息模型之后,弥补了IEC61499 标准中的不足。
使用OPC UA 的建模工具(比如uaModeler)来构建OPC UA 是比较繁琐的工作,因此人们也不断地设计各种便捷的建模方法,比如图形化工具(uaModler 那种小圆圈的图形方式感觉不太能掌控)。笔者看来,对于底层设备而言,直接使用IEC61499 的图形方式也是不错的选择。
目前还没有提出IEC-61499 的NodeSets 出现,也许在不远的将来,会有研究机构和公司提出OPC UA for IEC61499 的信息模型,它们大概会建立在OPC UA For Device (DI) 的基础上,和OPC UA For PLCOpen 类似。有兴趣者可以研究一下PLCopen 的NodeSets。
使用OPC UA 封装IEC61499 模型,有利于IEC61499 更进一步完善和开放性。给系统集成带来了更大的灵活性。同时也加强了OPC UA 信息模型中可执行模型的能力,促进OPC UA 在分布式系统中的应用。OPC UA与IEC61499 相互融合是一个十分有意义的研究课题。
本人对这两项技术都研究不够深入,上述文章中难免出现一些错误,仅供读者参考。
本文在撰写过程中学习了下面两篇文章,并且受到很大的启发,在此表示感谢。
1 OPC UA Information Model and a Wrapper for IEC 61499 Runtimes
2Modelling Industrial Cyber-Physical Systems using IEC 61499 and OPC UA