淺析CAN總線(xiàn)車(chē)載網(wǎng)絡(luò )通訊組件的實(shí)現研究
1 引言
本文引用地址:http://dyxdggzs.com/article/196413.htm目前,汽車(chē)電子正朝著(zhù)網(wǎng)絡(luò )化的方向發(fā)展,車(chē)載網(wǎng)絡(luò )成為汽車(chē)電子領(lǐng)域的最大熱點(diǎn)。提高控制單元間通訊可靠性并且降低導線(xiàn)成本的網(wǎng)絡(luò )總線(xiàn)應用中的關(guān)鍵技術(shù)包括CAN、LIN、FlexRey、MOST、IDB1394 等。對于汽車(chē)整車(chē)廠(chǎng)來(lái)說(shuō),CAN 網(wǎng)絡(luò )設計是應用CAN 網(wǎng)絡(luò )通訊的關(guān)鍵??v觀(guān)現有的設計技術(shù),可以將其分為兩類(lèi):一類(lèi)是以仿真和測試為主的傳統設計方法;另一類(lèi)是以協(xié)議設計為主的方法。傳統方法將每個(gè)節點(diǎn)對協(xié)議的要求拼湊起來(lái),通過(guò)仿真、測試的方法檢驗協(xié)議的正確性,最終得到通訊協(xié)議。新方法通過(guò)系統設計技術(shù),用理論方法對系統的時(shí)序建模,分析設計系統的通訊協(xié)議,保證系統的實(shí)時(shí)性能以及協(xié)議的正確性,最終發(fā)布正確的通訊協(xié)議。本文將簡(jiǎn)要介紹傳統設計方法的局限性和新方法的優(yōu)勢,以及參考新方法所設計的通信網(wǎng)絡(luò )軟件系統。
2 傳統設計方法的局限性
隨著(zhù)汽車(chē)上電子設備數量的逐漸增多,車(chē)載網(wǎng)絡(luò )系統也越來(lái)越復雜,汽車(chē)電子網(wǎng)絡(luò )面臨著(zhù)巨大的挑戰。傳統網(wǎng)絡(luò )協(xié)議設計技術(shù)的局限性越來(lái)越突出,主要表現在數據丟失、通訊延遲、協(xié)議修改困難等三個(gè)方面。
2.1 數據丟失
數據丟失是指新數據沒(méi)有來(lái)得及通過(guò)網(wǎng)絡(luò )傳輸出去,或是超過(guò)接收節點(diǎn)的接收時(shí)限才傳輸出去的情況。數據丟失會(huì )嚴重影響通訊的實(shí)時(shí)性能,進(jìn)而影響整車(chē)通訊的質(zhì)量。實(shí)時(shí)性能好的系統應該完全避免數據丟失。
數據丟失的影響因素就是通訊協(xié)議。傳統設計方法通過(guò)仿真和測試等手段檢測協(xié)議的正確性,其缺點(diǎn)是無(wú)法覆蓋所有的測試用例,因此,輸出的通訊協(xié)議會(huì )存在潛在錯誤或者不夠完整,這樣就不可避免地會(huì )產(chǎn)生數據丟失的情況,影響整個(gè)系統的性能。
2.2 通訊延遲
通訊延遲是指數據準備好到通過(guò)總線(xiàn)發(fā)送出去的等待時(shí)間。通訊延遲可能導致數據丟失,是傳統設計方法無(wú)法解決的根本性問(wèn)題。這主要是因為,傳統設計方法只是將各個(gè)節點(diǎn)對協(xié)議的要求拼湊起來(lái),沒(méi)有考慮整個(gè)系統的需求,比如發(fā)送節點(diǎn)發(fā)送數據到接收節點(diǎn)接收數據并用于控制,沒(méi)有考慮實(shí)現這樣一個(gè)完整功能的時(shí)間要求。因此協(xié)議設計結果難以保證實(shí)時(shí)性能,必然存在通訊延遲。
仲裁失敗是產(chǎn)生延遲的主要原因,因此延遲與消息的 ID 及周期有關(guān)。系統越復雜,消息之間發(fā)生競爭的可能性越大,系統的實(shí)時(shí)性能就越差。
為了減小延遲的影響,傳統設計方法采取了兩種預防措施。一種是設定時(shí)限,如圖1所示。另一種限制負載為平均30%左右,降低消息競爭的可能性。但是這兩種方法都不能從根本上消除延遲。

