PLC編程中構(gòu)造定時器的幾種方法
2007/4/13 9:03:00
在現(xiàn)代工業(yè)現(xiàn)場控制中,PLC作為控制系統(tǒng)的重要組成部分,起著不可替代的作用?,F(xiàn)代PLC的功能不僅局限于簡單的邏輯運算,而且具備了定時、計數(shù)、數(shù)值計算、中斷處理、網(wǎng)絡(luò)配置等多種強大的功能,使之應(yīng)用于工業(yè)現(xiàn)場時更能發(fā)揮其作用。作為PLC重要功能之一的定時,在PLC程序中,可以進行時序構(gòu)造、等待響應(yīng)、人為制造中斷、產(chǎn)生時間脈沖等多種應(yīng)用,是PLC編程中不可或缺的重要手段。在PLC編程中構(gòu)造定時器常用的方法是使用PLC內(nèi)部的計時器資源,另外還可以利用其掃描周期和周期性的中斷來構(gòu)造定時器,下面將以上三種方法進行介紹。 一. 計時器定時 這種方式是應(yīng)用最普遍也是最便捷的方式,廣泛地應(yīng)用于PLC程序之中。各種廠家及型號的PLC,在其軟件內(nèi)部都提供有限的計時器資源。當條件滿足時,計時器啟動,根據(jù)計時器的類型及所定時間的長度執(zhí)行。以SIEMENS公司的S7-400系列PLC為例,其提供的計時器(TIMER)資源類型有:S_ODT(導(dǎo)通延時)、S_ODTS(導(dǎo)通同步延時)、S_OFFDTS(關(guān)斷同步延時)、S_PULSE(脈沖延時)、S_PEXT(擴展脈沖延時)等五種。各種計時器都有自己不同的通斷特性,例如S_ODT(導(dǎo)通延時)的通斷特性如圖1所示。這五種計時器資源可以單獨 使用,也可以任意組合,滿足各種工程需要。這種計時器方式最大的特點是方法簡單、易于操作,但其也有一定的局限性,主要表現(xiàn)在占用過多的系統(tǒng)資源,并且各種PLC對計時器個數(shù)有一定限制,以S7-400系列PLC來說,允許系統(tǒng)使用的計時器為512個。所以在一些大型的項目中,會出現(xiàn)不夠用的情況;即使夠用,也會因為占用過多資源而使掃描周期變長,對于精度要求比較高的系統(tǒng),會有一定影響。 二. 掃描周期累加編程定時 所周知,PLC執(zhí)行程序的工作方式就是掃描,而CPU對所有程序的一個遍歷所經(jīng)過的時間就是一個掃描周期。對于PLC來說,每個掃描周期會因為程序長度、程序中信號和中斷的不同而不同。雖然這樣,但掃描周期畢竟還是和CPU內(nèi)部時鐘保持一定的統(tǒng)一性,是內(nèi)部時鐘外在的一種時間反應(yīng)。現(xiàn)代工業(yè)越來越智能化的今天,掃描周期不再只是一項內(nèi)部指標,更多的PLC已經(jīng)將其作為一項基本的參數(shù),提供給用戶使用。所以我們可以建立一種構(gòu)造定時的思路:將掃描周期累加起來,如果達到我們需要定時的長度,就產(chǎn)生中斷,執(zhí)行我們需要的步驟。 還是以S7-400系列PLC為例,在軟件編制過程中,OB1(Program Cycle Organization Block)是一個基本的程序模塊,它是CPU掃描的主程序,其它程序被它調(diào)用。OB1有一個模塊內(nèi)的變量表,變量表中有一個臨時變量(temp)為:OB1_PREV_CYCLE,它里面所放的數(shù)據(jù)為前一次掃描周期的毫秒(ms)數(shù),是整型(Integer)數(shù)據(jù)。因為是臨時變量,所以每個掃描周期內(nèi)存放的數(shù)據(jù)都在變化。因為OB1的變量表中沒有靜態(tài)變量類型,所以不能直接在OB1中直接進行累加,我們可以借助一個具有靜態(tài)變量的FB(Function Block)程序模塊來編制累加程序,在OB1中調(diào)用FB,并通過接口將OB_PREV_CYCLE做為IN參數(shù)輸入給FB,其OB1程序執(zhí)行如圖2。在FB中,如果以100ms為一個單位,從接口中讀取OB1提供的前一個掃描周期的數(shù)值參數(shù)OB1_PREV_CYCLE,將其 賦值給FB自身的IN參數(shù),并進行累加,再通過一些中間量的轉(zhuǎn)換、計算,輸出以100ms為一個單位的單位個數(shù)做為OUT接口,供其它程序使用。其程序流程圖及I/O參數(shù)如圖3所示。為了方便其它程序更多地調(diào)用此項功能,以及實現(xiàn)多種延時方式(如ON延時、OFF延時、PULSE延時等),可以再做一些FC(Function)。選擇ON延時為例,用戶使能后,將FB輸出接口中的參數(shù)值保存起來做為初值,在后續(xù)的掃描過程中,將當前值與初值相減計算出差值,最后將用戶設(shè)置的定時數(shù)與差值進行比較,滿足條件即可執(zhí)行用戶命令。如果仍以100msec為定時單位,其程序流程圖如圖4所示。 在使用中,用戶可以直接調(diào)用FC塊,填入相應(yīng)的參數(shù)。FC的I/O接口參數(shù) 表1 FC的I/O接口參數(shù) 如表1所示(如果用戶需要使用OFF延時,或者PULSE延時,用戶可以根據(jù)要求自行編制相應(yīng)程序,這里只給出ON延時示例)。 這一種實現(xiàn)定時功能的方式,沒有直接的功能可以用,需要用戶自行編程實現(xiàn)。雖然較上一種方式復(fù)雜,但對于一個大的工程來說,理論上可以無限次的調(diào)用,并且由于程序并不復(fù)雜,不會占用系統(tǒng)過多資源,使系統(tǒng)的掃描更加迅速。 三.周期中斷累加定時 中斷是指CPU在執(zhí)行掃描程序時,滿足了某種條件或發(fā)生了某種事件,而暫停掃描的順序,執(zhí)行該條件或事件的相關(guān)程序的一個過程。在PLC中,中斷的類型多種多樣,有用戶為程序執(zhí)行設(shè)置的中斷,有CPU為響應(yīng)外部輸入輸出設(shè)備產(chǎn)生的中斷,有系統(tǒng)運行到達某一時刻點產(chǎn)生的中斷,也有系統(tǒng)周期性的中斷等等。對于PLC中時間周期性的中斷,就可以利用其時間的周期性來制造定時功能。 同樣,以S7-400系列PLC為例,系統(tǒng)為用戶提供了從OB30到OB38等9種時間周期中斷,這些周期中斷OB塊不受掃描周期的約束和影響,只按照各自 同樣,以S7-400系列PLC為例,系統(tǒng)為用戶提供了從OB30到OB38等9種時間周期中斷,這些周期中斷OB塊不受掃描周期的約束和影響,只按照各自 的周期時間屬性和優(yōu)先級,每一個周期掃描并執(zhí)行一遍其內(nèi)部的程序,其各自的中斷間隔時間和優(yōu)先級見表2。為了方便編程,用戶可以取10ms、100ms、1s為時間單位,使用OB38、OB35、OB32。這種定時的構(gòu)造方法的主要思想是,構(gòu)造一個FB塊在OB塊中調(diào)用,利用時間周期中斷OB塊的周期執(zhí)行性,每一個周期進行一次累加,累加值做為接口提供給構(gòu)造ON延時、OFF延時或者PULSE延時的FC塊使用。OB塊的執(zhí)行過程如圖5所示。 周期中斷FB塊的主要編程思想是:通過與OB塊的參數(shù)接口讀取OB_Number參數(shù)做為Flag,并對Flag做相應(yīng)的判斷(Flag=32?or Flag=35?or Flag=38?),如果條件滿足,則在相應(yīng)的條件下做累加運算,并通過自己的背景數(shù)據(jù)塊輸出Counter_1s、Counter_100ms、Counter_10ms等參數(shù),供FC塊使用。FB塊分別在OB32、OB35、OB38中調(diào)用,接受它們提供的參數(shù)。FB塊的流程圖如圖6所示。 還有另一種方法是:FB只在OB38中調(diào)用,根據(jù)10ms、100ms、1s存在十進制倍數(shù)的關(guān)系,在FB中添加編程,對Counter_10ms進行除以10后取整或除以100取整,得到Counter_100ms和Counter_1s。 FC塊的構(gòu)造同上種方法基本一樣,接受了三個累加值之后,根據(jù)用戶需要編程實現(xiàn)選擇使用哪一種時間等級,其后步驟與上種方法相同,這里不再復(fù)述,也不給出流程圖了。 這種實現(xiàn)定時功能的方法具有上一種方法的全部優(yōu)點,并且較上一種方法更容易實現(xiàn),編程更為簡單,不用累加后取整。但并不是所有的PLC都提供周期中斷供用戶使用,這跟各廠家產(chǎn)品有關(guān),一般情況下只有一些工程上使用的具有復(fù)雜控制功能的PLC會提供,而一些小型PLC供用戶使用的資源相對較少,不提供此項功能,因此這種方法使用上有一定的局限性。 四.總結(jié) 以上介紹了在PLC中實現(xiàn)定時功能的三種方法,用戶可以根據(jù)實際情況,具體、靈活地選擇應(yīng)用。以上的流程圖中也只給出了主要編程思路的框架,用戶可以根據(jù)自己的需要添加程序。PLC中實現(xiàn)定時的方法很多,用戶可以根據(jù)產(chǎn)品所提供的功能,多角度分析看待問題,使其資源得到充分的利用。 參考文獻 《PLC原理及應(yīng)用》、《SIEMENS S7-300/400編程手冊》 《SIEMENS S7-300/400用戶手冊》
提交
查看更多評論