IEC61499标准简介

IEC 61499标准通常用于开发分布式控制系统,旨在实现分布式应用的可移植性、可重用性、互操作性和重新配置。它定义了一种特定领域的建模语言(domain-specific language),为分布式工业控制系统提供了一个通用模型。

https://iec61499.com/

IEC 61499定义了功能模块(FB, function block)的模型。有三种FB,分别是Basic FB (BFB),Service Interface FB (SIFB) (有的文献也称作Service FB (SFB))和Composite FB (CFB)。其中,BFB和SIFB都是原子FB,不能拆分的。SIFB是用于与硬件连接,读取硬件信息和给硬件写入信息的FB。CFB由BFB和SIFB组成,但是从外观来看,CFB和其他FB是一样的。FB的模型如图1所示:

 图1 FB模型图

FB有两种类型的接口,分别是event和data。因此可以说FB是基于事件驱动的模块。FB的上半部分为ECC(execution control chart),下半部分为算法集合和内部数据(内部算法不限制实现语言,可以使用IEC61131-3编程语言,也可以使用Java, C++,C#等高级语言)。根据官方介绍,FB的运行逻辑是这样的(如图2所示):

1.输入事件到达FB;

2.刷新与输入事件相关的输入数据;

3.该事件传入ECC;

4.根据FB的类型和execution control,内部相应的功能被调用;

5.内部功能执行完毕,产生了输出数据;

6.刷新与输出事件相关的输出数据;

7.发出输出事件。

其中,步骤4-7可以重复多次。

 图2 FB的执行逻辑顺序

 此外,值得注意的是,根据官网所述,FB允许fan-out数据连接,但是不允许fan-in数据连接。这里我理解的是前一个FB的一个输出数据接口可以连接后一个FB的多个输入数据接口,但是前一个FB的多个输出数据接口不能连接后一个FB的同一个输入数据接口。但是对于事件连接,fan-out和fan-in都是可以的。

ECC其实就是一个状态机。举个例子,如图3所示的FB。

 图3 FB实例

四个输入事件,分别是INIT, RUN, STOP, UPDATE,两个输出事件分别是INITO, CNF。内部ECC如图4所示。

注:INITO表示FB已经完成初始化,CNF表示当FB完成向外部代理的请求传输时,输出“确认(confirmation)”事件。

 图4 ECC

其中,RUN, STOP, UPDATE共享一个输出事件CNF,这会更新输出的数据(MotorRun和ConveryorStatus)。

一个应用程序由多个FB组成,FB运行在资源上,资源属于设备(我感觉可以理解为计算机和进程的关系),一个系统包括多个设备,如图5所示。设备可以拥有多个资源,每个资源上可以运行多个FB,但是单个FB(包括CFB)只能运行在一个资源上。应用程序可以运行在单个资源上或者单个设备的多个资源上或者多个设备的多个资源上,如Application1。组成Application的subapplication可以运行在不同的资源上且可以重用。

 图5 IEC 61499系统

CFB和Subapplication的区别就在于,CFB不可以分布在多个资源上,而Subapplication可以分布在多个资源上。其次,CFB可以存储输入和输出变量而Subapplication并没有属于自己的内存,只有其内部的FB才有内存可以存储变量(所以就是可以把CFB理解为FB,只不过其内部算法是几个BFB连接而成的)。举个例子,现在有一个温度控制子应用,由三个FB组成,分别是Input, PID, Output。Input负责从传感器上读取当前的温度,PID负责与给定温度值比较并输出修正的温度,Output负责控制执行器修正温度。其子系统如图6所示。

 图6 温度控制子应用模型图

图5所示的子应用是分布在一个单独资源上的。子应用可以分布在不同的资源上,比如该温度控制子应用的每个FB都可以分布在单独的资源上,或者任意两个FB可以分布在同一个资源上,另外一个FB分布在另外一个独立的资源上。在这种分布式的情况下,分布在不同资源上的FB之间的通信可以使用publish和subscribe两个SIFB,如图7所示。

图7 分布式的子应用

除了PUB-SUB模式外,Client/Server模式也可以用于SIFB之间的通信。两者的区别在于PUB-SUB是单向的而Client/Server是双向的。

更新部分:IEC61499与MVC架构

MVC架构指的是由模型(Model)、视图(View)和控制器(Controller)组成的架构。MVC经常与IEC61499配合使用。其中模型就是某个实体资源的模型,比如机床的模型。视图就是机床的视图,而控制器就是指机床的控制器,即数控系统。

2023.01.25更新

https://www.eclipse.org/4diac/index.php

Eclipse 4diac是使用IEC61499建模的IDE。它还包含一个IEC61499的运行时环境——4diac FORTE。 

posted @ 2019-07-07 12:22  南风小斯  阅读(3743)  评论(0编辑  收藏  举报