正文 第九章 西門子S7-300係列PLC基本指令(1 / 3)

第一節指令結構和指令係統

S7-300係列PLC除了基本邏輯運算指令,定時、計數等常用的開關量控製指令外,還包括大量的用於字節、字、雙字邏輯處理以及數學運算、程序控製等指令。這些指令可以為用戶的PLC功能開發、編程、使用提供方便,我們將其稱為功能指令。

指令係統是編程的基礎,如果基礎沒有打好,編程將變得十分困難。本節將重點介紹S7-300指令係統的基礎知識及梯形圖(LAD)指令的使用方法。

一、S7-300指令的組成

在S7-300係列PLC中,根據所采用編輯器的不同,可分為梯形邏輯指令(LAD)、語句表指令(STL)和功能塊圖指令(FBD)。

1.語句表指令

語句表指令由操作碼和操作數組成,操作數由標識符和參數組成。操作碼定義要執行的功能,它告訴CPU該做什麼;操作數為執行該操作所需要的信息,它告訴CPU用什麼去做。例如:“A I0.1”是一條位邏輯操作指令,其中“A”是操作碼,它表示執行“與”操作;“I0.1”是操作數,它指出這是對輸入繼電器I0.1進行的操作。

有些語句指令不帶操作數,僅由單一指令組成。如對邏輯操作結果(RLO)取反的“NOT”指令。

2.梯形邏輯指令

梯形邏輯指令由元素指令和方塊圖組成,它們以圖形方式連接,形成程序段。其操作數的表示方法與語句表指令相同。

(1)元素指令不含地址或參數的單個元素的梯形邏輯指令。如對邏輯操作結果取反指令為:。

(2)隻帶地址的元素指令以單個元素加地址形式表示的梯形邏輯指令。

(3)帶參數的方塊圖指令用帶有表示輸入/輸出的橫線來表示的梯形邏輯指令。如SR觸發器指令為:。

3.功能塊圖指令

功能塊圖的表示方法與梯形邏輯指令有許多相似的地方,但它是用邏輯運算方塊圖表示編程元素的邏輯關係。

本章主要介紹梯形圖(LAD)指令。

二、S7-300基本數據類型

S7-300語句表、梯形圖和功能塊圖指令使用特定長度的數據對象。例如:位邏輯指令使用位;裝載和傳遞指令(STL)以及移動指令(LAD和FBD)使用字節、字和雙字。

1.位(bit)

位數據的數據類型為BOOL(布爾)型,在編程軟件中,BOOL變量的值1和0用英語單詞TRUE(真)和假(FALSE)表示。

位存儲單元的地址由字節地址和位地址組成。例如I3.2中“I”為區域標識符,“3”表示字節地址為3,“2”表示位地址為2。這種存取方式稱為“字節.位”尋址方式。輸入字節IB3由I3.0~I3.7這八位組成。

2.字節(byte)

8位二進製數組成一個字節(byte),其中的第0位為最低位(LSB),第7位為最高位(MSB)。

3.字(word)

相鄰的兩個字節組成一個字,字用來表示無符號數。例如,IW0是由IB0和IB1組成的一個字,IW0中的I為區域標識符,W表示字。

需要注意的是:組成字的編號的最小字節編號作為字的編號(如IB0);另外,編號小的字節為字的高位字節,編號大的字節作為字的低位字節。如IB0為IW0的高字節,IB1為IW0的低字節。

4.雙字(double word)

兩個字(或4個字節)組成一個雙字,雙字用來表示無符號數。例如:ID0由IB0、IB1、IB2、IB3組成,IB0為雙字ID0的最高字節,IB3為雙字的最低字節。因此,在使用字和雙字時要注意字節的劃分,防止出現字節重疊造成的讀寫錯誤。

數學運算指令也使用字節、字或雙字。在這些字節、字或雙字地址中,可以對各種格式,如整數和浮點數進行編碼。 當使用符號尋址時,定義符號並指定這些符號的數據類型。不同的數據類型具有不同格式選項和計數法。

三、S7-300操作數

S7-300PLC指令的操作數一般是由操作標識符和參數組成。操作標識符告訴CPU操作數放在存儲器的哪個區域及操作數的位數;標識參數則進一步說明操作數在該存儲區域內的具體位置。

