遼寧西門子S7-1200PLC模塊代理經(jīng)銷商
PLC標(biāo)準(zhǔn)觸點(diǎn)指令實(shí)現(xiàn)

在IEC61131-3的指令表語言(instruction list)中,分別用LD(Load,裝載)、AND(and,與)和OR(or,或)指令來表示開始、串聯(lián)和并聯(lián)的常開觸點(diǎn)(見表1-2);分別用LDN (load Not)、ANDN (and not)和ORN (or not)來表示開始、串聯(lián)和并聯(lián)的常閉觸點(diǎn)(見表1-3,助記符中括號里面的是相應(yīng)S7-200的指令)。觸點(diǎn)指令中所有操作數(shù)變量X的數(shù)據(jù)類型為BIT型。觸點(diǎn)指令的操作數(shù)主要包括輸入點(diǎn)I、輸出點(diǎn)O,中間繼電器(位存儲器)M、定時器(T)的線圈狀態(tài)以及計數(shù)器(C)的線圈狀態(tài)等。
標(biāo)準(zhǔn)觸點(diǎn)指令實(shí)現(xiàn)簡單的邏輯關(guān)系式的運(yùn)算。S7-200為實(shí)現(xiàn)邏輯指令,在PLC運(yùn)行系統(tǒng)中采用了一個9位的工作堆棧STACK,利用C51實(shí)現(xiàn)時,使用一個位變量來作棧頂,在位尋址空間定義一個char類型(8位)的變量作為實(shí)際意義上的堆棧。棧頂用來存儲邏輯運(yùn)算的結(jié)果,下面的8位用來存儲中間運(yùn)算結(jié)果,堆棧中的數(shù)據(jù)一般按“*后出”的原則存取。
執(zhí)行LD指令時,將指令的位地址(或變量)中的二進(jìn)制數(shù)據(jù)裝載入棧頂。
執(zhí)行AND (A)指令時,將指令的位地址中的二進(jìn)制數(shù)和棧頂中的二進(jìn)制數(shù)相與,結(jié)果存入棧頂。
執(zhí)行OR (O)指令時,將指令的位地址中的二進(jìn)制數(shù)和棧頂中的二進(jìn)制數(shù)相或,結(jié)果存入棧頂。
執(zhí)行常閉觸點(diǎn)對應(yīng)的LDN、ANDN (AN)和ORN (ON)指令時,取出指令的位地址中的二進(jìn)制數(shù)據(jù)后,將它取反(0變?yōu)?/span>1,1變?yōu)?/span>0),然后再做對應(yīng)的裝載、與、或操作。
需要特別注意的是,由于提供的工作堆棧有9級,LD和(或)LDN指令在同一網(wǎng)絡(luò)(一個梯形圖網(wǎng)絡(luò))連續(xù)出現(xiàn)超過8次時再執(zhí)行LD或LDN指令,將丟失數(shù)據(jù),而且這樣做上位機(jī)進(jìn)行編譯時也會報錯(不允許用戶這樣使用),下一節(jié)將介紹其他與堆棧有關(guān)的指令的實(shí)現(xiàn)。
下面介紹PLC梯形圖及指令功能實(shí)現(xiàn)。之所以說梯形圖語言是面向用戶的,是因為它是由繼電器控制圖發(fā)展而來的。它們在畫法上有許多的相似之處,梯形圖采用軟件編程邏輯取代了繼電器硬件接線邏輯,因而它和繼電器控制器有本質(zhì)的區(qū)別,一個是接線,另一個是PLC的程序。圖1-66示出的是一個西門子PLC系列簡單的梯形圖程序,-| |-和-|/|-分別表示常開和常閉觸點(diǎn),[ ]表示線圈,梯形圖代表的是一段程序,而非硬件接線邏輯(圖1-66中數(shù)字表示執(zhí)行順序,并非程序的一部分)。
在PLC梯形圖中,繼電器對應(yīng)的物理實(shí)體是內(nèi)存單元的某一位,稱為位功能存儲器。若該位為1,那么表示它所代表的繼電器線圈通電,常開觸點(diǎn)閉合,常閉觸點(diǎn)斷開;反之,若為0,則相應(yīng)的繼電器線圈失電,常開觸點(diǎn)斷開,常閉觸點(diǎn)閉合。CPU掃描用戶程序的過程實(shí)質(zhì)是進(jìn)行邏輯關(guān)系的運(yùn)算,接點(diǎn)(或觸點(diǎn))狀態(tài)0或1作為邏輯關(guān)系式左端各項的值進(jìn)行與、或、非的運(yùn)算。運(yùn)算結(jié)果1或0送入代表繼電器線圈的某一位存儲單元,從而導(dǎo)致了該繼電器線圈的通電或失電。研究PLC梯形圖語言或指令語句的位邏輯指令,就是研究PLC指令所代表的邏輯關(guān)系以及實(shí)現(xiàn)該邏輯關(guān)系的方法。
定時器TIM和TIMH (15)是遞減、ON延時定時器指令,這些指令需要一個TC編號和一個設(shè)定值(SV)。STIM (69)用來控制時間間隔,觸發(fā)中斷程序。
CNT是遞減計數(shù)器指令,CNTR (12)是一個可逆的計數(shù)器指令,它們都需要一個TC編號和一個設(shè)定值(SV),兩者也都和一個用作輸入信號和一個用作復(fù)位的多重指令行相連接。CTBL (63)、INT (89)和PRV (62)用于處理高速計數(shù)器,INT (89)也可用于終止脈沖輸出。
任何一個TC編號不能定義兩次,一旦它在定時器或計數(shù)器指令中被定義,則不能再次使用。一旦定義了,TC編號在指令中作為操作數(shù),可根據(jù)需要多次使用,但不能在計數(shù)器和定時器指令中重復(fù)定義。在歐姆龍CPM2A/CPM2C的PC機(jī)中,TC編號為000~255,而在CPM1/CPM1A/SRM1 (-V2)的PC機(jī)中,TC編號為000~127。當(dāng)使用一個TC編號作為定時器或計數(shù)器定義時,不需要前綴,一旦定義為定時器,則TC編號可以是TIM前綴,用作某些指令的一個操作數(shù)。任何定時器指令都使用TIM前綴來定義。一旦定義為一個計數(shù)器,則TC編號可以是CNT前綴,用作某些指令的一個操作數(shù)。所有計數(shù)器指令都使用CNT前綴來定義。TC編號可以表示為所需要位或字?jǐn)?shù)據(jù)的操作數(shù)。當(dāng)表示為所需要位數(shù)據(jù)的操作數(shù)時,TC編號可以訪問作為一個定時/計數(shù)“完成標(biāo)志”的功能位,即該標(biāo)志表示定時/計數(shù)已完成,也就是說,通常為“OFF”的位在的SV結(jié)束后將置“ON”。當(dāng)表示為需要字?jǐn)?shù)據(jù)的操作數(shù)時,TC編號可以訪問能夠存放定時器/計數(shù)器的當(dāng)前值PV的一個內(nèi)存位置。因此,定時器或計數(shù)器的PV可用作CMP (20)的操作數(shù),或任何其他的TC區(qū)允許訪問的指令,這是通過TC編號來實(shí)現(xiàn)的,這個TC編號用來定義訪問存放定時器/計數(shù)器的當(dāng)前值PV的一個內(nèi)存位置。

