仇文君,歐陽(yáng)崢嶸
(中國(guó)科學(xué)院 強(qiáng)磁場(chǎng)科學(xué)中心,合肥 230031)
穩(wěn)態(tài)強(qiáng)磁場(chǎng)實(shí)驗(yàn)裝置(SHMFF)是國(guó)家發(fā)改委支持的“十一五”國(guó)家重大科學(xué)工程,水冷磁體由于消耗大量的電能而產(chǎn)生熱量必須由去離子冷卻水及時(shí)帶走,而冷凍水通過板式換熱器,為去離子冷卻水提供冷源。由于水冷磁體的最大瞬時(shí)熱負(fù)荷為28 MW,如果按此配置制冷機(jī)組,系統(tǒng)造價(jià)很高,為了節(jié)省系統(tǒng)投資,選用較小規(guī)模的冷水機(jī)組,采用水蓄冷[1]方式,將夜間電網(wǎng)多余的谷段電力(低電價(jià)時(shí))與水的顯熱相結(jié)合來蓄冷,以低溫冷水形式儲(chǔ)存冷量,并在用電高峰時(shí)段(高電價(jià)時(shí))使用儲(chǔ)存的低溫冷水來做為冷源,從而達(dá)到“削峰填谷”,均衡用電及降低電力設(shè)備容量的目的。
隨著我國(guó)電網(wǎng)負(fù)荷峰谷段用電量差距的不斷加大,國(guó)家電力部門逐步實(shí)施分時(shí)電價(jià)政策[2],并且很多地方的電力部門對(duì)于蓄冷空調(diào)系統(tǒng)在收取電力增容費(fèi)方面給予優(yōu)惠,蓄冷空調(diào)系統(tǒng)已是空調(diào)系統(tǒng)發(fā)展的必然趨勢(shì)。在制冷與空調(diào)方面,可編程邏輯控制器(PLC)已經(jīng)得到廣泛應(yīng)用,PLC程序的設(shè)計(jì)也越來越受到重視。隨著蓄冷空調(diào)控制功能更加全面,數(shù)據(jù)處理量和通信功能的增加等,PLC程序設(shè)計(jì)的難度也隨之增加。人們也希望PLC程序能夠具有較強(qiáng)的可讀性和通用性,方便控制系統(tǒng)后期的維護(hù)、升級(jí)與改造。顯然,傳統(tǒng)的PLC程序設(shè)計(jì)方法已無法滿足人們的要求,本文針對(duì)SHMFF去離子水冷卻系統(tǒng)的水蓄冷工藝控制的要求,使用面向?qū)ο蟮姆椒▽?duì)水蓄冷的PLC控制系統(tǒng)進(jìn)行程序設(shè)計(jì),提高了程序的可讀性和復(fù)用性。
面向?qū)ο蟪绦蛟O(shè)計(jì)方法直接以現(xiàn)實(shí)世界的實(shí)體或概念為中心來思考問題,根據(jù)事物的本質(zhì)特征把它抽象為對(duì)象,作為構(gòu)建軟件系統(tǒng)的基礎(chǔ)。也就是說,面向?qū)ο笫菍?duì)復(fù)雜事物簡(jiǎn)單化,將具有相同或相似結(jié)構(gòu)、操作、約束條件以及具有相同數(shù)據(jù)的對(duì)象進(jìn)行合理的集合歸類,不同類之間采用入口參數(shù)判別方法加以區(qū)分,并建立起類的數(shù)據(jù)結(jié)構(gòu),而后將類的屬性和方法封裝到具有適當(dāng)定義的接口容器,最后將不同的類通過消息實(shí)現(xiàn)聯(lián)系通信,這樣就將系統(tǒng)流程的實(shí)現(xiàn)變成封裝模塊的簡(jiǎn)單調(diào)用。
面向?qū)ο蟮木幊趟枷氲挠行┨卣魇莻鹘y(tǒng)設(shè)計(jì)方法所不具備的,如抽象性、封裝性、繼承性及多態(tài)性等。面向?qū)ο蟮南到y(tǒng)包含了對(duì)象、類和繼承3個(gè)要素。對(duì)象即計(jì)算機(jī)邏輯中抽象表示現(xiàn)實(shí)世界的實(shí)體或概念,對(duì)象是有且僅有1個(gè)對(duì)象名并具有固定對(duì)外接口的一組屬性和操作的集合。在計(jì)算機(jī)中,對(duì)象用來模擬影響或組成現(xiàn)實(shí)世界問題的一個(gè)或一組因素。對(duì)象的屬性代表了它所處的狀態(tài),而對(duì)象的操作則可以用來改變對(duì)象的狀態(tài)以達(dá)到特定的功能,或者在狀態(tài)不變的情形下執(zhí)行某種動(dòng)作或活動(dòng)。面向?qū)ο蟮膯栴}求解就是爭(zhēng)取從實(shí)際問題中抽象出這些封裝了屬性和操作的對(duì)象。在計(jì)算機(jī)軟件編程中需要把一些事物歸納和抽象,才能編寫類,而在工業(yè)控制系統(tǒng)中的控制對(duì)象,如電機(jī)及閥等是很明顯的控制類別,不需要抽象就能很明顯且有針對(duì)性地編寫類[3]。
統(tǒng)一建模語(yǔ)言UML(unified modeling language)[4]是一種通用的可視化建模語(yǔ)言,被廣泛應(yīng)用于面向?qū)ο蟮南到y(tǒng)分析和設(shè)計(jì)。在使用面向?qū)ο蠓椒ㄔO(shè)計(jì)軟件程序時(shí),UML模型能夠合理地封裝系統(tǒng)中的對(duì)象,隔離對(duì)象的內(nèi)部活動(dòng)和外部的聯(lián)系。UML使用類圖表示對(duì)象的結(jié)構(gòu),使用狀態(tài)圖表示對(duì)象的內(nèi)部活動(dòng),使用活動(dòng)圖等精確描述對(duì)象之間的關(guān)系,同時(shí)還可以詳細(xì)表示對(duì)象的繼承關(guān)系、靜態(tài)結(jié)構(gòu)、動(dòng)態(tài)特性以及相互協(xié)作等。這樣就掩蓋了軟件程序的具體細(xì)節(jié),簡(jiǎn)化了程序設(shè)計(jì)過程,同時(shí)使得軟件程序具有更好的可讀性和復(fù)用性。
UML模型用標(biāo)準(zhǔn)的圖形來描述系統(tǒng)的功能和形態(tài),主要包括用例圖、靜態(tài)模型、動(dòng)態(tài)模型和實(shí)現(xiàn)模型。本文只針對(duì)水蓄冷PLC程序的用例圖、靜態(tài)模型、動(dòng)態(tài)模型和實(shí)現(xiàn)模型進(jìn)行分析。
SHMFF的水蓄冷回路中,包含了串聯(lián)的2臺(tái)冷水機(jī)組、3臺(tái)冷凍水一次泵、3臺(tái)冷凍水二次變頻泵、3臺(tái)開式塔冷卻泵、2臺(tái)開式塔變頻風(fēng)機(jī)、6臺(tái)閉式塔變頻風(fēng)機(jī)、6臺(tái)閉式塔噴淋泵、十幾臺(tái)閥門等設(shè)備和一百多個(gè)檢測(cè)儀表??刂葡到y(tǒng)由PLC構(gòu)成,定義“流程”就是為實(shí)現(xiàn)蓄冷回路中各設(shè)備按順序啟停以完成蓄冷過程的列表。水蓄冷共有6個(gè)工作流程,以其中的一個(gè)工作流程“2臺(tái)主機(jī)單獨(dú)蓄冷”(單罐單布水器模式)為例,其啟動(dòng)流程如圖1所示。
圖1 兩臺(tái)主機(jī)單獨(dú)蓄冷啟動(dòng)流程Fig.1 Flow chart of two chillers’cold storage
其中,1號(hào)、2號(hào)冷水機(jī)組是串聯(lián)工作的,1號(hào)冷機(jī)的冷凝器對(duì)應(yīng)1號(hào)開塔冷卻泵和1號(hào)開塔風(fēng)機(jī);2號(hào)冷機(jī)的冷凝器對(duì)應(yīng)2號(hào)開塔冷卻泵和2號(hào)開塔風(fēng)機(jī)。根據(jù)蓄水罐上方回水溫度的高低,用戶自行選擇冷機(jī)的工作模式(單獨(dú)使用上游冷機(jī)、單獨(dú)使用下游冷機(jī)、上下游冷機(jī)串聯(lián)使用),所以每一條選擇分支的設(shè)備選擇及時(shí)間間隔都不相同。為了整個(gè)蓄冷功能的實(shí)現(xiàn),就需要合理有效地控制驅(qū)動(dòng)各個(gè)流程的設(shè)備,使其協(xié)調(diào)運(yùn)行,這就要求不同的設(shè)備可以順序啟停,同種設(shè)備間可以協(xié)調(diào)控制和聯(lián)動(dòng)。
系統(tǒng)功能模型用例圖如圖2所示。用例圖是軟件需求分析到最終實(shí)現(xiàn)的第一步,主要用來描述用戶、需求、系統(tǒng)功能單元之間的關(guān)系。它展示了一個(gè)外部用戶能夠觀察到的系統(tǒng)功能模型圖。用例圖從用戶的角度來展現(xiàn)系統(tǒng)的功能,便于軟件開發(fā)人員最終實(shí)現(xiàn)這些功能[5]。UML的用例模型不僅能夠展現(xiàn)系統(tǒng)功能需求,還能夠更加清楚地描述系統(tǒng)的參與者,即外部執(zhí)行者和系統(tǒng)之間的交互關(guān)系以及參與者之間的關(guān)系。本例中包含了2個(gè)角色(工程師和操作員),2個(gè)角色都屬于同一類對(duì)象,但是操作員的權(quán)限較小,工程師的權(quán)限較高。
圖2 水蓄冷系統(tǒng)功能模型用例圖Fig.2 Functional model of the chilled water system use case diagram
類圖[6]是面向?qū)ο笙到y(tǒng)建模中的核心視圖,反映類的結(jié)構(gòu)(屬性、操作)以及類之間的關(guān)系。類圖中的類與面向?qū)ο笳Z(yǔ)言中的類的概念是對(duì)應(yīng)的,是對(duì)事物的抽象歸類。這里運(yùn)用類圖建立水蓄冷系統(tǒng)的靜態(tài)模型。
在面向?qū)ο蠓椒ň幊讨?,?duì)系統(tǒng)類的劃分有很多不同的分法。劃分類的不同使得系統(tǒng)的實(shí)現(xiàn)模型不同,從而使程序設(shè)計(jì)也會(huì)有很大的差異。結(jié)合水蓄冷系統(tǒng)的特點(diǎn),本文采用按照流程類、設(shè)備類和操作類進(jìn)行分類。按照流程分類,定義不同工況下設(shè)備的選擇和啟停順序;按照設(shè)備分類,可以對(duì)單臺(tái)同種設(shè)備的輸入信號(hào)做規(guī)范的處理后輸出;按照操作進(jìn)行分類可以實(shí)現(xiàn)同種設(shè)備間的協(xié)調(diào)工作。這3種分類,都是針對(duì)一組控制算法,將每一個(gè)算法封裝到具有共同接口的獨(dú)立的類中,從而使得對(duì)控制算法的增減修改都不會(huì)影響其他的對(duì)象。靜態(tài)模型類圖的示例如圖3所示。
圖3 水蓄冷系統(tǒng)靜態(tài)模型類圖Fig.3 Static class diagram of the chilled water system
UML活動(dòng)圖用來為用例建模工作流,提供對(duì)系統(tǒng)執(zhí)行過程的充分描述,說明系統(tǒng)如何根據(jù)不同的條件和刺激改變執(zhí)行方向,在不同的主體之間切換任務(wù)。水蓄冷系統(tǒng)的控制流程選擇過程由操作員發(fā)出命令,流程對(duì)象按照流程列表將流程中的所有設(shè)備依次選中,這是一組選擇處理活動(dòng),一次只能選擇一個(gè)流程,在活動(dòng)圖中以分岔和聯(lián)結(jié)來建模,如圖4所示。
系統(tǒng)中的每個(gè)對(duì)象在得到其他對(duì)象的消息或滿足一定的條件后,將會(huì)在不同的狀態(tài)之間進(jìn)行轉(zhuǎn)移,這種狀態(tài)轉(zhuǎn)移用狀態(tài)圖建模。流程的基本狀態(tài)為靜止、啟動(dòng)、運(yùn)行、停車和故障等,流程對(duì)象的狀態(tài)圖描述了在不同的狀態(tài)下由不同的條件驅(qū)動(dòng)的狀態(tài)轉(zhuǎn)換過程,如圖5所示。
以上系統(tǒng)的動(dòng)態(tài)模型描述了對(duì)象之間和對(duì)象自身的結(jié)構(gòu)和活動(dòng),從動(dòng)態(tài)模型中可以抽象出各個(gè)類的特性和操作,從而完善了對(duì)象的靜態(tài)模型。
圖4 水蓄冷系統(tǒng)流程選擇活動(dòng)圖Fig.4 Process selection activity diagram of the chilled water system
圖5 水蓄冷設(shè)備對(duì)象的狀態(tài)圖Fig.5 State diagram of the chilled water’s devices
采用組件圖建立實(shí)現(xiàn)模型[7]。組件圖用來顯示程序代碼的邏輯結(jié)構(gòu),描述了程序中存在的組件、接口以及組件之間的依賴關(guān)系。UML建模中的組件是系統(tǒng)中可以替換的代碼模塊,每個(gè)組件都體現(xiàn)了系統(tǒng)設(shè)計(jì)中的類的實(shí)現(xiàn)。組件圖是從軟件結(jié)構(gòu)的角度來描述一個(gè)系統(tǒng)的主要功能,可以清楚地看出系統(tǒng)程序的結(jié)構(gòu)和功能。定義良好的組件不直接依賴于其他組件而是依賴于所支持的接口,這樣就可以避免系統(tǒng)的各個(gè)組件之間發(fā)生依賴關(guān)系,有利于新組件的替換。水蓄冷系統(tǒng)的程序組件圖如圖6所示。
圖6 水蓄冷控制系統(tǒng)組件Fig.6 Component diagram of chilled water control system
根據(jù)系統(tǒng)靜態(tài)模型中的分類,使用設(shè)備控制組件和操作控制組件實(shí)現(xiàn)系統(tǒng)的功能,6個(gè)流程可以重復(fù)調(diào)用水泵控制組件、變頻風(fēng)機(jī)控制組件、冷水機(jī)組控制組件、兩用一備控制組件、一用一備控制組件等。按照這個(gè)方法,后期如果需要對(duì)系統(tǒng)進(jìn)行升級(jí)或者程序移植,只需要增加或刪減流程,修改其入口參數(shù)即可,使得程序具有更好的可讀性和復(fù)用性。
本系統(tǒng)采用西門子S7-300 PLC,程序編寫在Step7中進(jìn)行。用戶程序主要由組織塊OB(organization block)、功能 FC(function)、功能塊 FB(function block)、數(shù)據(jù)塊 DB(data block)組成。
在上述實(shí)例系統(tǒng)中利用功能FC和用戶定義數(shù)據(jù)類型UDT可以實(shí)現(xiàn)對(duì)象的封裝和對(duì)象屬性的定義,流程類、設(shè)備類和操作類均可采用FB或FC創(chuàng)建,按照以上建模過程中得到的類結(jié)構(gòu)圖和系統(tǒng)組件圖,對(duì)不同類對(duì)象加以合并和簡(jiǎn)化,僅用了5個(gè)UDT和FC就實(shí)現(xiàn)了所有的設(shè)備類,3個(gè)FB實(shí)現(xiàn)操作類,流程類由6個(gè)FB實(shí)現(xiàn),在主程序中調(diào)用不同的類的FB或FC都可以生成相應(yīng)的對(duì)象。不同的是,調(diào)用FB時(shí),系統(tǒng)會(huì)為其配置一個(gè)背景數(shù)據(jù)塊[8],調(diào)用FC時(shí),需使用提前建立好的共享數(shù)據(jù)塊。
以上實(shí)例系統(tǒng)的投運(yùn)非常順利,流程啟停功能和切換功能實(shí)現(xiàn)良好。由于采用了面向?qū)ο蟮姆椒ǎ麄€(gè)系統(tǒng)所需的編程時(shí)間大幅下降,程序結(jié)構(gòu)模塊化,易讀性強(qiáng);在這個(gè)系統(tǒng)中增加新的設(shè)備只需添加或從原有的類中派生一個(gè)新的類,或者將已有的類實(shí)例化。調(diào)用FC或FB示意圖如圖7所示。
圖7 調(diào)用FC和FB示意Fig.7 Example of calling function and function block
本文將面向?qū)ο蟮姆椒☉?yīng)用在水蓄冷控制系統(tǒng)的PLC程序設(shè)計(jì)中,使用UML對(duì)水蓄冷系統(tǒng)進(jìn)行了建模,不僅對(duì)系統(tǒng)進(jìn)行了抽象與類的封裝,并且用組件圖描述了系統(tǒng)的結(jié)構(gòu)與功能。在最后的程序?qū)崿F(xiàn)時(shí),這種面向?qū)ο蟮腜LC編程方法不但提高了編程效率,而且使水蓄冷系統(tǒng)的程序更易于閱讀和修改,對(duì)空調(diào)水蓄冷控制系統(tǒng)的使用和維護(hù)具有很大的指導(dǎo)和借鑒價(jià)值。
[1]黃渝,宋勤鋒.淺談浦東機(jī)場(chǎng)能源中心水蓄冷系統(tǒng)的控制[J].制冷空調(diào)與電力機(jī)械,2008,29(3):73-77.
[2]丁艷虹,朱江.昆明新機(jī)場(chǎng)水蓄冷空調(diào)自動(dòng)控制系統(tǒng)設(shè)計(jì)[J].工程建設(shè)與設(shè)計(jì),2009(8):71-75.
[3]張博,王志信.模塊化編程思想在PLC系統(tǒng)中的應(yīng)用[J].化工自動(dòng)化及儀表,2013,40(3):416-418.
[4]孟彥京,王佳寧,段明亮.面向?qū)ο蠓椒ㄔ谠旒垯C(jī)PLC程序中的應(yīng)用[J].自動(dòng)化儀表,2015,36(3):29-35.
[5]黃詠,莊誠(chéng),高東杰.輸送系統(tǒng)的UML建模、優(yōu)化與實(shí)現(xiàn)[J].控制工程,2006,13(1):55-59.
[6]周元芳.結(jié)構(gòu)化及面向?qū)ο蟮某绦蛟O(shè)計(jì)方法在PLC編程中的應(yīng)用[J].浙江工學(xué)院學(xué)報(bào),2003,31(3):264-267.
[7]周珂,李子豐.基于UML構(gòu)件分析的軟件復(fù)用技術(shù)[J].航空計(jì)算技術(shù),2004,34(2):51-53.
[8]陳娟,周猛.面向?qū)ο蟮某绦蛟O(shè)計(jì)方法在PLC程序設(shè)計(jì)中的應(yīng)用[J].電氣自動(dòng)化,2001,23(3):55-57.