操作標識符由主標識符和輔助標識符組成。主標識符表示操作數所在的存儲區,輔助標識符說明操作數的位數。若沒有輔助標識符,則指操作數的位數是一位。S7中的主標識符有:I(輸入映像存儲區)、Q(輸出映像存儲區)、M(位存儲區)、PI(外部輸入)、PQ(外部輸出)、T(定時器)、C(計數器)、DB(數據塊)、L(本地數據);S7中的輔助標識符有:X(位)、B(字節)、W(字)、D(雙字)。

例如:“LMW8”。其中,L為操作碼(裝載指令);MW8為操作數,M為主標識符(表示是位存儲區),W為輔助標識符(表示所取的操作數為字類型),8為參數(指明所取操作數為位存儲區的哪一個字)。

在S7中,操作數有物理地址(絕對地址)表示法和符號地址表示法兩種表示方法。用物理地址表示操作數時,要明確指出操作數所在的存儲區、該操作數位數和具體位置;采用符號地址表示法時,地址的符號名必須先定義後使用,要保證惟一性,不能重名。定義符號時,需要指明操作存儲區、操作數的位數、具體位置及數據類型。采用符號地址表示法可增強程序的可讀性,避免編程時由於筆誤造成程序錯誤。

S7係列PLC的物理存儲區以字節(B)為單位,所以規定字節單元為存儲單元,每個字節單元存儲8b(位)信息。

四、CPU中的寄存器

1.累加器(ACCUx)

累加器是用於處理字節、字或雙字的寄存器。S7-300有兩個32位累加器(ACCU1和ACCU2),可以把操作數送入累加器,並在累加器中進行運算和處理,保存在ACCU1中的運算結果可以傳送到存儲區。處理8位或16位數據時,數據放在累加器的低端(右對齊)。

2.狀態字寄存器(16位)

狀態字是一個16位的寄存器,用於存儲CPU執行指令的狀態。狀態字中的某些位用於決定某些指令是否執行和以什麼樣的方式執行,執行指令時可能改變狀態字的某些位,用位邏輯指令和字邏輯指令可以訪問和檢測它們。

(1)首次檢測位FC狀態字位0是FC位。如果FC位信號狀態等於“0”,則表明一個梯形邏輯網絡的開始,或指令為邏輯串的第一條指令。首次檢測產生的結果直接保存在狀態字的RLO位中。FC位在邏輯串開始時總是“0”,在邏輯串指令執行過程中該位為“1”,輸出指令或與邏輯運算有關的轉移指令(表示邏輯串結束的指令)將該位清零。

(2)邏輯運算結果(RLO)RLO位存儲邏輯運算串或比較指令的結果。RLO的狀態為“1”,表示有能流流到梯形圖圖中運算點處:為“0”則表示無能流流到該點。

(3)狀態位(STA)狀態位STA不能用指令檢測,它隻是在程序測試中被CPU解釋並使用。對存儲器執行讀訪問的位邏輯指令,STA的狀態始終與被尋址位的值相同;對於不訪問存儲器的位邏輯指令,狀態位無意義,此時STA總是被置為“1”。

(4)或位(OR)OR位暫存邏輯“與”的操作結果。如果“與”邏輯運算的RLO為“1”,則置位OR位,以便進行後麵的邏輯“或”運算。其它位處理指令將複位OR位。

(5)溢出位(OV)如果算術運算或比較指令執行時出現錯誤,則溢出位OV被置“1”。當後麵影響該位的指令的執行結果正常時,該位被清零。

(6)溢出狀態保持位(OS)OS位存儲OV位的狀態。即OV位被置“1”時OS位也被置“1”,OV位被清0時OS仍保持為“1”,用於指明前麵的指令執行過程中是否產生過錯誤。

(7)條件代碼CC0和CC1條件碼1(CC1)和條件碼0(CC0)綜合起來,用於表示在累加器1中產生的算術運算或邏輯運算的結果與0的大小關係、比較指令的執行結果或移位指令的移出位狀態。

