張 鵬,吳曉東,崔海青
(中國民航大學,天津 300300)
近年來,飛機駕駛艙電子系統正逐步由模擬控制階段向全數字控制階段轉變,功能也有了進一步的擴展,航空電子設備間有著更高的數據通信和傳輸可靠性的要求[1]。為此,航空電子工程委員會 (AEEC)于2007年編制出版了ARINC 825規范。ARINC 825規范基于CAN總線,規定了子系統間的通信行為,包括尋址機制、通信機制、服務結構以及概要描述,定義了使用CAN的機載系統的通信標準,被視為當前和未來飛機的重要數據傳輸方式[2]。目前空客公司和波音公司生產的新一代民航客機已經將ARINC825總線作為輔助子系統總線,應用于發動機控制、飛行控制和駕駛艙控制面板等子系統網絡中[3]。
本文以駕駛艙控制面板為例,分析了ARINC825總線的主要特點,結合駕駛艙控制面板通信要求,使用雙電源供電機制,設計了一套具有較高可靠性的雙鏈路冗余的ARINC825通信接口設備。并通過“時間觸發總線調度”技術對通信接口可靠性進行分析。
現代飛機駕駛艙控制面板承擔著飛行員與飛機系統間的交互功能。控制面板的控制裝置種類繁多,既包括傳統的開關、電位器、鍵盤和光標定位器等,又包括現代的觸摸液晶屏和語音控制設備等。它們控制EFIS、PFD、ND等顯示系統的切換、信息輸入和其他的交互操作[4]。ARINC825總線具有可靠性高、抗干擾能力強、實時響應好、體積小、重量輕、通訊速率高及易擴展的優點[5],能夠滿足駕駛艙內控制面板的通信要求。控制面板產生的交互數據經通信接口設備轉換為ARINC825數據,發送到通信總線上;同時要將從ARINC825總線上傳輸過來的數據解碼發給控制面板。駕駛艙控制面板通信接口功能架構如圖1所示。
ARINC825協議是基于CAN總線高層協議的進一步改進而成,其電氣特性、傳輸速率等符合ISO-11898標準,通信鏈路由節點互連的120 Ω屏蔽雙絞線電纜組成。
為了在飛行器上使用 CAN總線,ARINC825對CAN2.0B協議做了進一步修改,ARINC825在CAN總線的物理層和數據鏈路層的基礎上,在網絡層增加了路由、數據包和流量控制等功能;在傳輸層增加了邏輯通道,數據重傳等功能;在表示層中增加了數據表示和數據標準化等功能。與原來的CAN總線相比,ARINC825網絡沒有傳統網絡上的主從節點之分,所有的節點具有相同權限。通過對29位識別符擴展幀進行重新編碼實現邏輯通信信道(LCC),函數標識符 (FID),數據對象代碼 (DOC)等的劃分,用于實現節點尋址和數據流控制等功能。還擁有緊急故障檢測機制,受影響的節點能自動檢測到故障[6]。
ARINC825協議除了具有CAN總線傳統的ATM(Anyone-to-Many) 傳輸模式,還具有 PTP(Peer-to-Peer)傳輸模式。ATM通信的優勢在于能夠與網絡中所有的節點建立持續的數據鏈接,但是ATM需要處理非自身的數據包,增加了接收節點的工作量。PTP通信允許網絡中的一個節點向另一個節點發送數據,實現類似服務器/客戶端類型的交互。在網絡中同時實現ATM和PTP兩種通信模式,需要網絡層具有標識和隔離數據的能力,ARINC825使用CAN的識別符擴展幀的高3位作為邏輯通信通道標識,ARINC825的PTP傳輸模式和ATM傳輸模式的通信數據結構如圖 2 所示[7]。
圖2 ARINC825的通信數據結構
ARINC825總線使用冗余信道標識 (RCI)標記冗余鏈路或節點,最多支持四冗余結構。本文設計的通信接口使用并列式雙冗余總線架構。主控芯片選擇STM32F207單片機,內部包含兩個CAN通信模塊,實現CAN網絡底層的通信功能。應用層的處理控制算法通過軟件編程實現。通信接口的硬件原理如圖3所示。通信接口通過串口與控制面板進行數據通信,將接收到的數據封裝為ARINC825格式的數據包,發送到雙冗余的鏈路上;ARINC825總線上傳輸過來的數據經過解碼發給控制面板。通信接口以10 ms為周期,進行周期性數據發送,通信速率為250 kbit/s,用于駕駛艙內部電子系統間的數據通信,通信距離小于20 m。
圖3 通信接口的硬件原理圖
CAN通信芯片選擇TJA1050,TJA1050是一種標準的高速CAN收發器,可以為總線提供差動發送功能,為CAN控制器提供差動接收功能。TJA1050完全兼容ISO-11898標準,最高通信速度1Mbps,能夠滿足ARINC825通信標準需要。同時,TJA1050采用SOI技術降低電磁干擾,有電源短路保護功能[8]。
在實際應用中,有可能發生輸入端電源不穩定或總線浪涌脈沖,會導致電路中存在高頻瞬時干擾,這將會對電路造成很大破壞,如果不加以適當防護就會損壞通信接口,甚至損壞后級電路。對于這種瞬時干擾可以采用隔離的方法加以防護。其次,遠程數據通訊通常存在很大的地電位差,該電位差到了發送器的輸出上就變成了共模噪聲。如果這種噪聲過大,就有可能超過接收器的輸入共模噪聲容限,從而對器件造成損壞。電源隔離模塊采用 BS0505,BS0505是常用的電源隔離模塊,具有效率高、體積小、可靠性高、隔離特性好的特點。使用ADuM1201雙通道數字隔離器,將CAN通信芯片和單片機進行隔離,這樣即保證沒有回路電流,同時也保證電路的安全性,滿足航電系統的可靠性要求。CAN通信接口原理圖如圖4所示。
圖4 CAN通信接口原理圖
通信接口的電源為了滿足航電系統的可靠性要求,保證電源供電的有效可靠,設計使用雙電源供電。航電系統一般采用28 V直流供電,單片機系統使用5 V供電,使用MP1584降壓型轉換器進行電壓轉換。MP1584輸出5 V時,有效的電壓輸入是8~28 V。供電電路上串聯一個47 Ω的限流電阻R保證時電流不會過載。考慮到在電源切換時要保證單片機的正常運行,需要保證斷電時供電時間需要大于200 ms,使用電容儲能的方式,保證在電源切換時單片機正常工作,初始時刻,電容兩端的電壓為28 V,t時刻后,電容兩端電壓Ut為:
需要保證t>200 ms,Ut>8 V,可以得出電容C應大于339 μF。為保證斷電時供電要求,選擇1 000 μF電容能夠完全滿足要求。
電源切換電路使用光耦繼電器,光耦繼電器能夠快速完成電源切換,幾乎不產生干擾。光耦繼電器最大通過電流為100 mA。通信接口的工作電流最大不會超過150 mA,選用雙光耦繼電器作為電源切換器件,保證系統的正常工作。電源切換電路原理圖如圖5所示。
圖5 電源切換電路原理圖
使用單片機STM32F207內部集成的AD轉換接口,對直流電源進行分壓采樣,用于電源電壓監控。系統上電后默認使用電源1,當電源1不能滿足電源質量18~30 V的要求時,單片機控制光耦繼電器使能引腳,電源切換到備用電源2上。
本文使用模塊編程來編寫通信接口軟件程序,包括了輸入輸出模塊、數模轉換模塊、故障處理模塊、通信數據模塊、CAN通信模塊。輸入輸出模塊用于控制和顯示通信接口的功能狀態;數模轉換模塊主要對電源和主板狀態進行監控;故障處理模塊完成故障判斷和處理功能;通信數據模塊功能是對傳輸的數據進行預處理和對CAN通信協議的高層進行修改,使其滿足ARINC825協議。
在系統工作之前的主要進行功能初始化,對使用的端口進行寄存器配置并使能,需要完成的配置有GPIO離散量定義、ADC數模轉換定義、UART串口通信初始化、ARINC825通信協議設定、CAN通信初始化、系統時鐘初始化和中斷配置。完成系統初始化后,對主、副電源進行檢測,如果主電源不滿足18-30V的電壓要求,系統自動切換到備用電源。
2.3.1 ARINC825信息的冗余發送
控制面板的控制器對面板上的操作進行處理,通過串口將數據傳輸到通信接口,通信接口對這些數據進行處理后,發送到ARINC825總線上。
進行串口數據轉為ARINC825總線數據時,需要定義一個狀態機用于接收處理字符串數據。如圖6所示,狀態機默認狀態是Finished,當接收到起始標志“*”,狀態機狀態變為GetHeader,當處在GetHeader狀態時,如果接收到結束標志“#”就會進入SAVE_WORKING狀態;SAVE_WORKING狀態會將緩存內的數據存到數組變量中當,處理完成后,狀態機狀態變為Finished。數組變量中的數據即是待發送的數據包。通信數據模塊為待發送數據包進行SN序列號填充,填充組裝完成的數據幀會在兩條相互冗余的鏈路上同時進行發送。數據幀的 SN序列號由0遞增到255,之后再從0開始計數。接收端再接收到數據幀時,會檢測SN序列號,對相同SN序列號的數據幀會進行去冗余操作,同時也能夠檢測出傳輸過程中丟幀錯誤。
圖6 串口數據接收狀態機
2.3.2 ARINC825信息的冗余接收
ARINC825總線在接收數據時,需要對并聯雙冗余通信鏈路上接收到的數據幀進行SN序列號的檢查,對出現錯誤的數據包進行過濾。主控芯片的任意一個CAN模塊在接收完一幀數據后,會觸發通信處理中斷。通信時,當一路CAN總線通信中斷被觸發,中斷處理程序開始讀取數據包,首先會對數據進行完整性校驗,如果數據完整,通過SN序列號判斷是否在冗余通道上收到過此數據,如果不存在,則說明是有效幀,將SN序列號記錄到內存當中。如果存在,說明此數據幀是冗余數據,對有效載荷內的數據做一致性檢測,不通過,則丟棄當前幀。數據接收的程序框圖如圖7所示。
圖7 ARINC825數據接收程序框圖
為了對總線節點進行傳輸控制,ARINC825使用“時間觸發總線調度”技術。時間觸發總線控制基于兩個概念,即主時間幀 (Major Time Frame)和次時間幀 (Minor Time Frame)。主時間幀為總線中所有的周期性消息至少傳輸一次的時間長度,次時間幀 (Minor Time Frame)為總線中傳輸頻率最大的幀的周期。同一時間幀內的數據幀采用多主競爭發送。只要控制總線中各個節點在次時間幀中的數據發送,就可以保證總線節點間通信的確定性[9]。計算總線負載時,需要選取一個時間片段進行分析,使用時間間隔最小的次時間幀作TransmissionInterval進行計算分析,能夠得出最大的總線負載。ARINC 825基于CAN2.0B通信協議,使用了29位標識符擴展幀,數據幀長度與有效載荷有關,計算公式如下:
在計算數據幀長度時需要考慮填充位,其計算公式如下:
有效載荷與數據幀長度的計算結果如表1所示。
總線負載計算公式如下:
表1 數據幀長度計算值
NumMessages指此時間段內的消息幀傳輸次數。TransmissionInterval指所選時間段的時間長度。DataRate指總線傳輸速率,單位bit/s。總線負載計算公式僅用于周期性消息幀的負載計算,非周期性消息幀的負載計算需要先將其等效轉換為周期性消息,再進行計算[10]。
圖8 時間觸發總線調度機制的時序原理圖
如圖8所示,本文設計的通信接口需要每10 ms進行一次數據幀的傳輸,設計的通信速率為250kbit/s。總線上同時會有4個ARINC825節點進行數據通信,采用短幀結構,有效載荷為8 bit。總線負載使用公式 (4)進行計算得:
ARINC825協議的最大帶寬利用率在理想的情況下可以達到80%以上,考慮到事件消息和錯誤幀可能需要額外的總線帶寬,設計時應預留一部分總線帶寬,建議的總線負載不超過50%[11]。本文設計的總線接口速率完全能夠滿足通信要求,如果需要擴展節點數量,此設計下最大的節點數量不應該超過8個。如果有更多的節點需求,就需選擇更高的總線通信速率或者進行節點分網。
選用4個通信接口設備組成4節點ARINC825通信網絡組成驗證平臺,將測試用控制面板接入通信接口模塊上,使用28 V直流電源為系統供電。使用CAN網絡分析儀接收ARINC825網絡的數據包,通過USB連接到計算機的上位機,監視通信數據。測試用的控制面板為按鍵鍵盤,按下相應的按鍵,會觸發控制面板的按鍵中斷,通過串口將按下的鍵位發送給通信接口模塊,通信接口將位置編碼到ARINC825數據包的有效載荷內,通過計算機上位機觀察是否接收到相應的指令,驗證ARINC825通信接口是否正常工作。實驗結果如圖9所示。
圖9 測試接收數據
實驗選取其中幀ID為0833045數據幀進行分析,上位機軟件能夠定時接收到此設備發送過來的數據幀,在按下測試用控制面板的相應按鍵后,上位機軟件立即接收到相應的數據幀。通過比較每個數據幀之前SN序列號,依次為連續遞增,表示數據沒有發生丟失。
導出捕獲的ARINC825網絡數據包,統計時間標識,計算每個數據幀的時間間隔,如表2所示。
表2 時間標識與時間間隔
通過統計計算1000個數據幀的時間間隔,得出平均時間間隔為9.6 ms,數據幀的時間間隔波動是由于ARINC825總線存在多個發送節點,節點間存在總線競爭,當總線被其他節點占用時,此設備會自動競爭下一個總線使用權限,通過“時間觸發總線調度”機制可以保證10 ms的周期發送要求。
本文基于ARINC825協議設計一套雙冗余的通信接口設備,使用冗余供電,數據冗余收發保證設備的可靠性。通過“時間觸發總線調度”技術進行傳輸控制,保證總線負載不超過設計值。通過實驗表明設計的通信接口設備能夠滿足駕駛艙控制面板通信。對于ARINC825總線技術應用于駕駛艙控制面板間的數據通信具有實際意義。