摘要: 針對飛機模擬器硬件仿真時系統模塊多、通信頻繁、結構復雜而導致模塊間布線繁雜, 以及由此產生的干擾等問題, 提出一種基于CAN 總線的駕駛艙仿真方案。該方案中上位機負責邏輯運算, 下位機負責操作信息采集, 通過CAN 總線將上、下位機組成一個網絡, 實現駕駛艙功能仿真。闡述系統的總體結構, 設計了整個駕駛艙的數據傳輸協議, 結合實際應用, 給出了節(jié)點中數據收發(fā)模塊的硬件設計結構和數據傳輸軟件實現方法。實際測試結果表明, 該設計布線簡潔, 數據傳輸穩(wěn)定可靠, 達到預期目標。
根據國家建設民航強國的需要, 國內對飛機模擬機的需求不斷增大, 但目前國內模擬機研制規(guī)模不能滿足日益增長的市場需求, 若引進國外模擬機, 則不僅成本高昂, 且不利于技術掌握, 因此擴大模擬機自主研發(fā)規(guī)模成為必然趨勢。考慮到各種機型的駕駛艙功能的共性, 即系統模塊多、通信頻繁、結構復雜而導致模塊間布線繁雜, 以及由此產生的干擾等問題, 提出一種駕駛艙硬件仿真方案, 該方案可以滿足駕駛艙各模塊間穩(wěn)定通信, 且簡化布線。
1 方案確立
駕駛艙仿真主要以報文的形式承載各系統模塊的操作信息, 通過上位機完成邏輯運算, 實現駕駛艙功能仿真。駕駛艙仿真設計的原則是穩(wěn)定, 即整個駕駛艙網絡應具備一定的容錯能力, 在數據傳輸過程中若產生沖突競爭, 則應有一種機制解決沖突, 且不丟失數據, 而CAN( Cont roller A rea Netw or k) 是一種有效支持分布式控制或實時控制的串行通信網絡, 具有突出的可靠性、實時性和靈活性,基于此選取CAN 總線作為整個駕駛艙網絡通信方案。由于飛機駕駛艙結構復雜、功能繁多, 所以需對駕駛艙進行功能模塊劃分, 各模塊間通過CAN 總線進行通信, 以下即從系統總體設計、CAN 節(jié)點通信接口硬件設計和數據傳輸軟件設計3 個方面詳細闡述該方案。
2 系統總體設計
飛機駕駛艙中的顯示部分主要有電子飛行儀表系統( Elect ronic Flight Inst rument System, EFIS) , 飛機電子中央監(jiān)控( Elect ronic Cent ralized Aircraft Mo nitoring , ECAM), 分別由3 臺觸摸屏顯示器顯示, 其顯示邏輯統一由上位機控制。操作部分有頂版、中央操縱臺、遮光板, 側桿, 這4 部分全部由硬件實現, 基于區(qū)域劃分的原則將其進行模塊劃分, 每一模塊為一節(jié)點。整體架構如圖1 所示。
圖1 整體架構圖
由于各節(jié)點間存在邏輯控制關系, 所以采用多主方式通信, CAN 總線網絡上任一節(jié)點均可作為主節(jié)點向其他節(jié)點發(fā)送數據。上位機作為其中一個節(jié)點, 通過CAN 總線智能適配卡與網絡上的各節(jié)點進行通信, 負責主要的邏輯運算和駕駛艙顯示功能的控制, 其他節(jié)點不僅完成操作動作的采集, 還根據邏輯要求互相控制。
3 CAN 節(jié)點通信接口硬件電路設計
由于駕駛艙各節(jié)點間的控制邏輯復雜, 數據量大,通信頻繁, 故對各節(jié)點主控芯片的存儲容量有較高的要求, 且對CAN 總線網絡中數據傳輸的穩(wěn)定性也有較高要求。選取C80C51F040 作主控芯片, 因其擁有4 352 B RAM 以及64 KB 的FLA SH, 滿足程序應用需要。它內部集成CAN 控制器, 它兼容CAN 技術規(guī)范2. 0A 和2. 0B, 主要由CAN 內核、消息RAM( 獨立于CIP51 的RAM) 、消息處理單元和控制寄存器組成。
CAN 內核由CAN 協議控制器和負責報文收發(fā)的串行/ 并行轉換RX/ T X 移位寄存器組成。消息RAM 用于存儲報文目標和每個目標的仲裁掩碼。這種CAN處理器有32 個隨意配置為發(fā)送和接收的報文目標, 并且每一個報文目標都有自己的識別掩碼, 所有的數據傳輸和接收濾波都是由CAN 控制器完成, 而不是由CIP51 完成。C8051F040 所具備的完善的CAN 總線控制器和獨立的CAN 信息緩沖區(qū), 可以解決MCU ( MicroCo nt ro l U nit ) 與CAN 總線之間串/ 并轉換、不同節(jié)點間波特率誤差的校正、以及MCU 與CAN 總線通信的沖突競爭和同步等問題, 為CAN 總線網絡具有較高穩(wěn)定性提供了可靠的保障。
CAN 總線的收發(fā)器選用TI 公司的SN65HVD230芯片, 該芯片正常模式下的低電流設計使得芯片的發(fā)熱量小( 典型數值為370 A), 而且其優(yōu)化的驅動器設計使得信號質量得到進一步改善; 為進一步提高系統抗干擾能力, 在主控芯片C80C51F040 和收發(fā)器SN65HVD230 之間加入光耦6N137 進行電氣隔離, 由于通信信號傳輸到導線的端點時會發(fā)生反射, 反射信號會干擾正常信號的傳輸, 因而總線兩端接有終端電阻以消除反射信號, 有效隔離CAN 總線上的干擾信號, 提高了系統可靠性。如圖2 所示。
圖2 CAN 節(jié)點通信接口原理圖
4 數據傳輸軟件設計
在CAN 總線上發(fā)送的每一條報文都具有惟一的一個11 位或29 位數字ID, 當發(fā)生沖突時, 仲裁器就根據ID 值的大小決定優(yōu)先級最高的ID 發(fā)送, 其他的退出總線。CAN 總線狀態(tài)取決于二進制數0 而不是1, 即信號是線“與”關系: 當一個節(jié)點發(fā)送1, 另一個節(jié)點發(fā)送0 時, 其他節(jié)點接收到的是信號0。所以ID 值越小,該保報文擁有的優(yōu)先權越高。
4. 1 CAN 通信協議設計
通信協議設計主要包括兩部分, 確定報文ID 和定義報文所含8 位數據的每位具體含義。由于報文ID 決定其優(yōu)先級, 所以需要根據實際邏輯確定每一報文的優(yōu)先級, 鑒于駕駛艙操作部分部件少于1 000 件, 所以采用標準格式幀, 11 位的標識符可以表達211 - 1 等于2 047種報文, 滿足實際需求。每個報文含有8 字節(jié)數據, 由于上位機負責主要邏輯運算, 所以上位機應能根據每一個報文內容精確定位駕駛艙被操作部件, 定義其格式如圖3 所示。
圖3 報文數據功能定義
協議采用Data0~ Data4 五個字節(jié)承載所有信息,信息內容包括板號( Penal Number ) 、件號( Compo nentNumber) 、部件類別( Component Sor t) 、部件狀態(tài)值( 整數部分和小數部分) 和小數標志位( Do t ) 。經過整合,共有32 塊面板, 所以使用5 位二進制表示面板號, 板號( PN0~ PN4) 對應Data3. 3~ Data3. 7; 每塊面板上的部件數均少于128, 跳開關面板上部件最多, 為125 個, 所以采用7 位二進制表示件號, 件號( CN0~ CN6) 對應Data4. 0~ Data4. 6; 根據部件輸出狀態(tài)將其分為5 類,分別是按鈕、波段開關、電位器、顯示屏和跳開關, 所以用3 位二進制表示件類別, 部件類別( CS0~ CS2) 對應Data3. 0~ Data3. 2; 部件狀態(tài)值整數部分( Int0~ Int15)對應Data1. 0~ Data1. 7 和Data2. 0~ Data2. 7, 狀態(tài)值小數部分( Dec0~ Dec7) 對應Data0. 0~ Data0. 7, 小數標志位( Dot ) 對應data4. 7。
4. 2 通信實現
CAN 總線節(jié)點數據傳輸的實現主要分為三部分,分別是初始化設置、發(fā)送數據和接收數據。初始化CAN 控制器的一般步驟如下:
?。?1) 將SFRPAGE 寄存器設置為CA N0_PA GE;
?。?2) 將CAN0CN 寄存器中的IN IT 和CCE 位設置為1;
( 3) 設置位定時寄存器和BRP 擴展寄存器中的時序參數;
?。?4) 初始化每個消息對象或將其MsgVal 位設置為無效;
?。?5) 將INIT 位清零。接收數據有查詢和中斷兩種方式, 本文在設計時采用中斷方式。接收數據程序流程圖如圖4 所示。
當總線上有數據傳入時程序進入中斷, 讀取中斷寄存器的值, 該值對應32 個消息對象中的其中一個消息號, 將該消息號寫入IFx 命令請求寄存器, 讀取IFx 報文控制寄存器, 查看標志位NewData, 值為1 表示有新數據, 值為0 表示沒有新數據, 讀取完當前數據后查看數據塊結束標識位Eob, 值為1 表示數據塊結束, 當前數據接收完成; 值為0, 表示數據塊沒有結束, 將消息號增一, 繼續(xù)接收下一個消息對象中的數據, 直至接收完成。發(fā)送數據時需配置寄存器, 設定報文ID, 此外還需在將數據寫入數據寄存器的時候, 先寫高位后寫低位,即先對CAN 0DAT H 賦值, 再對CAN0DAT L 賦值, 最后將消息號寫入IFx 命令請求寄存器即啟動數據傳送。
圖4 數據接收流程圖
5 結 語
實際測試表明, 模塊間通信穩(wěn)定, 抗干擾性強, 且布線簡潔。該方案已經應用于機載電子系統故障診斷模擬機, 雖然該模擬機是針對A320 機型, 但是該方案也可擴展應用到其他機型的模擬機, 具有廣闊的應用前景。





