「深度」基於JSON的雷達報文交換框架

「深度」基于JSON的雷达报文交换框架

學術plus快來試試號內搜索功能!

輸入關鍵詞→一鍵檢索您需要的文章。

【兼職】神秘崗位正在向你招手,敢來麼?

【厚度】學術plus年終鉅獻:2017年 你不可以錯過的重磅報告們!(全文閱讀鏈接)

「深度」基于JSON的雷达报文交换框架

今日薦文

摘 要:為簡化雷達軟件系統的接口設計,提出一種基於JSON的雷達報文交換框架。框架首先引入JSON對象作為交換載體,建立了消息抽象層次結構和報文交換流程,並通過兩個功能類的設計實現了報文數據內容和結構描述的同時傳輸,使得通信雙方不必受限於協議格式的約束,可以直接進行數據項級的靈活交換。應用測試結果表明,框架可以實現收發獨立解耦,而且易於使用和擴展,性能滿足實際工程應用需求,能夠為雷達軟件系統的複用開發和CBB(Common Building Blocks,共用基礎模塊)設計提供參考。

引 言

隨著雷達體制和功能的不斷髮展,其系統設計和模塊劃分也變得日益複雜,這使得雷達內部CSCI(Computer Software Configuration Item,計算機軟件配置項)之間的接口數量和需要傳遞的報文種類大大增加。通常包括10個左右CSCI的雷達軟件系統,其內外部報文可達幾十種之多,報文在不同軟硬件平臺之間的傳輸,不僅需要滿足底層通信鏈路的基本要求,更依賴於通信雙方約定的報文協議格式。

定長協議格式是使用最為廣泛的一類雷達報文格式,其報文內部的數據項數量、種類和順序完全固定,雖然它編碼解碼簡單,使用過程直觀明瞭,但缺乏擴展性,無法複用,對於每種報文都需要重新定義。變長協議格式的報文除了數據項外,還包括指示項,指示項某一位的值表明了對應數據項在報文中是否存在,協議通過設定不同指示項的取值實現報文的可變性,具有一定的擴展性,但使用較為複雜,且仍然無法擺脫協議格式對通信雙方的約束,靈活性受限。

針對上述情況,本文設計和實現了一種基於JSON的靈活雷達報文交換協議框架,該框架將報文抽象為消息和基本數據類型的組合,並利用JSON作為中間橋樑進行數據交互,降低通信雙方的接口耦合,提升開發和聯試效率。

1 JSON簡介

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,它語法簡易,數據訪問和結構描述方便靈活,解析速度快、開發效率高。作為數據包格式傳輸時,因為不需要有嚴格的閉合標籤,JSON有效數據量與總數據包比大大提升,從而降低了同等數據流量情況下鏈路的傳輸壓力,更適用於大量數據的交互。

JSON語法是JavaScript對象表示語法的子集,主要具有對象和數組兩種形式。

JSON對象(object)是“鍵/值”對(key/value pair)的無序集合。如圖1所示,一個對象以左花括號“{”開始,右花括號“}”結束,鍵和值之間以冒號“:”連接,“鍵/值”對之間以逗號“,”分隔。

「深度」基于JSON的雷达报文交换框架

圖1 JSON對象格式

JSON數組(array)是值的有序集合。如圖2所示,一個數組以左中括號“[”開始,右中括號“]”結束,值之間以逗號“,”分隔。

「深度」基于JSON的雷达报文交换框架

圖2 JSON數組格式

JSON中鍵是字符串類型的,而值可以是字符串、數值、布爾值(true/false)、、對象或者數組,這些結構支持相互嵌套,從而構成所需要的數據結構描述。

2 框架設計

2.1 整體流程

依賴於協議格式的報文交換過程傳輸的實際上只是數據內容,發送方將數據按照協議格式進行排列打包形成報文,接收方必須依據同樣的協議格式對數據進行解析,雙方對數據結構的描述是通過提前約定的協議格式來實現的。

此外,雷達報文一方面來源、目的、形式各不相同,種類繁多,完全重新設計工作量大、效率低;另一方面,報文內容中存在如日期、時間、慣導信息、工作參數等很多通用數據項,具備複用的條件和可能。

綜合上述分析,框架建立的報文交換流程應當不受限於預定的協議格式,且能夠對不同層次的數據項進行直接操作和複用。

用JSON對象進行數據交換時,傳輸的報文不僅包含了數據內容(即JSON的“值”),同時也蘊含了數據結構(即JSON的“鍵”以及“鍵/值”對應關係),因此通信雙方無需再受協議格式的約束,而且接收方按照需要通過“鍵”在JSON對象裡即可索引得到對應的“值”,框架通信的靈活顆粒度直接達到數據項級別,這使得傳輸報文的擴展和複用變得簡便可行。

「深度」基于JSON的雷达报文交换框架

圖3 框架報文交換流程

如圖3所示,框架交換報文的整體流程設計如下:

1) 發送方將需要輸出的數據按照“鍵/值”對填充到JSON對象中;

2) 發送方序列化JSON對象得到字符串;

3) 字符串通過鏈路傳輸到接收方;

4) 接收方反序列化字符串得到JSON對象;

5) 接收方從JSON對象裡直接提取所需要的數據項。

可以看出,不同於傳統方式對整包數據的捆綁式傳輸,本文框架讀寫數據項可以不完全一致。

