对IEC61499 感兴趣的人越来越多了,我开始向大家介绍IEC61499 编程的实例,希望能帮助大家,另外,如果有编程中的疑问,可以留言,交流。
按键开关LED 灯闪烁
前几天有网友做了一个LED 的实验,按下按键,LED 闪烁,再按一次 LED 停止闪烁。他的程序是这样的。
结果发现,长按,LED 会闪烁,而松开LED 就停止闪烁了。主要的问题出在 IX 只是读取输入脚的状态,他连接的是不带锁存功能普通按键。如果要实现按键功能,需要内部加锁存器。后来他改成了这样。
E_D_FF 是一个D触发器,只能暂存数据,没有翻转的功能。所以这个D 触发器只是将按键的值延时了一个周期,没有锁存,下一次读到0的时候又将0锁存了,所以也不行的。正确的方法应该是
上面的E_R_TRIG 功能块是上升沿检测,一旦检测到了上升沿,会产生EO 事件,这个事件触发E_T_FF 状态翻转状态。当然,这个程序还有优化的可能。
例2 LED PWM 调光
LED 调光通常使用PWM 来实现,下面的例子实现一个25% 占空比的PWM 信号。
我们应该明白,IEC61499 运行时中,功能块是软件实现的,这会影响程序运行的效率和实时性,在这个例子中,E_CYCLE 的周期为1ms,由于是软件实现这五个功能块,显然占用CPU的时间已经比较多了,但是PWM 的频率只有64Hz 而已。如果分辨率要求高的话,PWM 频率会更慢。
学习IEC61499 编程需要一些逻辑电路的知识和技巧。