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