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
抓住特征巧觀察
基于特征篩選的模型選擇
主站蜘蛛池模板: 亚洲伊人天堂| 亚洲区一区| 免费啪啪网址| 亚洲日韩每日更新| 国内丰满少妇猛烈精品播 | 手机成人午夜在线视频| 奇米精品一区二区三区在线观看| 国产色爱av资源综合区| 波多野结衣无码AV在线| 成人91在线| 囯产av无码片毛片一级| 中国特黄美女一级视频| 国产高清国内精品福利| 啪啪啪亚洲无码| 国产精品视频猛进猛出| 五月天久久综合| 精品国产成人a在线观看| 国产黄色免费看| 亚洲精品欧美重口| 看你懂的巨臀中文字幕一区二区| 亚洲一区波多野结衣二区三区| 亚洲综合经典在线一区二区| 一区二区自拍| 国产亚洲欧美日韩在线一区| 国产精品久久久久久影院| 国产成人精品一区二区三区| 中字无码av在线电影| 最新无码专区超级碰碰碰| 99草精品视频| 国产中文在线亚洲精品官网| a级免费视频| 18禁色诱爆乳网站| 日本三区视频| 欧美爱爱网| 亚洲高清在线天堂精品| 色国产视频| 丁香五月亚洲综合在线 | 婷婷开心中文字幕| 青青草国产在线视频| 日韩av无码精品专区| 国产精欧美一区二区三区| 国产综合网站| 国产乱论视频| 欧美色丁香| 亚洲欧美另类色图| 一级成人a毛片免费播放| 成人福利免费在线观看| 亚洲六月丁香六月婷婷蜜芽| 午夜人性色福利无码视频在线观看| 精品国产黑色丝袜高跟鞋| 欧洲一区二区三区无码| 国产成人精品一区二区秒拍1o| 91久久大香线蕉| 成人福利在线视频免费观看| 亚洲视频在线青青| 伊人色天堂| 91欧美在线| a级毛片视频免费观看| 国产丝袜91| 亚洲天堂首页| 欧美激情,国产精品| 国产综合色在线视频播放线视 | 亚洲va视频| 成年人久久黄色网站| 久久精品中文字幕免费| 欧美曰批视频免费播放免费| 亚洲精品无码高潮喷水A| 久久久精品久久久久三级| 国产无码精品在线播放| 国产91蝌蚪窝| 老色鬼欧美精品| 亚洲日本精品一区二区| 999国内精品视频免费| 日本一区二区三区精品视频| 国产精品分类视频分类一区| 国产国拍精品视频免费看| 青青青国产视频手机| 动漫精品中文字幕无码| 色网在线视频| 超碰精品无码一区二区| 久久五月天国产自| a毛片在线播放|