當由于 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 用
作參數的其它指令時,才會再次更新定時器。