999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

面向對象的無人機任務設備通信接收軟件設計

2018-08-13 10:37:10皮祖成
軟件 2018年7期
關鍵詞:特征

皮祖成,陳 文,馬 龍,魏 瀚

?

面向對象的無人機任務設備通信接收軟件設計

皮祖成,陳 文,馬 龍,魏 瀚

(彩虹無人機科技有限公司,北京 100074)

無人機在執行任務過程中,任務管理計算機需要接收地面控制站發送的遙控指令,同時也將遙測信息發回地面控制站。遙測信息來源于無人機上各種任務載荷的狀態遙測和偵察數據遙測信息。任務載荷遙控和遙測的通信處理過程是由任務管理軟件來實現的。本文所述的任務設備通信接收軟件是任務管理軟件的底層通信模塊。任務設備通信幀模型采用了數據結構化定義的方式,其基本模塊包含通信幀的幀頭、幀長和幀校驗等區段。為了統一接收所有任務設備的通信數據,本文設計了基于面向對象方法的通信幀接收軟件。通過試驗測試,本文所述程序能高效的完成通信幀的接收工作,并具備一定的擴展靈活性,并成功應用于某型無人機任務管理處理中。

無人機;狀態機;通信幀;面向對象

0 引言

無人機廣泛應用于偵察監視等領域[1],隨著無人機技術的發展,無人機的載重能力也得到了很大的進步,同時能掛載多型任務載荷。無人機可通過換裝搭配不同的任務載荷以實現不同的作業任務需求。為了適應多任務載荷掛載的需求,無人機中通常配備有任務管理計算機[2],任務管理計算機的軟件模塊如圖1所示。任務管理軟件實現對任務載荷的控制、狀態監控、任務載荷協同控制和數據存儲等功能。所有功能通過接口單元向任務載荷和外部系統獲取數據,基于獲取到的數據來實現特定的功能。

圖1 任務管理系統

無人機機載端通常采用RS422、CAN總線、ARINC-429等面向字節數據流的接口進行通信[3-4],為了從數據流中提取出通信幀,解決類似TCP網絡通信“粘包”問題[5],一般采用了結構化的方法對數據進行封裝。結構化后的通信幀一般包含幀頭、幀長、幀識別ID、數據和幀校驗等區段。本文通過面向對象的設計方法對通信幀接收過程的軟件進行建模[6-7],并設計了通信接收算法[8]。通過C++語言在嵌入式VxWorks操作系統中實現了任務設備通信接收算法[9-10]。

1 軟件設計

1.1 通信幀模型

任務載荷設備的通信數據一般被設計為結構化的通信幀。針對不同的任務載荷設備采用不同的幀頭,如0xEB90、0x597E、0xEE16、0x597E0BAA51B0等幀頭。“幀長”為連續多個字節所表達的長度信息,一個通信幀的總字節數需要從“幀長”區段中獲取。通常在任務載荷中采用1個或2個字節的無符號整數直接表達通信幀的長度,而在一些特殊情況下需要將多個字節的“幀長”信息進行復雜的運算后才能獲得通信幀的長度。“幀識別ID”區段用于進一步識別通信幀的類型。“數據”段則存放了有效數據。“幀校驗”則為多個字節的幀校驗信息。

本文將通信幀抽象為具有幀頭、幀長和幀附加特征這3種元素的模型。通信幀的“幀頭”位于通信幀的開始部分,具有一定長度的連續字節序列。“幀長”表達了一幀數據所有字節的數量,其值為單個字節的整數倍。幀長信息可以從一幀數據的幀頭之后的數據中獲取,但獲取的方式因幀類型而異。“幀附加特征”是一段字節序列,該序列用于進一步識別該通信幀的類型。在此模型的基礎上,判斷所接收到的數據是否為某一種特定通信幀時,需要具備以下兩個條件:①幀頭匹配;②附加特征匹配。

為了標識通信幀的所有類型,設計了圖2所示的FrameID枚舉來表示通信幀類型,其中僅示例了一部分通信幀類型,可根據軟件的需求進行增減。設計如圖3所示的ComFrame類用于存儲一個完整的通信幀數據,其中content用于存放幀的所有內容,id則為該通信幀的類型。

圖2 通信幀ID枚舉

圖3 通信幀類

