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