常海
摘 要:將面向?qū)ο蟪绦蛟O(shè)計方法應(yīng)用于PLC程序設(shè)計中,可以大大提高編程效率和可維護性。文章給出了一個在STEP7軟件中實現(xiàn)類的抽象與封裝的簡單示例。
關(guān)鍵詞:PLC;面向?qū)ο?;程序設(shè)計
在PLC的編程設(shè)計中,如果外圍設(shè)備很多,則PLC程序設(shè)計將面臨編程效率低、程序維修困難等問題。把“面向?qū)ο蟆钡某绦蛟O(shè)計方法引進PLC程序設(shè)計,可以提高代碼的使用效率,減小程序出錯的可能性。因而提高PLC程序的編程效率和程序的可維護性。
1 傳統(tǒng)PLC程序設(shè)計
現(xiàn)代工業(yè)生產(chǎn)的控制系統(tǒng)經(jīng)常要涉及到多個外部設(shè)備,設(shè)備的動作往往有嚴格的時序要求。長久以來,多使用“面向過程”的程序設(shè)計方法。以過程為中心構(gòu)造應(yīng)用程序,數(shù)據(jù)和數(shù)據(jù)處理過程代碼是相互獨立的,可重用代碼少,且代碼量大時,維護數(shù)據(jù)和代碼相當困難。其缺點有:割裂被控對象在PLC程序與現(xiàn)實中的聯(lián)系,內(nèi)部邏輯與被控對象不明確,程序的后期維護困難;程序的內(nèi)部邏輯關(guān)系非常復雜,控制流程不明確,容易出錯;輸入與輸出都缺乏整體性,程序員往往孤立考慮各輸入點或輸出點的邏輯和控制。
2 面向?qū)ο蟮某绦蛟O(shè)計概念
面向?qū)ο蟪绦蛟O(shè)計方法OOP(object-orientedprogram)直接以現(xiàn)實世界中的事物為中心來思考問題,按照事物的本質(zhì)特征把它們抽象為對象,作為構(gòu)建軟件系統(tǒng)的基礎(chǔ)。程序與現(xiàn)實世界之間具有極強的對應(yīng)關(guān)系,大大降低了軟件開發(fā)的難度。
⑴類。類是對所有具有相同屬性的事物的抽象概念,相當于模具;而對象是類中的一個實體,相當于是用模具制造出來的一個產(chǎn)品。同一類設(shè)備的控制方法、信號反饋、故障檢測等操作相同或相似,如水泵電機、油泵電機和驅(qū)動電機等,可以抽象為一個電機類,編寫其通用性模塊。
⑵封裝。封裝將數(shù)據(jù)與操作數(shù)據(jù)的源代碼有機結(jié)合成類。封裝將對象的屬性和方法形成一個不可分割的整體;只保留有限的對外接口,并盡可能隱藏內(nèi)部的具體細節(jié)。封裝在對象與外界之間建立了一道屏障,使外界只能通過對象所提供的接口與對象發(fā)生聯(lián)系,而不能直接修改對象的屬性值。比如驅(qū)動電機在PLC程序中可能不僅要“啟動”與“停止”,還需要監(jiān)測電機電流、軸溫等。擁有多個驅(qū)動電機的設(shè)備,可將這些特性抽象,封裝在一個類里。這就可以大大簡化整個系統(tǒng)PLC程序的結(jié)構(gòu),提高編程和維護的效率。
3 面向?qū)ο蟪绦蛟O(shè)計方法的特點和設(shè)計原則
3.1 面向?qū)ο蟪绦蛟O(shè)計方法的特點
⑴以“對象”或“數(shù)據(jù)”為中心,對象接收了消息就發(fā)生動作。對象自然對應(yīng)領(lǐng)域的模塊性,可被用作組件去構(gòu)成更復雜的應(yīng)用。對象封裝的是某一實際需求的成分,改變某一對象對整個系統(tǒng)幾乎沒有影響;⑵類與類以層次結(jié)構(gòu)組織。屬于某個類的對象除了具有該類的特性外,還繼承其更高層次所有全部性質(zhì);⑶由于類的模塊性與繼承性,可在原有對象的數(shù)據(jù)類型和功能的基礎(chǔ)上通過重用、擴展和細化設(shè)計新的應(yīng)用程序,達到事半功倍的效果;⑷程序開發(fā)容易。系統(tǒng)中控制方法和功能相同或相似的設(shè)備很多時,這一特點尤為突出;⑸程序調(diào)試方便。只要把系統(tǒng)調(diào)試的可能性柔性地編到類的通用模塊中,便可應(yīng)對同類設(shè)備所有預(yù)料的突發(fā)問題。只須修改一個通用模塊,或者僅僅是修改幾個參數(shù),也可應(yīng)對沒有預(yù)料到的問題;⑹系統(tǒng)維護和功能擴展方便。對象的存在使程序的可讀性大大增強,數(shù)據(jù)的封裝使得在對系統(tǒng)進行維護和功能擴展時,不需知道設(shè)備的具體情況,只要知道設(shè)備的輸人輸出的接口即可。
3.2 設(shè)計原則
面向?qū)ο蟪绦蛟O(shè)計的基本原則如下:⑴對象設(shè)計。把設(shè)備分類,抽象和封裝公共的屬性,賦予其現(xiàn)實的意義。⑵控制流程的設(shè)計。編寫處理邏輯關(guān)系與工藝流程的控制程序,形成功能模塊,通過接口來調(diào)用被控設(shè)備。既能使工藝流程清晰,又使被控對象明確,從而提高了程序的可維護性。
4 基于STEP7軟件的示例
STEP7軟件具備模塊化的編程方法,可將自動化任務(wù)分解為能夠反映某種過程工藝、功能或可以反復使用的更小的任務(wù)塊(FC或FB),主程序循環(huán)塊OB1通過調(diào)用這些塊來完成整個自動化任務(wù)。對應(yīng)面向?qū)ο蟪绦蛟O(shè)計方法中類的抽象和封裝,主程序調(diào)用不同的類進行實例化,編寫控制程序。
在某工程項目中,使用西門子S7-300PLC控制三臺同1型號變頻器。輸人變量有:變頻器啟動ST,變頻器停止SP,變頻器輸出電流I1,變頻器所驅(qū)動電機的軸溫T1。輸出變量有:變頻器啟動輸出Q,經(jīng)過數(shù)值變換后的變頻器電流I2,經(jīng)過數(shù)值變換后的電機軸溫T2。按照OOP方法的要求,針對控制對象與變量,使用STEP7軟件函數(shù)功能塊抽象出變頻器對象FC1,實現(xiàn)如下功能:(1)使用ST和SP接口變量控制輸出變量Q。(2)使用I_BCD函數(shù)實現(xiàn)I NT型變量(輸入電流) 轉(zhuǎn)換為BCD型變量(內(nèi)部程序使用)。在主程序OB1的梯形圖中放人三個被控變頻器的FC1,將外部變量(輸入:ST,SP,I1,T1。輸出:Q,I2,T2)分別與FC1定義的變量對應(yīng)起來進行控制.
5 結(jié)論
基于OOP的程序設(shè)計方法的應(yīng)用使PLC程序的實現(xiàn)更加容易,更加可靠,也為程序的調(diào)試和后續(xù)的維護及功能的擴展提供了廣闊的空間。它在PLC程序設(shè)計中的應(yīng)用可以使它的設(shè)計向著工業(yè)化的設(shè)計方向發(fā)展,使大型PLC程序在集體合作設(shè)計時分工更加明確,性能更加可靠。
[參考文獻]
[1]西門子公司.S7-300 PLC STEP BY STEP[M].北京:北京航空航天大學出版社,2004.
[2]沈被娜,等.計算機軟件技術(shù)基礎(chǔ)[M].北京:清華大學出版社,2000.