IEC61131与IEC61499 的集成与融合

      IEC61131-3 PLC 编程方式已经获得了广泛的应用,特别是梯形图更是深入到了OT 工程师的骨子里。哪怕是再复杂的控制逻辑,OT 工程师都能够编写出复杂的梯形图来。如果与他们讨论IEC611499 基于事件功能块编程时,他们仍然觉得与他们过往的经验和思维方式存在很大的差别。能否使用PLC 的设计方式来实现IEC61499 功能块应用呢?本文讨论IEC61131-3 与IEC61499 集成,相互融合的问题。

 

现状

IEC61131 在大量的工业控制场合得到了长期大量的使用,大多数OT 工程师熟悉了IEC61131的编程方法,它是一种基于周期扫描的执行方式。

IEC61131 标准适合单机运行。实现分布式控制的设计工作量大,效率不高。

IEC61499 是基于事件功能块在分布式控制系统中的标准。它更适合分布式工业控制的场景。这对于OT 工程师而言是一个相当比较新的概念。转变设计方法和理念,需要一个很长的过程。

问题

1 是否能够使用IEC61499 功能块来实现IEC61131 的周期扫描执行方式?

2 是否能够在一个设备中同时实现IEC61131和IEC61499?

3 IEC61131-3 和IEC61499 相融合带来了什么?

第一个问题

大家知道,PLC 的程序是基于周期扫描的方式执行的。如下图所示:

如果IEC61499 功能块的一个时钟是基于时钟(E_CYCLE)的周期性事件,那么实现PLC IEC61131 理论上是看来是可能的。比如下面这个应用就是基于时钟的周期性事件的。

IEC61131 梯形图

这是最简单的一个梯形图,两个串联的开关,控制一个灯。

IEC61499 功能块应用

  我们使用E_CYCLE 功能块产生周期事件,将输入输出功能块IX和QI 串在事件链中,并且建立了一个常开功能块(NormalOpen)。每个周期事件产生时,程序从E_CYCLE 开始执行一遍

由此可见,除了没有梯形图那么简约之外,IEC61499 功能块网络能够简单粗暴地实现PLC 周期扫描方式的梯形图程序。E_CYCLE 周期性产生事件。触发两个读DI 功能块读取开关A和B的值,然后通过两个常开功能块块。当A和B 都为1 是,输出功能块Light输出1。我们还可以定义一个NormalClose 功能块,实现常闭触点。以及线圈等等。假如将IX 和NormalClose 封装在一个复合功能块中,IEC61499 功能块网络会相对简单一些。

不过,问题还不那么简单。我们知道,IEC61131 PLC 具有公共的存储器。所有的IO值和内部变量都是存放在公共存储器中的。而IEC61499 并不直接支持公共变量。IEC61499 功能块之间共享变量是很麻烦的事情。比如下面的梯形图,它采用了三个内部变量Int1,Int2和Int3.

在IEC61499 功能块网络中,虽然我们可以设置RS 功能块来作为Int1,Int2和Int3 的存储器,下图是一个例子,它使用RS功能块实现了一个内部变量Int1。

但是你会发现功能块网络会非常的杂乱无章。如果一台设备中有很多的IO接口和内部变量,相应的功能块网络会非常复杂。

IEC61499 实现全局变量的方法

那么是否存在一种方式,在IEC61499中实现公共变量,从而简化IEC61499 仿真IEC61131呢?笔者认为至少有三种种方式来实现:

1  实现一个内部变量的功能块(例如下面的RAM功能块),在它内部定义一个INT16 数组。作为公共内部变量.

RW 是读写控制

DIN 写入比特

DIN16 写入16为字

ADDR 为地址,可以写成 1000,1000.1.字符串。1000.1表示是1000内存的第一位。DOUT和DOUT16 是读出比特和字。

这种方式显然是最简单的。

2  在IEC61499 运行时的资源中提供一个内存变量区域(数组),IEC61499 功能块应用通过服务接口功能块SIFB  访问内部变量。

  这种方式不太可取,应为造成了不兼容问题。

3  在PLC OS 下独立实现一个内部变量管理线程,SIFB通过远程过程调用RPC。

       在设备的OS上实现一个独立的线程,通过RPC与运行时内部的功能块交换内部变量就可以了。系统结构如下图所示:

在这种架构下,对应IEC61131 PLC 梯形图的IEC611499 功能块网络变成如下简约方式:

其中NormalOpen,NormalClose和Coil 是一个复合功能块。其中的Variables 是一个访问内部变量的服务接口功能块。用于通过RPC 访问内部变量。

更进一步地,我们也可以采用PLC 的IO方式,将IO 读出程序搬到IEC611499 运行时的外面来实现:

 在某些应用场合,采取这样的方式,可以大大简化应用网络的复杂性,比如大量IO接口的应用场合。

第二个问题

当我们研究了第一个问题后,第二个问题基本已经有答案了。我们完全可以在一个设备中同时运行IEC61499 运行时(4diac)和IEC61131 运行时(ProConOS)

  在IEC61499 和IEC61131 运行时中分别实现一个功能块,通过功能块之间的数据交换实现内存共享。

第三个问题

一个设备中同时包含61499/61131两个运行时,这件事情充满了想象空间。这里不仅仅是为了迎合OT 工程师的偏好,还能够做的更多。

  1. 在PLC 中增加61499 运行时,实现PLC 的分布式处理能力。

PLC 实时能力强,而61499 具有分布式控制的优势。两者相加,各自发挥优势

  1. PLC 实现Realtime控制,61499 实现Anytime功能(云端访问,物联网,AI。。。)

   目前异构多核处理器架构已经开始流行,可以在一个内核中跑PLC 程序,完成实时任务,在其它内核中运行61499 应用,实现Any time 的任务。比如访问数据库,云端等等。

结束语

     在IEC61499 设备中,通过一个SIFB 功能块,可以实现类似PLC 内部存储器的公共变量。会给某些应用带来便利。并且使IEC61499 应用更加接近传统PLC 周期扫描执行方式。

   在一台设备中同时运行IEC61499 运行时和IEC61131 运行时。通过SIFB和FD 通信实现数据共享是可行的。这种异构控制系统会带来无穷遐想。

     本文的内容再一次表明,IEC61499 功能块是软件组件的模型,并且采纳了面向对象的思想。如果不做二次开发,那它只是一种模型,没什么使用价值。一旦你使用它们继续发展的化,它们可以做任何事情。就像任何一种计算机语言一样。

 

猜你喜欢

转载自blog.csdn.net/yaojiawan/article/details/115424022