可編程邏輯控制器(PLC)有很多編程語言可供選擇。有種說法,標準的偉大之處在于有很多選擇!盡管這很諷刺,但在IEC 61131-3編程語言中,有多種語言標準可供選擇確實是一個優勢。
在參加我的培訓班時,很多學生抱著這樣一種心態:選擇最適合自己的語言,然后專門學習該語言。上課伊始,他們經常會問我會推薦適用哪種語言。或者,“最好的語言是哪個?”
圖1:IEC 61131-3編程語言提供了適合特定需求的語言。
我沒有回答,問他們一個問題:“在阿拉伯數字中,哪個數字最好?”或“英語中,哪個詞最好?” 再比如:辦公室軟件中,哪個工具最好?是文檔編輯器、演示文稿編輯器,還是電子表格編輯器?雖然可以使用文檔編輯器創建演示文稿和電子表格,但這是正確的方法嗎?
圖2:該圖比較了在Codesys中實現復雜布爾邏輯的不同語言。
使用一種工具實現多種目的,需要學習各種技巧,這是否值得付出?僅學習該工具對工作有用的主要功能,是不是更有效?與辦公軟件一樣,為應用選擇最佳編程語言是最有效的,可以避免很多麻煩。當使用的IEC 61131-3編程語言能夠充分發揮其語言的優勢時,PLC的編程和維護功能就會得到加強。
梯形圖編程
梯形圖(LD)編程的歷史,可以追溯到大約100年前的繼電器梯形邏輯(RLL),它主要用于描述電氣元件系統(如繼電器、計時器和電動機)。在自動化時代初期PLC逐步替換繼電器和計時器時,創建一種用戶熟悉并與被替換的工具相似的編程語言非常重要。
不幸的是,控制器變得越來越強大,能夠實現的功能也已經遠遠超過繼電器和計時器,LD語言被用于各種新的場景,而這并不是LD所擅長的,因此效果也不是特別理想。
圖3:該圖顯示了順序功能圖的編程組件。
PLC供應商提供新的、更適合PLC和可編程自動化控制器(PAC)應用的語言的速度比較緩慢,使這種情況進一步惡化。對于源自北美的控制器而言尤其如此,這可以解釋在全球范圍內,LD持久受歡迎的程度為什么會有所差異。
LD編程的優勢是什么?為什么它能持久受歡迎?關鍵就是圖形化。而通常來說工程師是更傾向于圖形化思維的。
起初,大多數LD編程的替代方法都是基于文本的語言,這些語言與工程師的圖形化思維不會產生共鳴,其結果就是不愿從LD轉向其它語言。幸運的是,這種情況正在發生變化。
LD仍然是一門偉大的語言,它的初衷是執行復雜的布爾邏輯。在這個領域內,LD邏輯易于設計且易于調試。要確定為什么結果與預期不符,有多容易?在LD語言中,只需要觀察藍色實心觸點的路徑在何處中斷就可以快速獲得答案。
順序功能圖編程
順序功能圖(SFC)是一種圖形語言,非常適合表示狀態機(state machine),并且像LD語言一樣,它吸引了工程師的圖形化思維天性。
圖4:基于Codesys連續功能圖語言,展示了一個基于塊的編程設計示例。
狀態機的歷史可以追溯到很多年前,但是直到最近才被用于工業編程。狀態機是表示系統行為的一種非常強大的方法,可用于表達行為取決于過去歷史記錄的系統邏輯,例如:
1.設置線圈或復位線圈;
2.封裝邏輯(布爾反饋);
3.由代碼設置的內部標志,用于決定未來的行為。
實際上,即使是簡單的TON On-Timer和R-Trig one-shot都是狀態機。它們的下一個行為取決于先前的輸入和行為。與其它編碼技術相比,狀態機具有許多優勢:
1.它們易于設計,因為它清楚地描述了系統可能的狀態,系統如何在這些狀態之間轉換,系統在這些狀態下應采取的行動。
2.在運行時,可以很容易地確定系統處于什么狀態,在該狀態下正在做什么,以及在什么條件下系統會切換到下一個狀態(或者過程中出了什么問題,導致無法切換到下一個狀態)。
3.促進構思周密且組織良好的設計。這樣可以確保所有可能的事件都已得到妥善處理(就不會有人半夜三更把你從床上叫起來,去修復無法正確處理異常工況的代碼)。
4.易于確定是否已經測試了所有可能事件。只需打印出SFC,并在執檢查時劃掉每個狀態和切換條件即可。完成所有工作后,測試就完成了(程序員的置信度為100%)。
如何實現狀態機?
幾乎任何語言都可以實現狀態機,但它們都需要特定的編碼技術,包括步(step)、轉換(transition)、分支/跳轉(branch/jump)和動作(action)。
步描述了系統可以駐留的狀態;轉換指示系統何時應從上一步轉移至下一步;分支和跳轉指示下一步應該是什么;動作指定在該步期間(進入或退出該步)應執行的操作。
由于其圖形化屬性和工作的專業性,SFC語言是狀態機最自然的選擇。對于那些需求異常復雜或要求特別靈活的系統,狀態機也可以用基于文本的語言來實現。對于只能使用LD的企業,狀態機甚至可以在LD中實現,方法是為每個狀態使用一個線圈,轉移邏輯為每個線圈通電/斷電,將系統從一個狀態轉移到下一個狀態,以及利用使用狀態線圈的獨立邏輯來執行動作。
一些供應商還可以用統一建模語言(UML)來實現狀態圖,作為SFC的更強大、更靈活的替代方法,但這需要更長的學習曲線,而且在工業控制領域中的接受度有限。
對于狀態機,語言的選擇是次要的,所用技術的選擇更重要。在SFC中,該語言強制使用狀態機技術。在其它語言中,使用的技術取決于工程師制定的規則。
圖5:結構引腳可以減少不必要的細節和混亂,從而增強了圖表的可讀性。
功能塊圖編程
功能塊圖(FBD)是一種圖形語言,符合工程師的圖形化思維。來自Codesys(以前被稱為3S-Smart Software Solutions)的集成開發環境提供了兩種FBD,即傳統的IEC 61131-3 FBD和類似但更靈活的連續功能塊圖(CFC),CFC還沒有正式成為IEC 61131-3的一部分。CFC是FBD的超集,具有兩大優勢:
1.基于塊的功能編程(執行布爾和數學運算);
2.分層設計(調用其它功能和功能塊)。
·基于塊的編程
基于塊的設計由預定義功能組件組成,這些組件連接在一起執行布爾邏輯、數學計算或二者兼而有之。當輸出是輸入的函數時(換句話說,當沒有狀態變量,例如布爾反饋、設置/復位線圈或標志時),CFC塊編程非常出色。當同時使用無狀態功能和基于狀態的功能時,請結合使用CFC和SFC。
因為連接性是用功能塊之間的線來表示的,所以很容易理解信息流以及信息是如何沿著其路徑進行修改的。如果功能開始變得復雜,則應將其分為較小的、更易于管理的子塊。如果塊之間存在大量連接,則可以將這些線連接至數據結構類型的引腳。
結構引腳(structure pin)具有3個優點:
1.在層次化結構設計中,每個層次都消除了不必要的細節,更清晰易于理解;
2.保持較小的功能塊,可以在一頁上查看整個信息流;
3.允許信息流向上游和下游,以進一步減少不必要的細節。
對于以前采用LD實施基于塊或分層功能的PLC程序員來講,CFC提供了一種更為簡潔和靈活的方法。CFC的開發速度更快,而且對于將來負責維護或改進代碼的工程師來說,也更容易理解。
·分層設計
分層設計是一種從很多簡單的構建塊層層設計的實踐。與傳統的扁平化設計相比,分層設計具有許多優點:
1.定制;
2.創建;
3.測試與完善;
4.理解和維護;
5.易于復用。
構建塊技術支持并鼓勵在層次結構的每個級別上,展現同等程度的細節,這就使塊技術更易于設計和理解。這樣,在較高層次的設計中,不必因為展現細節而被弄得雜亂無章,這些細節只在較低層的設計中很重要。在層次結構的每個級別上,分層CFC設計應都具有統一的細節展示。
使用LD作為構建塊語言的傳統方法會存在2個弊端:
1.信息的低密度導致LD設計可能會分布到數10頁上,很難或不可能看到和理解全局;
2.不同層次的細節混雜在同一層次上會十分混亂,這使設計難以理解和維護。
而使用結構化文本的CFC分層設計可以解決這兩個問題,同時保持了LD的圖形特性。這是個兩全其美的解決方案。
分層設計是面向對象的工業編程(OOIP)的關鍵功能。在部署和配置用戶自定義的功能塊以后,CFC編程開始與分布式控制系統(DCS)的編程/組態有點類似,但使用IEC 61131-3程序員可以控制底層的塊。如果某個塊需要較小的改進,程序員就可以執行此操作,而無需費時費力的請DCS供應商介入。
完整的分層PLC設計,可以看作是一棵由分層CFC構成主干和分支的樹。基于塊的CFC、SFC、LD和ST填充樹葉所處位置的詳細功能設計。IEC 61131-3語言共同構成了一個團隊,該團隊比其各個部分的功能更強大。
結構化文本編程
盡管LD、SFC和FBD/CFC語言可以出色的完成其任務,但有些運算并不適合使用圖形化語言。
一些支持使用結構化文本(ST)語言編程的運算包括:
1.迭代運算,例如For、While和Repeat;
2.復雜條件和選擇,例如IF-THEN和CASE;
3.位運算,例如按位與、移位、旋轉;
4.文本字符串運算;
5.具有特殊要求或特別復雜的狀態機;
6.純粹的面向對象編程(調用方法,設置屬性等)。
有許多很好的教程,可指導工程師從其它基于文本的語言過渡到ST。對于那些完全不熟悉基于文本的語言的人來說,Visual Basic教程是一個很好的起點。盡管結構化文本基于Pascal編程語言,但它與VB有非常相似,因此可以參考應用更廣泛的VB教程。
圖6:此處的分層設計是在連續功能圖編程中實現的。
使用最合適的語言編程
要創建有效的工業控制程序,掌握合適的編程語言并知道如何有效使用這些語言非常重要。有很多語言可供PLC選擇,IEC 61131-3編程語言標準也提供了多種選擇。充分利用每種語言的優勢效率會更高,而不是學習一種語言的各種技巧和變通方法來使其適用于所有應用。程序員應為應用選擇最佳語言。
“為了創建有效的工業控制程序,掌握合適的語言,并知道如何有效使用這些語言非常重要。”
編輯:lyn
-
IEC
+關注
關注
2文章
200瀏覽量
28917 -
PLC編程
+關注
關注
46文章
246瀏覽量
37510
發布評論請先 登錄
相關推薦
評論