在PLC程序中使用定時器
2006/10/12 9:35:00
1 引言 對于搞工控的人士來說,一定對定時器不會陌生,甚至可以說,每時每刻都離不開定時器。無論是為了濾除信號的抖動,還是定期循環執行特定的任務,還是在規定的時刻自動采樣數據,還是歷經一定的工藝過程后中止任務的執行,諸如此類等等、等等,都要借助定時器來完成。在各種PLC系統中,也大都提供了豐富靈活的定時指令,但要真正用好定時器,讓它恰如其分地發揮它應有的作用,并非是一件容易的事情。筆者想結合自己的經驗和體會,來著重探討一下西門子PLC系統中的各種定時器,以及如何構筑符合自己需要的定時器。 在西門子的S7-300和S7-400系列PLC系統中,有5條定時器指令,根據我們的實際需要,可以靈活選擇使用。但是,如果定時的預置時間特別長,就不能簡單地直接使用基本定時器指令了,而這要用到集成在STEP7軟件中的功能塊;或者定時的精度要求特別高,比如間隔特定的時間重復采樣,這樣的任務可能使用時間中斷OB塊應該更可靠。所以我們應該根據控制任務,選擇使用合適的定時器。 2 使用基本定時器指令 在STEP7中,基本定時器指令共有5條,分別是:延時接通型定時器,保持型延時接通定時器,脈沖型定時器,擴展脈沖型定時器和延時斷開型定時器。它們的預置值數據類型都是S5TIME類型,參見圖1,所以最大定時預置值是999×0.01 =9,990 秒或999×10 =9999 秒,即2小時46分鐘30秒(取決于選取的時基)。我們分別來看一下這5類定時器: 
2.1 延時接通型定時器 顧名思義,觸發信號 “0”到“1”的跳變(上升沿)啟動定時器開始計時,定時器的狀態保持為“0”,直到預置的時間達到,定時器才會輸出“1”。如果在定時運行過程中,觸發信號復位為“0”,或復位輸入端有上升沿信號,那么,定時器終止定時運行,輸出仍為“0”信號。正確使用該定時器,關鍵要確保啟動信號是可以保持的信號。 2.2 保持型延時接通定時器 它與延時接通型定時器的功能差不多,唯一的區別是觸發信號不必是保持的信號,一個瞬時脈沖信號足以觸發定時器的運行,并且能走完定時值,輸出為“1”信號。如果循環使用時要注意給它復位,如果沒有復位輸入端的上升沿信號,或沒有新的啟動觸發信號,它的輸出始終保持為“1”。 2.3 脈沖型定時器 輸出脈沖的最大寬度是預置的時間值。它的啟動運行也需要觸發信號 “0”到“1”的跳變(上升沿),而且運行過程中,觸發信號必須保持為“1”信號,如果觸發信號變為“0”,定時器就停止計時運行,輸出也復位為“0”。只要計時運行中,輸出就為高電平保持型。 2.4 擴展脈沖型定時器 它是脈沖定時器的擴展,就像保持型延時接通定時器是延時接通型定時器的擴展一樣,它也不需要觸發信號在計時運行過程中保持為“1”,即使信號變為“0”,計時照常運行,直到預置時間到,除非觸發信號又有新的跳變,計時重新開始進行。 2.5 延時斷開型定時器 與延時接通型定時器相反,它是計時過程中,輸出為“1”信號,直到預置定時時間達到,定時器復位為“0”信號。與之顯著不同的是,觸發信號的“1”到“0”的跳變(下降沿)觸發定時器計時運行,且運行過程中觸發信號必須保持為“0”,否則定時器終止運行。 
3 使用集成在系統的功能塊庫來實現定時 集成在STEP7軟件中,有許多功能庫,在庫中有些功能塊是與計時相關的。比如:SF3"TP"對應基本定時器中的脈沖型定時器;SFB4 "TON"對應延時接通型定時器;SFB5 "TOF"對應延時斷開型定時器。但這些功能塊的預置定時值卻是32位的TIME數據類型,計時精度是1ms。最大的定時值可以達到24天20小時31分23秒648毫秒,這樣極大地擴展了計時的范圍。 這三個功能塊的參數是類似的,下面以SFB4 "TON"為例作介紹,參照圖3,IN端是觸發信號輸入端,它的上升沿觸發定時器運行;PT是 預置定時時間,是TIME數據類型;Q端是輸出端,可以得到定時器的狀態;ET是當前計時值輸出端。 
此外,在STEP7標準功能塊中,還有其他類型的定時器,比如說軟件型延時接通定時器FC80“TONR”。它的特性與普通的定時器沒什么不同,所不同的是它每步累加的時間是OB1上次循環掃描的執行時間,這一點要特別注意。 4 使用時間中斷OB塊 在STEP7中,有兩類組織塊與時間有關。分別是時間中斷組織塊OB10到OB17和延時中斷組織塊OB20到OB23。前者可以執行一次,或間隔一定的時間(比如:每分鐘、每小時、每天、每周等等)來自動執行,后者則是延時設定的時間后執行設定的任務。 使用時間中斷組織塊時,我們只要把要執行的程序代碼編寫到選中的OB塊中,然后激活該OB塊就可以了。有兩種方法可以激活OB塊的中斷運行。其一是在做硬件配置時,選中CPU的屬性選項卡,參照圖4,選擇“Time-of-Day Interrupts”標簽,特別注意要選中“Active”復選框,在“Execution”的下拉框中選擇執行的時間間隔。完成這些選項后也就激活了該時間中斷。其二是調用系統功能塊來完成時間的設定和組織塊的激活,其中SFC28 "SET_TINT"是設定時間中斷,SFC30 "ACT_TINT." 是激活時間中斷的執行。 
延時中斷組織塊的執行只有調用系統功能塊來實現了。分別有3個系統功能塊與之對應,它們是:SFC32 (SRT_DINT)激活延時中斷,SFC33 (CAN_DINT)取消延時中斷和SFC34 (QRY_DINT)查詢延時中斷。 由于中斷組織塊的優先級比較高,不會被低優先級的任務所打斷,可以把一些對時間要求比較苛刻的任務放到中斷組織塊中來執行,這樣可以更充分地保證特定任務的可靠運行。 5 使用其它方法構造定時器 構造定時器還可以采用一些非常規的方法,比如說,我們可以用加法構造遞加定時器,用加法構造遞減定時器。參照圖5,我們用整數加法構造出了計時長度為65535秒的定時器。當然,我們可以還使用計數器對時鐘脈沖進行計數,靈活地構造定時器。 
6 結束語 以上介紹了使用定時器的各種各樣的方法,歸根結底目的只有一個:為我們的生產生活服務。根據我們的實際情況來選擇合適的方法,如果基本的定時器可以滿足要求,我們沒有必要非要舍近求遠,以炫耀我們的編程技巧,因為那樣只能是嘩眾取寵,有些情況下可能是事半功倍的。記住:簡單的是最可靠的。 參考文獻 [1] 西門子公司. Ladder Logic (LAD) for S7-300 and S7-400 Programming. [2] 西門子公司. System and Standard Functions for S7-300/400. 作者簡介 劉安杰(1969年) 男 工程師 現致力于數控機床的開發和組態軟件的應用設計。






提交
查看更多評論
其他資訊
SEW-EuroDrive Movitrac07
淺談變頻器在不同運行模式下的參數設定和接線
歐陸調功器資料
西門子遠程訪問診斷的應用
Siemens NC刀庫管理