S7-200 SMART指令提供了下述三種類型的定時器。
接通延時定時器(TON):用于定時單個時間間隔 。有記憶的接通延時定時器(TONR):用于累積多個定時時間間隔的時間值。斷開延時定時器(TOF): 用于在 OFF(或 FALSE) 條件之后延長一定時間間隔,例如冷卻電機的延時。
定時器號和分辨率
定時器對時間間隔計數(shù)。定時器的分辨率(時基)決定了每個時間間隔的長短。
S7-200 SMART提供了256個可供使用的定時器,即用戶可用的定時器號為T0-T255。TON、TONR 和 TOF 定時器提供三種分辨率:1ms、10ms和100ms。(當(dāng)前值的每個單位均為時基的倍數(shù)。例如,使用 10 ms 定時器時,計數(shù) 50 表示經(jīng)過的時間為 500 ms )。
定時器號的分辨率(時基)及較大計數(shù)時間,如下表:
表1. 定時器號和分辨率
定時器號決定了定時器的分辨率(時基),并且分辨率在指令塊上標(biāo)出。
同分辨率的定時器按以下規(guī)律刷新:
1ms:1ms分辨率的定時器,定時器位和當(dāng)前值的較新不與掃描周期同步。對于大于1ms的程序掃描周期,在一個掃描周期內(nèi),定時器位和當(dāng)前值刷新多次。10ms:10ms分辨率的定時器,定時器位和當(dāng)前值在每個程序掃描周期的開始刷新。定時器位和當(dāng)前值在整個掃描周期過程中為常數(shù)。在每個掃描周期的開始會將一個掃描累計的時間間隔加到定時器的當(dāng)前值上。100ms:100ms分辨率的定時器,定時器位和當(dāng)前值在指令執(zhí)行時刷新。因此為了保證正確的定時值,要確保在一個程序掃描周期中,只執(zhí)行一次100ms定時器指令。
定時器指令的有效操作數(shù)如下表所示:
不同定時器的功能
TON 和 TONR 定時器操作:
在使能輸入 IN 接通時開始計時。 當(dāng)前值等于或大于預(yù)設(shè)時間時,定時器位置為接通。使能輸入置為斷開時,清除 TON 定時器的當(dāng)前值。使能輸入置為斷開時,保持 TONR 定時器的當(dāng)前值。 輸入 IN 置為接通時,可以使用TONR 定時器累積時間。 使用復(fù)位指令 (R) 可清除 TONR 的當(dāng)前值。達(dá)到預(yù)設(shè)時間后,TON 和 TONR 定時器繼續(xù)定時,直到達(dá)到較大值 32,767 時才停止定時。
TOF 定時器
使能輸入接通時,定時器位立即接通,當(dāng)前值置為 0。輸入斷開時,定時開始,定時一直持續(xù)到當(dāng)前時間等于預(yù)設(shè)時間。達(dá)到預(yù)設(shè)值時,定時器位斷開,當(dāng)前值停止遞增;但是,如果在 TOF 達(dá)到預(yù)設(shè)值之前使能輸入再次接通,則定時器位保持接通。要使 TOF 定時器開始定時斷開延時時間間隔,使能輸入必須進行接通-斷開轉(zhuǎn)換。如果 TOF 定時器在 SCR 區(qū)域中,并且 SCR 區(qū)域處于未激活狀態(tài),則當(dāng)前值設(shè)置為0,定時器位斷開且當(dāng)前值不遞增。
定時器工作規(guī)律如下表所示:
其中:
IN為“1”狀態(tài)時,定時器開始運行延時到達(dá)預(yù)置值,T37 置位IN輸入端為“0”狀態(tài)時,定時器復(fù)位如無復(fù)位,當(dāng)前值繼續(xù)增至較大值
定時器在子程序中的表現(xiàn)
在條件調(diào)用子程序的主程序中,當(dāng)停止子程序調(diào)用時,如果定時器已經(jīng)激活正在計時,停止調(diào)用這個子程序會造成定時器的失控。不管此時定時器**的激活條件如何變化,定時器(1ms、10ms 時基的)會一直走到較大值,定時器輸出也會在達(dá)到設(shè)定值時接通;(100ms 時基的定時器會在上述情況下停止計時,但在邏輯上處于失控狀態(tài))。
常見問題
1.利用定時器定時的程序,在編譯報錯“指令操作數(shù)的存儲器尋找范圍無效”?
這種情況往往是調(diào)用的定時器號與定時器類型不配合造成的。參見上面的表格,如T7只能用作TONR,而不能用于TON或TOF。
2.為什么子程序中的定時器和計數(shù)器不工作或者工作不正常?
如果有下面情況產(chǎn)生:
A.一個在內(nèi)部使用了定時器或計數(shù)器的子程序,在同一時刻被調(diào)用了多次
B. 相同編號的定時器或計數(shù)器被多個子程序使用,且同一時刻這些子程序有兩個或者以上被調(diào)用
則定時器或者計數(shù)器資源會因重疊使用而相互影響,造成程序邏輯等方面的錯誤。