?

基于VxWorks的網絡數據實時處理軟件的設計與實現

2020-04-07 10:15
計算機測量與控制 2020年3期
關鍵詞:原始數據數據處理軟件

(中國飛行試驗研究院 測試所,西安 710089)

0 引言

數據處理是飛行試驗過程中的關鍵一環,對于飛行試驗的效率有著非常重要的影響[1-2]。通常情況下,數據是在飛行試驗結束后通過“卸載、分流、處理、分發”的方式發送至課題,這種數據處理方式的效率較低,課題往往需要等到一段時間才能得到結果數據[3]。

目前在飛行試驗中廣泛使用網絡化測試架構,在該架構下機載測試系統將采集的數據通過網絡包的形式發送至存儲設備、遙測發射設備等[4-5]。如果在機載網絡交換機上連接一臺數據處理設備,該設備就可通過以太網接收機載測試系統發送的所有網絡包數據,然后對數據進行解析并存儲處理結果。該方法在飛行的過程中可以實時處理網絡數據,在飛行結束后可通過拷貝的方式直接得到結果數據,這就省去了傳統數據處理中的卸載、分流、處理的過程,大幅提高了數據處理的效率。

當前各類軍民用飛機試飛時對于機載實時數據處理都有著廣泛的需求,如何設計一個可靠的數據處理架構,在滿足機載網絡網絡化測試環境的前提下,實現數據的高效處理,是數據處理工程師必須要解決的一個問題。

1 機載實時數據處理介紹

隨著增強型網絡化遙測系統的廣泛使用,機載測試系統由之前的PCM架構逐漸轉化為網絡化測試架構[6]。相比于之前的PCM測試系統架構,網絡化架構配置更靈活、使用更方便、產品更豐富[7]。網絡化機載測試系統架構下,系統采集的參數量大、采樣率高,采集的數據以網絡包的形式在測試系統上傳輸[8-9]。機載實時數據處理設備通過網絡的方式實時接收網絡包數據,將接收到的網絡數據存儲至硬盤中,同時根據網絡包的數據格式對數據進行解析,并將處理結果存儲在結果文件中。機載實時數據處理極大地提高了數據處理的效率,真正實現了“邊飛行、邊處理”,飛行結束后課題可以快速地得到數據處理結果。

機載數據實時處理系統有如下幾個方面的特點:

1)實時接收的網絡數據流比較多,數據流量比較大。在當前部分型號上,機載網絡數據流可達上百條,數據的位速率可達60~70 Mbps;

2)實時數據處理軟件在數據處理過程中要保證數據處理的實時性,否則會由于網絡數據流過大而發生丟包、錯誤處理等方面的問題;

3)除了進行實時數據處理,系統還需要完整記錄原始數據,所以需要定義數據存儲格式,方便飛行結束后數據卸載;

4)為了提高處理器的利用率,減少頻繁的I/O操作,數據處理過程中需要設計緩存來存儲中間數據,提高系統的運行性能。

2 數據處理軟件架構設計

由于需要對機載測試系統采集的數據進行實時處理,而VxWorks是業內公認的實時性好、可靠性高的系統[10],所以在VxWorks平臺的基礎上,設計并實現了網絡數據實時處理軟件,并在實驗中測試了該軟件的有效性。為了滿足機載網絡數據實時處理的需求,該軟件需要設置網絡數據接收、原始數據存儲、實時數據處理、結果數據存儲四個任務,同時設置原始數據緩存、處理數據緩存、結果數據緩存三個緩沖區以及原始數據存儲信號量、數據處理信號量、結果存儲信號量三個二進制信號量,系統運行時先初始化三個數據緩存以及三個二級制信號量,然后發起網絡數據接收、原始數據存儲、實時數據處理、結果數據存儲四個任務,之后這四個任務在多核多任務環境下執行,軟件運行流程如圖1所示。

圖1 軟件運行流程

網絡數據接收任務實時接收來自機載測試系統發送的網絡包數據,然后將接收到的網絡數據存入原始數據緩存及實時處理緩存中;當原始數據緩存存滿之后,通過原始數據存儲信號量通知原始數據存儲任務進行存儲,當實時處理緩存存滿時,通過實時數據處理二進制信號量通知實時處理任務從緩沖隊列中讀取網絡包數據進行處理,實時處理任務根據網絡數據協議對數據進行解析,然后將處理結果放入結果緩存中。當結果緩存存滿時,通過二進制信號量通知結果數據存儲模塊將處理結果寫入到硬盤。軟件的整體架構如圖2所示。

圖2 網絡數據實時處理軟件架構

