靳建彬,王元?dú)J,陳 源,包 瑞
(1.裝備指揮技術(shù)學(xué)院,北京101416;2.中國(guó)人民解放軍63999部隊(duì),北京100094)
目前,基于軟件無線電處理技術(shù)的測(cè)控系統(tǒng)受制于專用硬件設(shè)備(DSP/FPGA),在重組性、擴(kuò)展性和通用性方面不夠理想?;谔摂M無線電的分布式測(cè)控系統(tǒng)由“天線+數(shù)字化接口+計(jì)算機(jī)+軟件”構(gòu)成[2],利用計(jì)算機(jī)實(shí)現(xiàn)測(cè)控系統(tǒng)的核心功能。目前國(guó)外已經(jīng)開展了基于虛擬無線電技術(shù)的軟件化GSM基站、虛擬雷達(dá)(virtual radar)和軟件GPS接收機(jī)方面的研究,國(guó)內(nèi)也出現(xiàn)了軟件化數(shù)字電視。這種軟件化處理的模式,一方面擺脫了對(duì)專有硬件平臺(tái)的依賴,另一方面卻使得軟件模塊增多,各信號(hào)處理模塊之間耦合密切,數(shù)據(jù)交換頻繁。當(dāng)組件之間有數(shù)據(jù)流動(dòng)時(shí),一個(gè)組件的更改會(huì)影響其他很多組件的調(diào)用。
面對(duì)上述問題,借鑒硬件總線的思想,運(yùn)用軟件、網(wǎng)絡(luò)和通信等技術(shù),設(shè)計(jì)了分布式測(cè)控系統(tǒng)的軟總線數(shù)據(jù)傳輸平臺(tái)。試驗(yàn)結(jié)果表明此平臺(tái)實(shí)現(xiàn)了組件間的數(shù)據(jù)傳輸和解耦合。
計(jì)算機(jī)系統(tǒng)的硬件總線是計(jì)算機(jī)內(nèi)各部件和輸入輸出設(shè)備相互傳送信息的公共通道。通過硬件總線計(jì)算機(jī)系統(tǒng)可以插接各種類型的標(biāo)準(zhǔn)接口模塊,并可靈活地?cái)U(kuò)展系統(tǒng)功能。軟件總線與硬件總線一樣[3]是一組虛擬的數(shù)據(jù)信息傳輸通道,是一組通用的標(biāo)準(zhǔn)軟件接口,是一個(gè)提供數(shù)據(jù)傳輸通道的軟件,系統(tǒng)內(nèi)的各個(gè)功能組件通過總線交換信息。
目前基于分布式對(duì)象計(jì)算技術(shù)的中間件就是基于軟總線思想,能夠屏蔽不同操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議和編程語言帶來的通信兼容性問題[4],實(shí)現(xiàn)組件通過中間件進(jìn)行間接、透明的數(shù)據(jù)通信。這里引入分布式計(jì)算中間件自適應(yīng)通信環(huán)境對(duì)象請(qǐng)求代理(THE ACE ORB,TAO)。TAO是在自適應(yīng)通信環(huán)境(ACE)基礎(chǔ)上開發(fā)的高性能實(shí)時(shí)CORBA中間件。其內(nèi)部的對(duì)象請(qǐng)求代理ORB允許對(duì)象不知道對(duì)象位置、系統(tǒng)平臺(tái)和通信協(xié)議的情況下進(jìn)行透明的互操作,極大地方便了異構(gòu)分布式環(huán)境下系統(tǒng)的開發(fā)。
實(shí)時(shí)事件服務(wù)是分布式組件通信的關(guān)鍵。這里根據(jù)系統(tǒng)功能需求,應(yīng)用了中間件TAO的實(shí)時(shí)事件服務(wù)機(jī)制,實(shí)現(xiàn)解耦組件間的數(shù)據(jù)傳輸。
事件服務(wù)提供了一種松散的、異步的通信機(jī)制,建立了一個(gè)通用的分布式事件模型[5]。事件服務(wù)共有數(shù)據(jù)提供者、數(shù)據(jù)消費(fèi)者和事件通道3個(gè)角色。提供者和消費(fèi)者通過事件通道進(jìn)行間接異步通信,組件可以實(shí)現(xiàn)解耦合和即插即用。
通信模式有2種:推(Push)模式:提供者主動(dòng)提供數(shù)據(jù);拉(Pull)模式:消費(fèi)者主動(dòng)申請(qǐng)數(shù)據(jù)。由于消費(fèi)者通常無法精確地知道事件產(chǎn)生的確切時(shí)間,因此Pull模式中一般采用輪詢的方法獲得提供者的通知,造成事件通道通信量的增加,容易引起網(wǎng)絡(luò)阻塞,因此對(duì)于頻繁發(fā)送數(shù)據(jù)的通信采用Push模式。測(cè)控系統(tǒng)處理的是周期性的采集數(shù)據(jù),組件間數(shù)據(jù)傳輸頻繁,因此采用Push模式,提供者把不斷采集的數(shù)據(jù)傳入事件通道,然后主動(dòng)傳給消費(fèi)者進(jìn)行算法處理。實(shí)時(shí)事件服務(wù)模型如圖1所示。
圖1 實(shí)時(shí)事件服務(wù)模型
標(biāo)準(zhǔn)事件服務(wù)定義事件通道作為事件從提供者向所有消費(fèi)者廣播的廣播者,所有已注冊(cè)的消費(fèi)者必須接收所有的事件。如果有的消費(fèi)者對(duì)某些事件不感興趣,只有消費(fèi)者自己將所接收的事件進(jìn)行拋棄,但是事件已經(jīng)在網(wǎng)絡(luò)上進(jìn)行了傳輸,占用了網(wǎng)絡(luò)資源,浪費(fèi)了傳送事件所占有的帶寬和處理時(shí)間。
為減輕網(wǎng)絡(luò)負(fù)載,提高傳輸效率,軟總線中加入事件過濾機(jī)制,這樣設(shè)計(jì)優(yōu)點(diǎn)如下:
①消費(fèi)者不用再對(duì)事件進(jìn)行過濾;
②節(jié)省網(wǎng)絡(luò)資源,降低網(wǎng)絡(luò)負(fù)載,提高傳輸性能;
③如果將過濾機(jī)制放在供給者處,供給者需要知道消費(fèi)者的需求,這樣增加了耦合性,與平臺(tái)解耦合的初衷相左。
由于事件服務(wù)機(jī)制封裝在TAO中間件內(nèi)部,代碼復(fù)雜、晦澀,不利于組件設(shè)計(jì)者使用。參照事件服務(wù)標(biāo)準(zhǔn)設(shè)計(jì)了軟總線數(shù)據(jù)傳輸平臺(tái),提供了標(biāo)準(zhǔn)的接口。系統(tǒng)的組件只要遵循標(biāo)準(zhǔn)接口,就可以作為數(shù)據(jù)提供者、消費(fèi)者或二者都有連接到軟總線上,實(shí)現(xiàn)組件之間的分布式通信。
軟總線規(guī)定了統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),由事件頭和事件體構(gòu)成。數(shù)據(jù)塊要求統(tǒng)一的數(shù)據(jù)類型和長(zhǎng)度,如圖2所示。
圖2 統(tǒng)一數(shù)據(jù)結(jié)構(gòu)
軟總線采用數(shù)據(jù)“發(fā)布—訂閱”模式,提供者發(fā)布數(shù)據(jù),消費(fèi)者訂閱數(shù)據(jù)。在組件接入軟總線之前,要指定過濾參數(shù),即表明發(fā)布數(shù)據(jù)或消費(fèi)數(shù)據(jù)的數(shù)據(jù)源或數(shù)據(jù)類型。軟總線內(nèi)部原理圖如圖3所示。
圖3 軟總線內(nèi)部原理
運(yùn)行原理是:供應(yīng)者與消費(fèi)者進(jìn)行通信,總線首先要分配一個(gè)事件通道(Event Channel,EC),然后執(zhí)行以下步驟:
①供應(yīng)者:事件通道(EC)創(chuàng)建一個(gè)供應(yīng)者管理器(Supplier Administer,SA);由SA為對(duì)端的消費(fèi)者在本地創(chuàng)建一個(gè)消費(fèi)者代理(Proxy Consumer,PC),這相當(dāng)于PC連接到事件通道EC上;供應(yīng)者本身與PPC相連,表示向EC注冊(cè);
②消費(fèi)者:事件通道(EC)創(chuàng)建一個(gè)消費(fèi)者管理器(Consumer Administer,CA);由CA為對(duì)端的供應(yīng)者在本地創(chuàng)建一個(gè)供應(yīng)者代理(Proxy Supplier,PS),這相當(dāng)于PS連接到事件通道EC上;消費(fèi)者本身與PPS相連,表示向同一事件通道注冊(cè)。
至此,完成了供應(yīng)者與消費(fèi)者的全程相連。供應(yīng)者管理器與消費(fèi)者管理器只是負(fù)責(zé)創(chuàng)建相應(yīng)的消費(fèi)者代理和供應(yīng)者代理,通道建立后,在整個(gè)通信過程中不再介入。
這里將設(shè)計(jì)的軟總線應(yīng)用于虛擬無線電分布式測(cè)控系統(tǒng),系統(tǒng)結(jié)構(gòu)圖如圖4所示。
圖4 虛擬無線電分布式測(cè)控系統(tǒng)
這里命名服務(wù)采用的是組播模式,通過命名服務(wù),網(wǎng)絡(luò)中的計(jì)算機(jī)可以定位其他計(jì)算機(jī)上的算法模塊,獲得事件服務(wù)對(duì)象的引用,便于數(shù)據(jù)的發(fā)送和接收[6]。
組件主要通過調(diào)用軟總線提供的標(biāo)準(zhǔn)接口實(shí)現(xiàn)和軟總線的交互。下面以載波跟蹤模塊提供者為例說明組件和總線交互的過程。
首先模塊發(fā)布數(shù)據(jù)源類型:
模塊調(diào)用標(biāo)準(zhǔn)接口函數(shù)接入軟總線通道,并設(shè)置數(shù)據(jù)源為過濾參數(shù):
軟總線介于操作系統(tǒng)和算法模塊之間,作為模塊間數(shù)據(jù)傳輸?shù)墓餐ǖ?。加入軟總線后,系統(tǒng)模塊之間不進(jìn)行直接交互,而是通過軟總線間接連接。比如,載波跟蹤模塊不用知道自己需求的數(shù)據(jù)來自哪個(gè)模塊,也不用知道自己的數(shù)據(jù)要送往哪里,只需要和總線進(jìn)行交互,與其他組件無關(guān)。軟總線接收模塊推來的數(shù)據(jù),并送到訂閱了此數(shù)據(jù)源的1個(gè)或多個(gè)模塊,實(shí)現(xiàn)了模塊間的數(shù)據(jù)通信。
分布式測(cè)控系統(tǒng)中的計(jì)算機(jī)通過局域網(wǎng)連接。系統(tǒng)通過命名服務(wù)定位分布式組件的位置,運(yùn)行命令如下:
最后模塊將產(chǎn)生的數(shù)據(jù)推入總線:
完成了和總線的數(shù)據(jù)交換。如果模塊想斷開和總線的連接,調(diào)用接口函數(shù):
軟總線接收數(shù)據(jù)后會(huì)發(fā)送到訂閱了此數(shù)據(jù)的模塊。接收模塊對(duì)軟總線的使用與提供者類似。軟總線封裝了ACE通信環(huán)境、ORB和事件服務(wù),只是提供給模塊簡(jiǎn)單的接口函數(shù),使得模塊設(shè)計(jì)人員能夠輕松使用,降低了編程難度。
模塊既可以作為提供者產(chǎn)生數(shù)據(jù),也可以作為接受者接收數(shù)據(jù),或者二者都有。比如載波跟蹤模塊既接收數(shù)據(jù)讀取模塊的數(shù)據(jù),又將處理后的數(shù)據(jù)發(fā)送給測(cè)速模塊和遙測(cè)模塊。
測(cè)試環(huán)境:WindowsXP系統(tǒng),千兆網(wǎng),3臺(tái)PC連成局域網(wǎng),如圖5所示。
圖5 測(cè)試環(huán)境
測(cè)試包括正確性測(cè)試和實(shí)時(shí)性測(cè)試。16.3 MB/s的采集速率得到的數(shù)據(jù)經(jīng)過載波跟蹤處理,得到多普勒跟蹤曲線結(jié)果如圖6所示。
圖6 載波跟蹤組件多普勒輸出
經(jīng)過軟總線傳輸后的數(shù)據(jù)與上面數(shù)據(jù)進(jìn)行比對(duì),結(jié)果一致,傳輸正確。
測(cè)試的網(wǎng)絡(luò)間數(shù)據(jù)傳輸速度達(dá)到40 MB/s,可以進(jìn)行高速可持續(xù)的數(shù)據(jù)傳輸。對(duì)于1 s的采樣數(shù)據(jù),經(jīng)過軟總線傳輸需要花費(fèi)的時(shí)間是0.1 s,算法處理時(shí)間小于0.9 s,因此可以滿足實(shí)時(shí)性的要求。
參照中間件TAO的實(shí)時(shí)事件服務(wù)標(biāo)準(zhǔn)設(shè)計(jì)了軟總線數(shù)據(jù)傳輸平臺(tái),并應(yīng)用于基于虛擬無線電的分布式測(cè)控系統(tǒng)。軟總線平臺(tái)實(shí)現(xiàn)了算法組件之間的分布式通信,使各組件之間結(jié)構(gòu)解耦合,系統(tǒng)能夠并行開發(fā)。同時(shí)提高了測(cè)控系統(tǒng)的靈活性,便于系統(tǒng)的結(jié)構(gòu)可擴(kuò)展和組件的可重用性,降低了系統(tǒng)的升級(jí)和維護(hù)難度。下一步工作是在異構(gòu)系統(tǒng)中使用軟總線平臺(tái),驗(yàn)證其異構(gòu)性。同時(shí)研究?jī)?yōu)先級(jí)搶占等策略,進(jìn)一步提高軟總線的實(shí)時(shí)性能。
[1]楊小牛,樓才義,徐建良.軟件無線電原理與應(yīng)用[M].北京:電子工業(yè)出版社,2001.
[2]劉嘉興.航天測(cè)控技術(shù)的過去、現(xiàn)在和未來[J].電訊技術(shù),1999,39(2):1-3.
[3]顏建平,張 焱,陳路路.軟總線技術(shù)發(fā)展與應(yīng)用研究[J].無線電工程,2008,38(11):61-63.
[4]張洋祥.分布式對(duì)象技術(shù)分析及其發(fā)展研究[J].軟件導(dǎo)刊,2009,2(2):139-141.
[5]朱其亮,鄭 斌.CORBA原理及應(yīng)用[M].北京:北京郵電大學(xué)出版社,2001.
[6]HENNIN M,VINOSKI S.Advanced CORBA Programming with C++[M].Pearson,1999:668-712.