張宇 劉忠漢 林佳偉 劉蕊
(北京控制工程研究所,北京 100096)
?
應用插件技術的北斗衛星控制系統模擬器設計
張宇 劉忠漢 林佳偉 劉蕊
(北京控制工程研究所,北京 100096)
針對傳統設計方法在可更改性、可擴展性、設計復用性等方面的不足,分析了插件技術的原理和優點,根據衛星控制系統模擬器軟件的特點,提出了應用插件技術的設計思路。文章通過采用“宿主程序”+“插件”的軟件總體結構,合理劃分了宿主程序和插件的功能。為充分發揮插件技術的優勢,宿主程序采用微內核方式,負責加載和管理各種功能插件,并通過“監聽器”方式為插件之間提供標準的通信服務。同時結合軟件功能特點,將插件分為業務插件和輔助插件兩類,使得設計更加合理。最后應用插件技術設計了具體的宿主程序接口、插件接口、監聽器接口,實現了通用的衛星控制系統模擬器仿真平臺,完成了3類、14顆衛星控制系統的模擬仿真,取得了良好效果。
衛星;控制系統;模擬器;插件
衛星控制系統模擬器(簡稱控制系統模擬器),是用作驗證衛星姿態軌道控制系統在研制、發射和在軌運行過程中設計和操作程序的正確性,輔助故障分析和處理,對衛星進行仿真的設備。由于硬件仿真成本高且不易修改,故采用軟件仿真,其具有穩定性、可重復性、可修改性、低成本、能夠實現最壞情況模擬等優點。控制系統模擬器一般采用軟件仿真方法實現[1]。
傳統的控制系統模擬器軟件一般只針對單顆衛星進行模擬,通常采用面向功能的設計方法,此方法建立在數據流的基礎上,把控制系統看成是提供給最終用戶的功能,強調區分和分解系統功能。在設計控制系統模擬器時,將控制系統分解成敏感器、控制器、執行機構、遙控遙測等功能模塊,遞歸分解得到各下級功能模塊,例如敏感器又分為姿態敏感器、角速度敏感器、加速度敏感器等,然后軟件編程實現各級功能模塊。
我國研制的北斗導航系統包含3個種類、14顆衛星,為滿足衛星研制過程仿真驗證和地面測控系統的演練要求,需要設計一種衛星控制系統模擬器,既能夠兼容三種控制系統,又能夠滿足多星部署的要求。傳統控制系統模擬器設計方法主要存在以下不足,難以滿足北斗導航衛星的仿真要求:①由于各模塊之間耦合緊密,設計復用困難,難以完成3類控制系統模擬器設計的通用化、標準化設計;②由于結構擴展困難,當需求出現變化時,功能修改和擴展難度大;③由于沒有給用戶提供二次開發的接口,不利于軟件功能的完善和升級。
本文提出一種基于插件技術的控制系統模擬器設計思路,在此基礎上完成了北斗導航衛星控制系統模擬器平臺的設計。
插件式開發方法[2]是一種新的軟件開發思想。基于插件的軟件系統在實質上是應用工程的一種擴展,它使得各種功能采用插件的方式來實現,再借用框架進行標準化部署,實現宿主程序和功能插件之間互相通信,基于插件的框架平臺可以將功能插件集成到宿主程序中并高效地運行[3]。
2.1 原理
通常使用插件結構的軟件,由一個可執行程序和許多完成子功能的插件組成,主要分為以下3個部分:
(1)宿主程序。一般表現為一個可執行的文件,負責啟動整個系統,負責將所需的插件加載到自己的進程地址空間中,是整個系統的核心,宿主程序必須對插件進行管理。
(2)插件。能夠動態地插入到系統中,單個插件的功能相對簡單,但是多個插件能夠使系統功能完善,完成許多復雜的處理。在插件中必須提供給宿主程序調用的接口,當宿主程序需要調用插件的時候能夠找到此接口,使得宿主程序能夠得到插件的相關信息,以完成與宿主程序的通信與交互。
(3)接口。宿主程序和插件能夠互相結合在一起工作,必須有一套互相協作的規則和協議使不同來源的程序互相協調工作,完成這些規則和協議的部分稱為插件系統的接口。這是一個邏輯上的接口,由宿主程序和插件各完成一部分,它們共同完成插件的插入、調用、停止,還要完成宿主程序與插件、插件與插件之間的交互。
由于應用程序的功能由外部插件實現,所以軟件的功能不再固定不變。通過插入和改變外部插件實現軟件功能擴充和改進,能簡單方便地做到軟件功能的靈活配置[4]。
2.2 優點
插件的本質是在不修改程序主體的情況下對軟件功能進行加強,從而實現真正意義上的“即插即用”軟件開發[5]。其具有以下優點[6]。
(1)實現真正意義上的軟件組件的“即插即用”。
(2)在二進制級上集成軟件,減少大量的軟件重新編譯與發布麻煩。
(3)減少軟件各部分之間的耦合。軟件中的各個插件相互獨立作為單獨的功能模塊,宿主程序只是一個框架,真正的具體功能通過插件來提供,功能與框架沒有直接關聯。
(4)隔離了功能的變化。為軟件增加新的功能時無須修改現有的代碼。例如,在基于插件框架的圖片瀏覽器軟件中,增加對新的圖片類型的處理功能,只需要增加一個插件就行了,便于團隊的合作開發。當插件與主程序的標準接口訂好后,新增的功能便可以分派到各個團隊開發。
(5)降低整個系統的復雜度。具體的功能細化到插件,整個系統的開發工作量雖然沒有減少,但是系統的功能剝離后整個構架更加清晰。
(6)能夠很好地實現軟件模塊的分工開發,能夠大量吸取他人的特長。
(7)可較好地實現代碼隱藏,保護知識產權。
北斗導航衛星分為3類,共有14顆,后續還有補網星。由于衛星種類多,信息流差異大,要求控制系統模擬器軟件具備良好的可擴展性。由于衛星研制周期長,系統不斷優化,控制系統模擬器的用戶需求勢必會跟著變化,其某一功能的更改,不能影響其它功能,則要求軟件具有良好的可修改性。由于衛星數量多,測控系統需要部署多個控制系統模擬器,要求其軟件接口標準化,具有良好的設計復用性。插件技術的固有優點,恰好可以解決這些問題,給控制系統模擬器研制帶來諸多好處:①出現需求變化時,只需要修改相應的插件或增加新的插件,滿足新的需求即可,軟件比較容易更改和擴展;②抽象出插件與宿主程序之間的標準化的數據接口,可以屏蔽不同平臺衛星數據流的差別,進而解決不同平臺衛星之間的設計重用問題;③通過公開插件接口,用戶可以二次開發出個性化的插件,修改、增加控制系統模擬器的功能;④宿主程序+插件的軟件架構,使得宿主程序與插件實現松耦合,可以設計出通用的控制系統模擬器軟件平臺,易于部署和維護升級。
2.3 插件實現的主要技術
1)基于動態鏈接庫的插件技術
動態鏈接庫(Dynamic Link Library,DLL)是一種應用程序調用的庫文件,包括代碼和數據。該庫文件包含了與調用的進程相互分離的函數[7]。DLL文件可以調用各種資源數據,在使用DLL過程中,系統能夠被輕松地劃分成多個功能模塊,并且可方便地被更新到框架平臺中,且對程序的其他部分運行沒有明顯影響[8]。例如,開發一個員工工資的程序,但是每年的社保政策都有所區別,如果把修改的部分存入到DLL中,每年只需發布新的DLL就能夠完成對應用的更新。
2)基于組件對象模型的插件技術
組件對象模型(COM)是微軟公司設計的一種標準組件開發技術。在COM標準構架下,可以開發出各種各樣功能的組件,然后將它們按照需要組合起來,構成復雜的應用系統。開發COM組件需要復雜的開發工具,并且需要對操作系統注冊表進行操作,才能實現軟件的發布和部署。
3)基于反射機制的插件技術
在微軟公司的.NET平臺架構中,采用反射機制,也可以進行插件開發。.NET平臺在動態加載對應程序集后,再經過反射機制遍歷查詢,就可以讀取程序集中相關的類型信息,假若框架能夠識別對應的類型信息需求,框架就會動態生成插件實例并加載到插件容器中[9]。
這3種不同的插件開發技術都有各自特點。基于組件對象模型的編寫技術需要涉及到大量的COM技術及原理,基于反射機制開發插件需要熟悉.NET反射機制以及C#編程語言,且軟件部署相對復雜。基于DLL的插件技術,擴展方便、部署簡單、運行速度快,且對于控制系統模擬器仿真還有一定的繼承性,本文采用此方式實現控制系統模擬器平臺的開發。
3.1 總體設計
根據北斗導航系統的要求,該控制系統模擬器平臺需要完成3類、14顆衛星的模擬仿真。首先梳理系統的主要功能,確定控制系統模擬器的基本組成,見圖1。然后按照插件技術的設計思路,對功能結構進行抽象和處理,目標是建立一個通用的控制系統模擬器平臺,提升軟件的可擴展性、設計重用性,支持二次開發。控制系統模擬器平臺采用“宿主程序”+“插件”的方式實現,宿主程序是平臺的載體,為了達到通用性,采用的是微核機制[10]。插件是各個具體功能的載體。轉化處理后的平臺結構如圖2所示。
1)宿主程序
由微軟公司提供的基于MFC的MDI多文檔框架具備管理多個文檔、多個視圖以及界面資源的功能,本文將其作為宿主程序的主體框架。設計為一個Windows可執行程序,負責啟動整個系統,負責加載和管理各種功能插件,為各插件提供數據交換接口,實現插件和宿主程序、插件與插件之間的通信,同時提供基本的用戶接口、網絡接口、數據庫等功能。
2)插件
負責實現該平臺的各項功能,采用動態運行庫DLL的方式實現,每一個插件就是一個DLL程序,實現一項特定的功能。插件遵循統一的加載接口,便于宿主程序進行識別和加載。
根據控制系統模擬器平臺的的自身特點,將插件分為業務插件和輔助插件兩類。業務插件是指與控制系統模擬器核心業務相關的功能模塊,主要包括衛星實例插件、星上控制器插件、敏感器插件、執行機構插件、姿態軌道動力學插件、遙測遙控插件等,這些功能會隨衛星類型的不同,發生較大的變化。輔助插件主要指為完成用于接口功能的模塊,主要包括參數處理插件、指令及參數設置插件、數據存儲管理插件等,這些功能相對穩定、易于實現標準化。將平臺的不變部分和變化部分進行區分,可以使得插件的設計更合理、更易于擴展。

