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