西門(mén)子S7-1200PLC的IEC格式的定時(shí)器屬于功能塊。在插入定時(shí)器指令時(shí),要求創(chuàng )建一個(gè)16字節的IEC_Timer數據類(lèi)型的DB結構(即背景數據塊),來(lái)保存有關(guān)的數據。在功能塊中,可以事先創(chuàng )建一個(gè)IEC_Timer數據類(lèi)型的靜態(tài)變量(多重背景),然后將它指定給定時(shí)器指令。
CPU沒(méi)有給任何特定的定時(shí)器指令分配專(zhuān)門(mén)的資源。每個(gè)定時(shí)器使用DB結構和一個(gè)連續運行的內部CPU定時(shí)器(我的理解是一個(gè)硬件定時(shí)器)來(lái)執行定時(shí)。
在定時(shí)器指令的輸入IN的上升沿啟動(dòng)定時(shí)器時(shí),連續運行的內部CPU定時(shí)器的值將被復制到為該定時(shí)器指令分配的DB結構的元素START(起始值)中。
該起始值在定時(shí)器繼續運行期間將保持不變,以后將在每次更新定時(shí)器時(shí)使用。以下條件時(shí)將會(huì )執行定時(shí)器更新:
1)執行定時(shí)器指令(TP、TON、TOF 或 TONR);
2)定時(shí)器結構的元素ELAPSED(經(jīng)過(guò)的時(shí)間)或位輸出Q作為其它指令的參數,該指令被執行。
更新定時(shí)器時(shí),將從內部CPU定時(shí)器的當前值中減去上述起始值,得到經(jīng)過(guò)的時(shí)間ELAPSED。再將ELAPSED與預設值PT進(jìn)行比較,以確定定時(shí)器的位輸出Q的狀態(tài)。然后更新該定時(shí)器的DB結構的元素ELAPSED和Q。達到預設值PT后,定時(shí)器不會(huì )繼續累加經(jīng)過(guò)的時(shí)間ELAPSED。
STEP 7 Basic的V11版與V10.5版相比,增加了類(lèi)似于S7-300/400的定時(shí)器線(xiàn)圈指令。
從上述的定時(shí)器內部的定時(shí)機制可知,在使用定時(shí)器時(shí),其定時(shí)精度與CPU的掃描周期有很大的關(guān)系。在CPU兩次更新定時(shí)器之間,定時(shí)器的輸入、輸出參數保持不變。
為了驗證上述結論,在FB1中調用定時(shí)器指令TP,在OB1中用I0.1作為調用條件,調用FB1。用監視表格監視定時(shí)器的輸出Q和經(jīng)過(guò)的時(shí)間ET,用輸入IN的上升沿啟動(dòng)定時(shí)器后,如果I0.1為0狀態(tài),沒(méi)有調用FB1和執行定時(shí)器指令,定時(shí)器的輸出Q和經(jīng)過(guò)的時(shí)間ET保持不變。只有在調用FB1,執行定時(shí)器指令時(shí),ET的值才會(huì )變化。