(8)二進製結果位(BR)在一段既有位操作又有字操作的程序中,BR位用於表示字操作結果是否正確。在梯形圖的方框指令中,BR位與使能輸出端ENO有對應關係,用於表明方框指令是否被正確執行:如果執行出現了錯誤,BR位為“0”,ENO也為“0”;如果功能被正確執行,BR位為“1”,ENO也為“1”。

第二節位邏輯指令

位邏輯指令用於二進製的邏輯運算。二進製數隻有1和0這兩個數,可代表輸入接點(觸點)信號的有和無,或輸出線圈的得電壓和失電壓。位邏輯指令可以對布爾操作數(BOOL)的信號狀態掃描並完成邏輯操作。位邏輯運算的結果保存在狀態字的RLO位。邏輯運算結果(Result of Logic Operation,RLO)用以賦值、置位、複位布爾操作數,也控製定時器和計數器的運行。

一、基本位邏輯指令

位邏輯運算指令是對“0”或“1”布爾操作數進行掃描,經過相應的位邏輯運算,將結果送到狀態字的RLO位。

(一)標準觸點指令

1.[normally open contact(ADDRESS)常開觸點]

符號:

如果是常開觸點(動合觸點),則對“1”掃描相應操作數。在PLC中規定:若操作數是“1”則常開觸點“動作”,即認為是“閉合”的,當觸點閉合時,梯形圖軌道能流流經觸點,邏輯運算結果(RLO)=“1”;若操作數是“0”,則常開觸點“複位”,即觸點仍處於打開的狀態,沒有信號流經觸點,邏輯運算結果(RLO)=“0”。

常開觸點所使用的操作數可以是:I、Q、M、L、D、T、C。

2.[normally closed contact(ADDRESS)常閉觸點]

符號:

如果是常閉觸點(動斷觸點),則對“0”掃描相應操作數。在PLC中規定:若操作數是“1”則常閉觸點“動作”,即觸點是“斷開”,觸點斷開時,能流不流過觸點,邏輯運算結果(RLO)=“0”;若操作數是“0”,則常閉觸點“複位”,即觸點仍處於閉合的狀態,觸點閉合時,能流流過觸點,邏輯運算結果(RLO)=“1”。

常閉觸點所使用的操作數可以是:I、Q、M、L、D、T、C。

3.——(SAVE)(save RLO into BR memory將RLO的狀態保存到BR)

“——(SAVE)”指令可以將RLO存儲到狀態字的BR位。第一個校驗位FC不會被複位,BR位的狀態將參與一下程序段(網絡)的“與”邏輯運算。

4. XOR(bit exclusive OR邏輯“異或”)

對於XOR函數,必須按以下所示創建由常開觸點和常閉觸點組成的程序段。

梯形圖中如果兩個指定位的信號狀態不同,XOR將產生一個邏輯運算結果(RLO)=“1”的結果。

5.(invert power flow RLO取反)

取RLO位的非值。

6.——()(output coil輸出線圈)

符號:

——()

“——()”和繼電器邏輯圖中的線圈一樣作用。如果有電流流過線圈(RLO=1),位置“〈地址〉”處的位則被置“1”;如果沒有電流流過線圈(RLO=0),位置“〈地址〉”處的位被置為“0”。輸出線圈隻能放置在梯形圖邏輯串的最右端,也可以有多個輸出元素(最多16個)。使用“”指令可以生成求反輸出。

輸出線圈等同於STL程序中的賦值指令(用“=”表示),所使用的操作數可以是Q、M、L、D。

