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