圖 1 時(shí)限設定和響應時(shí)間的計算
2.3 協(xié)議修改困難
修改協(xié)議在開(kāi)發(fā)過(guò)程中不可避免。但對于傳統的設計方法,因為應用程序和通訊功能的融合,通訊協(xié)議的參數變化會(huì )導致軟件的重新編譯和測試,這就意味著(zhù)額外的時(shí)間和成本,供應商極不愿意整車(chē)廠(chǎng)商修改協(xié)議。因此,整車(chē)廠(chǎng)商修改協(xié)議十分困難,并需要很長(cháng)的時(shí)間。
3 以協(xié)議設計為主的新方法的特點(diǎn)
以協(xié)議設計為主的方法通過(guò)系統級的設計理論和方法,保證通訊協(xié)議的準確性,避免數據丟失,保證系統的實(shí)時(shí)性能。其特點(diǎn)概括起來(lái)如下:
3.1 系統級設計,避免數據丟失
新技術(shù)采用自上而下的系統設計技術(shù),對整個(gè)系統的架構進(jìn)行設計,并完成優(yōu)化。通過(guò)理論設計方法,可保證通訊協(xié)議的正確性,從根本上解決數據丟失問(wèn)題。
3.2 有效控制消息延時(shí)
響應時(shí)間是消息準備發(fā)送到最后節點(diǎn)接收到數據的全部時(shí)間,它是發(fā)送時(shí)間和延遲的總和,其中延遲是影響響應時(shí)間的主要因素,控制延遲就可以有效控制響應時(shí)間。
如圖 1 所示,通過(guò)對響應時(shí)間進(jìn)行建模,并仔細安排消息的ID 和周期以控制延遲時(shí)間、響應時(shí)間及總線(xiàn)負載。然后用理論方法計算出最差情形下的延遲時(shí)間、最大的響應值,以及總線(xiàn)負載。
由于新方法能夠計算出最大總線(xiàn)負載,也能有效控制系統延遲,因此沒(méi)有必要再對系統的總線(xiàn)負載作任何限制,理論上可以達到100%。其優(yōu)勢在于保證了確定的通訊行為,可以有效地利用系統資源。
3.3 分隔應用程序和通訊協(xié)議,保證變更靈活性
如圖 2 所示,新方法為ECU 通訊功能提供了標準的網(wǎng)絡(luò )通訊組件。該組件將應用程序和通訊協(xié)議成功分隔開(kāi)來(lái),使得各自的修改互不影響,保證了協(xié)議修改的靈活性。網(wǎng)絡(luò )通訊組件提供面向總線(xiàn)、應用程序和通訊協(xié)議三方面的標準接口。面向應用程序的接口是基于信號的操作,不包含通訊協(xié)議的參數。面向通訊協(xié)議的接口負責識別通訊協(xié)議。只要遵守接口標準,協(xié)議可以進(jìn)行任意改變,而且不影響應用程序。
圖 2 分隔應用程序和通訊協(xié)議
這種設計方案其優(yōu)勢在于整車(chē)廠(chǎng)商可以很容易地修改協(xié)議,不需要供應商支持,因此保證了系統變更的靈活性,同時(shí)也增加了系統的可移植性以及應用的復用性。
4 系統設計
為了避免傳統設計方法的缺點(diǎn),本系統參考新方法理論進(jìn)行設計。整個(gè)系統主要分為兩大部分:一、靜態(tài)配置編譯工具;二、網(wǎng)絡(luò )組件,稱(chēng)為COM 組件。
4.1 靜態(tài)配置編譯工具
該靜態(tài)配置編譯工具使用配置語(yǔ)言進(jìn)行信號、幀、幀模式等等的配置。配置語(yǔ)言定義了四個(gè)文件的配置規則語(yǔ)法,這四個(gè)文件分別為:fixed 文件、network 文件、target 文件和private文件。
.fix 文件主要用來(lái)描述可用的網(wǎng)絡(luò )接口以及ECU 中的每個(gè)通信接口所收發(fā)的信號的描述。這些描述內容可以在工程的很早階段就可以定義,甚至是在選定供應商之前就可以進(jìn)行定以。
.net 文件通常由系統Interator 創(chuàng )建,主要用來(lái)描述網(wǎng)絡(luò )接口配置、信號、幀及其想關(guān)參數(例如:幀的ID,傳輸類(lèi)型、周期、偏移以及信號的映射表),如果應用有需要的話(huà),還可以進(jìn)行調度表的調度表的定義(應用于使用網(wǎng)關(guān)的情況)。這些信息將會(huì )存儲到NVRAM中,并且對于應用軟件不是直接可見(jiàn)的。
.tgt 文件是由ECU 的供應商提供的,它包括ECU 的硬件特性描述,比如CPU 類(lèi)型、存儲數據的內存的大小和地址等。
.pri 文件主要用來(lái)定義信號的標志、超時(shí)以及信號的重命名等信息。通過(guò)使用配置語(yǔ)言配置的這四個(gè)文件實(shí)現了靜態(tài)可裁剪配置,同時(shí)控制了信號傳遞的時(shí)序,有效地控制了通訊延遲并避免了數據的丟失,充分利用了網(wǎng)絡(luò )資源。
經(jīng)過(guò)配置后獲得的四個(gè)文件經(jīng)過(guò)配置編譯器編譯后生成三個(gè)文件,分別為:s_gen.c 、s_hand.h 以及s_nvram。
s_gen.c 文件包含了一些配置產(chǎn)生的數據結構,并且這些數據結構與ECU 供應商提供的ECU 其他部分應用軟件代碼進(jìn)行集成編譯和鏈接。應用軟件將包含s_hand.h 文件,以便訪(fǎng)問(wèn)不同的通訊對象,例如:特定的信號等。s_nvram 文件是產(chǎn)生的ECU 二進(jìn)制配置數據。
4.2 COM 組件
COM 組件采用分層結構設計方法,主要分為:交互層(InteractiON layer)和驅動(dòng)層(devicedrivers layer)。其中交互層中具有網(wǎng)關(guān)功能,該功能實(shí)現信號級的路由。
COM 組件中的交互層具有以下功能:一、提供標準面向應用的信號接口;二、提供為網(wǎng)絡(luò )管理統一服務(wù);三、提供診斷通信統一服務(wù);四、隱藏協(xié)議和來(lái)自應用的信息屬性;五、提供不同網(wǎng)絡(luò )之間數據傳輸;六、提供網(wǎng)關(guān)功能。
COM 組件中的驅動(dòng)層提供以下功能:一、發(fā)送從交互層遞交過(guò)來(lái)的數據;二、從CAN硬件接收數據遞交給交互層;三、確認上層的發(fā)送請求,并將確認信息上報給交互層;四、確認接收完成,并將確認信息上報給交互層。
信號的接收:當底層網(wǎng)絡(luò )中有信息在傳輸時(shí),CAN 收發(fā)器進(jìn)行過(guò)濾,只有符合過(guò)濾條件的幀才能被CAN 設備通過(guò)驅動(dòng)層接收。然后驅動(dòng)層將收上來(lái)的數據傳遞給交互層。應用程序通過(guò)信號讀操作獲得符合條件的幀中的相應信號。
信號的發(fā)送:應用程序調用信號寫(xiě)操作功能將有關(guān)信號發(fā)送到交互層。交互層通過(guò)調用有關(guān)發(fā)送函數進(jìn)行輸出操作,將信息傳遞到驅動(dòng)層。驅動(dòng)層調用有關(guān)的發(fā)送功能,將信息傳輸達到CAN 總線(xiàn)上。示意過(guò)程圖如圖3所示。
圖 3 使用COM 組件進(jìn)行信號收發(fā)操作
5 結束語(yǔ)
本文設計的系統采用新的設計原理,很好的將應用和協(xié)議分開(kāi),降低了整車(chē)廠(chǎng)商對供應商的依賴(lài)性,降低了整車(chē)的開(kāi)發(fā)成本和開(kāi)發(fā)周期,同時(shí),作為我國自主研制的車(chē)載網(wǎng)絡(luò )解決方案,一定程度上對我國汽車(chē)電子行業(yè)的進(jìn)步提供了一定的理論基礎。
本文作者創(chuàng )新點(diǎn):此網(wǎng)絡(luò )設計采用了系統設計方法,突破了傳統的以仿真測試進(jìn)行協(xié)議拼湊的設計方法,能夠使整車(chē)廠(chǎng)商靈活地進(jìn)行協(xié)議設計和修改,極大地降低了對供應商的依賴(lài)性。同時(shí)這種設計方法也保證了系統的移植性和可重用性,并且增加了網(wǎng)絡(luò )的使用率。
評論