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