基于CAN的大客飛機航電系統局域網通信設計
3.1 主模塊
主模塊通過調用適當的功能模塊,控制系統初始化及整個系統軟件的流程。
3.2 初始化模塊
初始化模塊通過調用API函數進行硬件初始化和軟件初始化。主要完成各子系統之間通信所需要的通道選擇、波特率、幀格式、工作方式、發送數據方式、發送數據周期等初始化設置。
3.3 控制模塊
控制模塊主要完成對系統狀態、通信以及顯示的控制,根據操作人員的操作及其他系統節點的相應狀態,確定系統運行狀態與工作方式的控制與切換、有關數據通信的控制等。
3.4 數據管理模塊
本模塊主要完成系統運行過程中,對將要發送的數據進行實時的編碼,對接收到的有關數據塊進行實時解碼。數據處理的主要功能是根據接口控制文件(ICD)文件數據塊的大小,配合發送、接收模塊完成數據幀的封裝和解析。ICD用C++的結構類來表示,并且每個子系統對應一個惟一的ICD文件,ICD文件里面存放有多個數據,形成數據塊。數據發送時通過調用軟件發送函數,將ICD文件中的參數通過編碼組成對應的CAN總線信息幀數據場并以字節的形式進行發送。
3.5 數據通信模塊
通信模塊通過調用通信卡上底層的API函數,配合數據發送和數據接收等模塊完成對各個子系統的數據發送和接收功能。
CAN協議規定數據幀每幀最多攜帶8個字節的數據。如果數據塊的總字節數大于8,那么需要分成多幀傳送,并且準確標示數據幀序列號,分辨出幀數據場中的數據對應數據塊中的第幾個數據。比如在封裝時有可能遇到封裝某一兩字節數據時,本幀目前只能放下一個字節數據,那么本幀將封裝低字節,而高字節則被封裝進下一幀。程序中設計int型變量ordernum標示這種情況的封裝。接收時按封裝的反過程解析數據。
3.6 顯示模塊
顯示界面如圖7所示。本文引用地址:http://www.104case.com/article/154762.htm
圖7中左端顯示各子系統ICD文件節點名稱,右上方顯示該子系統從其他子系統接收到的最新數據,右下方顯示收到最新數據的物理值及在ICD文件中的屬性。狀態欄顯示系統狀態。
3.7 應用層協議
應用層協議并不屬于軟件編程的范疇,但是CAN 2.0協議只規定物理層和鏈路層的標準,沒有規定應用層通信協議,而數據的通信必須按照應用層協議來封裝幀、解析幀。目前有很多成熟的工業協議可以選擇,但不完全符合本系統的要求,為此,專門制定了針對本系統的應用層協議。
本軟件采用擴展格式的數據幀進行通信,擴展幀的29位標識符結構設計如表1所示,應用層信息幀格式如表2所示。
利用本應用層協議傳輸數據,可以從信息幀中獲取數據來源、順序、是否為最后一幀等信息,完全滿足了仿真系統通信的需要,較好地完成了各個子系統之間的通信。
4 結論
CAN總線具有很好的應用前景,它采用非破壞基于優先權仲裁技術,可實現多主工作方式,傳輸時間短,受干擾概率低,系統靈活、可擴展性強,報文摒除了傳統的源地址、目標地址的概念,僅用標識符來指示功能信息、優先級信息,安裝簡單,易于維護,經濟性好。該仿真系統已交付使用。使用結果表明,CAN總線局域網通信卡工作良好,系統工作正常,實現了各子系統之間的通信,人機界面友好,為大客飛機航電綜合控制系統不斷發展做好技術和物質準備。
評論