按時間控制是最常用的邏輯控制形式,所以定時器是plc中最常用的元件之一。用好、用對定時器對PLC程序設計非常重要。
定時器是根據預先設定的定時值,按一定的時間單位進行計時的PLC內部裝置,在運行過程中當定時器的輸入條件滿足時,當前值從0開始按一定的單位增加。當定時器的當前值到達設定值時,定時器發生動作,從而滿足各種定時邏輯控制的需要。下面詳細介紹定時器的使用。
1、
S7—200 PLC定時器種類
S7—200 PLC為用戶提供了三種類型的定時器:接通延時定時器(TON)、有記憶接通延時定時器(TONR)和斷開延時定時器(TOF)。對于每一種定時器,又根據定時器的分辨率的不同,分為:1 ms、10 ms和100 ms三個精度等級。
定時器定時時間T的計算:T=PT×S。式中:T為實際定時時間,PT為設定值,S為分辨率。例如:TON指令使用T35(為10 ms的定時器),設定值為100,則實際定時時間為:
T=100 X 10=1 000 ms
定時器的設定值PT:數據類型為INT型。操作數可為:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常數,其中常數最為常用。 定時器的編號用定時器的名稱和它的常數編號(最大為255)來表示,即T×××。如:T40。定時器的編號包含兩方面的變量信息:定時器位和定時器當前值。定時器位即定時器觸點,與其他繼電器的輸出相似。當定時器的當前值達到設定值PT時,定時器的觸點動作。定時器當前值即定時器當前所累計的時間值,它用16位符號整數來表示,最大計數值為32 767。
定時器的分辨率和編號如表所列。
定時器類型
分辨率/ms
最大當前值/s
定時器編號
TONR
1
32.767
T0,T64
10
327.67
T1~T4,T65~68
100
3276.7
T5~T31,T69~T95
TON,TOF
1
32.767
T32,T96
10
327.67
T33~T36,T97~T100
100
3276.7
T37~T63,T101~T255
從上表可以看出TON和TOF使用相同范圍的定時器編號,需要注意的是,在同一個PLC程序中決不能把同一個定時器號同時用作TON和TOF。例如在程序中,不能既有接通延時(TON)定時器T32,又有斷開延時(TOF)定時器T32。
2、定時器指令的使用
三種定時器指令的LAD和STL格式如表所列。
表 定時器指令的LAD和STL形式
三種定時器指令的LAD和STL格式如表7.10所列。
表7.10 定時器指令的LAD和STL形式
格式
名稱
接通延時定時器
有記憶接通延時定時器
斷開延時定時器
LAD
STL
TON T***, PT
TONR T***, PT
TOF T***, PT
(1)接通延時定時器TON(On—Delay Timer)
接通延時定時器用于單一時間間隔的定時。上電周期或首次掃描時,定時器位為OFF,當前值為0。輸入端接通時,定時器位為OFF,當前值從0開始計時,當前值達到設定值時,定時器位為ON,當前值仍繼續計數,直到32 767為止。輸入端斷開,定時器自動復位,即定時器位為OFF,當前值為0。
(2)記憶接通延時定時器TONR(Retentive On—Delay Timer)
記憶接通延時定時器對定時器的狀態具有記憶功能,它用于對許多間隔的累計定時。首次掃描或復位后上電周期,定時器位為OFF,當前值為0。當輸入端接通時,當前值從0開始計時。當輸入端斷開時,當前值保持不變。當輸入端再次接通時,當前值從上次的保持值繼續計時,當前值累計達到設定值時,定時器位ON并保持,只要輸入端繼續接通,當前值可繼續計數到32 767。
需要注意的是,斷開輸入端或斷開電源都不能改變TONR定時器的狀態,只能用復位指令R對其進行復位操作。
(3)斷開延時定時器TOF(Off—Delay Timer)
斷開延時定時器用來在輸入斷開后延時一段時間斷開輸出。上電周期或首次掃描,定時器位為OFF,當前值為0。輸入端接通時,定時器位為ON,當前值為0。當輸入端由接通到斷開時,定時器開始計時。當達到設定值時定時器位為OFF,當前值等于設定值,停止計時。輸入端再次由OFF—ON時,TOF復位;如果輸入端再從ON—OFF,則TOF可實現再次啟動。
圖1所示為三種類型定時器的基本使用舉例,其中T35為TON、T2為TONR、T36為TOF。
圖1 定時器指令
3、定時器的分辨率(時基)及其正確使用
定時器實質就是對時間間隔計數。定時器的分辨率(時基)決定了每個時間間隔的時間長短。在S7—200系列PLC的定時器中,定時器的分辨率有1 ms、10 ms、100 ms三種,這三種定時器的刷新方式是不同的,從而在使用方法上也有很大的不同。這和其他PLC是有很大區別的。使用時一定要注意根據使用場合和要求來選擇定時器。
(1)定時器的刷新方式
①1 ms定時器 1 ms定時器采用的是中斷刷新方式,由系統每隔1 ms刷新一次,與掃描周期及程序處理無關。對于大于1ms 的程序掃描周期,在一個掃描周期內,定時器位和當前值刷新多次。其當前值在一個掃描周期內不一定保持一致。
②10 ms定時器 10 ms定時器由系統在每個掃描周期開始時自動刷新,在每個掃描周期的開始會將一個掃描累計的時間間隔加到定時器當前值上。由于是每個掃描周期只刷新一次,故在一個掃描周期內定時器位和定時器的當前值保持不變。
③100 ms定時器 100 ms定時器在定時器指令執行時被刷新,因此,如果100 ms定時器被激活后,如果不是每個掃描周期都執行定時器指令或在一個掃描周期內多次執行定時器指令,都會造成計時失準。100ms定時器僅用在定時器指令在每個掃描周期執行一次的程序中。
(2)定時器的正確使用
圖2所示為正確使用定時器的一個例子。它用來在定時器計時時間到時產生一個寬度為一個掃描周期的脈沖。
圖2定時器指令的正確使用
結合各種定時器的刷新方式規定,從圖中可以看出:
①對1ms定時器T32,在使用錯誤方法時,只有當定時器的刷新發生在T32的常閉觸點執行以后到T32的常開觸點執行以前的區間時,Q0.0才能產生一個寬度為一個掃描周期的脈沖,而這種可能性是極小的。在其它情況下不會產生這個脈沖。
②對10 ms定時器T33,使用錯誤方法時,Q0.0永遠產生不了這個脈沖。因為當定時器計時到時,定時器在每次掃描開始時刷新。該例中T33被置位,但執行到定時器指令時,定時器將被復位(當前值和位都被置0)。(http://www.diangon.com/版權所有)當常開觸點T33被執行時,T33永遠為OFF,Q0.0也將為OFF,即永遠不會被置位ON。
③100 ms的定時器在執行指令時刷新,所以當定時器T37到達設定值時,Q0.0肯定會產生這個脈沖。改用正確使用方法后,把定時器到達設定值產生結果的元器件的常閉觸點用做定時器本身的輸入,則不論哪種定時器,都能保證定時器達到設定值時,Q0.0產生一個寬度為一個掃描周期的脈沖。所以,在使用定時器時,要弄清楚定時器的分辨率,否則,一般情況下不要把定時器本身的常閉觸點作為自身的復位條件。在實際使用時,為了簡單,100 ms的定時器常采用自復位邏輯,而且100 ms定時器也是使用最多的定時器。