為了提高數據處理的效率,機載實時數據處理設備采用了雙核處理器,所以在設計數據處理軟件時需要多核多任務進行分配,分配的原則是負載均衡,即軟件運行的過程中每個核的利用率基本保持一致。設置網絡數據接收和原始數據存儲任務運行在一個核上,實時數據處理和結果數據存儲運行在另外一個核上。另外由于VxWorks是基于優先級任務調度的實時操作系統,所以需要設置各任務的優先級,優先級設置的原則一是保證數據接收、處理、存儲時各任務之間協同工作不發生錯誤,二是根據任務的重要程度,對系統運行越重要的任務優先級越高,基于此設置該系統四個任務的優先級從高到低依次為:網絡數據接收任務、實時數據處理任務、原始數據存儲任務、結果數據存儲任務。

3 數據處理軟件功能實現

3.1 網絡數據接收任務

機載測試系統的采集器將采集的數據以組播的形式發送至測試網絡,待處理參數就在這些網絡包中[11],采集器發送的網絡包數據有如下兩個特點:

1)數據包之間的目的IP不一致,即不同網絡包的目的地址可能不一樣;

2)網絡包數據的發送速率比較高,目前在部分型號上,機載測試系統發送的網路包數據的位速率一般可達60~70 Mbits[12]。

對網絡數據的接收一般有兩種方式,一是通過普通套接字接收,二是通過零緩存套接字接收。在VxWorks系統中,網絡層次包含四層:應用程序層、協議接口層、多路復用層、鏈路層[13]。如果使用普通套接字進行網絡數據接收,數據傳輸過程中就會使用VxWorks的各個網絡層,這樣編程的優點在于層次分明,程序的可移植性強,但是缺點在于這樣會導致數據在各層之間進行傳輸時會層層復制,浪費了時間和空間資源[14]。但是VxWorks提供了基于零拷貝技術的zbuf套接字,使用該方法接收網絡數據時,傳輸過程中不需要進行復制,數據可直接由鏈路層到應用層,省去了時間以及空間的開銷。理論上,使用零拷貝技術后網絡數據接收速率可提高至少50%以上。網絡數據接收任務的處理流程是:

1)初始化網絡接收任務,加載機載系統帶頭文件,系統相關的配置信息存在于系統帶頭文件中;

2)讀取帶頭文件中的數據包目的IP及端口號,將信息存儲到相應的結構中;

3)創建zbuf網絡接收套接字,按照數據包的地址及端口,將套接字加入組播組;

4)等待機載網絡數據,當有數據到來時,循環接收網絡數據,將所有的網絡包數據放進原始數據緩存中,將需要處理的網絡包數據放入數據處理緩存中。

原始數據緩存和數據處理緩存在系統中被設置為雙緩存。以數據處理緩存為例,當網絡數據接收模塊接收到機載測試系統發送的數據時,先將數據放在緩沖區1中,當數據緩沖區1存滿之后,通過數據處理信號量通知實時數據處理任務進行數據處理,然后將接下來的數據存入緩沖區2中,緩沖區2存滿之后同樣通過數據處理信號量通知數據處理任務,如此交替往復,保證數據接收的可靠性。

3.2 原始數據存儲任務

為了方便在硬盤中存儲網絡數據,并且在飛行結束后通過卸載的方式將數據卸載下來,需要針對網絡數據設計一種數據存儲的文件格式,自定義的文件存儲格式可以方便地進行數據的存儲與卸載。根據實際數據的需求,設計圖3所示的文件格式,該格式包括文件頭和數據兩個部分;文件頭包含文件個數和每個文件的自有格式,包括:文件開始位置、結束位置、文件大小、開始時間、結束時間五個信息。數據存儲格式如圖3所示。

文件個數N開始位置結束位置文件大小開始時間結束時間..............................開始位置結束位置文件大小開始時間結束時間文件1數據...... ......文件N數據

圖3 數據存儲格式

在原始數據存儲文件中,先是文件個數N,然后是N個描述每個文件信息的文件頭,最后是N個數據文件。根據實際數據存儲的需求,一般將N設為1 000。當原始數據存儲任務接收到存儲信號量時,開始進行數據存儲,具體的方法是:

1)讀取文件頭中的文件個數N,并將文件個數加一;

2)獲取文件N的結束位置,并在該位置的基礎上加一,作為新文件N+1的開始位置;

3)獲取當前系統時間,作為該文件的開始時間;

4)寫入數據時,分析寫入數據的大小,每寫入一次,更新文件大小、結束時間、結束位置;

5)重復進行步驟4)直至系統運行結束。

3.3 實時數據處理任務

機載測試系統發送的數據包格式為網絡格式,其數據結構如圖4所示[7]。網絡數據中先是四個字節的控制域信息;然后是四個字節的包ID,每一個網絡流都有一個ID號,該ID號是該網絡流的唯一標識;接下來是四個字節的序列號,對于每一個網絡包數據,序列號從零開始逐漸往上增加,每增加一個網絡包序列號加一;序列號之后是四個字節的包長,包長包含從控制域開始到網絡包結束的所有字節數;后面是八個字節的包時間信息,網絡包時間為BCD碼格式,可以對此進行解碼得到數據包采集時刻的時間。最后是網絡包的數據,要處理的參數信息就包含在數據負載里面。

4字節4字節4字節4字節8字節0-65490字節控制域包ID序列號包長包時間數據

