谈谈IEC61499功能块的执行性能

28 篇文章 38 订阅

几乎没有人讨论IEC61499 功能块的执行性能,它的执行时间是多少?外部事件的响应时间是多少?E_CYCLE的最小周期设置为多少比较合适?的确,一个与设备无关的标准不可能讨论执行的性能,但是,作为一台控制设备,我们就需要关心一些功能块的执行效率了。到目前为止,功能块都是由软件来实现的,采用JAVA 或者C/C++ 实现。功能块本质上是一个软件组件。既然是软件,执行的效率就依赖于处理器,和外围电路性能。

我们知道,IEC61499 功能块是基于事件执行的。事件就像硬件电路中的脉冲。事件由下面几种形式

  实时周期性事件(periodic)

周期性事件就相当于是一个脉冲信号,比如采用E_CYCLE 能够周期性地产生事件。周期性事件会引发一系列功能块的周期性执行。显然,在一个周期性事件产生时,要在下一个周期事件到来之前,完成所有的功能块的执行。在传统的PLC中,程序是基于扫描周期执行的。CPU的速度保证在一个扫描周期内要完成所有程序的执行。

周期性事件要求具有实时性。

  实时性随机事件(sporadic)

具有最小到达时间要求的事件(minimum inter-arrival time),这种事件类似于数字电路中CPU的中断信号。当外部事件产生时,引发一系列功能块的执行。要求以最短的方式响应偶尔发生的事件。

  自由运行事件(aperiodic)

这类事件没有最小到达时间要求,但是具有底线事件要求(dead line time),处理器要尽快执行。

我们知道,在IEC61499 功能块应用中,功能块是基本的执行单元。 复杂的数字逻辑功能是可以使用基本功能块(AND,OR,NOT)来构建的。而功能块又是软件实现的,因此,IEC61499 功能块网络的执行速度没有硬件电路速度块,甚至没有C++编写的程序快。 如果软件实现功能块来代替传统的数字电路的话,将会占用大量处理器时间。即便如此,产生的各种信号的频率也不会太高。

同样地,IEC61499 标准中提供了一些IO标准功能块库,它们只是简单地读/写操作。例如IX 是读取端口的布尔值,QX 是输出一个布尔值。在实际应用中,IO接口的功能更加复杂,对实时性和精度要求更高。比如需要产生高频率时钟信号,脉冲计数,PWM 输出等等。这些功能理论上可以使用IEC61499 IO功能块和基本功能块来实现。但是它们并不十分好用,一是非常复杂,一个简单的功能需要多个基本功能块来实现,过于“低级”编程,带来了学习的陡峭。另一方面,由于完全是软件实现,会导致应用程序速度慢,实时性差,无法满足某些实时性要求高的应用场合。就像我们在嵌入式处理器编程中,软件产生一个方波那样,当频率超过1K 时,晃动的就很厉害了。笔者认为,IEC61499 标准要真正在工业控制领域实际应用的话,需要借助于处理器提供的高级IO硬件接口电路,或者FPGA来实现某些对精度要求高,速度快的功能块。比如产生脉冲信号,PWM,模拟量的DMA 采集,运动控制等等。当然这也带来了一些问题,硬件实现的功能块难以保持与设备无关,不同设备上实现的功能块,虽然类型一致,但是性能也会存在很大的差异性。

无论如何 ,功能块的硬件实现是值得研究的课题。

当你开发一台IEC61499 设备时,IEC61499 功能块运行的性能也需要考量的重要一部分。

一个例子

这里我们通过一个例子来演示功能块硬件实现的重要性。这个例子产生一个占空比为25% 的PWM 信号。

使用基本的功能块实现:

E_CYCLE 的周期为1ms,由于是软件实现这五个功能块,显然占用CPU的时间已经比较多了,但是PWM 的频率可能只有64Hz 而已。如果分辨率要求高的话,PWM 频率会更慢。而且软件产生的PWM波形晃动非常厉害,严重的失真。

相比之下,如果使用STM32F 这样cortex-M 的单片机来实现PWM的话,可以采用硬件TIM的PWM 输出功能,基本上不需要软件干预,而且至少可以达到几十K。

从程序设计的角度看,我们只需要实现一个功能块PWM,直接启动就可以了。

因此,在具体实现时,我们要利用处理器芯片的外围电路来提高IO功能块的运行效率。比如这个PWM功能块在STM32MP157C 处理器中可以通过TIM 定时器来实现PWM 信号输出。IEC61499运行时(runtime)程序通过一小段程序就能实现TIM 时钟的PWM 输出。可以产生很高的PWM 频率(,如果使用示波器看的话,它是一个十分漂亮的脉冲波形。没有任何晃动。

下图是STM32系列STM 产生PWM的频率,分辨率和时钟频率之间的关系。

由此可见,IEC61499 功能块实现时要充分利用CPU 的硬件IO 特性,能够提升功能块应用程序的运行效率和实时性。可惜的是目前能够看到的IEC61499 运行时并没有提及这方面的努力。

弊端

纯软件实现的功能块只是一个“玩具”,其性能无法满足实际应用的需求。充分利用处理器的IO硬件来实现IEC61499 的接口和“底层”功能块是该标准走向实用化的关键。当然这也带来了一些问题:

无法做到与设备无关

使用MCU 的硬件资源来实现IO 功能块也带来了一些弊端,主要的问题是它将依赖设备处理器,无法实现与设备无关。

同类功能块的性能差异

另一方面,功能块在不同设备中的性能将会有差别,比如同样是一个PWM 功能块,在高性能的设备中,能够产生几百K的频率,而在低性能的设备中可能只能几十Hz。

对设备硬件提出了更高的要求

   高性能IEC61499 的运行时(runtime)需要具有内存管理(MMU)的OS ,比如Linux。处理器一般会采取X86 或者Arm Cortex-A 单核或者多核处理器。在Linux OS 中,对硬件接口的驱动一般是比较古板的,控制底层硬件不方便,且效率不高。所以通常需要外扩协处理器,或者采用近年来开始流行的异构多处理器芯片,比如NXP 具有类似的产品,而ST公司2019年也推出了STM32MP 系列产品。

  无论如何,部分功能块的硬件化实现是一个十分有趣的课题。如果能做到像NI 的lab view 那样的性能就更了不起了。

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值