傳統(tǒng)的plc編程語言只有兩種,指令表(IL)及梯形圖(LD),有的稱梯形邏輯圖(LLD)。而今為便于各類型的工程技術(shù)人員都能使用PLC,PLC廠商都增加了它的編程語言。國際電工組織也制定與幾次修訂了plc編程語言國際標準。并在1993年做了全面修訂后稱之為IEC 61131-3的修訂版。我國在1995年11月發(fā)布了GB/T 15969-1/2/3/4標準,與IEC 61131-1/2/3/4等同。該標準推薦了6種編程語言,除了指令表及結(jié)構(gòu)化文本(ST)為文字語言,還有梯形圖、功能塊圖(FBD)、連續(xù)功能圖(CFC)及順序功能圖(SFC)等圖形語言。
不同型號的PLC編程軟件對編程語言的支持種類是不同的,早期的PLC僅僅支持梯形圖編程語言和指令表編程語言。目前的PLC對梯形圖(LD)、指令表(STL)、功能模塊圖(FBD)編程語言都以支持。
目前,IEC 61131-3編程語言不僅用于PLC,而且還用于集散型控制系統(tǒng)、工業(yè)控制計算機、數(shù)控系統(tǒng)和遠程終端單元。
由于這個標準的建立是在PLC已廣泛使用之后,加上它不是強制性標準,所以,有些老的PLC廠商還是在原來語言的基礎(chǔ)上做了擴展,并沒有完全采用這個標準。再就是,即使語言相同,但細節(jié)還是有不少差異。
倒是國產(chǎn)PLC,如和利時公司的LM、LK系列機,是在有了標準之后才開發(fā)的,能全面采用這個標準。再就是ABB公司的PLC也使用標準規(guī)定的6中語言編程。
下面就給大家簡要介紹一番:
1.指令表(IL)
指令表語言是PLC編程最基本的語言。但是,用它編的程序,可讀性較差,目前已不常用。故不在此做介紹。
指令表編程語言是與匯編語言類似的一種助記符編程語言,和匯編語言一樣由操作碼和操作數(shù)組成。在無計算機的情況下,適合采用PLC手持編程器對用戶程序進行編制。同時,指令表編程語言與梯形圖編程語言圖一一對應(yīng),在PLC編程軟件下可以相互轉(zhuǎn)換。
指令表表編程語言的特點是:采用助記符來表示操作功能,具有容易記憶,便于掌握;在手持編程器的鍵盤上采用助記符表示,便于操作,可在無計算機的場合進行編程設(shè)計;與梯形圖有一一對應(yīng)關(guān)系。其特點與梯形圖語言基本一致。
2.結(jié)構(gòu)化文本語言(ST)
ST語言與BASIC語言、PASCAL語言或C語言等類似。它沒有單一的指令,只有由一組指令構(gòu)成的含義完整的各種語句。具體語句有賦值語句、條件語句、選擇語句、循環(huán)語句及其他語句(EXIT語句、RETURN語句、功能塊調(diào)用語句等)。
結(jié)構(gòu)化文本語言是用結(jié)構(gòu)化的描述文本來描述程序的一種編程語言。它是類似于高級語言的一種編程語言。在大中型的PLC系統(tǒng)中,常采用結(jié)構(gòu)化文本來描述控制系統(tǒng)中各個變量的關(guān)系。主要用于其他編程語言較難實現(xiàn)的用戶程序編制。
結(jié)構(gòu)化文本編程語言采用計算機的描述方式來描述系統(tǒng)中各種變量之間的各種運算關(guān)系,完成所需的功能或操作。大多數(shù)PLC制造商采用的結(jié)構(gòu)化文本編程語言與BASIC語言、PASCAL語言或C
語言等高級語言相類似,但為了應(yīng)用方便,在語句的表達方法及語句的種類等方面都進行了簡化。結(jié)構(gòu)化文本編程語言的特點:采用高級語言進行編程,可以完成較復(fù)雜的控制運算;需要有一定的計算機高級語言的知識和編程技巧,對工程設(shè)計人員要求較高。直觀性和操作性較差。
不同品牌PLC的ST語言所提供的函數(shù)、運算符可能略有不同。
ST語言功能比圖形語言強,但不如圖形語言直觀,目前用的還不大普及。如歐姆龍plc只是在自編功能塊的程序中才可使用它。
同樣為ST語言,各PLC廠商的細節(jié)不完全一樣。
3.梯形圖(LD)
梯形圖語言是PLC程序設(shè)計中最常用的編程語言。它是與繼電器線路類似的一種編程語言。由于電氣設(shè)計人員對繼電器控制較為熟悉,因此,梯形圖編程語言得到了廣泛的歡迎和應(yīng)用。
梯形圖編程語言的特點是:與電氣操作原理圖相對應(yīng),具有直觀性和對應(yīng)性;與原有繼電器控制相一致,電氣設(shè)計人員易于掌握。
梯形圖編程語言與原有的繼電器控制的不同點是,梯形圖中的能流不是實際意義的電流,內(nèi)部的繼電器也不是實際存在的繼電器,應(yīng)用時,需要與原有繼電器控制的概念區(qū)別對待。
梯形圖的左母線好像電氣原理圖的電源線一樣,一般不直接與輸出類指令(相當于電氣原理圖的負載)相連,中間總要有能建立邏輯條件的一些指令(相當于電氣原理圖的控制元件)。但有的PLC也允許這么做。
用梯形圖符號編的PLC程序,很像電氣原理圖。如上圖所示。圖b為施耐德公司Naza PLC用的梯形圖。
4.功能塊圖(FBD)
下圖所示為與IL語言程序?qū)?yīng)的梯形圖程序
FBD語言(一種對應(yīng)于邏輯電路的圖形語言),與電子線路圖中的信號流圖非常相似。FBD廣泛地用于過程控制。
FBD語言是以功能模塊為單位,描述控制功能。特別是控制規(guī)模較大、控制關(guān)系較復(fù)雜的系統(tǒng),用它表達將更為方便。
目前,PLC廠商推出一些高功能及高性能的硬件模塊的同時,多提供與其有關(guān)的功能塊圖程序,這為用戶使用這些硬件及進行編程提供了很大方便。
FBD語言占用內(nèi)存較大,執(zhí)行時間較長,因此,這種語言多只在大、中型可編程序控制器和集散控制系統(tǒng)的編程和組態(tài)中采用。
功能模塊圖語言是與數(shù)字邏輯電路類似的一種PLC編程語言。采用功能模塊圖的形式來表示模塊所具有的功能,不同的功能模塊有不同的功能。
功能模塊圖編程語言的特點:功能模塊圖程序設(shè)計語言的特點是:以功能模塊為單位,分析理解控制方案簡單容易;功能模塊是用圖形的形式表達功能,直觀性強,對于具有數(shù)字邏輯電路基礎(chǔ)的設(shè)計人員很容易掌握的編程;對規(guī)模大、控制邏輯關(guān)系復(fù)雜的控制系統(tǒng),由于功能模塊圖能夠清楚表達功能關(guān)系,使編程調(diào)試時間大大減少。
5.連續(xù)功能圖(CFC)
CFC與FBD類似,也是按需要選用種種功能塊。所不同的是,它更靈活,塊的位置可任意擺放,特別有信號反饋時,畫起來更方便。
為了塊的執(zhí)行有明確的順序,它的每個塊的右上角都標有序號。但在實際表達時,這個標號也可選擇不顯示。
FBD及CFC語言在dcs系統(tǒng)編程中用得較多。此外,由于這兩種語言差別不大,有時,僅使用FBD語言。因而,有的也把IEC 61131-3自動化編程語言說成5種。
6.順序功能圖(SFC)
SFC語言以描述控制程序的順序為特征,以圖形方式,簡單、清楚地描述系統(tǒng)的所有現(xiàn)象,并能對系統(tǒng)中存有的像死鎖、不安全等反常現(xiàn)象進行分析和建模,并可在此基礎(chǔ)上編程。所以,得到了廣泛的應(yīng)用。
其實,SFC語言僅僅是一種組織程序的圖形化方式。其實際使用要與其它語言配合,否則無法實現(xiàn)其功能。所以,嚴格地講,它不能算是完整的編程語言。
1)組成步(Step)
用方框表示,分有初始步、活動步、不活動(休止)步三種。一個步是否為活動步,即是否處于激活狀態(tài),則取決于上一步及與其相應(yīng)的轉(zhuǎn)移。
動作(Action)
動作是步的組成部分,一個步含有一個或多個動作,用一個附加在步上的矩形框來表示。每一動作中的程序代碼都可以用IEC的任一語言如ST、FBD、LD或IL來編寫。每一動作還有一個修飾詞(Qualifier),用來確定步激活時其動作什么時候執(zhí)行或終止。
有向連線
從上到下、從左到右的步間連線。也可用加箭頭做非上下、左右的步間連線。
轉(zhuǎn)移
在有向連線上的垂直短線。與轉(zhuǎn)移相關(guān)的邏輯條件,用文字、布爾代數(shù)表達式、圖形符號標注在轉(zhuǎn)移短線旁。
2)SFC轉(zhuǎn)移規(guī)則
步的轉(zhuǎn)移指的是有向連線相連的前后步激活狀態(tài)的轉(zhuǎn)換。
步間轉(zhuǎn)移的規(guī)則是:
①步間的轉(zhuǎn)移邏輯條件為真;
②被轉(zhuǎn)移步的前一步是活動的。
不滿足此兩條件,將不轉(zhuǎn)移。
為了啟動順序功能流程圖程序的執(zhí)行,總是要指定一個初始步,其標志為S0,是程序運行開始時被激活的那個步。有個這個初始步,則隨著相應(yīng)轉(zhuǎn)移邏輯條件滿足,流程圖中步的激活狀態(tài)將逐步轉(zhuǎn)換,直至最后一步被激活,或根據(jù)有向線指定路線不停地循環(huán)轉(zhuǎn)換。
3)SFC主要形式
根據(jù)結(jié)構(gòu)的不同,可分為以下幾種形式:單序列控制、并行序列控制、分支結(jié)構(gòu)序列、轉(zhuǎn)移序列等。
下圖所示為一段SFC語言編寫的程序。
同樣稱SFC語言,但有的是合乎標準的,如歐姆龍CJ2所用的,其Action有以上修飾詞。有的沒有,使用時要看具體軟件的說明。
順序功能流程圖語言是為了滿足順序邏輯控制而設(shè)計的編程語言。編程時將順序流程動作的過程分成步和轉(zhuǎn)換條件,根據(jù)轉(zhuǎn)移條件對控制系統(tǒng)的功能流程順序進行分配,一步一步的按照順序動作。每一步代表一個控制功能任務(wù),用方框表示。在方框內(nèi)含有用于完成相應(yīng)控制功能任務(wù)的梯形圖邏輯。這種編程語言使程序結(jié)構(gòu)清晰,易于閱讀及維護,大大減輕編程的工作量,縮短編程和調(diào)試時間。用于系統(tǒng)的規(guī)模校大,程序關(guān)系較復(fù)雜的場合。
順序功能流程圖編程語言的特點:以功能為主線,按照功能流程的順序分配,條理清楚,便于對用戶程序理解;避免梯形圖或其他語言不能順序動作的缺陷,同時也避免了用梯形圖語言對順序動作編程時,由于機械互鎖造成用戶程序結(jié)構(gòu)復(fù)雜、難以理解的缺陷;用戶程序掃描時間也大大縮短。