CAN總線(xiàn)局部錯(cuò)誤及全局通知分析
局部錯(cuò)誤,全局通知是CAN總線(xiàn)錯(cuò)誤類(lèi)型中較為典型的一種,如何通過(guò)錯(cuò)誤報(bào)文及波形快速定位錯(cuò)誤原因呢?本文結(jié)合現(xiàn)場(chǎng)實(shí)測(cè)案例簡(jiǎn)要分析。
一、CAN總線(xiàn)錯(cuò)誤簡(jiǎn)介
在CAN總線(xiàn)中存在5種錯(cuò)誤類(lèi)型,如圖1所示:它們互相并不排斥,下面簡(jiǎn)單介紹一下它們的區(qū)別、產(chǎn)生的原因。
圖1 5種錯(cuò)誤類(lèi)型
位錯(cuò)誤:向總線(xiàn)送出一位的某個(gè)節(jié)點(diǎn)同時(shí)也在監(jiān)視總線(xiàn),當(dāng)監(jiān)視到總線(xiàn)位的電平和送出的電平不同時(shí),則在該位時(shí)刻檢測(cè)到一個(gè)位錯(cuò)誤。但是在仲裁區(qū)的填充位流期間或應(yīng)答間隙送出隱性位而檢測(cè)到顯性位時(shí),不認(rèn)為是錯(cuò)誤位。
填充錯(cuò)誤:在使用位填充方法進(jìn)行編碼的報(bào)文中(幀起始到CR序列),出現(xiàn)了第6個(gè)連續(xù)相同的位電平時(shí),將檢 測(cè)出一個(gè)填充錯(cuò)誤。
CRC錯(cuò)誤:CRC序列是由發(fā)送器CRC計(jì)算的結(jié)果組成的。接收器以和發(fā)送器相同的方法計(jì)算CRC。如果計(jì)算的結(jié)果和接收到的CRC序列不同,則檢測(cè)出一個(gè)CRC錯(cuò)誤。
格式錯(cuò)誤: 當(dāng)固定格式的位區(qū)中(如CRC認(rèn)可位、ACK認(rèn)可位、幀結(jié)束位)出現(xiàn)一個(gè)或多個(gè)非法位時(shí),則檢測(cè)到一個(gè)形式錯(cuò)誤。
應(yīng)答錯(cuò)誤:在應(yīng)答間隙,每一個(gè)接收端都會(huì)向總線(xiàn)回一個(gè)顯性位,如果發(fā)送端在ACK場(chǎng)檢測(cè)不到顯性位應(yīng)答,將產(chǎn)生應(yīng)答錯(cuò)誤。
當(dāng)出現(xiàn)5種錯(cuò)誤類(lèi)型之一時(shí),發(fā)送或接收節(jié)點(diǎn)將發(fā)送錯(cuò)誤幀。其中錯(cuò)誤幀 又分主動(dòng)錯(cuò)誤幀和被動(dòng)錯(cuò)誤幀。
主動(dòng)錯(cuò)誤幀由處于主動(dòng)錯(cuò)誤狀態(tài)的節(jié)點(diǎn)發(fā)送 ,幀格式由主動(dòng)錯(cuò)誤標(biāo)志(6個(gè)連續(xù)顯性位)+錯(cuò)誤標(biāo)志疊加(0~6個(gè)連續(xù)顯性位)+錯(cuò)誤界定符(8個(gè)連續(xù)的隱性位)組成。主動(dòng)錯(cuò)誤幀格式如圖2所示:
圖2 主動(dòng)錯(cuò)誤幀格式
被動(dòng)錯(cuò)誤幀由被動(dòng)錯(cuò)誤狀態(tài)的節(jié)點(diǎn)發(fā)送,幀格式由被動(dòng)錯(cuò)誤標(biāo)志(6個(gè)連續(xù)隱性位)+錯(cuò)誤標(biāo)志疊加(0~6個(gè)連續(xù)顯性位)+錯(cuò)誤界定符(8個(gè)連續(xù)的隱性位)組成。被動(dòng)錯(cuò)誤標(biāo)志能夠部分或全部被其它節(jié)點(diǎn)的顯性位覆蓋。如下:
圖3被動(dòng)錯(cuò)誤幀格式
二、什么是局部錯(cuò)誤?
在整個(gè)CAN網(wǎng)絡(luò)中,由于干擾等原因引起總線(xiàn)局部錯(cuò)誤(即某一個(gè)CAN節(jié)點(diǎn)出錯(cuò),其他節(jié)點(diǎn)正常),CAN總線(xiàn)上的主動(dòng)報(bào)錯(cuò)站點(diǎn)首先檢測(cè)到錯(cuò)誤,并立即主動(dòng)向總線(xiàn)上發(fā)出錯(cuò)誤標(biāo)識(shí),通知其他未發(fā)現(xiàn)錯(cuò)誤的節(jié)點(diǎn),如圖4所示:
圖4 錯(cuò)誤幀的發(fā)送(局部錯(cuò)誤)
檢測(cè)錯(cuò)誤---發(fā)送錯(cuò)誤幀---通知報(bào)文錯(cuò)誤:首先,發(fā)送節(jié)點(diǎn)檢測(cè)到總線(xiàn)錯(cuò)誤,發(fā)出錯(cuò)誤標(biāo)識(shí)——六個(gè)連續(xù)的顯性電平位,總線(xiàn)接收到錯(cuò)誤標(biāo)識(shí)后進(jìn)行全局通知——0~6個(gè)連續(xù)的顯性電平位+8個(gè)連續(xù)的隱性電平位,告知其他節(jié)點(diǎn)總線(xiàn)錯(cuò)誤。
三、局部錯(cuò)誤,全局通知案例分析
某純電動(dòng)公交車(chē),在啟動(dòng)車(chē)輛未啟動(dòng)電機(jī)時(shí),總線(xiàn)報(bào)文成功率很高,基本沒(méi)有錯(cuò)誤幀,但在啟動(dòng)電機(jī)后,特別是踩氣泵剎車(chē)時(shí),每踩一次踩氣泵就會(huì)涌現(xiàn)出較多的錯(cuò)誤幀。整車(chē)的簡(jiǎn)單拓?fù)淙鐖D5所示:
圖5 整車(chē)通信簡(jiǎn)易拓?fù)?/p>
使用ZLG致遠(yuǎn)電子總線(xiàn)分析儀CANscope連接方向盤(pán)下的OBD接口測(cè)試,通過(guò)踩氣泵剎車(chē),產(chǎn)生了較多的錯(cuò)誤幀,主要為填充錯(cuò)誤和格式錯(cuò)誤,分析錯(cuò)誤幀波形如圖6:
圖6 錯(cuò)誤幀的波形圖
從藍(lán)色標(biāo)記可以看到,ACK應(yīng)答后,先有一個(gè)低臺(tái)階,再二次抬高的錯(cuò)誤幀。
圖7 錯(cuò)誤標(biāo)志分析
CAN網(wǎng)絡(luò)波特率為250 Kbps,即每個(gè)位為4us,由圖7知,錯(cuò)誤標(biāo)志為7個(gè)顯性位(主動(dòng)錯(cuò)誤標(biāo)志+錯(cuò)誤標(biāo)志疊加)組成,二次抬高的6個(gè)連續(xù)顯性電平,是局部錯(cuò)誤后全局通知,各節(jié)點(diǎn)錯(cuò)誤標(biāo)志疊加造成的。也就是說(shuō)車(chē)網(wǎng)絡(luò)上有某一CAN節(jié)點(diǎn)較容易受到干擾,出現(xiàn)局部錯(cuò)誤。
如何快速分析局部錯(cuò)誤,定位干擾源呢?
由于是局部錯(cuò)誤,干擾源在不同的測(cè)試點(diǎn)幅值是不同的,使用致遠(yuǎn)電子CANScope接入車(chē)前端的OBD接口和車(chē)尾部的電機(jī)控制器分別測(cè)試,結(jié)果如圖8所示:
圖8 共模干擾對(duì)比
由上圖所示,在OBD接口測(cè)試的共模幅值為700多mV,在電機(jī)控制器節(jié)點(diǎn)測(cè)試的共模幅值為1.3V左右,同時(shí)可看到周期性的干擾脈沖。通過(guò)對(duì)異常共模信號(hào)做FFT頻譜分析,快速定位共模干擾頻率,測(cè)試結(jié)果如圖9所示:
圖9 共模干擾分析
測(cè)試出的干擾頻率與電機(jī)驅(qū)動(dòng)器頻率吻合,推斷為驅(qū)動(dòng)器逆變產(chǎn)生的巨大電流形成強(qiáng)干擾,串?dāng)_到CAN總線(xiàn)上,導(dǎo)致距離其較近的節(jié)點(diǎn)出現(xiàn)局部錯(cuò)誤。
局部錯(cuò)誤,全局通知是一種常見(jiàn)的錯(cuò)誤類(lèi)型,如何快速定位到錯(cuò)誤報(bào)文及其對(duì)應(yīng)的波形是分析問(wèn)題的關(guān)鍵,通過(guò)CANScope總線(xiàn)分析儀的報(bào)文接收和示波器,可將每一幀報(bào)文與波形做一一對(duì)應(yīng),快速分析報(bào)文及波形情況,實(shí)現(xiàn)CAN總線(xiàn)的快速故障定位和干擾排除。