王保飛
【摘要】IEC (國際電工委員會)61131-3是IEC61131國際標準的第三部分,是第一個為工業(yè)自動化控制系統(tǒng)的軟件設(shè)計提供標準化編程語言的國際標準。本文通過對IEC61131-3標準的深入分析并通過舉例,探討自動化工程師在編寫PLC程序時如何符合國際標準。如何編寫程序才能使程序具備可移植性。
【關(guān)鍵詞】IEC61131-3 國際電工委員會 PLC 編程語言
前言:在開發(fā)PLC(Programmable Logic Controller)的早期階段,并沒有一個統(tǒng)一的國際標準。不同的自動化制造廠依據(jù)自己的習(xí)慣,使用自己的編程語言。這些編程語言不論從內(nèi)容上還有形式上來看都不盡相同。然而美國公司卻更加喜歡由繼電器控制邏輯而衍生的梯形圖語言和控制鼓。法國公司則使用了除梯形圖語言之外的另一種語言GRAFCET語言,這種語言更加適合完成順序控制。這對PLC程序的編制帶來了不便。為此國際電工技術(shù)委員會IEC于1993年正式頒布了IEC 1131-3的國際標準。并由IEC的第七工作組在其基礎(chǔ)上制定了新的IEC61131-3的標準。
一、編程語言
結(jié)合各大公司的PLC系統(tǒng),使標準具有更加寬泛的應(yīng)用范圍。IEC 61131-3共定義了兩大類共計5種編程語言。①指令表(Instruction List,IL);②結(jié)構(gòu)化文本(Structured Text Language,STL);③梯形圖(Ladder Diagram,LD);④功能塊圖(Function Block Diagram,F(xiàn)BD);⑤順序功能圖(Sequential Function Chart,SFC)。
二、文本類
文本類語言顧名思義就是編寫一條接一條的文本指令。而后通過這些指令形成有效地控制邏輯。文本類語言包含指令表與結(jié)構(gòu)化文本兩個部分。
(一)指令表(Instruction List)
指令表是類似組合語言的低階語言。它與匯編語言有些相似。雖然指令表是最單調(diào)的編程語言,編程可閱讀性差,不利用非計算機專業(yè)工程師理解,但是其程序的高效性與執(zhí)行速度是其它語言所不具備的。在IEC 61131-3標準中指令表定義了四類操作符:一般操作符、比較操作符、跳轉(zhuǎn)操作符和調(diào)用操作符。
(1)一般操作符在程序中經(jīng)常使用,是構(gòu)成程序的重要組成。例如:轉(zhuǎn)入指令LD ;邏輯指令A(yù)ND(與)、OR(或);算數(shù)指令A(yù)DD(加)、SUB(減)、MUL(乘)、DIV(除)等。
(2)比較操作符是用于比較大小的,它包括:GT(大于)、LE(小于)、EQ(等于)等。
(3)程序控制操作符:JMP(跳轉(zhuǎn))、CALL(調(diào)用)等。
(二)結(jié)構(gòu)化文本(Structured Text)
結(jié)構(gòu)化文本是一種高級程序語言,它有些類似Pasical程序語言,其語法也類似Pasical。它不采用底層的面相機器操作符,它具有大量的語句可以用來描述功能,功能塊和程序的行為,還可以在順序功能流程圖中描述步、動作和轉(zhuǎn)變的行為。相對于指令表來說結(jié)構(gòu)化(ST)語言更是易學(xué)易用。此外,結(jié)構(gòu)化文本語言還易讀易理解,特別是使用有實際意義的標識符、批注來注釋時,更加容易理解程序的含義。結(jié)構(gòu)化文本語言的典型語句類型包括:賦值語句、程序控制語句、判斷選擇語句、循環(huán)語句等。
(1)結(jié)構(gòu)化文本定義了一些操作符主用于算數(shù)運算與邏輯運算。例如:邏輯運算符AND、OR;算數(shù)運算符+、-、*、/、=等;
(2)賦值語句不但可以完成簡單的賦值也可以完成較為復(fù)雜的數(shù)組或結(jié)構(gòu)賦值。執(zhí)行賦值操作時,等號左邊是操作數(shù),右邊是被賦予的表達式的值,例如:%MW52:=9527;
(3)程序控制語句用于在程序中調(diào)用功能塊。在功能塊被調(diào)用時,輸入?yún)?shù)會被分配為默認值;執(zhí)行完畢后,輸入?yún)?shù)值保留為最后一次調(diào)用的值。功能塊調(diào)用和函數(shù)調(diào)用不同,函數(shù)調(diào)用時一個表達式,兒功能塊調(diào)用是一條語句,他沒有返回值。
(4)判斷選擇語句的功能是,某一條件滿足時執(zhí)行相應(yīng)的選擇語句。例如:IF…THEN…ELSE條件語句,該選擇語句依據(jù)不同的條件分別執(zhí)行相應(yīng)THEN及ELSE語句;CASE 條件語句,該選擇語句的執(zhí)行方向取決于CASE語句的條件, 并有一返回值。
三、圖形類
圖形類語言指使用者以拖拽拼圖的方式開發(fā)出應(yīng)用程序,不需要任何的代碼編寫。這樣就大大降低了PLC編程的門檻。圖形類編程語言主要包括:梯形圖、順序功能圖、功能塊圖。
(一)梯形圖 (LaDder Logic)
梯形圖起源于美國,它最初是用來表示繼電器邏輯關(guān)系的,直觀易理解,很容易被電氣工作人員所掌握。它特別適用于開關(guān)量邏輯控。梯形圖包含一系列的網(wǎng)絡(luò)(類似電路中的正負極),網(wǎng)絡(luò)連接各種類型的觸點、線圈和用方框表示的功能塊。梯形圖編程就像設(shè)計電路。
梯形圖中的許多元件符號仍舊使用繼電器這一名稱,例如輸入繼電器、輸出繼電器、內(nèi)部輔助繼電器等,但是它們不是真實的物理繼電器,而是在用戶程序中使用的編程元件。
(二)功能塊圖(Function Block Diagram)
功能塊圖起源于信號處理領(lǐng)域。功能塊圖是一種類似于數(shù)字邏輯門電路的編程語言,有數(shù)字電路基礎(chǔ)的人比較容易掌握。該編程語言用類似與門、或門和非門的方框來表示邏輯運算關(guān)系,它將各種功能塊連接起來實現(xiàn)所需控制的功能,其圖形由功能、功能塊和連接元素組成。方框的左邊為邏輯運算的輸入變量,右邊為輸出變量,信號由左向右流動。
(三)順序功能圖(Sequential Function Chart)
順序功能圖源自于法國,它將整個控制流程分割為一系列的控制步,并描述程序的執(zhí)行順序和控制條件。順序功能圖是一種位于其他編程語言之上的圖形語言,主要用來編制順序控制程序。順序功能圖提供了一種組織程序的圖形方向,可以用來描述系統(tǒng)的功能,根據(jù)它可以很容易畫出梯形圖。
四、總結(jié)
IEC61161-3繼承了在PLC發(fā)展過程中的多種特點明顯的多樣化編程語言,為PLC技術(shù)的進一步發(fā)展提供了廣闊的空間。我們在編程過程中盡可能的遵循這一標準,為PLC程序在不同機型之間的移植提供便利。
參考文獻:
[1]IEC 61131-3 編程語言,2003.