1756-IF8H 供應(yīng)
1756-IF8H 供應(yīng)
在現(xiàn)代工業(yè)現(xiàn)場(chǎng)控制中,PLC作為控制系統(tǒng)的重要組成部分,起著不可替代的作用?,F(xiàn)代PLC的功能不僅局限于簡(jiǎn)單的邏輯運(yùn)算,而且具備了定時(shí)、計(jì)數(shù)、數(shù)值計(jì)算、中斷處理、網(wǎng)絡(luò)配置等多種強(qiáng)大的功能,使之應(yīng)用于工業(yè)現(xiàn)場(chǎng)時(shí)更能發(fā)揮其作用。作為PLC重要功能之一的定時(shí),在PLC程序中,可以進(jìn)行時(shí)序構(gòu)造、等待響應(yīng)、人為制造中斷、產(chǎn)生時(shí)間脈沖等多種應(yīng)用,是PLC編程中*的重要手段。在PLC編程中構(gòu)造定時(shí)器常用的方法是使用PLC內(nèi)部的計(jì)時(shí)器資源,另外還可以利用其掃描周期和周期性的中斷來構(gòu)造定時(shí)器,下面將以上三種方法進(jìn)行介紹。一. 計(jì)時(shí)器定時(shí)
這種方式是應(yīng)用普遍也是便捷的方式,廣泛地應(yīng)用于PLC程序之中。各種廠家及型號(hào)的PLC,在其軟件內(nèi)部都提供有限的計(jì)時(shí)器資源。當(dāng)條件滿足時(shí),計(jì)時(shí)器啟動(dòng),根據(jù)計(jì)時(shí)器的類型及所定時(shí)間的長(zhǎng)度執(zhí)行。以SIEMENS公司的S7-400系列PLC為例,其提供的計(jì)時(shí)器(TIMER)資源類型有:S_ODT(導(dǎo)通延時(shí))、S_ODTS(導(dǎo)通同步延時(shí))、S_OFFDTS(關(guān)斷同步延時(shí))、S_PULSE(脈沖延時(shí))、S_PEXT(擴(kuò)展脈沖延時(shí))等五種。各種計(jì)時(shí)器都有自己不同的通斷特性,例如S_ODT(導(dǎo)通延時(shí))的通斷特性如圖1所示。這五種計(jì)時(shí)器資源可以單獨(dú)
使用,也可以任意組合,滿足各種工程需要。這種計(jì)時(shí)器方式大的特點(diǎn)是方法簡(jiǎn)單、易于操作,但其也有一定的局限性,主要表現(xiàn)在占用過多的系統(tǒng)資源,并且各種PLC對(duì)計(jì)時(shí)器個(gè)數(shù)有一定限制,以S7-400系列PLC來說,允許系統(tǒng)使用的計(jì)時(shí)器為512個(gè)。所以在一些大型的項(xiàng)目中,會(huì)出現(xiàn)不夠用的情況;即使夠用,也會(huì)因?yàn)檎加眠^多資源而使掃描周期變長(zhǎng),對(duì)于精度要求比較高的系統(tǒng),會(huì)有一定影響。二. 掃描周期累加編程定時(shí)
所周知,PLC執(zhí)行程序的工作方式就是掃描,而CPU對(duì)所有程序的一個(gè)遍歷所經(jīng)過的時(shí)間就是一個(gè)掃描周期。對(duì)于PLC來說,每個(gè)掃描周期會(huì)因?yàn)槌绦蜷L(zhǎng)度、程序中信號(hào)和中斷的不同而不同。雖然這樣,但掃描周期畢竟還是和CPU內(nèi)部時(shí)鐘保持一定的統(tǒng)一性,是內(nèi)部時(shí)鐘外在的一種時(shí)間反應(yīng)?,F(xiàn)代工業(yè)越來越智能化的今天,掃描周期不再只是一項(xiàng)內(nèi)部指標(biāo),更多的PLC已經(jīng)將其作為一項(xiàng)基本的參數(shù),提供給用戶使用。所以我們可以建立一種構(gòu)造定時(shí)的思路:將掃描周期累加起來,如果達(dá)到我們需要定時(shí)的長(zhǎng)度,就產(chǎn)生中斷,執(zhí)行我們需要的步驟。
還是以S7-400系列PLC為例,在軟件編制過程中,OB1(Program Cycle Organization Block)是一個(gè)基本的程序模塊,它是CPU掃描的主程序,其它程序被它調(diào)用。OB1有一個(gè)模塊內(nèi)的變量表,變量表中有一個(gè)臨時(shí)變量(temp)為:OB1_PREV_CYCLE,它里面所放的數(shù)據(jù)為前一次掃描周期的毫秒(ms)數(shù),是整型(Integer)數(shù)據(jù)。因?yàn)槭桥R時(shí)變量,所以每個(gè)掃描周期內(nèi)存放的數(shù)據(jù)都在變化。因?yàn)镺B1的變量表中沒有靜態(tài)變量類型,所以不能直接在OB1中直接進(jìn)行累加,我們可以借助一個(gè)具有靜態(tài)變量的FB(Function Block)程序模塊來編制累加程序,在OB1中調(diào)用FB,并通過接口將OB_PREV_CYCLE做為IN參數(shù)輸入給FB,其OB1程序執(zhí)行如圖2。在FB中,如果以100ms為一個(gè)單位,從接口中讀取OB1提供的前一個(gè)掃描周期的數(shù)值參數(shù)OB1_PREV_CYCLE,將其
賦值給FB自身的IN參數(shù),并進(jìn)行累加,再通過一些中間量的轉(zhuǎn)換、計(jì)算,輸出以100ms為一個(gè)單位的單位個(gè)數(shù)做為OUT接口,供其它程序使用。其程序流程圖及I/O參數(shù)如圖3所示。為了方便其它程序更多地調(diào)用此項(xiàng)功能,以及實(shí)現(xiàn)多種延時(shí)方式(如ON延時(shí)、OFF延時(shí)、PULSE延時(shí)等),可以再做一些FC(Function)。選擇ON延時(shí)為例,用戶使能后,將FB輸出接口中的參數(shù)值保存起來做為初值,在后續(xù)的掃描過程中,將當(dāng)前值與初值相減計(jì)算出差值,后將用戶設(shè)置的定時(shí)數(shù)與差值進(jìn)行比較,滿足條件即可執(zhí)行用戶命令。如果仍以100msec為定時(shí)單位,其程序流程圖如圖4所示。
在使用中,用戶可以直接調(diào)用FC塊,填入相應(yīng)的參數(shù)。FC的I/O接口參數(shù)