孟承 王 建
(中國船舶重工集團 第七二四研究所,江蘇 南京211100)
現(xiàn)代雷達(dá)系統(tǒng)面對日益復(fù)雜多變的目標(biāo)和電磁環(huán)境,需要具備多種工作模式,且能根據(jù)環(huán)境、目標(biāo)特性等快速調(diào)整自身參數(shù)和資源配置以適應(yīng)不同的探測任務(wù)。但是,傳統(tǒng)雷達(dá)系統(tǒng)各環(huán)節(jié)耦合性強,主要采用定制研發(fā)的機制,當(dāng)雷達(dá)系統(tǒng)功能需求改變時,需要重新設(shè)計雷達(dá)系統(tǒng)底層的軟硬件,這導(dǎo)致了雷達(dá)系統(tǒng)研制周期長,雷達(dá)類型繁雜,難以滿足現(xiàn)代雷達(dá)系統(tǒng)的多功能探測需求。因此推動了現(xiàn)代雷達(dá)在設(shè)計理念、系統(tǒng)實現(xiàn)方法和裝備研制模式上的創(chuàng)新發(fā)展,“軟件化雷達(dá)”的概念應(yīng)時而生[1-3]。文獻(xiàn)[3]嘗試提出了一個“軟件化雷達(dá)”定義,并描述了其特點和定位。文獻(xiàn)[4]將軟件構(gòu)件技術(shù)引入到雷達(dá)系統(tǒng)開發(fā)過程中,生成了軟件化雷達(dá)體系結(jié)構(gòu)和層次化的軟件體系結(jié)構(gòu)。文獻(xiàn)[5]分析和論述了軟件化雷達(dá)的需求、國內(nèi)外研究現(xiàn)狀、內(nèi)涵及技術(shù)架構(gòu)、關(guān)鍵技術(shù)及發(fā)展設(shè)想等方面。文獻(xiàn)[6-7]研究了軟件化雷達(dá)系統(tǒng)的分層結(jié)構(gòu)。為了解決軟件化雷達(dá)中軟件和硬件分層解耦帶來的跨層銜接和軟硬件鉸鏈的難題,中間件技術(shù)是軟件化雷達(dá)中的關(guān)鍵技術(shù)之一。軟件化雷達(dá)中的中間件主要分為通信中間件和計算中間件兩類。文獻(xiàn)[8]設(shè)計了一套通信中間件,并實現(xiàn)了一套兼容DDS 的API。目前有很多較為成熟的消息中間件,比如RabbitMQ、RocketMQ、Kafka 等。本文利用開源中間件RabbitMQ,對軟件化雷達(dá)進行了通信中間件的設(shè)計和仿真,通過通信中間件實現(xiàn)了軟件化雷達(dá)系統(tǒng)各模塊間的消息傳遞。
在傳統(tǒng)雷達(dá)系統(tǒng)中,往往采用專用的硬件和軟件模塊來實現(xiàn)信息處理功能,信息處理各環(huán)節(jié)軟硬件處于緊耦合狀態(tài),僅適應(yīng)于單一的雷達(dá)探測功能。體制和工作模式變化的靈活度很小,也限制了雷達(dá)系統(tǒng)性能進一步的提升的空間。
軟件化雷達(dá)系統(tǒng)采用可擴展、可重構(gòu)、可升級的軟硬件解耦分層處理結(jié)構(gòu),其中,中間件是實現(xiàn)雷達(dá)系統(tǒng)中軟件和硬件分層解耦的關(guān)鍵,起到了跨層銜接和軟硬件鉸鏈的橋梁作用。針對如何在軟件化雷達(dá)系統(tǒng)中使用中間件,怎么基于RabbitMQ 對軟件化雷達(dá)系統(tǒng)通信中間件進行具體相關(guān)的設(shè)計以及數(shù)據(jù)包結(jié)構(gòu)等問題,下面給出解決方案。
通信中間件是目前計算機和互聯(lián)網(wǎng)領(lǐng)域廣泛應(yīng)用的概念之一,特指在分布式計算節(jié)點之間,通過軟件封裝的方式對通信接口的操作,簡化多節(jié)點應(yīng)用程序的開發(fā)復(fù)雜度,便于系統(tǒng)規(guī)模的彈性擴展和維護。雷達(dá)信號處理系統(tǒng)持續(xù)接收前端的回波數(shù)據(jù),且回波數(shù)據(jù)大多為脈沖結(jié)構(gòu),能夠作為數(shù)據(jù)包在系統(tǒng)中傳輸,適合數(shù)據(jù)流驅(qū)動計算模式。由于單個芯片性能不足以實現(xiàn)整個算法,不同算法處理環(huán)節(jié)分布在不同節(jié)點上,因此給雷達(dá)信號處理系統(tǒng)中不同節(jié)點之間的通信帶來非常多的障礙。不同的通信接口不僅為算法調(diào)試人員的開發(fā)帶來了困難,也不利于頂層應(yīng)用的通用性。通信中間件主要解決的問題就是簡化通信接口的開發(fā)[9-11]。傳統(tǒng)雷達(dá)系統(tǒng)各組件間耦合性強的原因是因為各組件間直接進行數(shù)據(jù)傳輸,通過在系統(tǒng)中使用通信中間件,各組件間的數(shù)據(jù)傳遞都通過通信中間件來進行,即可實現(xiàn)解耦。
由于雷達(dá)數(shù)據(jù)是持續(xù)、有序、以脈沖為節(jié)拍的輸出,有明顯的數(shù)據(jù)包的概念且雷達(dá)信號處理有很強的實時性需求,并行要求較高,所以本文選擇訂閱發(fā)布模式的消息中間件RabbitMQ來設(shè)計通信中間件。
下面對消息發(fā)送和消息消費模塊進行設(shè)計。消息生產(chǎn)者和消息消費者的核心流程如下圖1、2 所示。
圖1 生產(chǎn)者核心流程
圖2 消費者核心流程
按照以上設(shè)計對軟件化雷達(dá)中間件進行搭建。首先在linux系統(tǒng)上安裝好RabbitMQ 搭建好服務(wù)器。
然后按照上述核心流程編寫消息生產(chǎn)者和消息消費者的代碼,并進行相關(guān)的參數(shù)配置。最后模擬雷達(dá)系統(tǒng)中組件間的消息傳遞。組件1 給組件2 發(fā)送測試消息,仿真結(jié)果如圖3、4 所示。
當(dāng)雷達(dá)功能需求發(fā)生改變導(dǎo)致組件1 的消息需要發(fā)送給組件3 時,此時只需改變組件1 交換機綁定規(guī)則即可完成發(fā)送對象的轉(zhuǎn)變。仿真結(jié)果如圖5、6 所示。
從仿真結(jié)果可看出,借助通信中間件進行消息傳遞,雷達(dá)系統(tǒng)各組件間實現(xiàn)了解耦。
RabbitMQ 提供了一個管控臺插件,安裝后可以在web 頁面登陸進入后臺,可對服務(wù)器上的交換機、隊列等進行相應(yīng)的操作,同時還可查看隊列中消息傳輸情況。本設(shè)計的消息速率如圖7 所示。
本文針對傳統(tǒng)雷達(dá)系統(tǒng)各組件間耦合度太強的問題,按照軟件化雷達(dá)的理念,基于RabbiMQ 消息中間件對軟件化雷達(dá)系統(tǒng)通信中間件進行了設(shè)計和仿真。仿真結(jié)果表明該設(shè)計滿足雷達(dá)系統(tǒng)的解耦仿真。
但是由于硬件設(shè)備的問題,本設(shè)計的消息傳遞速率不夠高,后續(xù)可通過硬件設(shè)備的升級以及程序的優(yōu)化進行提升。另外,RabbitMQ 還提供了消息確認(rèn)機制,消費者在聲明隊列時,可指定noAck 參數(shù),當(dāng)noAck=false 時,RabbitMQ 會等待消費者顯式發(fā)回ack 信號后才從內(nèi)存或者磁盤中移除消息否則RabbitMQ 會在隊列中消息被消費后立即刪除它。同時在代碼方面有部分重復(fù)的部分,還可通過使用SpringBoot 來簡化程序。后續(xù)工作可在這些方面展開。
圖3 組件1 消息發(fā)送測試
圖4 組件2 接收測試
圖5 組件1 消息發(fā)送測試
圖6 組件3 接收測試
圖7 消息速率