注意:TIM 000是用來表示由TC編號000定義的定時器指令,定義這個定時器的完成標(biāo)記及當(dāng)前值PV。對術(shù)語的解釋非常清楚,即*是一條指令,第二是一個位操作數(shù),第三是一個字操作數(shù)。放在TIM或CNT后面的其他TC編號也是同樣的含義。設(shè)定值SV可以作為數(shù)據(jù)區(qū)中的一個常數(shù)或者一個字地址輸入。如果將一個IR區(qū)域的字分配到一個輸入單元作為字地址的話,輸入單元可以用線連接,這樣SV可以通過外部的指輪撥盤或類似設(shè)備設(shè)定,通過這種方法連接的定時器和計數(shù)器僅能在運(yùn)行和監(jiān)視模式下,通過外部方式設(shè)定。所有的設(shè)定值SV,包括通過外部設(shè)定,都必須使用BCD碼。
a.定時器(TIM)。圖1-59中的SV為000. 0~999.9之間的數(shù)值。設(shè)置時不用輸入十進(jìn)制小數(shù)點(diǎn)。每一TC編號只能用作一條定時器或計時器指令的定義符。在CPM2A/CPM2C PC中TC編號為000~255,而在PM1/CPM1A/SRM1 (-V2)PC中TC編號為000~127。如果TIMH (15)中需要TC編號,那么TC000~TC003(在CPM2A/CPM2C中為TC000~TC015)不能在TIM中使用。在CPM2A/CPM2C PC中,如果TMHH (15)需要使用TC編號,那么TC004~TC007不應(yīng)當(dāng)用于TIM。當(dāng)執(zhí)行條件為“ON”時,定時器進(jìn)入工作,而當(dāng)執(zhí)行條件為“OFF”時,定時器復(fù)位,即恢復(fù)到設(shè)定值SV。一旦定時器開始工作,TIM從SV起,以0.1s為單位計量。如果執(zhí)行條件為“ON”的時間保持到TIM減計時到0,該TC編號的完成標(biāo)志將置“ON”,且保持“ON”直到TIM復(fù)位(即直到執(zhí)行條件為“OFF”)為止。下面的圖1-60表示了TIM的執(zhí)行條件及其完成標(biāo)志之間的關(guān)系。

圖1-59 定時器(TIM)指令梯形圖符號與定義

