摘 要:西門子S7-200PLC具有接通延時、記憶延時、斷開延時和1ms、10ms、100ms定時器等功能。在程序設(shè)計中,合理使用不同功能和不同分辨率的定時器,可以使我們的程序功能更完善實現(xiàn)更順利,同時定時器除了定時功能外,還可以靈活運用,實現(xiàn)其它功能。
關(guān)鍵詞:S7-200;PLC;編程;定時器
西門子S7-200 PLC內(nèi)部,按功能分有三類定時器,分別是接通延時定時器(TON)、有記憶接通延時定時器(TONR)、斷開延時定時器(TOF);按定時分辨率分同樣有三類定時器,分別是1ms、10ms、100ms定時器。每個定時器有2個輸入端,分別是使能輸入端和預(yù)設(shè)值輸入端。當(dāng)使能輸入端接通時,接通延時定時器(TON)和有記憶接通延時定時器(TONR)開始計時,當(dāng)定時器的當(dāng)前值大于等于預(yù)設(shè)值時,該定時器位被置位。當(dāng)使能輸入端斷開時,接通延時定時器的當(dāng)前值清0,而有記憶接通延時定時器的當(dāng)前值則保持不變,在下次使能輸入端接通時繼續(xù)計時,利用這一點,我們可以用有記憶接通延時定時器來統(tǒng)計使能輸入端的接通時間,在再次使用有記憶接通延時定時器之前,需要用復(fù)位指令清除當(dāng)前值。對于斷開延時定時器(TOF),當(dāng)使能輸入端接通時,定時器位立即接通,并把當(dāng)前值設(shè)為0;當(dāng)使能輸入端斷開時,定時器開始計時,當(dāng)達到預(yù)設(shè)時間時,定時器位斷開,并停止計時。由于斷開延時定時器必須用輸入端從接通到斷開的跳變啟動計時,如果輸入端接通持續(xù)時間短于預(yù)設(shè)值,定時器位將保持接通,下次輸入端接通后斷開時才開始計時,在設(shè)計程序時需注意這一點。
西門子PLC程序執(zhí)行一個循環(huán)稱為一個掃描周期。CPU在一個掃描周期內(nèi)執(zhí)行以下任務(wù):讀輸入、執(zhí)行程序、處理通訊請求、執(zhí)行CPU自診斷測試、寫輸出。這些任務(wù)是按一定順序執(zhí)行,而不是并行處理,在每個掃描周期開始時將數(shù)字輸入值寫入輸入映像寄存器中,執(zhí)行程序階段則逐條執(zhí)行指令,處理通訊請求階段處理通訊端口的信息,自診斷階段則檢查硬件和程序存儲器,在掃描周期的末尾將輸出映像寄存器中的數(shù)據(jù)寫入數(shù)字輸出點,如圖一所示。中斷程序例外,它可以在掃描周期任意時間執(zhí)行。
在同一個程序中,一個定時器不能同時作為TON和TOF使用。對于不同分辨率的定時器,除了定時最大值不同外,在程序中使用方法略有區(qū)別。1ms定時器啟動后,定時器當(dāng)前值每隔1ms刷新一次,不與掃描周期同步。10ms定時器啟動后,定時器當(dāng)前值在每次掃描周期的開始刷新,即在一個掃描周期內(nèi)定時器位和當(dāng)前值保持不變。100ms定時器啟動后,定時器在每次掃描周期的開始將累計的100ms間隔數(shù)加到當(dāng)前值中,但只有定時器指令執(zhí)行時,其當(dāng)前值才刷新,也就是說,如果100ms定時器激活,但在某一個周期沒有執(zhí)行定時器指令,定時器的當(dāng)前值不刷新,從而造成時間丟失;同樣的,如果在一個掃描周期內(nèi)多次執(zhí)行同一定時器指令,就會造成多計時間,因此在設(shè)計程序時必須保證同一個100ms定時器指令每個掃描周期只執(zhí)行一次。
由上述描述我們可知,PLC定時器的定時時間是有誤差的,在程序設(shè)計合理時,其誤差最大值由其分辨率來決定。結(jié)合定時器更新方式和CPU的掃描周期,我們可以看出,對于1ms和10ms定時器,不可以用定時器自己的定時器位控制自身,而100ms定時器可以這么使用。
定時器除了定時功能外,還可以靈活運用,實現(xiàn)其它功能。如利用定時器實現(xiàn)硬件濾波,去除瞬間抖動,防止誤操作;還可以利用定時器預(yù)設(shè)值和當(dāng)前值實現(xiàn)不同周期和占空比的脈波輸出,如圖二程序和波形圖所示,實現(xiàn)了周期0.5秒占空比0.4的脈沖輸出。
在PLC程序設(shè)計中,合理使用定時器,可以避免不必要的問題。在我部門發(fā)射機自動化監(jiān)控程序設(shè)計過程中,有一部需要使用自由口通信來采集發(fā)射機的模擬量和狀態(tài),它們采用了不同的采集頻率,因此我們分別使用了兩個定時器來控制。在調(diào)試過程中我們發(fā)現(xiàn)采集的數(shù)據(jù)誤碼率非常高,經(jīng)常連續(xù)數(shù)次采集都是錯誤數(shù)據(jù),排除了硬件問題后,我們仔細分析程序,發(fā)現(xiàn)兩個定時器的啟動不同步,造成的后果就是有可能兩次采集間隔時間太短。我們修改了程序,將兩個定時器啟動同步后再測試,誤碼率大大降低,完全可以滿足我們監(jiān)控需求。
總之,在PLC程序設(shè)計中,合理使用不同分辨率的定時器,可以使我們的程序功能更完善實現(xiàn)更順利。
參考文獻:
[1]《S7-200系統(tǒng)手冊》
作者簡介:
宮興廣(1967-),男,漢族,山東濟南人,本科,濟南廣播電視臺科長,初級職稱,主要研究方向:無線電工程。