李 彤, 屈金標, 岳 杰, 李 闖
(裝甲兵工程學(xué)院 信息工程系,北京 100072)
當(dāng)前,在綜合電子系統(tǒng)中大量采用了 CAN[1-3]總線網(wǎng)絡(luò),這對車載CAN總線網(wǎng)絡(luò)的可靠性提出了很高的要求。然而針對CAN總線網(wǎng)絡(luò)的測試還僅僅處于數(shù)據(jù)鏈路層測試階段,對CAN總線網(wǎng)絡(luò)沒有進行在環(huán)實時監(jiān)測。
目前對單臺設(shè)備的測試是對網(wǎng)絡(luò)中的單一節(jié)點設(shè)備進行測試,主要測試參數(shù)有總線傳輸波形、總線電壓等。然而功能良好的單個CAN總線節(jié)點設(shè)備接入到CAN總線網(wǎng)絡(luò)中不能保證該網(wǎng)絡(luò)具有應(yīng)用的通信質(zhì)量,甚至不能保證該網(wǎng)絡(luò)能夠正常通信,這是因為CAN總線網(wǎng)絡(luò)的通信質(zhì)量不僅與總線節(jié)點設(shè)備完好有關(guān),還與總線終端匹配電阻的阻值和終端匹配電阻的放置的位置有關(guān)。當(dāng)在一個CAN總線網(wǎng)絡(luò)中新加入了一個節(jié)點設(shè)備后,其放置的位置會對整個網(wǎng)絡(luò)狀態(tài)產(chǎn)生影響,若放置位置在終端匹配電阻后面還可能使整個網(wǎng)絡(luò)癱瘓,而目前的測試手段由于僅僅是數(shù)據(jù)鏈路層的測試,沒有對總線傳輸?shù)臄?shù)據(jù)波形盡量測量,無法及時發(fā)現(xiàn)這種問題。
總的來說,目前基于數(shù)據(jù)鏈路層的CAN總線網(wǎng)絡(luò)測試方法存在以下4點不足:①單臺設(shè)備測試難以保證接入系統(tǒng)后的性能; ②目前的總線測試手段沒有測量線路上傳輸?shù)男盘柌ㄐ?;③通過總線協(xié)議芯片獲得的總線數(shù)據(jù)幀不全面,會漏掉被芯片過濾掉的錯誤幀和異常幀;④CAN總線傳輸網(wǎng)絡(luò)的“偶發(fā)”故障還沒有監(jiān)測手段。
針對上述缺點,本文參照在汽車開發(fā)中采用的在環(huán)仿真技術(shù),提出了車載CAN總線在環(huán)測試技術(shù)。
目前,通過數(shù)據(jù)鏈路層測試CAN總線網(wǎng)絡(luò)的傳輸特性技術(shù)已經(jīng)比較成熟,其核心是對幀格式的解析。但是在解析過程中,CAN接口芯片的錯誤管理器會自動過濾掉總線上的錯誤幀和異常幀。所以,基于數(shù)據(jù)鏈路層的車載CAN總線測試技術(shù)不能全面的判斷網(wǎng)絡(luò)的傳輸特性和節(jié)點故障情況。
因此,本文設(shè)計了基于物理層的車載CAN總線在環(huán)測試技術(shù)。
基于物理層的在環(huán)測試技術(shù)采用替代的方法不僅能夠完成總線網(wǎng)絡(luò)的性能測試,也能夠定位出現(xiàn)故障的節(jié)點和信號不強的節(jié)點,其核心思想是“在環(huán)”和“替代”。 其測試內(nèi)容分為2個方面。
(1)總線網(wǎng)絡(luò)的性能測試
當(dāng)車內(nèi)正常通信時,首先保持總線節(jié)點設(shè)備的位置不動,另外終端電阻的大小以及位置也不能改變,其次將CAN總線測試系統(tǒng)和示波器接入總線,進而測試總線網(wǎng)絡(luò)的性能指標,如總線電壓。
(2)故障定位
當(dāng)總線節(jié)點設(shè)備發(fā)生故障時,非在環(huán)測試是不能檢測出故障節(jié)點的位置,而在環(huán)測試是可以實現(xiàn)故障定位。
方法是將總線中的一個原有節(jié)點之外的其他節(jié)點全部替換成測試節(jié)點仿真設(shè)備,再通過終端向總線發(fā)送數(shù)據(jù),若總線通信正常,則說明替換下來的該原有節(jié)點不是故障節(jié)點模塊;否則,則說明替換下來的原有節(jié)點是故障節(jié)點,測試模型如圖1所示,把其中的原有節(jié)點除待測節(jié)點外的其他節(jié)點全部換成測試節(jié)點仿真設(shè)備。
為實現(xiàn)車載CAN總線的在環(huán)測試,需要的硬件設(shè)備除了基于物理層的總線測試系統(tǒng),還有CAN總線的測試節(jié)點仿真設(shè)備。測試節(jié)點仿真設(shè)備的作用是替代車載CAN總線網(wǎng)絡(luò)的原有節(jié)點,用來測試總線網(wǎng)絡(luò)的性能指標和定位出總線網(wǎng)絡(luò)的故障節(jié)點。下面介紹本文設(shè)計的基于 MCS-51的測試節(jié)點仿真設(shè)備。
該節(jié)點仿真設(shè)備的功能主要有2個:①將從CAN總線上接收的數(shù)據(jù)發(fā)回到總線上;②將CAN總線的數(shù)據(jù)幀轉(zhuǎn)換成USB格式的數(shù)據(jù),通過USB接口上傳到PC機。
2為本節(jié)點模塊的功能圖,之后詳細介紹這 3個模塊的硬件設(shè)計。
如圖3所示,本模塊采用STC89C58作為主控芯片,采用SJA1000[4-7]作為CAN控制芯片,選用24C02型號的E2PROM作為存儲設(shè)備。
SJA1000是一種獨立的 CAN控制器,它通過并口與單片機通信,主要用于移動目標和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡(luò)控制。SJA1000是本模塊的 CAN控制芯片,與STC89C58一起組成了本模塊的數(shù)據(jù)轉(zhuǎn)換核心部分。
E2PROM和單片機通過I2C總線通信,即24C02的5、6引腳分別連接到單片機的3、5引腳,用來存儲配置到SJA1000中的CAN參數(shù),單片機斷電后,這些參數(shù)不會丟失,繼續(xù)保存在E2PROM中,以后上電,單片機直接從E2PROM中讀取SJA1000控制器的控制參數(shù)。
注意:圖3中“K”表示千歐,這在圖4、圖5中表示相同意思,之后不再贅述。
CAN總線數(shù)據(jù)隔離收發(fā)電路是由 CAN收發(fā)器TJA1050、高速光電隔離器 6N137和隔離電源模塊B0505S組成。其中,TJA1050從總線上接收CAN差分信號,并將之轉(zhuǎn)換為數(shù)據(jù)流格式送到CAN控制器SJA1000中,SJA1000將數(shù)據(jù)流轉(zhuǎn)換成并口數(shù)據(jù)送入單片機89C58中處理。當(dāng)CPU需要向總線發(fā)送數(shù)據(jù)時,TJA1050將數(shù)據(jù)流傳換成 CAN差分信號的格式發(fā)送到 CAN總線上。6N137作為高速光電隔離器,實現(xiàn)CAN總線收發(fā)與總線的完全電氣隔離。具體設(shè)計電路如圖4所示。
在設(shè)計的在環(huán)測試系統(tǒng)中,節(jié)點仿真設(shè)備接收到CAN總線上的數(shù)據(jù)要做出適當(dāng)?shù)姆磻?yīng)。為測試方便,節(jié)點仿真模塊對于CAN總線上接收的數(shù)據(jù)有兩種處理方法:①將接收的總線數(shù)據(jù)重新發(fā)回到 CAN總線上,可以用來測試總線傳輸延遲;②將接收到的CAN總線數(shù)據(jù)通過USB口發(fā)送給上位機[8],通過上位機軟件將接收到的數(shù)據(jù)以CAN總線幀的形式顯示出來。 USB接口是下位機與上位機通訊的窗口,一個合理的USB通訊電路才能完成與下位機流暢的通信。設(shè)計如圖5。
CH372內(nèi)置了 USB通信中的底層協(xié)議,具有內(nèi)置固件模式和外置固件模式。在內(nèi)置固件模式下,CH372自動處理默認端點 0的所有事務(wù),完成標準的USB枚舉配置過程,而本地單片機只負責(zé)數(shù)據(jù)交換。在外置固件模式下,由外部單片機或DSP根據(jù)需要自行處理各種USB請求,從而實現(xiàn)符合各種USB類規(guī)范的設(shè)備。這里,節(jié)點模塊選用內(nèi)置固件模式進行通信。
根據(jù)國際標準ISO11898,CAN總線具有兩種邏輯電平,顯性和隱性。在總線共模的條件下,CAN_H波形的顯性電壓典型值和隱性電壓典型值分別為3.5 V和2.5 V,CAN_L波形的顯性電壓典型值和隱性電壓典型值分別為1.5 V和2.5 V,如圖6所示(上面一條線表示CAN_H,下面一條線表示CAN_L)。
測試模型如圖 1,將示波器和總線測試系統(tǒng)接入CAN總線網(wǎng)絡(luò)(此時,總線上沒有接入測試節(jié)點仿真設(shè)備),測得波形如圖7。由圖可以看出,總線上傳輸?shù)腃AN_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。此時,總線上傳輸?shù)腃AN_H1信號和CAN_L4信號的顯性平均電壓與典型值不符,是異常信號,因此CAN總線網(wǎng)絡(luò)出現(xiàn)了故障。
為了確定是總線中的一段線路出現(xiàn)故障還是終端匹配電阻沒有完全匹配,亦或是總線節(jié)點中出現(xiàn)了故障節(jié)點,把總線上所有節(jié)點全部換成測試節(jié)點仿真模塊,測得波形如圖 8。由圖所示,總線波形與圖6基本一致,這說明總線網(wǎng)絡(luò)性能良好,終端匹配電阻也基本符合理論要求。
為了定位故障節(jié)點設(shè)備,把原有節(jié)點1替換回原來的位置,測得波形如圖 9。由圖所示,總線波形與圖6基本一致,這說明原有節(jié)點1不是故障節(jié)點。進而把原有節(jié)點2換回原來的位置,原有節(jié)點1換成測試節(jié)點仿真模塊,測得波形如圖10。由圖所示,總線波形與圖7基本一致,這說明原有節(jié)點2為故障節(jié)點。
本文簡單介紹了基于物理層的車載CAN總線在環(huán)測試技術(shù),并利用“替代法”和測試節(jié)點仿真模塊快速地定位出故障節(jié)點設(shè)備,驗證了該方法的可行性,解決了車載電子系統(tǒng)故障節(jié)點定位難的課題,為今后的車輛維修保障提供了方法和技術(shù)支持。
[1] 李光忠,吳士濤.基于CAN總線智能節(jié)點設(shè)計[J].微計算機信息,2009(26):64-65.
[2] 陳亦駿,姚曉東.CAN總線共享時鐘調(diào)度算法的應(yīng)用與改進[J].通信技術(shù),2009,42(04):76-78.
[3] 蔡連君.基于 CAN總線的生產(chǎn)監(jiān)控系統(tǒng)研究[J].通信技術(shù),2009,42(10): 150-152.
[4] 謝勤嵐,曹匯敏.USB與CAN總線轉(zhuǎn)換電路的設(shè)計[J].計算機測量與控制,2009,17(09):1843-1845.
[5] 侯明,杜奕.基于CAN總線的接口電路設(shè)計[J].通信技術(shù),2008,41(07):138-140.
[6] 陳昕靜,易健雄,彭力.基于 DSP的實時監(jiān)控和 SJA1000控制器實現(xiàn) CAN總線接口[C].中國:[s.n.], 2007:1105-1108.
[7] 陳萍,蔣秀杰.基于FPGA的CAN總線通信系統(tǒng)[J].計算機測量與控制,2009,17(12):2482-2484.
[8] 劉振永,程鑫.基于CAN總線的汽車點火測試系統(tǒng)[J].儀表技術(shù)與傳感器, 2007(12):54-56.