当由于 TP、TON、TOF 或 TONR 指令的输入上出现沿跳变而启动定时器时,连续运行的
内部 CPU 定时器的值将被复制到为该定时器指令分配的 DB 结构的 START 成员中。 该起
始值在定时器继续运行期间将保持不变,随后将在每次更新定时器时使用。 每次启动定时
器时,都会从内部 CPU 定时器将一个新的起始值加载到定时器结构中。
更新定时器时,将从内部 CPU 定时器的当前值中减去上述起始值以确定经过的时间。 再将
经过的时间与预设值进行比较以确定定时器 Q 位的状态。 然后在为该定时器分配的 DB 结
构中,更新 ELAPSED 和 Q 成员。 注意,经过的时间将停留在预设值上(达到预设值后定
时器便不会继续累加经过的时间)。
6ES7972-0BA12-OXAO
当且仅当满足以下条件时才会执行定时器更新:
●
已执行定时器指令(TP、TON、TOF 或 TONR)
●
某个指令直接引用 DB 中定时器结构的“ELAPSED”成员
●
某个指令直接引用 DB 中定时器结构的“Q”成员
定时器编程
规划和创建用户程序时应考虑以下定时器运行说明:
●
可在同一个扫描周期内多次更新定时器。 每次执行定时器指令(TP、TON、TOF、
TONR)和每次将定时器结构的 ELAPSED 或 Q 成员用作其它已执行指令的参数时,都
会更新定时器。 这在需要时间数据(本质上是立即读取定时器)时会是一项优点。
但是,如果希望在整个程序扫描周期内保持一致的值,则请将定时器指令放置在需要这
些值的其它所有指令之前,并使用定时器指令的 Q 和 ET 输出中的变量而不是定时器 DB
结构的 ELAPSED 和 Q 成员。
●
扫描期间可以不执行定时器更新。 可以在函数中启动定时器,然后在一个或多个扫描周
期内不再调用该函数。 如果没有执行引用定时器结构中 ELAPSED 或 Q 成员的其它指令,
则不会更新定时器。 直到再次执行定时器指令或执行将定时器结构的 ELAPSED 或 Q 用
作参数的其它指令时,才会再次更新定时器。