設計圖4所示的FrameTrait通信幀特征類,該類作為一個抽象類描述了通信幀的特征:幀頭(header)、幀長(length)、幀附加特征(trait)。通過幀識別符(id)標識了通信幀對象所對應的通信幀類型。因幀接收算法的需要,提供了識別該類通信幀所需要的最少原始字節數(bestPartialSize)信息。從“幀長”的類型來看存在定幀長和可變幀長兩種類型,其中定幀長的幀長值為一固定值,用一個大于零的值來代表;當length為零時代表了可變幀長,此時的幀長度需要從幀頭之后的數據中計算得出。幀長的計算方法包含于FrameTrait提供的Length方法中。Length方法調用了getVarLength虛方法,FrameTrait抽象類的實現類可根據具體通信幀類型的幀長計算方法來實現該算法。幀頭匹配和附加特征匹配算法通過isHeaderOk方法和isTraitOk方法來實現。所有通信幀類型的幀頭均為固定值,在FrameTrait中實現了統一的isHeaderOk算法,用于在數據流中檢查幀頭是否匹配。由于通信幀的附加特征存在各種變化,為了提供算法的可擴展性,將isTraitOk設計為虛函數,以便派生類重寫特征匹配算法。通信幀類ComFrame與通信幀特征類Fra-meTrait之間通過FrameID進行關聯,如圖5所示。

圖4 通信幀特征類

圖5 通信幀類與通信幀特征類的關聯

為了統一配置和獲取通信幀的類型定義,設計了FrameTraitFactory工廠類,如圖 6所示。通過該類提供的insertTrait方法可添加通信幀的類型。通信幀的類型定義包含幀識別符、幀頭、幀長和幀附加特征這4個屬性。在需要使用通信幀特征對象的地方,可提供通信幀ID并使用GetFrameTrait方法獲取到所需的通信幀特征對象。

圖6 通信幀特征工廠類

1.2 類層次結構的設計

通過FrameTrait抽象類派生并實現了3種通信幀特征類型:StandardFrameTrait、DGPSFrameTrait、SpecialFrameTrait類,如圖7所示。其中Standard-FrameTrait用于處理固定幀長通信幀和常規的變幀長通信幀。常規變幀長通信幀的結構如圖8所示,其中幀長用幀頭之后的1個字節表示;固定幀長通信幀則不具有“幀長”區段。特殊可變幀長的通信幀如DGPS(Differential GPS)的某類通信幀,其幀長信息的解析需要使用幀頭之后的數據,并采用特定的CalcLength算法進行解算,如圖9所示。

圖7 通信幀特征類關系圖

圖8 常規變幀長通信幀

圖9 DGPS通信幀

如圖10所示的通信幀既需要識別通信幀頭,同時還要識別子幀ID才能確定通信幀所屬類型。在這種情況下需要用到附加特征匹配功能,此時需要提供附加特征信息和實現isTraitOk方法,該方法在識別到幀頭之后進一步判斷子幀ID是否與給定的值相同,如圖10中當子幀ID位置為“01”則代表了ID_FCC_FrA幀,當幀ID位置為“02”則代表了ID_FCC_FrB幀。附加特征存儲在FrameTrait派生對象的trait字段中。isTraitOk算法決定了如何利用附加特征對通信幀類型進行判斷。

圖10 需要進行附加信息判斷的通信幀

1.3 通信幀接收算法

通信幀接收算法封裝于FrameFinder類中,如圖11所示,每個通信端口綁定一個FrameFinder對象,用于接收該端口的數據。FrameFinder對象必須知道需要從該端口接的通信幀類型,這些信息通過其的構造函數的參數提供。FrameFinder將通信幀類型信息存放于frameTraits變量中。buffer用于緩存來自于通信端口的字節數據流,當端口有數據到來時調用InBuffer方法將數據追加到緩存中。GetFrames方法用于從緩存中獲取指定通信幀類型的數據。

圖11 通信幀識別算法類

FrameFinder中包含多個FrameTrait對象,并為每各FrameTrait對象提供一個接收算法所需的狀態機,如圖12所示,該狀態機用于查找、識別和接收該類型的通信幀,各狀態機的狀態存儲于states變量當中。WorkingStage描述了狀態機的3種狀態,不同狀態下均需要使用到WorkingState狀態變量,其結構如圖13所示。NextStage記錄了狀態機的下一個狀態,即在接下來的狀態切換時切入該狀態。

圖12 通信幀接收狀態機

圖13 狀態機狀態參數

圖14 從buffer中接收一幀數據示意圖

圖15 緩存buffer的定義及使用

