工业4.0 组件描述了两种架构,一种是面向服务的紧耦合分层系统架构,另一种基于协议的同层架构(peer-to-peer)。传统的工业自动化系统几乎都是分层架构。例如现场设备(PLC)将数据传送到控制中心,SCADA,HMI和MES系统。但是工业4.0 是为了解决提高现代工业自动化系统的可变性和灵活性。需要实现机器与机器之间的相互协作,达到”Plug-and-Produce"的目标。所以在工业4.0 的智能制造系统中,更多的是机器与机器之间的同层通信。例如CNC 设备与机械臂,AGV 构成自动上下料系统。CNC 和机械臂,AGV 直接通信,而不是通过一台中心处理器控制。同层通信的架构是一种去中心化的分布式系统。
上面是分层架构,下面是同层架构。
为了实现机器之间的同层通信的规范,工业4.0 组织提出了AAS I4.0 语言。其实就是一种同层协议。
分层架构的通信协议基本上是Server/Client 架构,以TCP/IP 为基础,衍生出一系列协议。主要包括:
- OPC UA
- HTTP Restful
- Websocket
- MQTT
同层架构的通信协议可以是点对点和点对多点协议,主要包括
UDP
MQTT
OPCUA Pub/Sub
Websocket
何为基于技能的工程方法
仅有这些协议是不够的,还需要对信息模型和公共接口作更进一步的语义规范,于是就提出了所谓基于技能的工程方法(Skill based Engineering )。比如一台钻床的技能是钻孔(Drill),一台阀门的技能是打开阀门和关闭阀门。一台设备的技能,就是设备的能力。在英文中Skill 和Capability 是类似的含义。但是在I4.0观点下,能力和技能是有所区分,它们认为能力是机器某些功能的描述,它与实现无关。而技能是功能的实现,与资产(asset)相关。个人理解,能力是静态的描述,而技能是可执行的。基于技能的方法是对每台机器的技能作合适的描述和建模,机器之间的通信基于技能的执行和寻找具有某种能力的设备。比如请求具有钻孔能力的设备,请求钻孔。在工业4.0 管理壳中,将能力和技能分别用子模型来描述(submodels)。机器之间的通信双方变成了技能提供者(Skill Provider)和技能请求者(Skill Requester)。
技能的OPCUA建模
OPC UA 是一种工业通信协议和信息模型的标准,它已经被选择为工业4.0 的基础。它最大的优点是信息安全和语义定义的能力。
在OPCUA 的标准中,有所谓“程序”的模型。人们用OPCUA 的“程序”作为技能(Skiil )的模型。
OPCUA 程序
了解OPCUA 的读者知道,OPC UA 客户端可以通过方法(Method)来实现OPCUA 服务器中的程序调用。方法是服务器中的函数,能够被客户端调用。而程序(programs)相对比较复杂一点,用来执行和控制一个批处理,机床的零部件加工,或者一个下载操作。program与Method 的差别在于,它不仅触发执行,而且监督执行的过程。
所以程序包括更多的内容,如下图所示:
由此可见,程序包含了控制方法,状态机,交互事件,结果数据。其中状态机记录了程序执行的状态。它是程序中重要的概念。
值得注意的是,OPCUA 的所谓程序并不是一般概念的算法,比如它不是PLC 的61131-3 程序,或者IEC61499 应用。而是对服务器内部程序执行和控制的一个规范化模型。
状态机
OPCUA 程序的状态机包含了四个基本的状态
状态包括停机,就绪,运行和挂起。
下面是状态变化
程序的控制方法
下面是一组方法,包括 开始,挂起,恢复,停机,复位。
OPC UA 程序模型的意义
OPC UA 对程序规范建模的意义就在于能够以一组统一的方式来触发,监控OPCUA 程序的执行。Client 执行程序的方式是相同的。
监督程序的状态,执行方法,监督事件。当介绍时,读取结果数据。
有关OPCUA 程序的详细内容可见《OPC 10000-10: UA Part 10: Programs》
OPC UA 程序作为技能模型
在工业4.0 组件之间技能执行的过程为技能提供者(skill-provider)和技能请求(skill-requester)之间的交互过程。
下面是技能提供者(skill-provider) 的状态图
使用规范的状态机作为机器之间的交互过程描述的好处是能够实现组态和代码自动生成。状态机的运行完全可是一个通用的代码实现。
甚至是HMI 都可以基于状态图可视化。下图是PackML 的状态机可视化。它是OPCUA Program的模型。
基于技能的模型与IEC61499
前面提到,OPCUA 的Program 模型只是程序的结构和接口的规范,没有设计其中方法的实现和状态机跳转的代码。熟悉IEC61499 功能块的读者会发现,OPC UA Programs 模型与IEC61499 功能块模型非常相像。同样带有状态机和输入输出数据。而时间触发内部的方法执行。也有学者提出了使用IEC61499 功能块来实现技能的执行。
具体可以网络上搜索IEC61499 老爷子Alois Zoitl写的文章《Skill-based Engineering Approach using OPC UA Programs》。
结束语
实现工业4.0 即插即生产的技术基础是I4.0 语言,I4.0 背后的思想是基于技能的工程方法。而基于技能的模型使用OPCUA 的Programs。本文简单地描述了它们之间的关系,以便于更好地学习I4.0 相关技术和标准。