你的while(1)类比是对PLC的一个很好的解释
的
循环执行
</强>
作品。
首先,您通常不需要进行while(1)循环,因为PLC可以设置为循环调用特定的主任务,功能或块。然后,此任务应该轮流调用程序的所有其他必要部分,就像while循环一样。
如何设置主要任务取决于您的PLC品牌,例如西门子S7将调用’OB1’块,基于Codesys的PLC将调用每个中的’MAIN’程序块
的
扫描周期
</强>
。
让我们假设你希望你的程序运行一个
的
周期
</强>
不超过10毫秒。
有些PLC有
的
以恒定间隔触发扫描周期
</强>
。这将允许您像您的要求一样10毫秒的恒定循环时间。
如果程序的执行总是花费的时间少于循环时间,那么一切都很好,并且PLC将在剩余的扫描周期中处于空闲状态,直到下次调用它为止。有效/空闲比率将很好地指示PLC的加载量。
如果超过循环时间,PLC可能会跳过一个循环,在下一个循环中立即尝试赶上,发出故障信号或停止PLC。或者上面的任何组合,所以你可能需要知道如何对它作出反应。
其他PLC有
的
上一个循环结束后立即触发扫描周期
</强>
。这将为您提供更快但可变的执行。例如,扫描周期可以在4-6ms之间变化,因为空闲时间被切除,这再次低于10ms周期时间的要求。
在这种情况下,您还应该监控周期时间,并制定一个计划,以确定如何应对它超出您的要求。如果PLC达到极限,可能会设置PLC以发出故障信号。
还要考虑,PLC需要读取输入和写入输出作为扫描周期的一部分或与扫描周期相关。如何再次设置取决于PLC品牌,但通常它将在每个扫描周期中完成,即具有相同的周期时间。