论坛上,经常看到有写PLC程序最好使用全扫描的劝告,毫无疑问,这理念肯定是来源于广泛的日常工作积累,回避程序BUG的有效手段。
我自己从业几十年,一直从事嵌入式系统软硬件开发,很少涉足使用PLC的场合,这次因为用户指定西门子S7-1200系统,才接触到这方面的选型和开发,喜欢程序的清晰简洁,并且有少许的密集恐惧,程序编制期初就很少用到有背景数据块的指令,定时器计数器等多周期的指令就没接触,所以对全扫描没有深刻的认识。
项目完成了,回想这些忠告,按照我的简单理解,全扫描的初衷是不是为了回避多周期指令因为能量流中断造成多周期指令未完全执行造成了和预期结果不一致的错误。
按照通常的理解,硬件上应该和我们自己设计的嵌入系统没有区别,区别的应该是对指令的解释和理解上,尤其是单周期不能执行结束的指令。
比如说定时器、计数器的前置启动条件?
或者是一些直接驱动的输出像 Q和I条件直通一类的操作?