通信幀接收的序列圖如圖16所示,App作為主程序首先獲取通信端口的配置信息。通過端口的配置信息可以得知需要從該端口中接收的通信幀類型(FrameID枚舉)的集合。將該集合提供給Frame-TraitFactory對象,并調用GetFrameTrait方法獲取通信幀類型所對應的FrameTrait。FrameTraitFactory是通過找到對應FrameID的FrameTrait,然后調用FrameTrait的Clone方法完成的對象復制。由Frame-TraitFactory將所復制的對象返回給App。App根據所獲取的FrameTrait集合創建FrameFinder對象,然后App進入一個循環讀取通信端口數據的過程中。在App的循環過程中,App首先獲取設備通信端口的新數據,然后調用FrameFinder對象的InBuffer方法將端口數據追加到緩存的尾部。然后,針對每一個狀態機的狀態,執行相應的幀頭查找、特征判斷、幀長提取和通信幀數據接收等操作。最后更新數據緩存和各狀態機對應的VirtualCutPos位置。狀態機的狀態轉換如圖12所示,狀態機起始狀態為查找幀頭狀態(Finding),在查找到幀頭(Condition A)時進入特征匹配狀態(TraitTest)。如果特征匹配失敗(Condition C)則退回到查找幀頭狀態,如果特征匹配成功(Condition B)則進入到數據接收等待狀態(WaittingData)。在數據接收等待狀態時,待接收完一幀通信數據(Condition D)后再次進入查找幀頭狀態。

圖16 通信幀接收序列圖

2 軟件的實現

無人機任務管理機載軟件運行于PowerPC系列處理器上,軟件的底層采用了VxWorks操作系統,并使用面向對象的C++語言編程實現。基本通信幀類ComFrame的content和FrameTrait的header、trait等成員由于變長度的存儲需求,采用STL標準容器vector來存儲,并實例化為BYTE(即C++中的基本類型unsigned char)的容器。FrameTrait類作為一個通信幀特征描述類,需要具備較靈活的擴展性,并且不同的FrameTrait實例需要給通信幀接收算法提供統一的接口。所以將FrameTrait實現為一個抽象類,將算法變化最多的幾個功能實現為其虛函數成員,其中包含了isTraitOk成員、getVarLength成員。同時,因為在應用程序中需要傳遞FrameTrait子類的對象,但由于其多態性,在FrameTrait中設計了虛的Clone方法,通過該方法可使用其抽象類的指針克隆該指針所指對象。FrameTrait的各派生類的對象可從兩種方式獲取,第一種方式采用FrameTra-itFactory工廠類的GetFrameTait方法獲取,另一種方式采用其派生類對象的Clone方法獲取。通過這兩種方式獲取的對象都必須由使用方進行析構。FrameFinder作為算法運行的主體,通過vector容器實現了通信數據的緩沖區,并在每次接收到新的通信數據時進行一次通信幀接收過程。Frame-Finder中通過STL標準容器map實現了FrameTrait子對象和幀接收狀態機的關聯,每一個通信幀接收過程即是對該map的一個遍歷過程,完成每個FrameTrait子對象特征的判斷、數據的接收過程。

3 結論

本文通過面向對象的方法對無人機機載通信幀接收軟件進行了建模設計。利用面向對象的繼承、多態等特性給通信幀接收算法創造了較靈活的可擴展機制,為不同的通信幀格式的統一接收設計了一套基本的算法。通過在VxWorks嵌入式操作系統中采用面向對象的C++編程,提高了嵌入式軟件的抽象能力。本文所設計的通信幀接收算法為無人機任務管理的各項應用層功能提供了標準的接口,使得上層應用軟件的設計得以標準化,降低了對底層處理的依賴。通過項目實踐證明本軟件能高效的運行于無人機任務管理計算機中,并能滿足性能和實時性的需求。

[1] 劉長清, 潘舟浩, 唐曉斌. 國外無人偵察監視飛機發展分析[J]. 中國電子科學研究院學報, 2015, 10(6): 657-661.

[2] 皮祖成, 王誠, 陳文. 某型無人機機載任務管理計算機設計[J]. 航空工程進展, 2016, 7(4): 464-470.

[3] 支超有. 機載數據總線技術及其應用[M]. 北京: 國防工業出版社, 2009.

[4] 劉凱, 何君燕. CAN總線廣播系統設計[J]. 軟件, 2012, 33(1): 109-111.

[5] 王紅霞. 一個內網通信系統的設計與實現[D]. 吉林: 吉林大學, 2014.

[6] 盧超, 黃蔚, 胡國超. 基于圖形數據結構的復雜對象建模設計[J]. 軟件, 2015, 36(12): 220-223.

[7] 蘇薈. 一種新的面向對象軟件集成測試序列生成方法[J]. 軟件, 2012, 33(3): 75-76.

[8] 張合, 劉小紅. 面向對象的對象建模技術及其應用研究[J]. 軟件, 2011, 3: 66-68.

[9] 王學龍. 嵌入式VxWorks系統開發與應用[M]. 北京: 人民郵電出版社, 2003.

[10] 段德功, 丁瑩亮. 基于嵌入式技術的工業通信管理機的開發及應用[J]. 軟件, 2012, 33(6): 83-84.

Object-oriented Design of Communication Receiving Software for UAV Mission Payloads