7.——(#)——(midline output中間標誌輸出)

符號:

——(#)——

“——(#)——”是一個中間賦值元素。在梯形圖設計時,如果一個邏輯串很長不便於編輯時,可以將邏輯串分成幾個段,前一段的邏輯運算結果(RLO)可作為中間輸出,存儲在位存儲器(I、Q、M、L或D)中,該存儲位可以當作一個觸點出現在其它邏輯串中。中間輸出隻能放在梯形圖串的中間,而不能出現在最左端或最右端。使用“”指令可以生成求反“——(#)——”。

(二)邏輯“與”操作

當所有輸入信號都為“1”,則輸出為“1”;隻要輸入信號有一個不為“1”,則輸出為“0”。

(三)邏輯”或”操作

隻要有一個輸入信號為“1”,則輸出為“1”;所有輸入信號都為“0”,輸出才為“0”。

(四)邏輯“異或”操作

當兩個輸入信號其中一個為“1”而另一個為“0”時,輸出信號為“1”;當兩個輸入信號都為“0”或都為“1”時,輸出信號為“0”。

(五)邏輯取反操作

梯形圖符號

① 輸入端I0.0的信號狀態為“1”時;

② 當輸入端I0.1和I0.2的信號狀態為“1”時。

(六)中間輸出符號

中間輸出指令用於存儲RLO的中間值,該值是中間輸出指令前的位邏輯結果。中間值輸出指令不能用於結束一個邏輯串,因此,中間輸出指令不能放在邏輯串的結尾或分支的結尾處。

(七)位邏輯操作規則

位邏輯指令的運算規則是先“與”後“或”。

【例9-1】對某個設備完成異地啟停(多點)控製程序。

I0.0、I0.1均為設備的啟動按鈕,I1.0和I1.1對應設備的停止按鈕, Q4.0輸出用於控製該設備的運行。

當I0.0、I0.1中的任意一個得電,同時I1.0、I1.1都不得電,則Q4.0得電,同時自鎖;I1.0和I1.1中的任意一個得電,則Q4.0失電。從而實現對某設備的異地啟停(多點)的共同控製。

【例9-2】兩個設備的互鎖控製程序。即兩個設備中隻能運行其中的一個,不可同時運行。

如當A設備正在運行時,這時通過I0.1啟動B設備,即使I0.1得電,則Q4.1得電,而由於Q4.1在Q4.0的自鎖回路裏,使得程序段1自鎖回路中的Q4.1常閉觸點斷開,則Q4.0的自鎖則無法保持,所以失電,從而在啟動B設備同時,停止了A設備。反之,在啟動A設備時,由於Q4.0也在Q4.1的自鎖回路中,所以Q4.0得電使Q4.1失電,B設備停止運行。

二、置位/複位指令

置位/複位命令根據RLO的值來決定指定地址位的狀態是否需要改變。當RLO的值為“1”時,置位指令使指定地址位為高電位“1”,複位指令使指定地址位為低電位“0”;若RLO位是“0”,則指令地址位的信號保持原狀態不變。

1.——(R)(複位線圈)

符號:

——(R)

隻有在前麵指令的RLO為“1”(能流通過線圈)時,才會執行“——(R)”(複位線圈)。如果能流通過線圈(RLO為“1”),將把單元的指定複位為“0”;RLO為“0”(沒有能流通過線圈)將不起作用,單元指定地址的狀態將保持不變。也可以是值複位為“0”的定時器(T編號)或值複位為“0”的計數器(C編號)。

當輸入端I0.0和I0.1的信號狀態為“1”或輸入端I0.2的信號狀態為“0”時,輸出端Q4.0的信號狀態複位為“0”;不滿足上述條件時,Q4.0的輸出狀態不變。

2.——(S)(置位線圈)

符號:

——(S)

隻有在前麵指令的RLO為“1”(能流通過線圈)時,才會執行“——(S)”(置位線圈)。如果RLO為“1”,將把單元的指定置位為“1”;RLO為“0”將不起作用,單元指定地址的當前狀態將保持不變。

當輸入端I0.0和I0.1的信號狀態為“1”或輸入端I0.2的信號狀態為“0”時,輸出端Q4.0的信號狀態置位為“1”;不滿足上述條件時,Q4.0的輸出狀態不變。

3. RS(置位優先型RS雙穩態觸發器)

如果R輸入端的信號狀態為“1”,S輸入端的信號狀態為“0”,則複位RS (置位優先型RS雙穩態觸發器)。否則,如果R輸入端的信號狀態為“0”,S輸入端的信號狀態為“1”,則置位觸發器。如果兩個輸入端的RLO狀態均為“1”,則指令的執行順序是最重要的。RS觸發器先在指定執行複位指令,然後執行置位指令,以使該地址在執行餘下的程序掃描過程中保持置位狀態。

隻有在RLO為“1”時,才會執行S (置位)和R (複位)指令。這些指令不受RLO“0”的影響,指令中指定的地址保持不變。

如果輸入端I0.0的信號狀態為“1”,I0.1的信號狀態為“0”,則置位存儲器位M0.0,輸出Q4.0將是“0”;否則,如果輸入端I0.0的信號狀態為“0”,I0.1的信號狀態為“1”,則複位存儲器位M0.0,輸出Q4.0將是“1”;如果兩個信號狀態均為“0”,則不會發生任何變化;如果兩個信號狀態均為“1”,將因順序關係執行置位指令,置位M0.0,Q4.0將是“1”。

4. SR(複位優先型SR雙穩態觸發器)

如果S輸入端的信號狀態為“1”,R輸入端的信號狀態為“0”,則置位SR。否則,如果S輸入端的信號狀態為“0”,R輸入端的信號狀態為“1”,則複位觸發器。如果兩個輸入端的RLO狀態均為“1”,則指令的執行順序是最重要的。SR觸發器先在指定執行置位指令,然後執行複位指令,以使該地址在執行餘下的程序掃描過程中保持複位狀態。

隻有在RLO為“1”時,才會執行S (置位)和R (複位)指令。這些指令不受RLO“0”的影響,指令中指定的地址保持不變。

如果輸入端I0.0的信號狀態為“1”,I0.1的信號狀態為“0”,則置位存儲器位M0.0,輸出Q4.0將是“1”;否則,如果輸入端I0.0的信號狀態為“0”,I0.1的信號狀態為“1”,則複位存儲器位M0.0,輸出Q4.0將是“0”;如果兩個信號狀態均為“0”,則不會發生任何變化;如果兩個信號狀態均為“1”,將因順序關係執行複位指令,複位M0.0,Q4.0將是“0”。

三、邊沿信號識別指令

(一)RLO邊沿檢測指令

1.——(P)——(RLO正跳沿檢測)

檢測地址中“0”到“1”的信號變化,並在指令後將其顯示為RLO=“1”。將RLO中的當前信號狀態與地址的信號狀態(邊沿存儲位)進行比較。如果在執行指令前地址的信號狀態為“0”,RLO為“1”,則在執行指令後RLO將是“1”(脈衝),在所有其它情況下將是“0”。指令執行前的RLO狀態存儲在地址中。

2.——(N)——(RLO負跳沿檢測)

檢測地址中“1”到“0”的信號變化,並在指令後將其顯示為RLO=“1”。將RLO中的當前信號狀態與地址的信號狀態(邊沿存儲位)進行比較。如果在執行指令前地址的信號狀態為“1”,RLO為“0”,則在執行指令後RLO將是“1”(脈衝),在所有其它情況下將是“0”。指令執行前的RLO狀態存儲在地址中。

3. RLO邊沿檢測指令梯形圖

I0.0和I0.1的觸點組成的串聯電路由斷開變為接通時,中間標有“P”的上升沿檢測線圈左邊的RLO(邏輯運算結果)由0變為1(即波形的上升沿),檢測到一次正跳變,能流隻在該掃描周期內流過檢測元件,Q4.0的線圈僅在這一個掃描周期內“通電”。

I0.0 和I0.1組成的串聯電路由接通變為斷開時,中間標有“N”的檢測元件左邊的RLO由1變為0(即波形的下降沿),檢測到一次負跳變,能流隻在該掃描周期內流過檢測元件,Q4.1的線圈僅在一個掃描周期內“通電”。

(二)信號邊沿檢測指令

1. POS(地址上升沿檢測)

POS是單個地址位提供的信號的上升沿檢測(Positive RLO Edge Detection)指令。POS (地址上升沿檢測)比較的信號狀態與前一次掃描的信號狀態(存儲在中)。如果當前RLO狀態為“1”且其前一狀態為“0”(檢測到上升沿),執行此指令後RLO位將是“1”。

常開觸點接通,且I0.1由0變為1(即輸入信號I0.1的上升沿),Q4.0的線圈“通電”一個掃描周期。M0.0為邊沿存儲位,用來存儲上一次循環時I0.1的狀態。

2. NEG(地址下降沿檢測)

NEG是單個地址位提供的信號的下降沿檢測(Negative RLO Edge Detective)指令。NEG(地址下降沿檢測)比較的信號狀態與前一次掃描的信號狀態(存儲在中)。如果當前RLO狀態為“1”且其前一狀態為“0”(檢測到上升沿),執行此指令後RLO位將是“1”。

I0.2的常開觸點接通,且I0.3由1變為0(即輸入信號I0.3的下降沿),Q4.1的線圈“通電”一個掃描周期。M0.1為邊沿存儲位,用來儲存上一次循環時I0.3的狀態。

【例9-3】設計故障信息顯示電路。

若故障信息I0.0為“1”狀態,Q4.0控製的指示燈以1Hz的頻率閃爍。操作人員複位按鈕I0.1後,如果故障已經消失,指示燈熄滅;如果沒有消失,指示燈轉為常亮,直至故障消失。

在設置CPU的屬性時,令MBI為時鍾存儲字節,其中的M1.5提供周期為1s的時鍾脈衝。出現故障時,將I0.0提供的故障信號用M0.1鎖存起來,M0.1和M1.5的常開觸點組成的串聯電路使Q4.0控製的指示燈以1Hz的頻率閃爍。按下複位按鈕I0.1,故障鎖存信號M0.1被複位為“0”狀態。如果這時故障已經消失,指示燈熄滅;如果沒有消失,M0.1的常閉觸點與I0.0的常開觸點組成的串聯電路使指示燈轉為常亮,直至故障消失,I0.0變為“0”狀態。

【例9-4】檢測傳送帶方向。

為配備兩個光電傳感器(PEB1和PEB2)的傳送帶,這兩個光電傳感器專用於檢測包裹在傳送帶上移動的方向。每個光電傳感器都可以像常開觸點一樣使用。

可以使用絕對地址或代表傳送帶係統各種組件的符號,來編寫傳送帶係統的方向顯示程序。

四、狀態位指令

狀態位指令用於對狀態字的位進行處理。各狀態位指令分別對下列條件之一做出反應,其中每個條件以狀態字的一個或多個位來表示:

① 二進製結果位(BR————)被置位(即信號狀態為“1”);

② 數學運算函數發生溢出(OV————)或存儲溢出(OS————);

③ 數學運算函數的結果是無序的(UO————);

④ 數學運算函數的結果與0的關係有:==0、0、>0、=0、0————(結果位不等於0)

“0————”(結果位不等於0)或“0——/——”(結果位取反後不等於0)觸點符號用於識別數學運算函數的結果是否不等於“0”。指令掃描狀態字的條件代碼位CC1和CC0,以確定結果與“0”的關係。串聯使用時,掃描的結果將通過AND與RLO結合;並聯使用時,掃描結果通過OR與RLO結合。

當I0.0的信號狀態為“1”時將激活該方塊。如果IW0的值與IW2的值不同,數學運算函數“IW0 - IW2”的結果將不等於“0”。如果函數得到正確執行且結果不等於“0”,則置位Q4.0。

7. >0————(結果位大於0)

“>0————”(結果位大於0)或“>0——/——”(結果位取反後大於0)觸點符號用於識別數學運算函數的結果是否大於“0”。指令掃描狀態字的條件代碼位CC1和CC0,以確定結果與“0”的關係。串聯使用時,掃描的結果將通過AND與RLO相結合;並聯使用時,掃描結果通過OR與RLO相結合。

8. =0————(結果位大於等於0)

“>=0————”(結果位大於等於0)或“>=0——/——”(結果位取反後大於等於0)觸點符號用於識別數學運算函數的結果是否大於或等於“0”。指令掃描狀態字的條件代碼位CC1和CC0,以確定結果與“0”的關係。串聯使用時,掃描的結果將通過AND與RLO結合;並聯使用時,掃描結果通過OR與RLO相結合。

10.

——(SP)

如果RLO狀態有一個上升沿,“——(SP)”(脈衝定時器線圈)將以該啟動指定的定時器。隻要RLO保持正值(“1”),定時器就繼續運行指定的時間間隔。隻要定時器運行,計數器的信號狀態就為“1”。如果在達到時間值前,RLO中的信號狀態從“1”變為“0”,則定時器將停止。這種情況下,對於“1”的掃描始終產生結果“0”。