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