基于CAN總線的車身電器控制系統網絡實驗臺設計
3 系統軟件設計
任何CAN總線系統的通信協議都由物理層協議、數據鏈路層協議和應用層協議組成。SJAl000和PCA82C250的硬件結構保證了協議的物理層和數據鏈路層。對于應用層,在不同的應用領域,人們制定了不同的協議,包括CANopen、DeviceNet及SAE J1939等。應用層協議決定了CAN總線系統的可擴展性。將CAN應用層合理分配后應用于軟件結構中可提高軟件的兼容性。
本設計各類節點可將程序分為主程序和子程序。主程序的目的是監控本節點中各電器的狀態,采用查詢方式編程:子程序分為接收子程序和發送子程序,采用模塊化編程,將節點的功能分成各種模塊并形成文件,在編寫各節點程序時直接調用各個模塊程序函數即可。這里參考SAE J1939的編碼規則對CAN系統的應用層進行分配,并介紹各節點的軟件結構。
3.1節點主程序
上位機轉換節點主程序的作用是:查詢總線上的數據,并將依據CAN協議的數據轉換為依據RS232電平標準的數據。圖7為上位機轉換節點流程:開關控制節點主程序用于查詢開關的閉合或斷開狀態并將開關狀態存儲到單片機的寄存器中。圖8所示為開關控制節點的程序流程,其車燈控制節點主程序用于查詢CAN總線上的數據以控制相應的電器。圖9所示為車燈控制節點的程序流程,其車門控制節點既要查詢開關的狀態存人單片機,又要查詢CAN總線的數據控制相應的電機,其主程序包含開關控制節點和車燈控制節點主程序的功能。
3.2 節點子程序
接收子程序的作用是將CAN總線上傳來的數據存儲到單片機中合適的位置,需要用時,CPU直接從該位置查詢即可。在運行接收函數前,需先檢查CAN控制器SJAl000的寄存器中是否有傳來的數據,如果有則運行此程序;如果無,則放棄或繼續查詢。發送子程序的作用是將所要發送的數據包裝并發送到CAN控制器。在主程序中,系統不斷查詢SJAl000的狀態,一旦空閑,CPU將待發送的數據發送到CAN控制器。
4 結束語
通過對基于CAN總線的車身電器控制系統的整體優化設計,得出結論:對車身節點進行優化后,資源得到合理使用,并增強了節點的實用和美觀性,使節點的接口電路設計更加靈活。本方案側重于對實驗臺實用性的改進。通信過程中存在的干擾、基于時間觸發的CAN(即TTCAN)的應用問題尚待進一步的研究。
評論