TIA博途SCL编程学习33_有趣的时间定时器

标签:
iec定时器 |
先贴一段程序。如下图:
该程序将一个IEC的通电延时定时器放到了一个IF语句中。
问:
最初#condition为TRUE,即IF条件满足,IEC通电延时定时器的启动输入#timerStart为TRUE,IEC通电延时定时器的预设时间为20S,当前计时到达5S250MS时,将#condition变为FALSE,会发生什么?
答:
当前计时到达5S250MS时,将#condition变为FALSE,此时当前时间ET停止累计,超过20S后,IEC接通延时定时器的状态输出Q也为FALSE。
问:
此时的IEC接通延时定时器指令有没有被启动?
答:
此时的IEC接通延时定时器指令已经被启动(只要在IN端有一个上升沿即可被启动),时钟已经开始工作。但是由于#condition条件消失,程序不会再次扫描IEC接通延时定时器指令,所以尽管时钟在后台默默地工作,它的ET和Q也不会有输出。但当时间超过20S后,只要#condition恢复为TRUE,IEC接通延时定时器指令马上被扫描,ET和Q也马上会有输出,但是此时的时间已经超过了预设的20S。
如下图:
下面将IEC接通延时定时器改为生成脉冲定时器,操作过程和上面测试一样。如下图:

另外强调一点,IEC定时器的ET或Q不被分配调用的话,尽管定时器被启动了,但是并不能在监控表中看到ET和Q的变化。如下图:
小结:
在SCL编程过程中,如果将IEC定时器嵌套在IF语句中使用,一定要注意IF语句的条件不满足时会对IEC定时器的正常工作产生影响,在设计的时候需要特别注意。建议尽量不要去嵌套,如果非要嵌套,一定要做好在IF条件不满足时对IEC定时器的处理。