柯 玲,徐 京,李 穎
(北京衛(wèi)星信息工程研究所,北京100086)
地面站設(shè)備監(jiān)控軟件框架通用性研究
柯 玲,徐 京,李 穎
(北京衛(wèi)星信息工程研究所,北京100086)
針對目前衛(wèi)星地面應(yīng)用系統(tǒng)中設(shè)備監(jiān)控軟件可重用性差的缺點(diǎn),提出一種可擴(kuò)展的通用設(shè)備監(jiān)控軟件框架設(shè)計(jì)方案.結(jié)合模塊化和抽象接口設(shè)計(jì)思想,簡化了組件開發(fā),提高了軟件的復(fù)用性.通過控制反轉(zhuǎn)技術(shù),降低了組件之間的耦合,使框架更加易于擴(kuò)展,在實(shí)際應(yīng)用中取得了良好的效果.
設(shè)備監(jiān)控;模塊化設(shè)計(jì);控制反轉(zhuǎn)
隨著航天技術(shù)的發(fā)展,航天應(yīng)用軟件的使用和開發(fā)要求不斷提高,除了需具備實(shí)時(shí)性、穩(wěn)定性和可靠性外,還要求能夠靈活地實(shí)現(xiàn)產(chǎn)品的升級或更新?lián)Q代[1].
衛(wèi)星地面應(yīng)用系統(tǒng)是航天領(lǐng)域的一個(gè)重要組成部分.衛(wèi)星通信與測控技術(shù)的發(fā)展,使得衛(wèi)星地面站數(shù)量越來越多,建設(shè)周期越來越短,地面站測控設(shè)備更新、改造和添加變得更頻繁.對于地面站設(shè)備監(jiān)控系統(tǒng)而言,需要靈活、可靠的軟件結(jié)構(gòu),這就要求開發(fā)出來的軟件應(yīng)具有較高的復(fù)用性和動(dòng)態(tài)擴(kuò)充性.目前迅速發(fā)展的工業(yè)組態(tài)軟件能在自動(dòng)控制系統(tǒng)監(jiān)控層一級的軟件平臺和開發(fā)環(huán)境,以靈活多樣的組態(tài)方式而不是編程方式提供簡捷的使用方法.但是在航天測控領(lǐng)域,地面站監(jiān)控設(shè)備種類多,并且缺少通用的控制接口和軟件模塊,該特殊性使得系統(tǒng)無法直接使用日漸成熟的工業(yè)控制組態(tài)軟件.
因此,有必要結(jié)合可復(fù)用性和模塊化軟件設(shè)計(jì)思想,借鑒工業(yè)控制自動(dòng)化系統(tǒng)組態(tài)軟件開發(fā)方法,針對衛(wèi)星地面應(yīng)用系統(tǒng)中地面站設(shè)備監(jiān)控的特點(diǎn),對設(shè)備監(jiān)控軟件的通用性進(jìn)行研究.
衛(wèi)星地面應(yīng)用系統(tǒng)的主要任務(wù)是根據(jù)衛(wèi)星觀測計(jì)劃,在衛(wèi)星測控系統(tǒng)提供測控保障的條件下,對衛(wèi)星發(fā)回的數(shù)據(jù)進(jìn)行接收、記錄和處理[2].為了準(zhǔn)確地接收數(shù)據(jù),衛(wèi)星地面站必須依靠所建立的測控系統(tǒng)對衛(wèi)星進(jìn)行遙測、跟蹤和通信.設(shè)備監(jiān)控是衛(wèi)星地面應(yīng)用系統(tǒng)中一個(gè)重要部分,其主要任務(wù)是查詢站內(nèi)各個(gè)測控設(shè)備的運(yùn)行狀態(tài),控制設(shè)備工作參數(shù),接收設(shè)備響應(yīng)數(shù)據(jù).監(jiān)控系統(tǒng)軟件一般由4層結(jié)構(gòu)組成,即界面表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層和設(shè)備層,如圖1所示.界面表示層負(fù)責(zé)與用戶進(jìn)行交互,顯示業(yè)務(wù)信息和收集數(shù)據(jù),用戶通過界面表示層完成測試計(jì)劃下達(dá)和數(shù)據(jù)查詢等功能;業(yè)務(wù)邏輯層負(fù)責(zé)處理監(jiān)控系統(tǒng)的各項(xiàng)業(yè)務(wù)邏輯;數(shù)據(jù)訪問層與數(shù)據(jù)庫進(jìn)行連接,根據(jù)業(yè)務(wù)邏輯層發(fā)送的請求進(jìn)行數(shù)據(jù)操作;設(shè)備層位于整個(gè)軟件結(jié)構(gòu)的最底層,負(fù)責(zé)從被監(jiān)控設(shè)備單元實(shí)時(shí)讀取數(shù)據(jù),并將這些數(shù)據(jù)分解后提供給數(shù)據(jù)訪問層、業(yè)務(wù)邏輯層及界面表示層.同時(shí)設(shè)備層還將來自其他層的控制命令按照事先定義好的協(xié)議格式發(fā)送給相應(yīng)的設(shè)備單元.
結(jié)合衛(wèi)星地面應(yīng)用系統(tǒng)中地面站設(shè)備監(jiān)控的特點(diǎn),本文針對設(shè)備層的功能,提出一種可擴(kuò)展的通用設(shè)備監(jiān)控軟件框架設(shè)計(jì)方案.如圖2所示,在地面站監(jiān)控系統(tǒng)設(shè)備層中引入設(shè)備監(jiān)控軟件框架,使業(yè)務(wù)邏輯層或數(shù)據(jù)訪問層不直接控制設(shè)備單元,具體業(yè)務(wù)邏輯和設(shè)備單元之間通過通用軟件框架進(jìn)行交互.對設(shè)備層功能進(jìn)行分析可得出設(shè)備監(jiān)控軟件框架需要實(shí)現(xiàn)以下功能:通過數(shù)據(jù)模型對設(shè)備屬性進(jìn)行描述;維護(hù)各個(gè)設(shè)備通信連接;按照設(shè)備協(xié)議與設(shè)備和其他層進(jìn)行數(shù)據(jù)交互.設(shè)備監(jiān)控軟件框架應(yīng)具備通用性,能最大范圍的涵蓋不同類型設(shè)備的屬性和操作,并且有良好的可擴(kuò)展性,以滿足設(shè)備驅(qū)動(dòng)協(xié)議修改和新增監(jiān)控設(shè)備等系統(tǒng)擴(kuò)展的需求.
圖2 監(jiān)控軟件框架的引入
框架是領(lǐng)域內(nèi)應(yīng)用系統(tǒng)的部分或整體的可重用設(shè)計(jì)結(jié)構(gòu).它將應(yīng)用系統(tǒng)的控制流進(jìn)行抽象,使其成為更為通用的功能組件.面向?qū)ο蟮膽?yīng)用框架強(qiáng)調(diào)模塊的獨(dú)立性、可用性、靈活性,增強(qiáng)了大型應(yīng)用軟件的可擴(kuò)充性和代碼重用性,大大縮短了開發(fā)周期,提高了軟件質(zhì)量[3].因此在設(shè)備監(jiān)控軟件框架中引用以下指導(dǎo)思想:
1)面向?qū)ο蟮脑O(shè)計(jì)思想.它是一種對現(xiàn)實(shí)世界對象客觀抽象的方法,能夠貼近現(xiàn)實(shí)存在;
2)模塊化的設(shè)計(jì)思想.它是一種減少重復(fù)勞動(dòng)的比較理想的方法,可以增加代碼的可重用性,并使系統(tǒng)結(jié)構(gòu)和脈絡(luò)更加清晰;
當(dāng)前市場營銷專業(yè)有專任教師18人,生師比約為15。職稱構(gòu)成上,教授0人,副教授僅1人,講師16人,助教1人;所有教師具有碩士研究生學(xué)歷,其中2人博士在讀,是典型的以教學(xué)為中心的隊(duì)伍結(jié)構(gòu)。
3)統(tǒng)一抽象化的設(shè)計(jì)思想.它能簡化事物和對象的表示方法,增強(qiáng)系統(tǒng)結(jié)構(gòu)和對象的通用性.
根據(jù)以上指導(dǎo)思想,按照設(shè)備監(jiān)控軟件框架的功能需求,將設(shè)備監(jiān)控軟件框架劃分為3個(gè)基本模塊:數(shù)據(jù)通信模塊、設(shè)備抽象模型和驅(qū)動(dòng)協(xié)議管理模塊.這樣劃分使得模塊之間相互獨(dú)立,框架結(jié)構(gòu)清晰,而對模塊分別進(jìn)行抽象化設(shè)計(jì)可以提高模塊復(fù)用性,使得設(shè)備監(jiān)控軟件框架具有良好的通用性.
圖3 設(shè)備監(jiān)控軟件的結(jié)構(gòu)
圖3表示設(shè)備監(jiān)控軟件框架的模塊劃分以及模塊與設(shè)備監(jiān)控軟件其他部分的交互.從圖3中可看出,數(shù)據(jù)通信模塊負(fù)責(zé)監(jiān)控軟件和不同種類物理設(shè)備底層的連接,包括串口底層通信的具體實(shí)現(xiàn),網(wǎng)絡(luò)客戶端服務(wù)端的連接等;抽象設(shè)備模型模塊根據(jù)協(xié)議抽象出通用的設(shè)備模型,并定義其具體的靜態(tài)數(shù)據(jù)描述;驅(qū)動(dòng)協(xié)議管理模塊是監(jiān)控軟件的關(guān)鍵部分,負(fù)責(zé)對所有設(shè)備的收發(fā)數(shù)據(jù)操作進(jìn)行管理,是控制層與現(xiàn)場設(shè)備的中間層.該模塊一方面根據(jù)界面觸發(fā)的指令按照接口協(xié)議的規(guī)定向設(shè)備發(fā)送數(shù)據(jù)請求命令,另一方面對返回?cái)?shù)據(jù)進(jìn)行解包,從中分離出所需要的數(shù)據(jù).
驅(qū)動(dòng)協(xié)議管理模塊和設(shè)備抽象模塊需要交互才能完成數(shù)據(jù)收發(fā)的功能.驅(qū)動(dòng)協(xié)議管理模塊通過設(shè)備抽象模型中提供的具體設(shè)備屬性、命令和參數(shù)值進(jìn)行設(shè)備命令的收發(fā);設(shè)備抽象模型對驅(qū)動(dòng)協(xié)議管理模塊采集的數(shù)據(jù)進(jìn)行分析,并將數(shù)據(jù)提供給界面和數(shù)據(jù)庫.本文將詳細(xì)介紹這兩個(gè)模塊.
盡管同一功能類型的設(shè)備相關(guān)屬性、數(shù)據(jù)格式和控制方式等可能不同,但其工作原理是一致的,因此相同功能的設(shè)備控制參數(shù)和設(shè)備狀態(tài)參數(shù)出入不大,在監(jiān)控的內(nèi)容和形式上可以統(tǒng)一起來.所以,可以對設(shè)備模型化,抽象出設(shè)備的一般屬性和方法,建立“一般設(shè)備”的概念[4].該抽象模型包括設(shè)備描述模型、設(shè)備命令模型和命令參數(shù)模型等.抽象設(shè)備是對物理連接設(shè)備的抽象,它應(yīng)該完整的反映出實(shí)際設(shè)備的普遍性和特殊性,以及設(shè)備與系統(tǒng)之間的關(guān)系,它包含以下幾個(gè)方面:
1)設(shè)備的基本信息.它包括設(shè)備在系統(tǒng)中的標(biāo)識號、名稱、設(shè)備端口號、設(shè)備的類型信息、設(shè)備的地址信息以及所用的協(xié)議標(biāo)識等.這些信息對一個(gè)設(shè)備進(jìn)行了基本概括,是操作人員對設(shè)備進(jìn)行辨識的基本依據(jù);
2)設(shè)備的命令信息.它包括設(shè)備工作時(shí)所用到的所有查詢命令和控制命令的標(biāo)識、命令名稱、命令類型等;
如圖4所示,根據(jù)面向?qū)ο蟮脑O(shè)計(jì)思想,建立以下幾種對象模型:設(shè)備模型、命令模型、參數(shù)點(diǎn)模型.這些對象的實(shí)例將存儲(chǔ)到內(nèi)存緩沖區(qū),用來實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)訪問,并與框架的其他模塊進(jìn)行交互.
圖5表示了各個(gè)類型對象的關(guān)系.一個(gè)設(shè)備對象對應(yīng)若干命令對象,每個(gè)命令對象包含若干參數(shù)點(diǎn)對象.
圖4 設(shè)備抽象模型
圖5 各抽象模型實(shí)例之間的關(guān)系
設(shè)備驅(qū)動(dòng)協(xié)議管理模塊根據(jù)監(jiān)控設(shè)備的協(xié)議完成對設(shè)備的控制,獲取現(xiàn)場的實(shí)時(shí)數(shù)據(jù)并上傳給界面和數(shù)據(jù)庫.根據(jù)分析得出的驅(qū)動(dòng)模型應(yīng)具備如下需求:
1)對于眾多廠家生產(chǎn)的不同通信協(xié)議的設(shè)備,如果每種設(shè)備驅(qū)動(dòng)程序都要從頭開發(fā),無疑會(huì)帶來很大的難度和工作量.因此驅(qū)動(dòng)協(xié)議模塊不但要實(shí)現(xiàn)現(xiàn)有設(shè)備的驅(qū)動(dòng)功能,而且要便于在該平臺上進(jìn)行設(shè)備驅(qū)動(dòng)程序的擴(kuò)充.
2)驅(qū)動(dòng)程序中需要設(shè)計(jì)自己的驅(qū)動(dòng)程序規(guī)范,這樣能夠統(tǒng)一所有要開發(fā)的設(shè)備協(xié)議的格式,規(guī)定驅(qū)動(dòng)程序與其他應(yīng)用程序的數(shù)據(jù)共享和交換.
利用面向?qū)ο蠹夹g(shù)中繼承和多態(tài)的特性,設(shè)計(jì)驅(qū)動(dòng)基類完成其中通用的功能,預(yù)留出協(xié)議接口,定義派生類完成特定設(shè)備的命令的組織和發(fā)送以及數(shù)據(jù)的接收和分析等.不同的派生類可以有不同的實(shí)現(xiàn)方法,但是其基本的架構(gòu)是相同的,所以開發(fā)驅(qū)動(dòng)程序時(shí)只需要在派生類中實(shí)現(xiàn)各個(gè)驅(qū)動(dòng)的編程.
根據(jù)多種設(shè)備的通信協(xié)議分析可得出設(shè)備基本的通信方式為:根據(jù)觸發(fā)的指令得到參數(shù)數(shù)據(jù),按照協(xié)議的規(guī)定形成完整的數(shù)據(jù)幀發(fā)送給設(shè)備;對設(shè)備返回?cái)?shù)據(jù)進(jìn)行解包,從中分離出所需要的數(shù)據(jù).由此可設(shè)計(jì)一種通用協(xié)議接口,如圖6所示.
圖6 通用協(xié)議接口
圖5中接口Transaction中的execute()方法定義了設(shè)備一次收發(fā)數(shù)據(jù)過程.接口Message定義了寫入?yún)?shù)數(shù)據(jù)流writeTo(DataOutput dout)方法和讀出參數(shù)數(shù)據(jù)流readFrom(DataInput din)方法.接口Transport定義了寫入完整數(shù)據(jù)幀writeMessage(Message message)方法和讀出完整數(shù)據(jù)幀readResponse()方法.完整的數(shù)據(jù)幀內(nèi)容包括幀頭、幀長度、參數(shù)數(shù)據(jù)、校驗(yàn)位及幀尾等部分.
對通用協(xié)議接口的分析可以看出,軟件將各種設(shè)備的通信流程實(shí)現(xiàn)為相應(yīng)的模塊,并為模塊定義了統(tǒng)一的接口.開發(fā)人員針對某個(gè)設(shè)備只需在預(yù)留出的接口函數(shù)內(nèi)實(shí)現(xiàn)與具體通信協(xié)議相關(guān)的方法,而不用改變驅(qū)動(dòng)程序結(jié)構(gòu).
設(shè)備要進(jìn)行數(shù)據(jù)通信時(shí),程序中的設(shè)備對象必須找到所對應(yīng)的驅(qū)動(dòng)程序的派生類.對類的創(chuàng)建模式而言,目前用的最多的要算設(shè)計(jì)模式中的工廠模式.工廠模式能夠提供一個(gè)工廠方法,負(fù)責(zé)將有大量共同接口的類實(shí)例化.工廠模式原理如圖7所示.
圖7 工廠模式原理
但是,這種方法并沒有完全消除類與類之間的耦合性.因?yàn)楣S方法屬于軟件代碼中的一部分,具體的設(shè)備對象和驅(qū)動(dòng)派生類的依賴關(guān)系定義在該方法中,當(dāng)子類被修改后,就要不厭其煩的重寫該方法,從而給系統(tǒng)的維護(hù)和擴(kuò)展帶來巨大的壓力.如果能將工廠從調(diào)用者中解耦出來,將調(diào)用者與被調(diào)用者在一個(gè)統(tǒng)一的位置進(jìn)行關(guān)聯(lián),則可以在較大程度上提高系統(tǒng)的性能.利用控制反轉(zhuǎn)模式能很好地解決這個(gè)問題.
控制反轉(zhuǎn)(IoC,inversion of control,)模式又稱為依賴注入(dependency injection)模式,是一種框架設(shè)計(jì)模式,它將“判斷依賴關(guān)系”的職責(zé)移交給容器,而不是由組件本身來判斷彼此之間的依賴關(guān)系.程序中某個(gè)組件(調(diào)用組件)依賴于其他組件(被調(diào)用組件)時(shí),通常在調(diào)用組件的邏輯中并不嵌入實(shí)例化其他組件的邏輯,而是以某種方式聲明它們對其他組件的依賴關(guān)系,同時(shí)外部有專門的程序負(fù)責(zé)對其他組件的定位和實(shí)例化操作.這些專門的程序就是IoC容器的一部分[5-6].
在設(shè)備監(jiān)控軟件中使用控制反轉(zhuǎn)模式實(shí)現(xiàn)協(xié)議擴(kuò)展的方法為:不在程序中定義依賴關(guān)系,而是根據(jù)配置文件指定的協(xié)議類的標(biāo)識,利用IoC容器創(chuàng)建具體設(shè)備對應(yīng)的協(xié)議類的實(shí)例,按照接口中定義的方法,實(shí)現(xiàn)軟件與設(shè)備的通信.其原理圖如圖8所示.
圖8 控制反轉(zhuǎn)模式原理
對比工廠方法可以看出,控制反轉(zhuǎn)模式通過配置文件定義好每個(gè)具體設(shè)備對應(yīng)的協(xié)議類標(biāo)識,由此將設(shè)備和協(xié)議的依賴關(guān)系轉(zhuǎn)移到程序外部,降低了組件之間的耦合[7].實(shí)例化協(xié)議類的代碼和解析配置文件的代碼組成了IoC容器.IoC容器把在工廠方法中不靈活的對象生成代碼,改變?yōu)榕渲梦募矶x,設(shè)備只需要提供相應(yīng)的符合統(tǒng)一接口要求的協(xié)議程序,并在配置文件中定義好設(shè)備類名和所對應(yīng)的協(xié)議標(biāo)識就可以平滑地加入到軟件中,這樣大大提高了程序的靈活性和可維護(hù)性.
在實(shí)現(xiàn)方法上,XML提供了一種計(jì)算機(jī)文檔的標(biāo)準(zhǔn)格式,經(jīng)常作為配置文件使用.利用Java語言中的反射機(jī)制,根據(jù)給出的類名生成相應(yīng)的對象,能實(shí)現(xiàn)IoC容器的功能.另外,目前具有代表性的輕量級框架Spring本身提供了IoC容器,可根據(jù)其定義的規(guī)則直接使用.
對于地面站監(jiān)控系統(tǒng),監(jiān)控設(shè)備種類多,軟件開發(fā)中的組件依賴關(guān)系復(fù)雜。在監(jiān)控軟件開發(fā)框架中應(yīng)用模塊化思想,并結(jié)合通用接口和控制反轉(zhuǎn)技術(shù),可以方便組件開發(fā),降低組件之間的耦合,使整個(gè)框架更加易于擴(kuò)展、復(fù)用,更能適應(yīng)需求的變化.各個(gè)模塊采用抽象化的面向?qū)ο蟮脑O(shè)計(jì)方法,模塊之間交互操作,在一定程度上提高了框架的通用性.目前此通用性設(shè)計(jì)思想已應(yīng)用于某衛(wèi)星地面站設(shè)備監(jiān)控軟件的開發(fā)中,取得了良好的效果,并為衛(wèi)星地面應(yīng)用系統(tǒng)的開發(fā)以及構(gòu)建高效率的航天應(yīng)用軟件系統(tǒng)提供了良好的借鑒作用.
[1] 徐俊穎,許聚常,陳懷義.基于構(gòu)建技術(shù)的衛(wèi)星地球站站控系統(tǒng)的設(shè)計(jì)模型[J].計(jì)算機(jī)工程與科學(xué),2006,28(3):109-110
[2] 王明遠(yuǎn),劉長柱.亞洲一流的遙感衛(wèi)星地面應(yīng)用系統(tǒng)[J].空間電子技術(shù),2000(2):49
[3] 傅秀濤,顧斌.面向AOCS軟件的構(gòu)件技術(shù)研究[J].航天控制,2009,27(1):67-68
[4] 劉青普,王健,趙振杰,等.衛(wèi)星測控站監(jiān)控系統(tǒng)軟件結(jié)構(gòu)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)仿真,2006,23(11):79-81
[5] Martin F.Inversion of control containers and the dependency injection pattern[EB/OL].[2004-01-23].http://www.martinfowler.com/articles/injection.htm l
[6] 李明歆,馬世龍,許可.面向航天器測試的SOA信息系統(tǒng)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(21):5248-5249
[7] 仲紅艷.控制反轉(zhuǎn)技術(shù)分析[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006,16(1):59-61
Universality of Equipment Monitoring Software Framework in a Satellite Earth Station
KE Ling,XU Jing,LIYing
(Beijing Institute of Satellite Information Engineering,Beijing 100086,China)
To solve the problem of low reusability in a satellite ground application system,this paper gives a design scheme extensible universal framework for equipmentmonitoring software.Combining modularized software with abstract modeling technique,the design method has advantages of simply development and higher reusability.A inversion of control technique is used to give the benefit of loose coupling and higher extensibility in application.
monitoring software;modularized design;inversion of control
TP311
A
1674-1579(2009)05-0056-05
2009-05-06
柯 玲(1984—),女,陜西人,碩士研究生,研究方向?yàn)檫b感信息處理與傳輸技術(shù)(e-mail:kathy0812@163.com).