孟承 王 建
(中國船舶重工集團 第七二四研究所,江蘇 南京211100)
現代雷達系統面對日益復雜多變的目標和電磁環境,需要具備多種工作模式,且能根據環境、目標特性等快速調整自身參數和資源配置以適應不同的探測任務。但是,傳統雷達系統各環節耦合性強,主要采用定制研發的機制,當雷達系統功能需求改變時,需要重新設計雷達系統底層的軟硬件,這導致了雷達系統研制周期長,雷達類型繁雜,難以滿足現代雷達系統的多功能探測需求。因此推動了現代雷達在設計理念、系統實現方法和裝備研制模式上的創新發展,“軟件化雷達”的概念應時而生[1-3]。文獻[3]嘗試提出了一個“軟件化雷達”定義,并描述了其特點和定位。文獻[4]將軟件構件技術引入到雷達系統開發過程中,生成了軟件化雷達體系結構和層次化的軟件體系結構。文獻[5]分析和論述了軟件化雷達的需求、國內外研究現狀、內涵及技術架構、關鍵技術及發展設想等方面。文獻[6-7]研究了軟件化雷達系統的分層結構。為了解決軟件化雷達中軟件和硬件分層解耦帶來的跨層銜接和軟硬件鉸鏈的難題,中間件技術是軟件化雷達中的關鍵技術之一。軟件化雷達中的中間件主要分為通信中間件和計算中間件兩類。文獻[8]設計了一套通信中間件,并實現了一套兼容DDS 的API。目前有很多較為成熟的消息中間件,比如RabbitMQ、RocketMQ、Kafka 等。本文利用開源中間件RabbitMQ,對軟件化雷達進行了通信中間件的設計和仿真,通過通信中間件實現了軟件化雷達系統各模塊間的消息傳遞。
在傳統雷達系統中,往往采用專用的硬件和軟件模塊來實現信息處理功能,信息處理各環節軟硬件處于緊耦合狀態,僅適應于單一的雷達探測功能。體制和工作模式變化的靈活度很小,也限制了雷達系統性能進一步的提升的空間。
軟件化雷達系統采用可擴展、可重構、可升級的軟硬件解耦分層處理結構,其中,中間件是實現雷達系統中軟件和硬件分層解耦的關鍵,起到了跨層銜接和軟硬件鉸鏈的橋梁作用。針對如何在軟件化雷達系統中使用中間件,怎么基于RabbitMQ 對軟件化雷達系統通信中間件進行具體相關的設計以及數據包結構等問題,下面給出解決方案。
通信中間件是目前計算機和互聯網領域廣泛應用的概念之一,特指在分布式計算節點之間,通過軟件封裝的方式對通信接口的操作,簡化多節點應用程序的開發復雜度,便于系統規模的彈性擴展和維護。雷達信號處理系統持續接收前端的回波數據,且回波數據大多為脈沖結構,能夠作為數據包在系統中傳輸,適合數據流驅動計算模式。由于單個芯片性能不足以實現整個算法,不同算法處理環節分布在不同節點上,因此給雷達信號處理系統中不同節點之間的通信帶來非常多的障礙。不同的通信接口不僅為算法調試人員的開發帶來了困難,也不利于頂層應用的通用性。通信中間件主要解決的問題就是簡化通信接口的開發[9-11]。傳統雷達系統各組件間耦合性強的原因是因為各組件間直接進行數據傳輸,通過在系統中使用通信中間件,各組件間的數據傳遞都通過通信中間件來進行,即可實現解耦。
由于雷達數據是持續、有序、以脈沖為節拍的輸出,有明顯的數據包的概念且雷達信號處理有很強的實時性需求,并行要求較高,所以本文選擇訂閱發布模式的消息中間件RabbitMQ來設計通信中間件。
下面對消息發送和消息消費模塊進行設計。消息生產者和消息消費者的核心流程如下圖1、2 所示。

圖1 生產者核心流程

圖2 消費者核心流程
按照以上設計對軟件化雷達中間件進行搭建。首先在linux系統上安裝好RabbitMQ 搭建好服務器。
然后按照上述核心流程編寫消息生產者和消息消費者的代碼,并進行相關的參數配置。最后模擬雷達系統中組件間的消息傳遞。組件1 給組件2 發送測試消息,仿真結果如圖3、4 所示。
當雷達功能需求發生改變導致組件1 的消息需要發送給組件3 時,此時只需改變組件1 交換機綁定規則即可完成發送對象的轉變。仿真結果如圖5、6 所示。
從仿真結果可看出,借助通信中間件進行消息傳遞,雷達系統各組件間實現了解耦。
RabbitMQ 提供了一個管控臺插件,安裝后可以在web 頁面登陸進入后臺,可對服務器上的交換機、隊列等進行相應的操作,同時還可查看隊列中消息傳輸情況。本設計的消息速率如圖7 所示。
本文針對傳統雷達系統各組件間耦合度太強的問題,按照軟件化雷達的理念,基于RabbiMQ 消息中間件對軟件化雷達系統通信中間件進行了設計和仿真。仿真結果表明該設計滿足雷達系統的解耦仿真。
但是由于硬件設備的問題,本設計的消息傳遞速率不夠高,后續可通過硬件設備的升級以及程序的優化進行提升。另外,RabbitMQ 還提供了消息確認機制,消費者在聲明隊列時,可指定noAck 參數,當noAck=false 時,RabbitMQ 會等待消費者顯式發回ack 信號后才從內存或者磁盤中移除消息否則RabbitMQ 會在隊列中消息被消費后立即刪除它。同時在代碼方面有部分重復的部分,還可通過使用SpringBoot 來簡化程序。后續工作可在這些方面展開。

圖3 組件1 消息發送測試

圖4 組件2 接收測試

圖5 組件1 消息發送測試

圖6 組件3 接收測試

圖7 消息速率