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