圖1 衛星控制系統模擬器的基本組成圖Fig.1 Function chart of simulator for satellite control system

圖2 基于插件技術的控制系統模擬器總體結構圖Fig.2 Structural chart of simulator based on plugin
3.2 宿主程序與插件接口設計
插件與宿主程序之間的接口設計是整個控制系統模擬器平臺開發過程中最重要的組成部分。控制系統模擬器平臺包括2類接口:宿主程序接口和插件接口。宿主程序接口設計的目的是實現插件對宿主程序功能和資源的調用,插件接口設計的目的是實現宿主程序對插件的訪問。插件和宿主程序設計都必須嚴格遵守這兩類接口協議,兩類接口定義如下:
typedef class HostInterface ∥宿主程序接口,用于插件與宿主程序的通信
{
CWnd pWnd;//宿主程序的窗口句柄
UINTnResourceID: //宿主程序的框架資源ID
}HOST_INTERFACE;
Typedef class PlugInterface //插件接口,用于宿主程序訪問插件
{
CString strPlugID; //插件ID號
CString strPlugName;//插件名稱
UINT strPlugType;//插件類型
intinit_plugin(HOST_INTERFACE *host); //插件初始化函數
int exit_plugin();//插件結束函數
intprocess_plugin();//插件功能調用
}PLUG_INTERFACE;
插件接口提供了插件的基本信息,包括ID號、名稱、類型,同時提供了初始化函數init_plugin()、處理函數process_plugin()、結束函數exit_plugin(),每個插件的具體功能由處理函數實現,增加新的插件實例只要繼承此接口即可。
3.3 插件的識別和加載
插件的自動識別和加載是宿主程序的主要功能,插件的目錄結構如圖3所示,控制系統模擬器平臺分兩步識別和加載插件:
第一步,宿主程序運行后,在插件目錄下遍歷所有“子文件夾”。提取所有“子文件夾名”生成“衛星選擇”界面,根據用戶的選擇確定被模擬的衛星名稱。
第二步,在衛星名稱文件夾下遍歷所有DLL文件,確定插件是否滿足接口定義要求,如果滿足則加載,否則退出,其程序流程見圖4。

