遲君平 得利滿水處理系統(tǒng)(北京)有限公司 北京 100020
摘要:本文描述了軟件工程中的結構化思想在PLC編程中的一種運用方法,為自控項目中的PLC編程提供了一種方法論。通過分層次的編程來構成PLC程序,采用這種方法可以實現多人協作,為大型的控制程序進行共同工作,編寫出風格一致,穩(wěn)健可靠的程序,文中通過一個例子對這種方法進行了說明。
Abstract:In this paper, to describe a sort of compose-code method in the PLC programme develop depend on structural idea, and provide one methodology for PLC programme. To according to program layered to constitutes the PLC code.Its may implement multiman-cooperation in develop and work for big project, the composed program have same style and steadily performance. One example be show to explain this method.
關鍵詞:PLC ;結構化編程; 編程思想
Key words: PLC ; Structured programming ; Program idea
作者簡介:
遲君平(1976-),男,漢,畢業(yè)于天津理工學院自動化系,工程師。主要從事自控系統(tǒng)的設計開發(fā)和PLC的編程調試。
1 概述
可編程邏輯控制器(PLC)目前廣泛應用于工業(yè)控制系統(tǒng)當中,是自動化工程的主要控制設備。在PLC程序的開發(fā)過程中,各種編程方式和開發(fā)思想都得到了應用,沒有形成一種統(tǒng)一有效的編程標準。在實際的工業(yè)控制項目中,自動化系統(tǒng)中的控制程序編寫比較隨意,往往可讀性較差,控制程序通常有較強的的個人風格;當項目較大,開發(fā)成員較多的時候,很難進行團隊協作;控制程序的后期維護很不方便、更遑論功能的擴展。目前的這種狀態(tài)已經阻礙了自控系統(tǒng)質量的進一步提高,不適應工業(yè)控制項目對編程技術的要求。隨著軟件工程技術的發(fā)展,高級語言的編程技術不斷成熟,PLC編程也應該吸收軟件工程技術的成果,提高這方面的技術水平。
PLC編程方法較多,比較常用的組合邏輯函數法、功能轉移圖法、Petri 網分析法,甚至還有面向對象的PLC程序設計思想,如圖1所示。組合邏輯函數法是一種最基本的設計方法,但不適用于大規(guī)模PLC程序開發(fā)。功能轉移圖法適合于處理順序、隨機等類型的控制。Petri 網理論雖然不斷發(fā)展,但是不能從根本上解決狀態(tài)空間隨模型增長而指數性增長的問題,因而不適合復雜和大規(guī)模系統(tǒng)模型的分析求解。面向對象的PLC程序設計思想目前應用于PLC編程有一定的困難。還有其他的一些編程方法,不再贅述。
圖1 面向對象的PLC編程方法
軟件工程中的結構化思想發(fā)展的比較成熟,廣泛應用于高級語言編程中,可以大大提高編程的效率,改善可讀性。同樣,這種思想也可以應用于PLC編程中,通過采用這種方法,可以大大降低PLC編程的難度,提高開發(fā)效率,改善程序的可移植性。目前的PLC開發(fā)平臺一般都支持結構化的編程。
2 方法介紹
結構化程序設計(Structured Programming)是以模塊化設計為中心的軟件設計思想,其概念最早由迪克斯特拉(E.W.Dijikstra)在1969年提出。按照結構化程序設計方法進行程序設計時,先考慮總體設計,后考慮細節(jié)設計。復雜的問題一般由若干個簡單的問題構成,可以對其進行分解,設計一些子目標作過渡,逐步細化。復雜的程序,通常應該由若干簡單的程序模塊所組成。按照這種方式編寫出的程序清晰易讀,易于理解,程序員能夠進行逐步求精,程序易于證明和測試,程序的正確性得到了保證。
根據結構化編程的思路,一個完整的工藝控制程序,通常可以劃分為三個層次:控制層、設備層、功能層,結構如圖2所示。每個設備模塊對應一臺設備,每個設備模塊內部由幾個不同的功能模塊組成,控制模塊根據工藝流程控制設備模塊依次動作,完成工藝要求。由于模塊相互獨立,因此在設計其中一個模塊時,不會受到其它模塊的牽連,因而可將原來較為復雜的問題化簡為一系列簡單模塊的設計。采用最佳的可能方法設計系統(tǒng)的各個組成部分,然后通過控制模塊將各個設備模塊聯系起來,實現特定的工藝功能。
圖2 工藝控制程序結構圖
針對一個電機設備的控制要求,把PLC編程需要完成的控制任務進行進一步分解,劃分為幾個較小的控制功能,然后針對每個功能分別進行代碼編寫,就是不同的功能模塊,每個控制功能采用一個功能模塊完成,該功能模塊只完成一個單一的控制功能,并且與其他模塊的聯系最少且接口簡單,這樣就易于編寫,具有清晰的結構,大大降低了編程難度,同時獲得了較高的程序質量。若干個功能模塊組成設備模塊,不同的設備模塊在控制模塊的控制下按照指定的順序完成工藝功能。一個典型的的電機設備,比如一臺風機或者水泵,設備模塊的組成如圖3所示。
圖3涉及到的功能模塊在表1中列出,這些基本的功能模塊都采用獨立封裝的形式完成,比如定義為UnityPro中的DFB,Setp7中的FB,或者RSlogix5000中的Add-On-Instructions功能。不同的功能模塊程序可以構成一個功能模塊庫,作為PLC程序庫的一部分,每當進行程序開發(fā)時,可以把繁瑣的代碼編寫工作變?yōu)榇罘e木式的開發(fā)過程。
表1 模塊功能列表
設備模塊通過調用功能模塊的實例,也定義為DFB、FB或者Add-On-Instructions,表現為獨立封裝的形式,設備模塊的實例則對應到一個實際的設備。通過實例的多重定義和調用,可以如圖4所示的常用程序結構。
圖4 常用程序結構圖
具有這種層次結構的程序代碼,可以方便的進行軟件測試和現場調試,大大減輕自動化工程師的工作負擔和現場壓力,同時程序的后期維護和擴展變得非常容易。程序也往往具有良好的可移植性,并且功能模塊可以重復使用,具有較高的可重用性。
目前,編程平臺支持擴展標記語言(XML)是一個發(fā)展方向,通過使用XML語言實現編程自動化是未來發(fā)展的趨勢,程序中合理的層次結構以及模塊化的編程組件為今后編程自動化打下了良好的基礎。
3 應用說明
一臺典型的電機設備的設備模塊如圖5所示,是一個DFB塊,定義了相應的輸入輸出管腳,表現為獨立封裝的形式。設備模塊的內部如圖6所示,由若干個功能模塊組成,功能模塊則是由最基本的梯形圖、指令表或者文本代碼編寫實現。
圖5 設備模塊圖
圖6 設備模塊內部圖
4 結語
作為PLC編程人員,要具備這種結構化編程的意識,用于指導自己的編程工作,按照這種方法來分析問題,解決問題,組織程序。當遇到新問題時,可快速寫出符合需要的PLC程序。作為一名自動化工程師,一方面要掌握各種編程技術技巧,另一方面也要具備成熟的編程思想,來指導自己的編程工作。
通過掌握結構化編程思想,可以加快開發(fā)進度,提高項目的開發(fā)效率,節(jié)省開發(fā)工日,同時可以保證程序質量,使編程人員可以從繁瑣的底層代碼編寫中解脫出來,思想更加自由,去思考一些更為重要的內容。
參考文獻:
[1] 遲君平,王斌,李業(yè)友.模塊化編程方法在PLC程序開發(fā)中的應用[J]. 微計算機信息.2005.6.
[2] 宋伯生編著.PLC編程理論、算法及技巧[M].機械工業(yè)出版社.2005.2.
摘自《自動化博覽》2011年第四期