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