圖3 插件目錄結構Fig.3 Plugins directory chart

圖4 插件加載流程Fig.4 Program flowchart of loading plugins
3.4 通信接口設計
通信接口要滿足平臺與插件間的要求,插件與插件間的要求。平臺與插件間的通信可以通過定義插件開發接口實現。相比之下,插件與插件間的通信更為普遍,可以通過設計通信監聽器來實現。監聽器提供全局通信業務,集中處理插件間的各類事件的激發與響應[11],這樣可以減少插件與插件之間的耦合程度,其工作機制如圖5所示。插件A注冊EventX事件,當插件B也對該事件關注時,它需要去實現EventX事件的響應,當事件激發時所有對該事件的消息相應都會執行,實現了插件間通信。
監聽器除了需要具備強大的事件監聽、數據管理和交換能力外,還應當為插件提供標準化、易使用的API接口,便于各插件使用,監聽器API接口函數見表1,控制系統模擬器平臺主要通信事件設計見表2。

圖5 插件之間的通信機制Fig.5 Data exchange mechanism between two plugins

序號接口方法名稱接口功能說明1addListener注冊監聽器2fireEvent激發事件3removeListener刪除監聽器

表2 控制系統模擬器主要通信事件列表
針對北斗導航衛星控制系統的仿真要求,采用基于插件技術的設計思路,建立了通用的衛模仿真平臺。完成了3類14顆衛星轉移軌道和工作軌道的所有工作模式仿真,主要包括太陽捕獲模式、地球捕獲模式、遠地點變軌模式、位置保持模式、正常運行模式等,各項功能、性能指標滿足用戶的要求,達到了預期效果。以GEO衛星為例,圖6是衛星遠地點變軌模式姿態角和角速度的仿真曲線(滾動:綠色,俯仰:紅色,偏航:藍色),圖7是衛星在軌飛行的曲線(滾動:紅色,俯仰:綠色,偏航:藍色),由圖6可以看出仿真曲線滿足X、Y、Z三軸姿態精度0.6°、0.6°、0.9°的要求,且與實際衛星飛行結果一致性好,其它模式的仿真結果同樣滿足設計指標要求,在此不再一一列舉。
用戶通過界面選擇具體的衛星名稱,平臺根據選擇加載不同的插件組,完成不同衛星的模擬,同時平臺通過加載輔助插件組,為用戶提供良好的交互界面。軟件開發完成后,用戶需要另外增加一些衛星故障模式模擬功能,開發者通過增加故障模擬插件、修改動力學插件的方法進行補充,沒有影響原有的宿主程序和其它插件,體現了采用插件開發技術的優勢。

