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