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