无论是边缘控制器,还是PLC 中,除了信息模型之外,还有应用程序,这些程序可能是IEC61131-3 编写的程序,也可能是其它程序开发的可执行程序。
尽管OPCUA 描述模型能力很强,但是它缺乏算法的描述方式。但是OPCUA 对程序的状态,控制构建了模型,所以OPC UA 中的Program 并不是程序本身,而是程序的模型。本质上是一个有限自动机构成的。
本博文是学习OPC 10000-10: UA Part 10: Programs 的笔记
程序模型(Program)
我们知道,在OPC UA 中,Method 是能够被Client 端调用,服务器端执行的,结果立即返回给客户端。而程序是长期运行复杂的功能,并且具有不同的状态。程序可以是一个过程控制程序,或者是一个机床控制程序。程序受客户端控制(例如启动和停止),中间结果通过事件返回给客户端。为 了控制一个程序,需要知道它的状态(它是否已经在运行、中断等)。因此, 程序信息模型使用状态机信息模型作为程序建模的基础。它定义了称为 ProgramFiniteStateMachineType。它是FiniteStateMachineType 的具体子类型。
(在OPCUA 之前的版本中,ProgramFiniteStateMachineType 称为ProgramType)。
所以说,Program 不是程序本身,而是程序的模型,使用有限自动机作为模型类型。它包括四个组成部分。
状态机
程序有限自动机的状态如下表所示:
状态转换图
程序状态
状态转移
程序控制方法
程序执行的结果
规范中包括了FinalResultDataType,它们是一组变量。
程序的实例
程序可以有多个实例,或者只有一个实例,它们并行运行。
域下载类型
该类型定义了程序的下载,包含了TransferStateMachine类型
结束语
OPCUA 信息模型中包含了程序的状态,控制,监控,结果,下载的信息模型,它们并不是可执行程序本身,可执行程序是其它程序设计语言编写的。OPCUA 服务器的API 需要支持程序模型的API。开发的应用程序需要与程序模型互操作,才能实现Program 的机制。