李 彤, 屈金標, 岳 杰, 李 闖
(裝甲兵工程學院 信息工程系,北京 100072)
當前,在綜合電子系統中大量采用了 CAN[1-3]總線網絡,這對車載CAN總線網絡的可靠性提出了很高的要求。然而針對CAN總線網絡的測試還僅僅處于數據鏈路層測試階段,對CAN總線網絡沒有進行在環實時監測。
目前對單臺設備的測試是對網絡中的單一節點設備進行測試,主要測試參數有總線傳輸波形、總線電壓等。然而功能良好的單個CAN總線節點設備接入到CAN總線網絡中不能保證該網絡具有應用的通信質量,甚至不能保證該網絡能夠正常通信,這是因為CAN總線網絡的通信質量不僅與總線節點設備完好有關,還與總線終端匹配電阻的阻值和終端匹配電阻的放置的位置有關。當在一個CAN總線網絡中新加入了一個節點設備后,其放置的位置會對整個網絡狀態產生影響,若放置位置在終端匹配電阻后面還可能使整個網絡癱瘓,而目前的測試手段由于僅僅是數據鏈路層的測試,沒有對總線傳輸的數據波形盡量測量,無法及時發現這種問題。
總的來說,目前基于數據鏈路層的CAN總線網絡測試方法存在以下4點不足:①單臺設備測試難以保證接入系統后的性能; ②目前的總線測試手段沒有測量線路上傳輸的信號波形;③通過總線協議芯片獲得的總線數據幀不全面,會漏掉被芯片過濾掉的錯誤幀和異常幀;④CAN總線傳輸網絡的“偶發”故障還沒有監測手段。
針對上述缺點,本文參照在汽車開發中采用的在環仿真技術,提出了車載CAN總線在環測試技術。
目前,通過數據鏈路層測試CAN總線網絡的傳輸特性技術已經比較成熟,其核心是對幀格式的解析。但是在解析過程中,CAN接口芯片的錯誤管理器會自動過濾掉總線上的錯誤幀和異常幀。所以,基于數據鏈路層的車載CAN總線測試技術不能全面的判斷網絡的傳輸特性和節點故障情況。
因此,本文設計了基于物理層的車載CAN總線在環測試技術。
基于物理層的在環測試技術采用替代的方法不僅能夠完成總線網絡的性能測試,也能夠定位出現故障的節點和信號不強的節點,其核心思想是“在環”和“替代”。 其測試內容分為2個方面。
(1)總線網絡的性能測試
當車內正常通信時,首先保持總線節點設備的位置不動,另外終端電阻的大小以及位置也不能改變,其次將CAN總線測試系統和示波器接入總線,進而測試總線網絡的性能指標,如總線電壓。
(2)故障定位
當總線節點設備發生故障時,非在環測試是不能檢測出故障節點的位置,而在環測試是可以實現故障定位。
方法是將總線中的一個原有節點之外的其他節點全部替換成測試節點仿真設備,再通過終端向總線發送數據,若總線通信正常,則說明替換下來的該原有節點不是故障節點模塊;否則,則說明替換下來的原有節點是故障節點,測試模型如圖1所示,把其中的原有節點除待測節點外的其他節點全部換成測試節點仿真設備。

為實現車載CAN總線的在環測試,需要的硬件設備除了基于物理層的總線測試系統,還有CAN總線的測試節點仿真設備。測試節點仿真設備的作用是替代車載CAN總線網絡的原有節點,用來測試總線網絡的性能指標和定位出總線網絡的故障節點。下面介紹本文設計的基于 MCS-51的測試節點仿真設備。
該節點仿真設備的功能主要有2個:①將從CAN總線上接收的數據發回到總線上;②將CAN總線的數據幀轉換成USB格式的數據,通過USB接口上傳到PC機。
2為本節點模塊的功能圖,之后詳細介紹這 3個模塊的硬件設計。

如圖3所示,本模塊采用STC89C58作為主控芯片,采用SJA1000[4-7]作為CAN控制芯片,選用24C02型號的E2PROM作為存儲設備。
SJA1000是一種獨立的 CAN控制器,它通過并口與單片機通信,主要用于移動目標和一般工業環境中的區域網絡控制。SJA1000是本模塊的 CAN控制芯片,與STC89C58一起組成了本模塊的數據轉換核心部分。
E2PROM和單片機通過I2C總線通信,即24C02的5、6引腳分別連接到單片機的3、5引腳,用來存儲配置到SJA1000中的CAN參數,單片機斷電后,這些參數不會丟失,繼續保存在E2PROM中,以后上電,單片機直接從E2PROM中讀取SJA1000控制器的控制參數。
注意:圖3中“K”表示千歐,這在圖4、圖5中表示相同意思,之后不再贅述。

