遲君平(得利滿水處理系統(北京)有限公司,北京 100020)
可編程邏輯控制器(PLC)目前廣泛應用于工業控制系統當中,是自動化工程的主要控制設備。在PLC程序的開發過程中,各種編程方式和開發思想都得到了應用,沒有形成一種統一有效的編程標準。在實際的工業控制項目中,自動化系統中的控制程序編寫比較隨意,往往可讀性較差,控制程序通常有較強的的個人風格;當項目較大,開發成員較多的時候,很難進行團隊協作;控制程序的后期維護很不方便、更遑論功能的擴展。目前的這種狀態已經阻礙了自控系統質量的進一步提高,不適應工業控制項目對編程技術的要求。隨著軟件工程技術的發展,高級語言的編程技術不斷成熟,PLC編程也應該吸收軟件工程技術的成果,提高這方面的技術水平。
PLC編程方法較多,比較常用的有組合邏輯函數法、功能轉移圖法、Petri 網分析法,甚至還有面向對象的PLC程序設計思想,如圖1所示。組合邏輯函數法是一種最基本的設計方法,但不適用于大規模PLC程序開發。功能轉移圖法適合于處理順序、隨機等類型的控制。Petri 網理論雖然不斷發展,但是不能從根本上解決狀態空間隨模型增長而指數性增長的問題,因而不適合復雜和大規模系統模型的分析求解。面向對象的PLC程序設計思想目前應用于PLC編程有一定的困難。還有其它一些編程方法,不再贅述。

圖1 面向對象的PLC編程方法
軟件工程中的結構化思想發展的比較成熟,廣泛應用于高級語言編程中,可以大大提高編程的效率,改善可讀性。同樣,這種思想也可以應用于PLC編程中,通過采用這種方法,可以降低PLC編程的難度,提高開發效率,改善程序的可移植性。目前的PLC開發平臺一般都支持結構化的編程。
結構化程序設計(Structured Programming)是以模塊化設計為中心的軟件設計思想,其概念最早由迪克斯特拉(E.W.Dijikstra)在1969年提出。按照結構化程序設計方法進行程序設計時,先考慮總體設計,后考慮細節設計。復雜的問題一般由若干個簡單的問題構成,可以對其進行分解,設計一些子目標作過渡,逐步細化。復雜的程序通常應該由若干簡單的程序模塊所組成。按照這種方式編寫出的程序清晰易讀,易于理解,程序員能夠進行逐步求精,程序易于證明和測試,程序的正確性得到了保證。
根據結構化編程的思路,一個完整的工藝控制程序,通常可以劃分為三個層次:控制層、設備層、功能層,結構如圖2所示。每個設備模塊對應一臺設備,其內部由幾個不同的功能模塊組成,控制模塊根據工藝流程控制設備模塊依次動作,完成工藝要求。由于模塊相互獨立,因此在設計其中一個模塊時,不會受到其它模塊的牽連,因而可將原來較為復雜的問題化簡為一系列簡單模塊的設計。采用最佳的可能方法設計系統的各個組成部分,然后通過控制模塊將各個設備模塊聯系起來,實現特定的工藝功能。

圖2 工藝控制程序結構圖
針對一個電機設備的控制要求,把PLC編程需要完成的控制任務進行進一步分解,劃分為幾個較小的控制功能,然后針對每個功能分別進行代碼編寫,使之成為不同的功能模塊,每個控制功能采用一個功能模塊完成,該功能模塊只完成一個單一的控制功能,并且與其他模塊的聯系最少且接口簡單,這樣就易于編寫,具有清晰的結構,可降低編程難度,同時獲得較高的程序質量。若干個功能模塊組成設備模塊,不同的設備模塊在控制模塊的控制下按照指定的順序完成工藝功能。一個典型的的電機設備,比如一臺風機或者水泵,設備模塊的組成如圖3所示。

圖3 典型電機設備模塊組成圖
圖3 涉及到的功能模塊在表1中列出,這些基本的功能模塊都采用獨立封裝的形式完成,比如定義為UnityPro中的DFB,Setp7中的FB,或者RSlogix5000中的Add-On-Instructions功能。不同的功能模塊程序可以構成一個功能模塊庫,作為PLC程序庫的一部分,每當進行程序開發時,可以把繁瑣的代碼編寫工作變為搭積木式的開發過程。

表1 模塊功能列表
設備模塊通過調用功能模塊的實例,也定義為DFB、FB或者Add-On-Instructions,表現為獨立封裝的形式,設備模塊的實例則對應到一個實際的設備。通過實例的多重定義和調用,可以如圖4所示的常用程序結構。

圖4 常用程序結構圖
具有這種層次結構的程序代碼,可以方便的進行軟件測試和現場調試,大大減輕自動化工程師的工作負擔和現場壓力,同時程序的后期維護和擴展變得非常容易。程序也往往具有良好的可移植性,并且功能模塊可重復使用,具有較高的可重用性。
目前,編程平臺支持擴展標記語言(XML)是一個發展方向,通過使用XML語言實現編程自動化是未來發展的趨勢,程序中合理的層次結構以及模塊化的編程組件為今后編程自動化打下了良好的基礎。
一臺典型電機設備的設備模塊如圖5所示,是一個DFB模塊,定義了相應的輸入輸出管腳,表現為獨立封裝的形式。設備模塊的內部如圖6所示,由若干個功能模塊組成,功能模塊則是由最基本的梯形圖、指令表或者文本代碼編寫實現。

圖5 設備模塊圖
作為PLC編程人員,要具備這種結構化編程的意識,用于指導自己的編程工作,按照本文介紹的方法來分析問題,解決問題,組織程序。當遇到新問題時,可快速寫出符合需要的PLC程序。作為一名自動化工程師,一方面要掌握各種編程技術技巧,另一方面也要具備成熟的編程思想,來指導自己的編程工作。
通過掌握結構化編程思想,可以加快開發進度,提高項目的開發效率,節省開發時間,同時可以保證程序質量,使編程人員從繁瑣的底層代碼編寫中解脫出來,思想更加自由,去思考一些更為重要的內容。

圖6 設備模塊內部圖
[1] 遲君平, 王斌, 李業友. 模塊化編程方法在PLC程序開發中的應用[J]. 微計算機信息. 2005. 6.
[2] 宋伯生編著. PLC編程理論、算法及技巧[M]. 機械工業出版社. 2005. 2.