定時器指令是在PLC程序設計中非常常見的一種指令,S7-1200系列PLC的定時器的指令格式及使用方式都不同於S7-200系列PLC。
S7-1200系列PLC的採用的是IEC標準的定時器指令,用戶程序中可以使用的定時器數僅受CPU存儲器容量限制,每個定時器均使用16個字節的 IEC_TIMER 數據類型的DB結構來存儲功能框或線圈指令頂部指定的定時器數據,如下圖所示。
S7-1200系列PLC的定時器種類有脈衝型定時器、接通延時定時器、斷開延時定時器以及保持性接通延時定時器。
1、脈衝型定時器
脈衝型定時器的指令標識為TP,該指令用於可生存具有預設寬度時間的脈衝,定時器指令的IN管腳用於啟用定時器,PT管腳表示定時器的設定值,Q表示定時器的輸出狀態,ET表示定時器的當前值,如下圖所示為脈衝型定時器指令的指令格式及定時器指令執行時的時序圖。
使用TP指令,可以將輸出 Q 置位為預設的一段時間,當定時器的使能端的狀態從OFF變為ON時,可啟動該定時器指令,定時器開始計時。 無論後續使能端的狀態如何變化,都將輸出 Q 置位由 PT 指定的一段時間。 若定時器正在計時,即使檢測到使能端的的信號在此從OFF變為ON的狀態,輸出Q的信號狀態也不會受到影響。
根據脈衝型定時器的時序圖分析出如下程序執行過程。
當I0.5接通為ON時,Q0.4的狀態為ON,5S後,Q0.4的狀態變為OFF,在這5S時間內容,不管I0.5的狀態如何變化,Q0.4的狀態始終保持為ON。
2、接通延時定時器
接通延時定時器的指令標識符為TON,接通延時定時器輸出端Q在預設的延時時間過後,輸出狀態為ON,指令中管腳定義與TP定時器指令管腳定義一致。
如下程序所示,描述的接通延時定時器的指令格式及執行時序圖。
當定時器的使能端為1時啟動該指令。 定時器指令啟動後開始計時。在定時器的當前值ET與設定值PT相等於時,輸出端Q輸出為ON。 只要使能端的狀態仍為ON,輸出端Q就保持輸出為ON。 若使能端的信號狀態變為OFF,則將復位輸出端Q為OFF。 在使能端再次變為ON時,該定時器功能將再次啟動。
根據接通延時定時器的執行時序圖分析如下圖所示程序的意思及執行過程。
該段程序主要完成的是啟動輸出後,延時一段時間後自動斷開的程序:
當I0.5接通為ON時,執行復位優先指令中的置位功能,使得Q0.4輸出為ON,當Q0.4輸出為ON時,啟動接通延時定時器TON,使該定時器工作進行延時,延時10S後,定時器的輸出端Q輸出為ON狀態,此時復位優先指令中的復位端信號為ON,所以執行復位功能,所以Q0.4輸出為ON。
前面介紹了S7-1200系列PLC中四類定時器中的TP定時器和TON定時器的指令格式及應用,接下來給大家介紹另外的兩類定時器的指令格式及應用。
3、斷開延時定時器
斷開延時定時器的指令標識符為TOF,斷開延時定時器輸出Q在預設的延時時間過後,重置為OFF。指令中管腳定義與TP/TON定時器指令管腳定義一致。
如下程序所示,描述的斷開延時定時器的指令格式及執行時序圖
當定時器的使能端為ON時,將輸出端Q置位為ON。 當使能端的狀態變回OFF時,定時器開始計時。 只要ET的值小於PT的值時,則輸出端Q就保持置位。當ET的值等於PT的時,則將復位輸出端Q。 如果輸使能端的信號狀態在ET的值小於PT值時變為ON,則復位定時器。 輸出 Q 的信號狀態仍將為ON。
根據斷開延時定時器的時序圖分析如下圖所示的程序所描述的意思。
根據對TOF定時器的執行過程的分析,可以看出該程序表示的是一個斷開延時的過程,當I0.5為ON時,Q0.4輸出為ON,當I0.5變為OFF時,Q0.4保持輸出10S後自動斷開為OFF。
4、保持性接通延時定時器
保持性接通延時定時器的標識符為TONR,保持性接通延時定時器的功能與接通延時定時器的功能基本一致,區別在於保持型接通延時定時器,在定時器的輸入端的狀態變為OFF時,定時器的當前值不清零,而接通延時定時器,在定時器的輸入端的狀態變為OFF時,定時器的當前值會自動清零,如下圖所示,描述的是保持性接通延時定時器的指令格式及指令執行時的時序圖。
當定時去使能端為ON時,啟動定時器。 只要定時器的使能端保持為ON,則記錄運行時間。 如果使能端變為OFF,則指令暫停計時。 如果使能端變回為ON,則繼續記錄運行時間。 如果定時器的當前值ET等於設定值PT時,並且指令的使能端為ON,則定時器的輸出端的狀態為1.若定時器的復位端為ON時,則定時器的當前值清零,輸出端的狀態變為OFF。
根據保持性接通延時定時器的時序圖分析如下圖所示的程序所描述的意思。
當I0.5接通為ON時,定時器TONR開始執行延時功能,若在定時器的延時時間未到達10S時,I0.5變為OFF,則定時器的當前值保持不變,當I0.5再次變為ON時,定時器在原基礎上行繼續往上計時。當定時器的延時時間到達10S時,Q0.4輸出為ON,在任何時候,只要I1.1的狀態為ON,則該定時器的當前值都會被清零,輸出Q0.4復位。
【應用】
S7-1200系列PLC的定時器採用的是IEC格式的定時器,每個定時器就是一個FB塊,因此每個定時器在使用時都需要分配相應的背景DB塊來存儲定時器的相應的數據。如果在程序中使用的定時器比較多,每個定時器都需要分配一個背景DB,則將會生成大量的數據塊“碎片”。
為了解決該問題,我們可以通過以下兩種方式來實現:
1、在全局DB塊中建立IEC_TIMER數據類型的變量,然後通過這個變量來代替定時器中的背景DB。
當在程序的OB塊中或是FC塊中需要使用到定時器時,可以先在全局DB塊中建立相應的IEC_TIMER始數據類型的變量,當在調用定時器指令時,提示分配DB塊時,可以點擊取消,然後在定時器的輸入背景數據塊處,選擇輸入在全局DB塊中建立的IEC_TIMER的數據類型的變量。如下圖所示,在數據塊中分別建立了“啟動延時”和“斷開延時”兩個變量,變量的類型都為IEC_TIMER的變量。
變量建立完成後,在編寫程序時調用的定時器時分配背景塊就可以分配相應的變量過去即可,如下所示:
2、在FB塊接口區中的靜態變量中建立數據類型為IEC_TIMER的變量,然後分配給定時器。
在程序的設計過程中,定時器可能還會用於FB塊中,因FB塊在調用時需要給其分配背景DB,若在FB塊中需要使用定時器,則可以在FB塊的接口區中靜態變量中建立IEC_TIMER數據類型的變量,如下圖所示,接口區的靜態變量中建立了“啟動延時定時器”和“斷開延時定時器”兩個數據類型為IEC_TIMER的變量
建立完FB塊中的靜態變量後,可編寫PLC的程序,如下所示:
(1) FB塊中的程序:
(2) 建立完FB塊的程序後,需要在OB1中調用該FB塊,調用是系統會自動提示為該FB塊生成背景數據塊。
閱讀更多 技成PLC課堂 的文章