CAN總線數據隔離收發電路是由 CAN收發器TJA1050、高速光電隔離器 6N137和隔離電源模塊B0505S組成。其中,TJA1050從總線上接收CAN差分信號,并將之轉換為數據流格式送到CAN控制器SJA1000中,SJA1000將數據流轉換成并口數據送入單片機89C58中處理。當CPU需要向總線發送數據時,TJA1050將數據流傳換成 CAN差分信號的格式發送到 CAN總線上。6N137作為高速光電隔離器,實現CAN總線收發與總線的完全電氣隔離。具體設計電路如圖4所示。

在設計的在環測試系統中,節點仿真設備接收到CAN總線上的數據要做出適當的反應。為測試方便,節點仿真模塊對于CAN總線上接收的數據有兩種處理方法:①將接收的總線數據重新發回到 CAN總線上,可以用來測試總線傳輸延遲;②將接收到的CAN總線數據通過USB口發送給上位機[8],通過上位機軟件將接收到的數據以CAN總線幀的形式顯示出來。 USB接口是下位機與上位機通訊的窗口,一個合理的USB通訊電路才能完成與下位機流暢的通信。設計如圖5。

CH372內置了 USB通信中的底層協議,具有內置固件模式和外置固件模式。在內置固件模式下,CH372自動處理默認端點 0的所有事務,完成標準的USB枚舉配置過程,而本地單片機只負責數據交換。在外置固件模式下,由外部單片機或DSP根據需要自行處理各種USB請求,從而實現符合各種USB類規范的設備。這里,節點模塊選用內置固件模式進行通信。
根據國際標準ISO11898,CAN總線具有兩種邏輯電平,顯性和隱性。在總線共模的條件下,CAN_H波形的顯性電壓典型值和隱性電壓典型值分別為3.5 V和2.5 V,CAN_L波形的顯性電壓典型值和隱性電壓典型值分別為1.5 V和2.5 V,如圖6所示(上面一條線表示CAN_H,下面一條線表示CAN_L)。
測試模型如圖 1,將示波器和總線測試系統接入CAN總線網絡(此時,總線上沒有接入測試節點仿真設備),測得波形如圖7。由圖可以看出,總線上傳輸的CAN_H和CAN_L信號各有2種(上面2條為CAN_H,下面2條為CAN_L),其中,CAN_H1信號的顯性平均電壓是4 V,CAN_H2信號的顯性平均電壓是3.5 V,CAN_L3信號的顯性平均電壓是1.45 V,CAN_L4信號的顯性平均電壓是1.2 V。此時,總線上傳輸的CAN_H1信號和CAN_L4信號的顯性平均電壓與典型值不符,是異常信號,因此CAN總線網絡出現了故障。
為了確定是總線中的一段線路出現故障還是終端匹配電阻沒有完全匹配,亦或是總線節點中出現了故障節點,把總線上所有節點全部換成測試節點仿真模塊,測得波形如圖 8。由圖所示,總線波形與圖6基本一致,這說明總線網絡性能良好,終端匹配電阻也基本符合理論要求。
為了定位故障節點設備,把原有節點1替換回原來的位置,測得波形如圖 9。由圖所示,總線波形與圖6基本一致,這說明原有節點1不是故障節點。進而把原有節點2換回原來的位置,原有節點1換成測試節點仿真模塊,測得波形如圖10。由圖所示,總線波形與圖7基本一致,這說明原有節點2為故障節點。





本文簡單介紹了基于物理層的車載CAN總線在環測試技術,并利用“替代法”和測試節點仿真模塊快速地定位出故障節點設備,驗證了該方法的可行性,解決了車載電子系統故障節點定位難的課題,為今后的車輛維修保障提供了方法和技術支持。
[1] 李光忠,吳士濤.基于CAN總線智能節點設計[J].微計算機信息,2009(26):64-65.
[2] 陳亦駿,姚曉東.CAN總線共享時鐘調度算法的應用與改進[J].通信技術,2009,42(04):76-78.
[3] 蔡連君.基于 CAN總線的生產監控系統研究[J].通信技術,2009,42(10): 150-152.
[4] 謝勤嵐,曹匯敏.USB與CAN總線轉換電路的設計[J].計算機測量與控制,2009,17(09):1843-1845.
[5] 侯明,杜奕.基于CAN總線的接口電路設計[J].通信技術,2008,41(07):138-140.
[6] 陳昕靜,易健雄,彭力.基于 DSP的實時監控和 SJA1000控制器實現 CAN總線接口[C].中國:[s.n.], 2007:1105-1108.
[7] 陳萍,蔣秀杰.基于FPGA的CAN總線通信系統[J].計算機測量與控制,2009,17(12):2482-2484.
[8] 劉振永,程鑫.基于CAN總線的汽車點火測試系統[J].儀表技術與傳感器, 2007(12):54-56.