构建OPC UA 可执行模型
Posted 姚家湾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建OPC UA 可执行模型相关的知识,希望对你有一定的参考价值。
花了两周时间,终于将IEC61499 的运行时移植到了OPCUA server 上了,使用者能够在OPCUA 信息模型中构建IEC61499 功能块模型。并且在内置的IEC61499 运行时的支持下,执行IEC61499 功能块网络(程序)。在OPCUA 信息模型的基础上扩展IEC61499基于事件的功能块。能够使用OPCUA 信息模型构建分布式控制,测量和监控系统。促进OPC UA 从信息模型向可执行模型建模方向发展。同时能够推广IEC61499 标准的应用落地。这是令人兴奋的创新思想。下面我就某些问题进一步地描述。
基于IEC61499功能块技术的分布式OPCUA 可执行信息模型
复合功能块的实现
IEC61499标准中有一种复合功能块,它是由其它功能块构建的功能块,这种复合功能块对模块化设计非常重要。比如我们设计一个复合功能块:
它内部是几个功能块构成:
可惜的是在4diac 项目中,IDE 导出了复合功能块的C++ 模块,然后再与运行时Forte一起编译。这种方式在实际工程中是不现实的。我们的运行时支持自动处理复合功能块的方法。在OPCUA Forte 中,实现的方式采取了下列方式。
在每个复合功能块中包含一个FBNetwork.定义了内部功能块网络的功能块节点。
复合功能块的事件输入输出都是一个OPC UA 的变量。当写入这些变量时,直接传递到内部,而内部功能块网络写入复合功能块输出事件或者数据时直接写到后续的功能块中。也就是说,复合功能块的输入输出变量既有HAS ConnectTo 又由HAS ConnectFrom 两种Referrence。而C++ 复合功能块类是不需要的。
动态功能块的实现
在4diac 中,用户开发的功能块可以导出C++ 功能块类,与Forte一起编译。所谓的动态功能块只能使用Lua 语言描述才可以动态下载。这也是十分不方便的。在OPCUA Forte 中,使用C 语言的动态库方法实现了动态功能块功能。
OPC UA 设备服务器的实现
尽管在OPC UA Forte 中,功能块网络中的所有的功能块都可以暴露在Client 端。但是,在工程应用中,往往只会访问一部分参数,而且它们的名称也可能为了系统的兼容。与功能块网络中的名称不一致。所以在OPCUA Forte 中,我们设置了 独立于功能块网络的OPC server 。它们包括下面三个部分:
OPC UA 全局变量
OPC UA Condition
OPC UA Method
这些变量,条件和方法都是通过IEC61499 功能块产生的。下面是我们的一个测试功能块网络。
相关功能块:
UA_Condition
UA_Variable
UA_Method
设备之间的协议
设备之间的协议我们采用了UDP Publish/subscribe .实现了相应的Publish 和subscribe 功能块。采用UDP 协议的原因是与未来TSN技术相融合。真正将OPCUA 转变成工业现场协议。
结束语
使用IEC61499 功能块构建OPCUA 可执行信息模型的意义非常大。利用IEC61499 分布式功能块技术。增强了OPCUA 信息模型的分布式可执行模型的构建能力。使用OPC UA 技术栈开发产品软件的工程师有深刻的体会,构建一个特定的产品需要编写程序还是比较多的。而且即便是有open62541这样的开源项目,编写opcua 应用程序并非易事。使用IEC61499 功能块,能够实现OPCUA 应用程序的少代码目标。同时带来了更加令人兴奋的价值是实现了OPCUA 的分布式信息模型的构建。这是工业物联网和工业4.0 软件的基石。
信息模型是不够的,控制系统需要可执行模型。OPCUA 与IEC61499 深度融合满足了这种需求。我们初步的尝试证明了这一点。将来可以将这一技术与TSN技术相结合。
创新的机会垂手可得,只是需要我们更加努力一点去实现它们。
以上是关于构建OPC UA 可执行模型的主要内容,如果未能解决你的问题,请参考以下文章