圖6 GEO衛星姿態角和角速度曲線(控制系統模擬器仿真)Fig.6 Attitude angle and angular velocity of GEO satellite (by simulator)

圖7 GEO衛星姿態角和角速度曲線(在軌遙測)Fig.7 Attitude angle and angular GEO velocity (TM data)
隨著衛星控制系統技術的發展,功能模塊越來越多,傳統的軟件開發模式無法滿足控制系統模擬器可修改、可擴展、可二次開發的設計要求,應用插件的開發模式很好地解決了這個問題。在通用控制系統模擬器平臺的基礎上,用戶可以根據任務需求不斷完善已有插件或增加新插件,使衛星控制系統模擬器的功能不斷強大,以滿足不同航天器的使用要求。
References)
[1]吳振宇,熊曉將,宋秋靜.基于面向對象的衛星模擬器設計方法[J].飛行器測控學報,2008,27(2):13-16
Wu Zhenyu,Xiong Xiaojiang,Song Qiujing.Object-oriented design of satellite simulators[J].Journal of Spacecraft TT&C Technology,2008,27(2):13-16 (in Chinese)
[2]李俊娥,周洞汝.“平臺/插件”軟件體系結構風格[J].小型微型計算機系統,2007,28(5):876-881
Li Jun’e,Zhou Dongru.The platform/plug-in software architecture style[J].Journal of Chinese Computer Systems,2007,28(5):876-881 (in Chinese)
[3]楊金翠,袁玉宇.基于構件技術的軟件開發模式研究[J].軟件工程與標準化,2007(10):33-36
Yan Jincui,Yuan Yuyu.The research of software developing model based on component techniques[J].Software Engineering and Standardization,2007(10):33-36 (in Chinese)
[4]史紀強,何興曙,萬志瓊,等.基于插件技術的企業應用集成架構研究[J].計算機與應用化學,2012,29(2):191-194
Shi Jiqiang,He Xingshu,Wan Zhiqiong,et al.Architecture research of enterprise application integration based on plugin[J].Computers and Applied Chemistry,2012,29(2):191-194 (in Chinese)
[5]鮑亮,陳平.基于插件技術的異構數據集成[J].計算機工程,2006,32(20):86-88
Bao Liang,Chen Ping.A plug-in based solution of heterologous data integration[J].Computer Engineering,2006,32(20):86-88 (in Chinese)
[6]張怡.一種基于軟總線的插件技術[J].艦船電子工程,2012,32(3):89-91
Zhang Yi.A plug-in technology based on soft bus[J].Ship Electronic Engineering,2012,32(3):89-91 (in Chinese)
[7]嚴心淳.基于C#2.0調用Delphi7.0編寫的動態鏈接庫[J].電腦編程技巧與維護,2012(16):6-7
Yan Xinchun.Based on the C#2.0 call Delphi7.0 prepared DLL[J].Computer Programming Skills & Maintenance,2012(16):6-7 (in Chinese)
[8]宋健.基于插件的土壤侵蝕經驗模型系統研究[D].開封:河南大學,2014:10
Song Jian.Based on research of the plug-in in soil erosion empirical model system[D].Kaifeng:Henan University,2014:10 (in Chinese)
[9]金萍.基于IPFIX可擴展流信息生成系統的研究與實現[D].北京:北京郵電大學,2010:31
Jin Ping.Research and implementation of extensible flow information export system based on IPFIX[D].Beijing:Beijing University of Posts and Telecommunications,2010:31 (in Chinese)
[10]Jamshaid G Guenther R,Armin E.SRP—plug-in:a strategic release planning plug-in for visualstudio 2010[C]//Proceedings of International Conference on Software Engineering,2011:36-39
[11]譚相瑞,李海濤,韓顏順,等.遙感影像解譯系統“平臺/插件機制”設計與實現[J].遙感信息,2013,28(5):73-76
Tan Xiangrui,Li Haitao,Han Yanshun,et al.Design and implementation of remote sensing image interpretation system using platform/plug-in mechanism[J].Remote Sensing Information,2013,28(5):73-76 (in Chinese)
(編輯:張小琳)
Plugin-based Design on Software Simulator for Beidou Satellite Control System
ZHANG Yu LIU Zhonghan LIN Jiawei LIU Rui
(Beijing Institute of Control Engineering,Beijing 100096,China)
To improve the changeability,scalability and reusability of traditional design method,the principle and merit of plugin technique are analyzed,and a plugin-based design method of software simulator is proposed for satellite control system.By using the software overall design of “host program” + “plugin”,the function of “host program” and “plugin” is properly designed according to the feature of simulator requirement.To make full use of the advantage of plugin technique,a micro kernel structure is designed for the host program whose function is to load and manage the various plugins and provides standard communication service between the plugins using “monitor” mode.To rationalize the design,the plugins are divided into business plugins and auxiliary plugins.The concrete interfaces of the host program,monitor and plugins are designed.The plugin-based simulation platform for general satellites control system is realized,the control system simulation for 14 satellites of three kinds is accomplished,which has achieved obvious benefits.
satellite;control system;simulator;plugin
2015-08-11;
2015-11-20
張宇,男,高級工程師,從事衛星控制系統設計工作。Email:nobody1974@sina.com。
V448
A
10.3969/j.issn.1673-8748.2015.06.005