圖4 網絡數據格式

實時數據處理任務一直等待數據處理信號量,當收到處理信號量時從數據處理緩存中讀取網絡包數據,根據包ID判斷該包是否需要處理,若需要處理則對待處理的參數進行碼值提取及物理量轉化,最后將處理的參數值放入數據結果緩存中,實時數據處理任務的流程如圖5所示。

圖5 實時數據處理的流程

3.4 結果數據存儲任務

由于CPU的處理速度遠大于I/O的吞吐速度,如果不設置緩存,那么系統就會頻繁的進行I/O操作,嚴重影響處理器的性能[15]。所以需要設置緩存協調高速處理設備與低速存儲設備之間的匹配問題。在實時數據處理與結果數據存儲之間設置預留緩存,先將處理的中間結果存入預留緩存中,然后在緩存存滿之后一次性寫入硬盤,這會極大地減少計算資源的浪費,提高處理器的利用率。

結果數據存儲任務用于將預留緩存中的數據寫入到硬盤中,該任務發起后等待存儲信號量,當預留緩存滿之后釋放存儲信號量,結果數據存儲任務收到存儲信號量之后將預留緩存中的數據寫入到硬盤中。

具體實現時,可以巧妙地利用fwrite()函數自帶的緩沖區,在系統初始化時將該函數的緩沖區設置為一秒鐘結果數據的大小,一般設為1M。當結果數據緩沖區滿時系統自行利用內部信號量的機制寫入數據,這樣可有效避免頻繁操作I/O和硬盤給處理性能帶來不利的影響。

4 實驗測試與驗證

4.1 測試環境搭建

在WorkBench3.3/VxWorks6.9環境下實現了網絡數據實時處理軟件,在某型號的機載實時數據處理設備上進行測試,該設備的性能指標如表1所示。

表1 機載實時數據處理設備性能

自適應機載實時數據處理軟件需要測試三個方面的內容:1)是否能夠以同等的位速率接收網絡數據;2)數據存儲格式是否正確且能夠100%記錄;3)數據處理的結果準確可靠,滿足課題要求。

以真實的機載網絡數據為數據源,編寫機載網絡數據發送軟件。該軟件利用毫秒級高精度定時,以給定的位速率給機載實時數據處理設備發送網絡數據;在機載實時處理軟件中以看門狗定時器的方式定位時間,計算每秒鐘接收的字節數進而計算位速率;此外編寫了數據卸載軟件,以讀取硬盤的方式獲取文件句柄并按照自定義的文件格式卸載數據。

4.2 測試結果分析

在實驗測試時設定網絡數據發送軟件的位速率為65 Mbps,機載實時數據處理軟件接收的位速率也是65 Mbps,表明網絡數據接收模塊能夠正常運行。網絡數據共發送了1.98 G的機載數據,通過卸載軟件能夠正常卸載并且卸載的數據文件也是1.98 G,表明數據存儲任務也能正常運行。將結果存儲任務存儲的結果文件拷貝出來,分析其中的真空速參數并與實際的真空速進行比較,發現該參數處理正確且能正常存儲,表明實時數據處理及結果數據存儲任務能正常運行。真空速數值處理結果如圖6所示。

圖6 真空速處理結果

實驗結果表明,基于VxWorks的機載實時數據處理軟件能夠在機載網絡化測試環境下正常接收高速網絡數據,將數據按照自定義的文件格式100%寫入硬盤中;同時該軟件可以保證數據處理的實時性及準確性,在給定的位速率的條件下實時處理數據,并將結果寫入結果文件。該軟件可滿足機載實時數據處理的需求。

5 結束語

針對當前飛行試驗對于機載實時數據處理軟件的需求,設計并實現了一種基于VxWorks的網絡數據實時處理軟件。該軟件利用零拷貝技術通過網絡的方式接收機載測試系統發送的高速網絡包數據,并將數據存儲在自定義的文件中;同時根據網絡協議實時解析網絡包數據,將數據結果存儲在結果文件中。為了提高軟件運行的可靠性,利用多核多任務分配的方法,實現了多任務之間的協同工作以及多核之間的負載均衡;此外在各任務之間設置了緩沖區,保證了處理器的高效利用。實驗測試結果表明,該軟件能實時接收、處理、存儲數據,并得到準確的處理結果。該軟件的使用可大幅提高數據處理的效率,為飛行試驗數據處理提供了新的途徑。

猜你喜歡
原始數據數據處理軟件
認知診斷缺失數據處理方法的比較:零替換、多重插補與極大似然估計法*
禪宗軟件
無人機測繪數據處理關鍵技術及運用
工業軟件 自主創新
高層建筑沉降監測數據處理中多元回歸分析方法的應用研究
高層建筑沉降監測數據處理中多元回歸分析方法的應用研究
論航空情報原始數據提交與應用
視頻大數據處理的設計與應用
對物理實驗測量儀器讀數的思考
即時通訊軟件WhatsApp
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合