跟我學:PLC 指令
§1 基本指令系統特點
PLC的編程語言與一般計算機語言相比,具有明顯的特點,它既不同于高級語言,也不同與一般的匯編語言,它既要滿足易于編寫,又要滿足易于調試的要求。目前,還沒有一種對各廠家產品都能兼容的編程語言。如三菱公司的產品有它自己的編程語言,OMRON公司的產品也有它自己的語言。但不管什么型號的PLC,其編程語言都具有以下特點:
1. 圖形式指令結構:程序由圖形方式表達,指令由不同的圖形符號組成,易于理解和記憶。系統的軟件開發者已把工業控制中所需的獨立運算功能編制成象征性圖形,用戶根據自己的需要把這些圖形進行組合,并填入適當的參數。在邏輯運算部分,幾乎所有的廠家都采用類似于繼電器控制電路的梯形圖,很容易接受。如西門子公司還采用控制系統流程圖來表示,它沿用二進制邏輯元件圖形符號來表達控制關系,很直觀易懂。較復雜的算術運算、定時計數等,一般也參照梯形圖或邏輯元件圖給予表示,雖然象征性不如邏輯運算部分,也受用戶歡迎
2. 明確的變量常數:圖形符相當于操作碼,規定了運算功能,操作數由用戶填人,如:K400,T120等。PLC中的變量和常數以及其取值范圍有明確規定,由產品型號決定,可查閱產品目錄手冊。
3. 簡化的程序結構:PLC的程序結構通常很簡單,典型的為塊式結構,不同塊完成不同的功能,使程序的調試者對整個程序的控制功能和控制順序有清晰的概念。
4. 簡化應用軟件生成過程:使用匯編語言和高級語言編寫程序,要完成編輯、編譯和連接三個過程,而使用編程語言,只需要編輯一個過程,其余由系統軟件自動完成,整個編輯過程都在人機對話下進行的,不要求用戶有高深的軟件設計能力。
5. 強化調試手段:無論是匯編程序,還是高級語言程序調試,都是令編輯人員頭疼的事,而PLC的程序調試提供了完備的條件,使用編程器,利用PLC和編程器上的按鍵、顯示和內部編輯、調試、監控等,并在軟件支持下,診斷和調試操作都很簡單。
總之,PLC的編程語言是面向用戶的,對使用者不要求具備高深的知識、不需要長時間的專門訓練。
§2 編程語言的形式
本教材采用最常用的兩種編程語言,一是梯形圖,二是助記符語言表。采用梯形圖編程,因為它直觀易懂,但需要一臺個人計算機及相應的編程軟件;采用助記符形式便于實驗,因為它只需要一臺簡易編程器,而不必用昂貴的圖形編程器或計算機來編程。
雖然一些高檔的PLC還具有與計算機兼容的C語言、BASIC語言、專用的高級語言(如西門子公司的GRAPH5、三菱公司的MELSAP),還有用布爾邏輯語言、通用計算機兼容的匯編語言等。不管怎么樣,各廠家的編程語言都只能適用于本廠的產品。
l 編程指令:指令是PLC被告知要做什么,以及怎樣去做的代碼或符號。從本質上講,指令只是一些二進制代碼,這點PLC與普通的計算機是完全相同的。同時PLC也有編譯系統,它可以把一些文字符號或圖形符號編譯成機器碼,所以用戶看到的PLC指令一般不是機器碼而是文字代碼,或圖形符號。常用的助記符語句用英文文字(可用多國文字)的縮寫及數字代表各相應指令。常用的圖形符號即梯形圖,它類似于電氣原理圖是符號,易為電氣工作人員所接受。
l 指令系統:一個PLC所具有的指令的全體稱為該PLC的指令系統。它包含著指令的多少,各指令都能干什么事,代表著PLC的功能和性能。一般講,功能強、性能好的PLC,其指令系統必然豐富,所能干的事也就多。我們在編程之前必須弄清PLC的指令系統
l 程序:PLC指令的有序集合,PLC運行它,可進行相應的工作,當然,這里的程序是指PLC的用戶程序。用戶程序一般由用戶設計,PLC的廠家或代銷商不提供。用語句表達的程序不大直觀,可讀性差,特別是較復雜的程序,更難讀,所以多數程序用梯形圖表達。
l 梯形圖:梯形圖是通過連線把PLC指令的梯形圖符號連接在一起的連通圖,用以表達所使用的PLC指令及其前后順序,它與電氣原理圖很相似。它的連線有兩種:一為母線,另一為內部橫豎線。內部橫豎線把一個個梯形圖符號指令連成一個指令組,這個指令組一般總是從裝載(LD)指令開始,必要時再繼以若干個輸入指令(含LD指令),以建立邏輯條件。最后為輸出類指令,實現輸出控制,或為數據控制、流程控制、通訊處理、監控工作等指令,以進行相應的工作。母線是用來連接指令組的。下圖是三菱公司的FX2N系列產品的最簡單的梯形圖例:
X000 X001 Y000
X010
它有兩組,第一組用以實現啟動、停止控制。第二組僅一個END指令,用以 結束程序。
l 梯形圖與助記符的對應關系: 助記符指令與梯形圖指令有嚴格的對應關系,而梯形圖的連線又可把指令的順序予以體現。一般講,其順序為:先輸入,后輸出(含其他處理);先上,后下;先左,后右。有了梯形圖就可將其翻譯成助記符程序。上圖的助記符程序為:
地址 指令 變量
0000 LD X000
0001 OR X010
0002 AND NOT X001
0003 OUT Y000
0004 END
反之根據助記符,也可畫出與其對應的梯形圖。
l 梯形圖與電氣原理圖的關系:如果僅考慮邏輯控制,梯形圖與電氣原理圖也可建立起一定的對應關系。如梯形圖的輸出(OUT)指令,對應于繼電器的線圈,而輸入指令(如LD,AND,OR)對應于接點,互鎖指令(IL、ILC)可看成總開關,等等。這樣,原有的繼電控制邏輯,經轉換即可變成梯形圖,再進一步轉換,即可變成語句表程序。
有了這個對應關系,用PLC程序代表繼電邏輯是很容易的。這也是PLC技術對傳統繼電控制技術的繼承。
§3 編程器件
下面我們著重介紹三菱公司的FX2N系列產品的一些編程元件及其功能。
FX系列產品,它內部的編程元件,也就是支持該機型編程語言的軟元件,按通俗叫法分別稱為繼電器、定時器、計數器等,但它們與真實元件有很大的差別,一般稱它們為"軟繼電器"。這些編程用的繼電器,它的工作線圈沒有工作電壓等級、功耗大小和電磁慣性等問題;觸點沒有數量限制、沒有機械磨損和電蝕等問題。它在不同的指令操作下,其工作狀態可以無記憶,也可以有記憶,還可以作脈沖數字元件使用。一般情況下,X代表輸入繼電器,Y代表輸出繼電器,M代表輔助繼電器,SPM代表專用輔助繼電器,T代表定時器,C代表計數器,S代表狀態繼電器,D代表數據寄存器,MOV代表傳輸等。
一、 輸入繼電器 (X)
PLC的輸入端子是從外部開關接受信號的窗口,PLC 內部與輸入端子連接的輸入繼電器X是用光電隔離的電子繼電器,它們的編號與接線端子編號一致(按八進制輸入),線圈的吸合或釋放只取決于PLC外部觸點的狀態。內部有常開/常閉兩種觸點供編程時隨時使用,且使用次數不限。輸入電路的時間常數一般小于10ms。各基本單元都是八進制輸入的地址,輸入為X000 ~ X007,X010 ~X017,X020 ~X027 。它們一般位于機器的上端。
二、 輸出繼電器(Y)
PLC的輸出端子是向外部負載輸出信號的窗口。輸出繼電器的線圈由程序控制,輸出繼電器的外部輸出主觸點接到PLC的輸出端子上供外部負載使用,其余常開/常閉觸點供內部程序使用。輸出繼電器的電子常開/常閉觸點使用次數不限。輸出電路的時間常數是固定的 。各基本單元都是八進制輸出,輸出為Y000 ~Y007,Y010~Y017,Y020~Y027 。它們一般位于機器的下端。
三、 輔助繼電器(M)
PLC內有很多的輔助繼電器,其線圈與輸出繼電器一樣,由PLC內各軟元件的觸點驅動。輔助繼電器也稱中間繼電器,它沒有向外的任何聯系,只供內部編程使用。它的電子常開/常閉觸點使用次數不受限制。但是,這些觸點不能直接驅動外部負載,外部負載的驅動必須通過輸出繼電器來實現。如下圖中的M300,它只起到一個自鎖的功能。在FX2N中普遍途采用M0~M499,共500點輔助繼電器,其地址號按十進制編號。輔助繼電器中還有一些特殊的輔助繼電器,如掉電繼電器、保持繼電器等,在這里就不一一介紹了。
X000 X001 M300
M300
四、定時器(T)
在PLC內的定時器是根據時鐘脈沖的累積形式,當所計時間達到設定值時,其輸出觸點動作,時鐘脈沖有1ms、10ms、100ms。定時器可以用用戶程序存儲器內的常數K作為設定值,也可以用數據寄存器(D)的內容作為設定值。在后一種情況下,一般使用有掉電保護功能的數據寄存器。即使如此,若備用電池電壓降低時,定時器或計數器往往會發生誤動作。
定時器通道范圍如下:
100 ms定時器T0~T199, 共200點,設定值:0.1~ 3276.7秒;
10 ms定時器T200~TT245,共46點,設定值:0.01~327.67秒;
1 ms積算定時器 T245~T249,共4點,設定值:0.001~32.767秒;
100 ms積算定時器T250~T255,共6點,設定值:0.1~3276.7秒;
定時器指令符號及應用如下圖所示:
X000
K123 設定值(累積)
T200 Y000
當定時器線圈T200的驅動輸入X000接通時,T200的當前值計數器對10 ms的時鐘脈沖進行累積計數,當前值與設定值K123相等時,定時器的輸出接點動作,即輸出觸點是在驅動線圈后的1.23秒(10 * 123ms = 1.23s)時才動作,當T200觸點吸合后,Y000就有輸出。當驅動輸入X000斷開或發生停電時,定時器就復位,輸出觸點也復位。
每個定時器只有一個輸入,它與常規定時器一樣,線圈通電時,開始計時;斷電時,自動復位,不保存中間數值。定時器有兩個數據寄存器,一個為設定值寄存器,另一個是現時值寄存器,編程時,由用戶設定累積值。
如果是積算定時器,它的符號接線如下圖所示:
X001
K345
X002
定時器線圈T250的驅動輸入X001接通時,T250的當前值計數器對100 ms的時鐘脈沖進行累積計數,當該值與設定值K345相等時,定時器的輸出觸點動作。在計數過程中,即使輸入X001在接通或復電時,計數繼續進行,其累積時間為34.5s(100 ms*345=34.5s)時觸點動作。當復位輸入X002接通 ,定時器就復位,輸出觸點也復位。
五、 計數器(C)
FX2N中的16位增計數器,是16位二進制加法計數器,它是在計數信號的上升沿進行計數,它有兩個輸入,一個用于復位,一個用于計數。每一個計數脈沖上升沿使原來的數值減1,當現時值減到零時停止計數,同時觸點閉合。直到復位控制信號的上升沿輸入時,觸點才斷開,設定值又寫入,再又進入計數狀態。
其設定值在K1~K32767范圍內有效。
設定值K0與K1含義相同,即在第一次計數時,其輸出觸點就動作。
通用計數器的通道號:C0 ~C99,共100點。
保持用計數器的通道號:C100~C199,共100點。
通用與掉電保持用的計數器點數分配,可由參數設置而隨意更改。
舉個例子:
X010
X011
K 計數器
C 0
由計數輸入X011每次驅動C0線圈時,計數器的當前值加1。當第10次執行線圈指令時,計數器C0的輸出觸點即動作。之后即使計數器輸入X011再動作,計數器的當前值保持不變。
l 當復位輸入X010接通(ON)時,執行RST指令,計數器的當前值為0,輸出接點也復位。
l 應注意的是, 計數器C100~C199,即使發生停電,當前值與輸出觸點的動作狀態或復位狀態也能保持。
六、 數據寄存器
數據寄存器是計算機必不可少的元件,用于存放各種數據。FX2N中每一個數據寄存器都是16bit(最高位為正、負符號位),也可用兩個數據寄存器合并起來存儲32 bit數據(最高位為正、負符號位)。
1) 通用數據寄存器D 通道分配 D 0~D199,共200點。
只要不寫入其他數據,已寫入的數據不會變化。但是,由RUN→STOP時, 全部數據均清零。(若特殊輔助繼電器M8033已被驅動,則數據不被清零)。
2) 停電保持用寄存器 通道分配 D200~D511,共312點,或D200~D999,共800點(由機器的具體型號定)。
基本上同通用數據寄存器。除非改寫,否則原有數據不會丟失,不論電源接通與否,PLC運行與否,其內容也不變化。然而在二臺PLC作點對的通信時, D490~D509被用作通信操作。
3) 文件寄存器 通道分配 D1000~D2999,共2000點。
文件寄存器是在用戶程序存儲器(RAM、EEPROM、EPROM)內的一個存儲區,以500點為一個單位,最多可在參數設置時到2000點。用外部設備口進行寫入操作。在PLC運行時,可用BMOV指令讀到通用數據寄存器中,但是不能用指令將數據寫入文件寄存器。用BMOV將 數據寫入RAM后,再從RAM中讀出。將數據寫入EEPROM盒時,需要花費一定的時間,務必請注意。
4) RAM文件寄存器 通道分配 D6000~D7999,共2000點。
驅動特殊輔助繼電器M8074,由于采用掃描被禁止,上述的數據寄存 器可作為文件寄存器處理,用BMOV指令傳送數據(寫入或讀出)。
5)特殊用寄存器 通道分配 D8000~D8255,共256點。
是寫入特定目的的數據或已經寫入數據寄存器,其內容在電源接通時,寫入初始化值(一般先清零,然后由系統ROM來寫入)。
§4 FX2N系列的基本邏輯指令
基本邏輯指令是PLC中最基本的編程語言,掌握了它也就初步掌握了PLC的使用方法,各種型號的PLC的基本邏輯指令都大臺大同小異,現在我們針對FX2N系列,逐條學習其指令的功能和使用方法,。每條指令及其應用實例都以梯形圖和語句表兩種編程語言對照說明。
一、 輸入輸出指令(LD/LDI/OUT)
下面把LD/LDI/OUT三條指令的功能、梯形圖表示形式、操作元件以列表的形式加以說明:
符號 功 能 梯形圖表示 操作元件
LD(取) 常開觸點與母線相連 X,Y,M,T,C,S
LDI(取反) 常閉觸點與母線相連 X,Y,M,T,C,S
OUT(輸出) 線圈驅動 Y,M,T,C,S,F
LD與LDI指令用于與母線相連的接點,此外還可用于分支電路的起點。
OUT 指令是線圈的驅動指令,可用于輸出繼電器、輔助繼電器、定時器、計數器、狀態寄存器等,但不能用于輸入繼電器。輸出指令用于并行輸出,能連續使用多次。
X000 Y000 地址 指令 數據
0000 LD X000
0001 OUT Y000
二、觸點串連指令(AND/ANDI)、并聯指令(OR/ORI)
符號(名稱) 功 能 梯形圖表示 操作元件
AND(與) 常開觸點串聯連接 X,Y,M,T,C,S
ANDI(與非) 常閉觸點串聯連接 X,Y,M,T,C,S
OR(或) 常開觸點并聯連接 X,Y,M,T,C,S
ORI ( 或非) 常閉觸點并聯連接 X,Y,M,T,C,S
AND、ANDI指令用于一個觸點的串聯,但串聯觸點的數量不限,這兩個指令可連續使用。
OR、ORI是用于一個觸點的并聯連接指令。
X001 X002 Y001 地址 指令 數據
0002 LD X001
X003 0003 ANDI X002
0004 OR X003
0005 OUT Y001
三、電路塊的并聯和串聯指令(ORB、ANB)
符號(名稱) 功 能 梯形圖表示 操作元件
ORB(塊或) 電路塊并聯連接 無
ANB(塊與) 電路塊串聯連接 無
含有兩個以上觸點串聯連接的電路稱為"串聯連接塊",串聯電路塊并聯連接時,支路的起點以LD或LDNOT指令開始,而支路的終點要用ORB指令。ORB指令是一種獨立指令,其后不帶操作元件號,因此,ORB指令不表示觸點,可以看成電路塊之間的一段連接線。如需要將多個電路塊并聯連接,應在每個并聯電路塊之后使用一個ORB指令,用這種方法編程時并聯電路塊的個數沒有限制;也可將所有要并聯的電路塊依次寫出,然后在這些電路塊的末尾集中寫出ORB的指令,但這時ORB指令最多使用7次。
將分支電路(并聯電路塊)與前面的電路串聯連接時使用ANB指令,各并聯電路塊的起點,使用LD或LDNOT指令;與ORB指令一樣,ANB指令也不帶操作元件,如需要將多個電路塊串聯連接,應在每個串聯電路塊之后使用一個ANB指令,用這種方法編程時串聯電路塊的個數沒有限制,若集中使用ANB指令,最多使用7次。
ANB
X000 X002 X003 Y006
X001 X004 X005
ORB
X006
X003
地 址 指 令 數 據
0000 LD X000
0001 OR X001
0002 LD X002
0003 AND X003
0004 LDI X004
0005 AND X005
0006 OR X006
0007 ORB
0008 ANB
0009 OR X003
0010 OUT Y006
四、程序結束指令(END)
符號(名稱) 功 能 梯形圖表示 操作元件
END(結束) 程序結束 無
在程序結束處寫上END指令,PLC只執行第一步至END之間的程序,并立即輸出處理。若不寫END指令,PLC將以用戶存貯器的第一步執行到最后一步,因此,使用END指令可縮短掃描周期。另外。在調試程序時,可以將END指令插在各程序段之后,分段檢查各程序段的動作,確認無誤后,再依次刪去插入的END指令。
其他的一些指令,如置位復位、脈沖輸出、清除、移位、主控觸點、空操作、跳轉指令等,同學們可以參考一些課外書,在這里我們不詳細介紹了。
下面同學們可練習由梯形圖寫出與之對應的助記符形式的指令。并由后面的GPP軟件傳輸到PLC中,實時運行。
1)
X000 X001 X002 X003 Y000
X004
X005
2)
X000 X001 X004 X005 Y000
X002 X003 X006 X007
3)
X000 X001 X002 Y000
X003 X004 X005
X006 X007
文章版權歸西部工控xbgk所有,未經許可不得轉載。