圖1-60 TIM的執(zhí)行條件及其完成標(biāo)志之間的關(guān)系

b.高速定時器[TIMH (15)]。如圖1-61所示,設(shè)定值SV在00. 00~99. 99之間(雖然可以設(shè)定00. 00和00. 01,但設(shè)定00. 00使定時器失效,即立即使完成標(biāo)志置“ON”,而設(shè)定00. 01使掃描不可靠)。設(shè)置時不用輸入十進(jìn)制小數(shù)點(diǎn)。每- TC編號只能用作一條定時器或計時器指令的定義符。TC編號在CPM2A/CPM2C中為000~255;而在CPM1/CPM1A/SRM1 (-V2)中TC編號為000~127。除了TIMH (15)的計量單位為0.01s以外,TIMH (15)與TIM的操作一樣。當(dāng)IL (02)的執(zhí)行條件為“OFF”時,互鎖程序部分中的定時器復(fù)位。一般情況下,電源中斷會使定時器復(fù)位,使用SR區(qū)域時鐘脈沖作為CNT的計數(shù)脈沖,可在電源中斷時使定時器不復(fù)位。當(dāng)JMP (04)的執(zhí)行條件為“OFF”時,在跳轉(zhuǎn)程序部分中的定時器將不會復(fù)位。如果跳轉(zhuǎn)編號為00,定時器將停止定時,但是如果使用其他跳轉(zhuǎn)編號,定時器將繼續(xù)定時。在線編輯修改參數(shù)時,必須使定時器復(fù)位。同樣,用中斷刷新改變一個TIMH (15)指令時也必須使定時器復(fù)位。只有在程序模式時可以不復(fù)位。TIMH (15)使用的定時器編號為TC000~TC003。當(dāng)周期時間超過10ms時,定時器編號為TC004~TC127(在CPM2A/CPM2C中是TC016~TC255)的高速定時器可能會不準(zhǔn)確。
圖1-62中定時器的設(shè)定值為常數(shù)。在CI00000變?yōu)?ldquo;ON”后CI01600將置“ON”,且至少保持“ON”狀態(tài)1.5s。當(dāng)CI00000為“OFF”時,定時器也將復(fù)位,且CI01600為“OFF”。

圖1-62 定時器的設(shè)定值為常數(shù)
c.計數(shù)器(CNT)。如圖1-63所示,每一TC編號只能用作一條定時器或計時器指令的定義符。TC編號在CPM2A/CPM2C PC中為000~255,而在CPM1/CPM1A/SRM1PC PC中為000~127。當(dāng)計數(shù)脈沖的執(zhí)行條件CP從“OFF”變?yōu)?ldquo;ON”時,計數(shù)器就作減值計數(shù),即只要計數(shù)器CP脈沖執(zhí)行條件為“ON”,上一掃描周期執(zhí)行條件為“OFF”,計數(shù)器就作減一計數(shù)。如果CP端執(zhí)行條件不變或由“ON”變到“OFF”,計數(shù)器當(dāng)前值PV不變。當(dāng)計數(shù)器當(dāng)前值PV計到零時,計數(shù)器的完成標(biāo)志置“ON”,并且將保持“ON”的狀態(tài)直到計數(shù)器復(fù)位為止。計數(shù)器的復(fù)位是由一復(fù)位輸入信號R來實(shí)現(xiàn)的,當(dāng)R由“OFF”變?yōu)?ldquo;ON”時,計數(shù)器復(fù)位,計數(shù)器當(dāng)前值PV恢復(fù)為設(shè)定值SV。當(dāng)復(fù)位R為“ON”期間,計數(shù)器當(dāng)前值PV不減值。當(dāng)復(fù)位R變?yōu)?ldquo;OFF”時,計數(shù)器從設(shè)定值SV開始遞減計數(shù)。電源中斷或在互鎖程序部分中的計數(shù)器當(dāng)前值PV不會復(fù)位。執(zhí)行條件、完成標(biāo)志以及當(dāng)前值PV的變化如圖1-64所示。當(dāng)前值PV線的高度只是說明當(dāng)前值PV的變化情況。

注意,間接尋址DM字不存在(DM字的內(nèi)容不是BCD碼,或超出DM區(qū)域)。在如圖1-65所示的例子中,計數(shù)器(CNT)是通過對SR區(qū)域時鐘脈沖位計數(shù)來產(chǎn)生擴(kuò)展的定時器。CNT001對1s的時鐘脈沖位(SR25502)從“OFF”變?yōu)?ldquo;ON”的次數(shù)進(jìn)行計數(shù)。而且,IR00000用來控制CNT計數(shù)的時間。由于在這個例子中,CNT001的設(shè)定值SV是700,當(dāng)1s×700次或者11min40s已經(jīng)到時,CNT002的完成標(biāo)志置“ON”,這將導(dǎo)致IR20002置 "ON"。
遼寧西門子S7-1200PLC模塊代理經(jīng)銷商