基于AFDX的跨總線ARINC615協(xié)議軟件設(shè)計及實(shí)現(xiàn)
摘要:ARINC615協(xié)議定義了一種基于ARINC429總線的數(shù)據(jù)加卸載方法,在以AFDX網(wǎng)絡(luò)為核心的航電網(wǎng)絡(luò)中,數(shù)據(jù)加載器一般為基于AFDX通信的端系統(tǒng)設(shè)備,為了完成航電網(wǎng)絡(luò)加載器對ARINC429總線設(shè)備的加載,文章提出了一種基于AFDX的跨總線加載結(jié)構(gòu),采用有窮狀態(tài)機(jī)的方法實(shí)現(xiàn)了ARINC615協(xié)議的功能,設(shè)計并實(shí)現(xiàn)了基于ARINC615協(xié)議的應(yīng)用軟件,保證了文件傳輸?shù)挠行院涂煽啃浴?br />關(guān)鍵詞:ARINC615協(xié)議;AFDX協(xié)議;文件傳輸;軟件
0 引言
ARINC615協(xié)議定義了一種機(jī)載計算機(jī)高速數(shù)據(jù)加載器,基于ARINC429總線完成對機(jī)載計算機(jī)的數(shù)據(jù)上傳和下載功能。在以AFDX網(wǎng)絡(luò)為主干網(wǎng)絡(luò)的航電網(wǎng)絡(luò)中,以AFDX網(wǎng)絡(luò)為核心,外圍通過遠(yuǎn)程數(shù)據(jù)接口單元掛載ARINC429總線設(shè)備,航電網(wǎng)絡(luò)加載器一般是基于AFDX通信來完成航電網(wǎng)絡(luò)數(shù)據(jù)的加卸載功能,導(dǎo)致對ARINC429總線設(shè)備的加載需要通過基于AFDX通信的網(wǎng)絡(luò)加載器來完成,針對此問題,本文將ARINC615協(xié)議加載端移植到基于AFDX通信的航電網(wǎng)絡(luò)加載器上,提出一種基于AFDX的跨總線ARINC615協(xié)議軟件設(shè)計實(shí)現(xiàn)方法,并設(shè)計應(yīng)用層的加卸載方案,實(shí)現(xiàn)了航電網(wǎng)絡(luò)加載器和目標(biāo)機(jī)的數(shù)據(jù)文件加卸載功能。
1 ARINC615協(xié)議概述
ARINC615協(xié)議是基于ARINC429總線的數(shù)據(jù)加卸載協(xié)議,其加載端和目標(biāo)機(jī)均需支持ARINC429基本數(shù)據(jù)通信,在ARINC429基本通信的基礎(chǔ)上,ARINC615協(xié)議定義了一系列的規(guī)則,通過握手一響應(yīng)一確認(rèn)機(jī)制來完成數(shù)據(jù)在加載端和目標(biāo)機(jī)的傳輸過程。
1.1 基本協(xié)議層交互定義
429總線上傳輸?shù)臄?shù)據(jù)單元長度為32位,因此ARINC615協(xié)議的命令及數(shù)據(jù)傳輸均是基于32位的數(shù)據(jù)包進(jìn)行。ARINC615協(xié)議的數(shù)據(jù)通信的交互命令定義如表1所示。
如表1所示,ARINC615協(xié)議交互命令分為初始字命令、中間字命令和結(jié)束字命令三種。三種命令數(shù)據(jù)格式中第32位為奇偶校驗(yàn)位,第1到8位為429的Label號標(biāo)識,第30和31位區(qū)別三種類型的命令。初始字命令用于數(shù)據(jù)傳輸前的命令交互握手,其數(shù)據(jù)格式中第23位到第29位標(biāo)識不同類型的初始字命令,RTS命令用于發(fā)送請求命令,其9到15位標(biāo)識本次發(fā)送請求要發(fā)送的記錄個數(shù);CTS命令用于對RTS命令的響應(yīng),其9到15位標(biāo)識可接收的記錄個數(shù);DF命令表明開始數(shù)據(jù)傳輸,其16到22位標(biāo)識當(dāng)前傳輸?shù)挠涗浶蛱枺?到15位標(biāo)識當(dāng)前傳輸?shù)挠涗浀目傋止?jié)數(shù);AC K和NAK命令標(biāo)識對數(shù)據(jù)接收的確認(rèn),其16到22位均標(biāo)識其確認(rèn)的記錄序號;SYN命令用于加載端和目標(biāo)機(jī)的同步;HDR命令通過第16到22位的命令字段來發(fā)起包括讀數(shù)據(jù)塊、寫數(shù)據(jù)塊、加載完成、進(jìn)入自動模式等命令;加載端發(fā)送POL命令來探測有可能的自動下載操作。中間字主要用于傳輸數(shù)據(jù),DATA命令中第8到24位為數(shù)據(jù)段,包含兩個字節(jié)的數(shù)據(jù)信息。結(jié)束字用于每個記錄傳輸完成后的數(shù)據(jù)校驗(yàn)和傳輸。
1.2 配置文件定義
在ARINC615協(xié)議的加載端,需定義配置文件CONFIG.LDR,用于對加載端上傳和下載操作進(jìn)行定義和描述。CONFIG.LDR文件中配置參數(shù)格式描述如下:
parameter_id=parameter valueCR,LF>
其中parameter_id為一個變長字段,包含了要定義的配置參數(shù)名,配置參數(shù)名中可包含一個數(shù)字‘n’,標(biāo)識所定義的參數(shù)為第幾條總線參數(shù),n的范圍為1~8,如BlP用于定義第一條總線的優(yōu)先級。parameter_value為具體的配置參數(shù)值,對于有多個參數(shù)值的配置參數(shù),參數(shù)值之問用逗號隔開。CR,LF>為回車換行符。
CONFIG.LDR配置文件主要配置參數(shù)的定義及其含義如表2所示。
表2中給出了CONFIG.LDR文件中主要參數(shù)的定義,包括總線屬性定義、總線優(yōu)先級定義、總線發(fā)送文件定義及總線接收文件定義等。
1.3 協(xié)議功能定義
ARINC615協(xié)議將要上傳或下載的文件分為多個塊(block),每個塊大小由CONFIG.LDR中BnT屬性定義,默認(rèn)每個塊大小為1024字節(jié),在每次數(shù)據(jù)傳輸過程中,將塊又細(xì)分為記錄(record),對于上傳操作,每個記錄大小范圍為0~252字節(jié),對于下載操作,每個記錄大小為0~254字節(jié),每次數(shù)據(jù)交互以一個記錄為單位進(jìn)行。
協(xié)議的功能基于基本交互命令實(shí)現(xiàn),協(xié)議的主要功能定義如下:
(1)通信初始化。加載器讀取配置文件的內(nèi)容,根據(jù)配置文件的信息選擇上傳或下載操作,發(fā)送初始化命令,收到目標(biāo)機(jī)響應(yīng)后,進(jìn)入上傳或下載操作;
(2)上傳操作。上傳操作分為通信初始化后直接上傳、控制模式文件選擇上傳、控制模式下上傳。
通信初始化后直接上傳:總線配置文件的上傳文件是目標(biāo)機(jī)端需要的,在通信初始化完成后,直接向目標(biāo)機(jī)上傳文件。
控制模式文件選擇上傳:總線配置文件的上傳文件不是目標(biāo)機(jī)端需要的(或者未定義上傳文件),目標(biāo)機(jī)端發(fā)起控制模式命令,加載器進(jìn)入控制模式。在控制模式下,目標(biāo)機(jī)需要在指定文件后進(jìn)入直接上傳模式,加載器向目標(biāo)機(jī)上傳文件。
控制模式下上傳:總線配置文件的上傳文件不是目標(biāo)機(jī)端需要的(或者未定義上傳文件),目標(biāo)機(jī)端發(fā)起控制模式命令,加載器進(jìn)入控制模式。在控制模式下,目標(biāo)機(jī)控制整個數(shù)據(jù)傳輸過程,目標(biāo)機(jī)指定需要的文件,從加載器讀取數(shù)據(jù)。
(3)下載操作。下載操作分為通信初始化后直接下載、控制模式文件選擇下載、控制模式下下載。
通信初始化后直接下載:總線配置文件的下載文件是目標(biāo)機(jī)端需要的,在通信初始化完成后,加載器等待目標(biāo)機(jī)傳輸文件,當(dāng)目標(biāo)機(jī)準(zhǔn)備好后,向加載器發(fā)送數(shù)據(jù)文件。
控制模式文件選擇下載:總線配置初始化為自動上傳或自動下載,目標(biāo)機(jī)發(fā)送控制模式命令,進(jìn)入控制模式,在控制模式下,目標(biāo)機(jī)打開文件進(jìn)行寫操作后,轉(zhuǎn)入直接下載模式,向加載器發(fā)送數(shù)據(jù)文件。
控制模式下下載:總線配置初始化為自動上傳或自動下載,目標(biāo)機(jī)發(fā)送控制模式命令,進(jìn)入控制模式。在控制模式下,目標(biāo)機(jī)控制整個數(shù)據(jù)傳輸過程,打開文件后向加載器寫入文件數(shù)據(jù)。
2 跨總線加載方案設(shè)計
跨總線加載方案定義了一種基于AFDX的加卸載方法,其加載端基于AFDX通信協(xié)議運(yùn)行,目標(biāo)機(jī)基于ARINC429協(xié)議運(yùn)行。
跨總線網(wǎng)絡(luò)協(xié)議棧如圖1所示。加載器與目標(biāo)機(jī)端之間通過數(shù)據(jù)網(wǎng)關(guān)連接,數(shù)據(jù)網(wǎng)關(guān)完成ARINC664協(xié)議到ARINC429協(xié)議的轉(zhuǎn)換。加載器端
底層基于ARINC664總線,通過協(xié)議映射層完成AFDX數(shù)據(jù)到ARINC429數(shù)據(jù)的轉(zhuǎn)換,以支持ARINC615協(xié)議加載端的運(yùn)行。數(shù)據(jù)網(wǎng)關(guān)實(shí)現(xiàn)了ARINC66 4協(xié)議和ARINC429協(xié)議的雙向轉(zhuǎn)換工作,定義了數(shù)據(jù)轉(zhuǎn)換規(guī)則。在數(shù)據(jù)網(wǎng)關(guān)上需維護(hù)(AFDX發(fā)送端口號,AFDX接收端口號,429設(shè)備標(biāo)號)的映射關(guān)系表。當(dāng)數(shù)據(jù)網(wǎng)關(guān)收到一個AFDX數(shù)據(jù)包時,利用AFDX接收端口號查找映射關(guān)系表,可以取得這個AFDX數(shù)據(jù)的目的429設(shè)備,數(shù)據(jù)網(wǎng)關(guān)解析AFDX數(shù)據(jù)包,進(jìn)行相應(yīng)的轉(zhuǎn)換為N429數(shù)據(jù),發(fā)往目的429設(shè)備。而當(dāng)數(shù)據(jù)網(wǎng)關(guān)設(shè)備接收到一個429數(shù)據(jù)包時,利用429設(shè)備標(biāo)識查找映射關(guān)系表,獲得429設(shè)備對應(yīng)的AFDX發(fā)送端口號,然后對數(shù)據(jù)進(jìn)行轉(zhuǎn)換封裝為AFDX數(shù)據(jù)幀,通過查找到的AFDX發(fā)送端口號發(fā)送出去。
由于ARINC615交互數(shù)據(jù)及429設(shè)備數(shù)據(jù)均為32位長度,而對于AFDX網(wǎng)絡(luò)來說,每次傳輸數(shù)據(jù)只傳輸32位有效數(shù)據(jù),對網(wǎng)絡(luò)帶寬會造成較大浪費(fèi),因此,在數(shù)據(jù)網(wǎng)關(guān)設(shè)備的協(xié)議轉(zhuǎn)換層需進(jìn)行數(shù)據(jù)融合,即數(shù)據(jù)網(wǎng)關(guān)能夠?qū)⒍鄠€32位429數(shù)據(jù)封裝到一個AFDX數(shù)據(jù)包中進(jìn)行傳輸,同時在接收到一個包含多個32位ARINC615協(xié)議數(shù)據(jù)的AFDX數(shù)據(jù)包時,能夠?qū)⒚總€ARINC615協(xié)議數(shù)據(jù)解析出來,依次拆分為32位ARINC429協(xié)議數(shù)據(jù)發(fā)送出去。
3 基于有限狀態(tài)機(jī)的協(xié)議實(shí)現(xiàn)
在ARINC615協(xié)議的上傳和下載過程中,每一時刻加載端和目標(biāo)機(jī)都處于一個特定的狀態(tài),而且所有可能出現(xiàn)的狀態(tài)是確定的,定義軟件開始運(yùn)行時狀態(tài)為初始狀態(tài),當(dāng)有輸入事件時,軟件整個過程按照狀態(tài)機(jī)開始跳轉(zhuǎn)運(yùn)行,直至運(yùn)行至終止?fàn)顟B(tài)。
因此,可以根據(jù)ARINC615協(xié)議,抽象出加載端及目標(biāo)機(jī)軟件運(yùn)行的各個狀態(tài)類型,按照表3所示的狀態(tài)轉(zhuǎn)移表整理協(xié)議中所有的狀態(tài)及其轉(zhuǎn)移流程。
表3中,當(dāng)前狀態(tài)指當(dāng)前軟件所處的狀態(tài),在輸入事件的情況下,調(diào)用處理函數(shù)后運(yùn)行至下一狀態(tài)。一個當(dāng)前狀態(tài)可對應(yīng)多個輸入事件,分別調(diào)用對應(yīng)的處理函數(shù),進(jìn)入不同的下一狀態(tài)。按照表3建立ARINC615協(xié)議的狀態(tài)轉(zhuǎn)移表,并按照功能實(shí)現(xiàn)各狀態(tài)在輸入事件下的處理函數(shù),軟件即可依照狀態(tài)轉(zhuǎn)移表運(yùn)行,狀態(tài)機(jī)運(yùn)行的接口定義如下:
其中init_state為狀態(tài)機(jī)起始運(yùn)行的狀態(tài),init_event為狀態(tài)機(jī)初始的輸入事件,exit_state為狀態(tài)機(jī)的結(jié)束狀態(tài),exit_event為狀態(tài)機(jī)的退出事件,session和parameter兩個參數(shù)記錄了狀態(tài)機(jī)運(yùn)行過程中的會話和參數(shù)信息。通過StateMachine接口,可完成ARINC615協(xié)議的自動運(yùn)行。
4 基于ARINC615協(xié)議的應(yīng)用軟件
ARINC615協(xié)議定義了文件數(shù)據(jù)傳輸?shù)倪^程,基于ARINC615協(xié)議,設(shè)計應(yīng)用層軟件,實(shí)現(xiàn)一種工程上可靠、實(shí)用的文件上傳和下載功能。在應(yīng)用軟件中,主要的功能包括:
(1)加載端和目標(biāo)機(jī)端要傳輸?shù)奈募墨@取,保證加載端和目標(biāo)機(jī)端都能夠知道要對方上傳和下載的文件的文件名;
(2)文件傳輸最后填充字節(jié)的識別和剔除,避免由于ARINC615協(xié)議數(shù)據(jù)傳輸過程中為了字節(jié)對齊而填充的數(shù)據(jù)對文件正確性的影響。
應(yīng)用層軟件的加載端和目標(biāo)機(jī)端的工作流程如圖2所示。
如圖2所示,在加載端,定義了CONFIG.LDR文件,在該文件中,定義加載端發(fā)起自動上傳操作,且第n條總線上要上傳的文件名為File List[n],其中n代表第n條總線,其取值范圍為1~8,在FlieList文件中定義了加載端要上傳和要下載的文件名稱,及該文件對應(yīng)的屬性(上傳或者下載)。軟件開始運(yùn)行后,由加載端解析CONFIG.LDR配置文件,發(fā)起自動上傳操作,加載端和目標(biāo)機(jī)端進(jìn)入自動上傳模式,由加載端將約定好的FileList[n]文件傳輸至目標(biāo)機(jī)端,文件傳輸完成后,加載端等待目標(biāo)機(jī)端的控制模式命令。目標(biāo)端在接收到FileList文件后,解析該文件,獲取加載端要上傳的文件名及要下載的文件名后,發(fā)起控制模式命令,加載端和目標(biāo)機(jī)端均進(jìn)入控制模式。在控制模式下,由目標(biāo)機(jī)端控制文件的上傳和下載,目標(biāo)機(jī)根據(jù)解析的要上傳和下載的文件名,對于要上傳的文件,目標(biāo)機(jī)端發(fā)起讀操作,從目標(biāo)機(jī)端讀取上傳文件;對于加載端要下載的文件名,目標(biāo)機(jī)端發(fā)起寫操作,向加載端寫入數(shù)據(jù)文件。對于定義了多條總線的CONFIG.LDR配置文件,加載端按照總線優(yōu)先級依次進(jìn)行如圖2所示的文件傳輸流程,直至所有總線上定義的數(shù)據(jù)文件均傳輸完成。
ARINC615協(xié)議中每次數(shù)據(jù)傳輸?shù)囊粋€DATA命令傳輸兩個字節(jié)的數(shù)據(jù),在協(xié)議中規(guī)定了當(dāng)文件傳輸最后僅剩一個字節(jié)時,需填充一個字節(jié),然后進(jìn)行數(shù)據(jù)傳輸,這就導(dǎo)致了在文件傳輸過程中,對于要上傳或下載的奇數(shù)字節(jié)文件,在文件傳輸完成后,會出現(xiàn)多一個填充字節(jié)的問題。在應(yīng)用軟件設(shè)計中,利用DATA命令中協(xié)議未定義的第25位作為判斷標(biāo)識位,在正常的文件傳輸下,該位標(biāo)識為0,當(dāng)出現(xiàn)數(shù)據(jù)填充后,將該位置標(biāo)識為1,在文件接收端,如果發(fā)現(xiàn)該位為1,則能夠確認(rèn)接收到的數(shù)據(jù)中有一個字節(jié)的填充,這樣可以將填充的字節(jié)剔除,從而保證了文件的正確性。
5 結(jié)語
文章介紹了AIRNC615的基本原理,提出了一種基于AIRNC615的跨總線加載結(jié)構(gòu),采用有窮狀態(tài)機(jī)的方法實(shí)現(xiàn)了AIRNC615協(xié)議的功能,從工程應(yīng)用的角度,設(shè)計并實(shí)現(xiàn)了基于AIRNC615協(xié)議的應(yīng)用軟件,保證了文件傳輸?shù)挠行院涂煽啃浴?/p>
評論