2.2 消息抽象

由於JSON的值支持對象類型的嵌套,這為報文交換提供了便捷,針對這一特點,框架建立如下的“消息”概念。

設K表示JSON鍵的集合,V表示JSON值的集合,定義消息為如下二元組(代表JSON的“鍵/值”對)形式:

「深度」基于JSON的雷达报文交换框架

其中v表示若干二元組的無序集合

「深度」基于JSON的雷达报文交换框架

設分別有消息m1和m2

「深度」基于JSON的雷达报文交换框架

定義m1 + m2如下

「深度」基于JSON的雷达报文交换框架

即“+”運算對於集合M是封閉的,可以將一個消息嵌入到另一個消息中。

基於上述理念,不難發現:

1) 任意報文都可以抽象為消息;

2) 消息可以由子消息和基本數據項(對應char、float等基本數據類型)二元組組成;

3) 子消息也是消息,可以繼續往下擴展消息層次。

通過消息的層層嵌套,框架支持對任意報文結構的描述。此外,框架既可以進行通常意義上的基本數據項讀寫,也可以直接進行消息級別的操作,實現了兩者面向用戶使用的無差別化,這使得數據項的複用變得更加便捷。

「深度」基于JSON的雷达报文交换框架

圖4 框架消息示例

圖4是消息的一個簡單示例,其中基本數據項二元組“年”、“月”、“日”組成消息“日期”,而“日期”又可以作為子消息,和其他數據項一起構成更高層的消息。

3 框架實現

基於雷達報文交換的需求分析和框架設計理念,通過IMessageJson和IProtocol兩個功能類進行具體實現。

IMessageJson類實現對消息的讀寫和維護等功能,如圖5所示,它主要包括設置和獲取二元組、設置和獲取子消息、序列化和反序列化等方法,其中:

  • root為JSON值,用於存儲消息內容;

  • MSG_KEY為用戶自定義的有效JSON鍵值,用於索引消息的具體內容;

  • VARIANT為用於統一框架接口,保證參數形式一致性而設計的結構體,它通過一個包含諸多基本類型的聯合體存儲數值,其取值通過對應數據類型的強制轉換實現。

「深度」基于JSON的雷达报文交换框架

圖5 IMessageJson類圖

IProtocol類實現建立通信和交換消息的功能,如圖6所示,它主要包括初始化通信鏈路、創建消息、發送消息和接收消息等方法,其中:

  • LINK_PARAM為初始化通信鏈路所需的參數類型;

  • MSG_TYPE為用戶自定義的有效消息種類類型。

「深度」基于JSON的雷达报文交换框架

圖6 IProtocol類圖

4 應用測試

測試以機載雷達點跡報文為例,收發雙方通過UDP網絡進行通信交換。點跡報文包括任務信息、慣導、日期時間、工作參數等,以及若干個點跡的偵查數據。

4.1 實驗1

實驗1以驗證框架的功能為目的。接收方認為點跡偵查數據為點跡在機體極座標系下的位置座標,即距離(R / m)、方位(A / °)和俯仰(E / °),並按此解析數據。發送方模擬三種不同體制雷達偵查的點跡數據結構:(1)與接收方完全一致;(2)增加徑向速度數據項;(3)剔除俯仰數據項。

「深度」基于JSON的雷达报文交换框架

接收結果如表1所示,其中N/A表示未讀取到有效數據。在情形(1)和(2)中,發送的信息量涵蓋接收所需要的信息量,報文交換正常,情形(3)中雖然缺少俯仰信息,但傳輸過去的距離和方位信息仍然能夠被正常解析和使用。

對於情形(2)和(3),在依賴於協議的傳統報文交換框架中,接收方進行數據包結構解析時即會報錯,交換過程直接失敗,整包數據被丟棄,其包含的信息無法得到任何使用。

4.2 實驗2

實驗2以測試框架的性能為目的。

由於框架在交換數據內容的同時還攜帶了對數據結構的描述,所以需要額外傳輸一部分信息。對最終傳輸的字符串大小與真正數據內容部分的比值p,以及報文發送(包括序列化和傳輸)所消耗的時間t進行統計。

「深度」基于JSON的雷达报文交换框架

圖7 p和t隨點跡數量n的變化關係

實驗結果如圖7所示,其中n為點跡個數,黑色實線為p,紅色虛線為t。可以看出,隨著點跡數量的增加,p大約收斂於1.7,這表明框架僅額外花費了70%的數據量;t與點跡數量基本呈線性關係,對於500點以內的報文,發送時間約在十幾毫秒以內,滿足實際項目應用中幾十至上百毫秒的時間需求。

作為同樣使用結構化方法來標記數據的XML,由於閉合標籤的存在,其p超過2.6,傳輸存在更多冗餘數據,加之基於語法的數據解析過程,其t也在幾百毫秒以上,相較而言本文采用JSON的框架性能更為優異。

5 結 語

本文基於JSON提出了一種雷達報文交換協議框架,該框架實現了數據項級的靈活傳輸,易於使用和擴展。應用結果表明,該框架能夠消除協議格式對通信雙方的完全一致性約束,降低接收和發送的接口耦合,實現收發的相互獨立和數據的“即用即取”,性能滿足實際應用需求,有助於雷達軟件系統的複用開發和CBB設計。

(參考文獻略)


分享到:


相關文章: