傳統(tǒng)的編程語言只有兩種,指令表(il)及梯形圖(ld),有的稱梯形邏輯圖(lld)。而今為便于各類型的工程技術人員都能使用plc,plc廠商都增加了它的編程語言。國際組織也制定與幾次修訂了語言國際標準。并在1993年做了全面修訂后稱之為iec 61131-3的修訂版。我國在1995年11月發(fā)布了gb/t 15969-1/2/3/4標準,與iec 61131-1/2/3/4等同。該標準推薦了6種編程語言,除了指令表及結構化文本(st)為文字語言,還有梯形圖、功能塊圖(fbd)、連續(xù)功能圖(cfc)及順序功能圖(sfc)等圖形語言。
目前,iec 61131-3編程語言不僅用于plc,而且還用于集散型控制系統(tǒng)、工業(yè)控制計算機、數(shù)控系統(tǒng)和遠程終端單元。
由于這個標準的建立是在plc已廣泛使用之后,加上它不是強制性標準,所以,有些老的plc廠商還是在原來語言的基礎上做了擴展,并沒有完全采用這個標準。再就是,即使語言相同,但細節(jié)還是有不少差異。
倒是國產plc,如和利時公司的lm、lk系列機,是在有了標準之后才開發(fā)的,能全面采用這個標準。再就是abb公司的plc也使用標準規(guī)定的6中語言編程。
下面就給大家簡要介紹一番:
1.指令表(il)
指令表語言是plc編程最基本的語言。但是,用它編的程序,可讀性較差,目前已不常用。故不在此做介紹。
2.結構化文本語言(st)
st語言與basic語言、pascal語言或c語言等類似。它沒有單一的指令,只有由一組指令構成的含義完整的各種語句。具體語句有賦值語句、條件語句、選擇語句、循環(huán)語句及其他語句(exit語句、return語句、功能塊調用語句等)。

不同品牌plc的st語言所提供的函數(shù)、運算符可能略有不同。
st語言功能比圖形語言強,但不如圖形語言直觀,目前用的還不大普及。如只是在自編功能塊的程序中才可使用它。
同樣為st語言,各plc廠商的細節(jié)不完全一樣。
3.梯形圖(ld)
梯形圖來源于美國,是一種基于梯級的圖形符號布爾語言。
梯形圖語言與原理圖相對應,與原有邏輯控制技術相一致。與原有的繼電器邏輯控制技術不同的是,梯形圖中的功率流不是實際意義的電流,內部的繼電器也不是實際存在的繼電器。
梯形圖的左母線好像電氣原理圖的線一樣,一般不直接與輸出類指令(相當于電氣原理圖的負載)相連,中間總要有能建立邏輯條件的一些指令(相當于電氣原理圖的控制元件)。但有的plc也允許這么做。

用梯形圖符號編的plc程序,很像電氣原理圖。如上圖所示。圖b為施耐德公司naza plc用的梯形圖。
下圖所示為與il語言程序對應的梯形圖程序

關于梯形圖的文章有很多,在此不再贅述。
4.功能塊圖(fbd)
fbd語言(一種對應于邏輯電路的圖形語言),與線路圖中的信號流圖非常相似。fbd廣泛地用于過程控制。
fbd語言是以功能模塊為單位,描述控制功能。特別是控制規(guī)模較大、控制關系較復雜的系統(tǒng),用它表達將更為方便。

目前,plc廠商推出一些高功能及高性能的硬件模塊的同時,多提供與其有關的功能塊圖程序,這為用戶使用這些硬件及進行編程提供了很大方便。
fbd語言占用內存較大,執(zhí)行時間較長,因此,這種語言多只在大、中型可編程序控制器和的編程和組態(tài)中采用。
5.連續(xù)功能圖(cfc)
cfc與fbd類似,也是按需要選用種種功能塊。所不同的是,它更靈活,塊的位置可任意擺放,特別有信號反饋時,畫起來更方便。
為了塊的執(zhí)行有明確的順序,它的每個塊的右上角都標有序號。但在實際表達時,這個標號也可選擇不顯示。

fbd及cfc語言在系統(tǒng)編程中用得較多。此外,由于這兩種語言差別不大,有時,僅使用fbd語言。因而,有的也把iec 61131-3自動化編程語言說成5種。
6.順序功能圖(sfc)
sfc語言以描述控制程序的順序為特征,以圖形方式,簡單、清楚地描述系統(tǒng)的所有現(xiàn)象,并能對系統(tǒng)中存有的像死鎖、不安全等反常現(xiàn)象進行分析和建模,并可在此基礎上編程。所以,得到了廣泛的應用。
其實,sfc語言僅僅是一種組織程序的圖形化方式。其實際使用要與其它語言配合,否則無法實現(xiàn)其功能。所以,嚴格地講,它不能算是完整的編程語言。
1)組成
步(step)
用方框表示,分有初始步、活動步、不活動(休止)步三種。一個步是否為活動步,即是否處于激活狀態(tài),則取決于上一步及與其相應的轉移。
動作(bbbbbb)
動作是步的組成部分,一個步含有一個或多個動作,用一個附加在步上的矩形框來表示。每一動作中的程序代碼都可以用iec的任一語言如st、fbd、ld或il來編寫。每一動作還有一個修飾詞(qualifier),用來確定步激活時其動作什么時候執(zhí)行或終止。
有向連線
從上到下、從左到右的步間連線。也可用加箭頭做非上下、左右的步間連線。
轉移
在有向連線上的垂直短線。與轉移相關的邏輯條件,用文字、布爾代數(shù)表達式、圖形符號標注在轉移短線旁。
2)sfc轉移規(guī)則
步的轉移指的是有向連線相連的前后步激活狀態(tài)的轉換。
步間轉移的規(guī)則是:
①步間的轉移邏輯條件為真;
②被轉移步的前一步是活動的。
不滿足此兩條件,將不轉移。
為了啟動順序功能流程圖程序的執(zhí)行,總是要指定一個初始步,其標志為s0,是程序運行開始時被激活的那個步。有個這個初始步,則隨著相應轉移邏輯條件滿足,流程圖中步的激活狀態(tài)將逐步轉換,直至最后一步被激活,或根據(jù)有向線指定路線不停地循環(huán)轉換。
3)sfc主要形式
根據(jù)結構的不同,可分為以下幾種形式:單序列控制、并行序列控制、分支結構序列、轉移序列等。
下圖所示為一段sfc語言編寫的程序。

同樣稱sfc語言,但有的是合乎標準的,如歐姆龍cj2所用的,其bbbbbb有以上修飾詞。有的沒有,使用時要看具體軟件的說明。