PI Zu-cheng, CHEN Wen, MA Long, WEI Han

(Cai Hong UAV Technology Co. Ltd., Beijing 100074, China)

The mission management computer needs to receive the remote control commands sent by the ground control station (GCS) during the execution of the mission of UAV. At the same time, mission management computer also needs to send telemetry information to GCS. Telemetry information is derived from telemetry and reconnaissance data for various mission payloads on UAV. The communication procedure of telemetry and remote control is achieved by mission management software. The communication receiving software discussed in this paper is the underlying module of the mission management software. The mission payload communication frame model adopts the structured data definition way, its basic module includes the frame header, the frame length and the frame check sum section and so on. In order to uniformly receive the communication data of all mission payload, this paper designed a communication frame receiving software based on object-oriented method. Throught experiments, the program described in this paper can efficiently complete the reception of communication frames and have a certain degree of expansion flexibility. It is successfully applied to the mission management computer of a certain type of UAV.

UAV; State machine; Datagram; Object-oriented

V247.1

A

10.3969/j.issn.1003-6970.2018.07.013

皮祖成(1985-),男,工程師,主要研究方向:無人機任務載荷應用;陳文(1986-),男,工程師,主要研究方向:無人機任務載荷應用;馬龍(1987-),男,工程師,主要研究方向:無人機任務載荷應用;魏瀚(1990-),男,助理工程師,主要研究方向:無人機任務規劃。

本文著錄格式:皮祖成,陳文,馬龍,等. 面向對象的無人機任務設備通信接收軟件設計[J]. 軟件,2018,39(7):63-67

猜你喜歡
特征
抓住特征巧觀察
離散型隨機變量的分布列與數字特征
具有兩個P’維非線性不可約特征標的非可解群
月震特征及與地震的對比
如何表達“特征”
被k(2≤k≤16)整除的正整數的特征
中等數學(2019年8期)2019-11-25 01:38:14
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
詈語的文化蘊含與現代特征
新聞傳播(2018年11期)2018-08-29 08:15:24
抓住特征巧觀察
基于特征篩選的模型選擇
主站蜘蛛池模板: 国产精品一线天| 亚洲黄色成人| 无码区日韩专区免费系列| 亚洲区视频在线观看| 午夜小视频在线| 精品欧美视频| 婷婷开心中文字幕| 亚洲二三区| 又猛又黄又爽无遮挡的视频网站| 毛片一区二区在线看| 999精品免费视频| 欧美激情二区三区| 国产成人一级| AV不卡国产在线观看| 日韩中文字幕亚洲无线码| 欧美午夜在线播放| 激情综合图区| 欧美一级在线看| 亚洲欧美在线精品一区二区| 无码AV高清毛片中国一级毛片| 久久精品人人做人人综合试看| 91探花在线观看国产最新| 成年A级毛片| 无码国产伊人| 国产偷国产偷在线高清| 91黄色在线观看| 国产综合色在线视频播放线视| 在线欧美国产| 国产成人福利在线| 欧美亚洲欧美| 久久精品91麻豆| 粉嫩国产白浆在线观看| 亚洲综合色区在线播放2019| 91av成人日本不卡三区| 精品久久久久成人码免费动漫| 露脸真实国语乱在线观看| 日韩国产一区二区三区无码| 亚洲国产高清精品线久久| 久久综合成人| 成人午夜免费观看| 久草网视频在线| 91在线播放国产| 国产免费高清无需播放器| 国产91线观看| 国产精品三级专区| 国产精品午夜福利麻豆| 18禁色诱爆乳网站| 欧美亚洲网| 一区二区三区国产精品视频| 久久久精品国产SM调教网站| 成人字幕网视频在线观看| 国产美女在线免费观看| 麻豆精品久久久久久久99蜜桃| 一级做a爰片久久毛片毛片| 美美女高清毛片视频免费观看| 最近最新中文字幕在线第一页 | 日韩大片免费观看视频播放| 一级香蕉人体视频| 午夜综合网| 国产精品第| 日本在线免费网站| 国产日本欧美在线观看| 国产人免费人成免费视频| 91久久国产综合精品| 欧美一级大片在线观看| 成人精品区| 国产在线视频导航| 日韩在线成年视频人网站观看| 国产极品嫩模在线观看91| 日本人妻一区二区三区不卡影院| 很黄的网站在线观看| a毛片基地免费大全| 国产精品视频观看裸模| 日韩专区第一页| 一本色道久久88综合日韩精品| A级毛片无码久久精品免费| 国产成人综合日韩精品无码首页 | 国产精品太粉嫩高中在线观看| 国产玖玖视频| 亚洲欧美成人影院| 97se亚洲综合在线天天| 欧美激情第一欧美在线|