在介绍时间控制元件之前,我们先来了解为什么程序需要控制时间。举例来说,若我们想要做到每秒显示出一张不一样的图片,那我们就会需要控制循环的速度以达到此目的。那除了需要固定间隔时间动作的需求外,还有什么情况我们会用到时间控制呢?如果今天想要设计一个简单的加法运算程序,但是你又想要让程序能够不断地重覆执行以随使用者不同的输入值而做立即运算,所以使用了 While 循环和加法元件来完成。不过当你真正执行这个程序的时候,会发现下面图片所显示的情况:
你应该会发现,只是很单纯的一个加法程序,却因为没有加上任何的时间控制元件,使得因为循环而不断向 CPU 要资源,而造成 CPU 满载。由此可知时间控制在程序设计中扮演着非常重要的角色。
这个元件是一个比较特殊的时间元件,使用时还是需要设定一个等待的时间,不过它跟 Wait 的动作方式不同。它会去确认目前系统内部的计数值是否和 Wait Until Next ms Multiple 达到倍数关系,如果达到,即满足等待的条件。举例来说,目前系统的计数值是 2100 (ms),如果你设 50 给 Wait Until Next ms Multiple,则程序执行到这个元件时,会等到 2150 (ms) 时才会继续往下执行。
那 Wait Until Next ms Multiple 一般是如何使用呢?虽然说他的动作方式和 Wait 元件不完全一样,不过使用的方式大致上相同,可以独立放在循环中,或是搭配 Sequence Structure 来使用:
Wait 及 Wait Until Next ms Multiple 的比较
这两个元件都是在做时间控制使用,针对于一般的情况下动作其实很类似。这两个元件最大的差别是 Wait Until 会与CPU Timer 对齐,因此时间误差不会累积;但 Wait 不会对齐,因此长时间执行后误差有可能会累积。此外,由于 Wait Until 要对齐 CPU timer,因此第一个 Loop 的时间可能小于指定时间,这在 context help 内可以找到。