CAN總線(xiàn)的幅值“異?!?/h3>
一、CAN-bus信號(hào)產(chǎn)生原理
可以看出,與總線(xiàn)直接相連的是CAN節(jié)點(diǎn)的收發(fā)器,起內(nèi)部電路等效如下圖所示,CAN-H、CAN-L直接由三極管驅(qū)動(dòng),近似可以看成電流型輸出。結(jié)合上文所述網(wǎng)絡(luò)架構(gòu)中的終端電阻,節(jié)點(diǎn)發(fā)出信號(hào)時(shí)電流流過(guò)終端電阻產(chǎn)生電壓信號(hào),當(dāng)同一時(shí)間多個(gè)節(jié)點(diǎn)同時(shí)發(fā)出信號(hào)時(shí)就會(huì)使總線(xiàn)上的電流高于單一節(jié)點(diǎn)發(fā)出的電流,使得我們觀(guān)察電壓信號(hào)時(shí)出現(xiàn)突增的現(xiàn)象。
CAN-bus是總線(xiàn)型結(jié)構(gòu),通常狀態(tài)下一般只有一個(gè)節(jié)點(diǎn)占有總線(xiàn)。那么有幾種情況會(huì)導(dǎo)致多個(gè)節(jié)點(diǎn)同時(shí)發(fā)出,進(jìn)而導(dǎo)致幅值出現(xiàn)“異?!蹦?,下文通過(guò)致遠(yuǎn)電子CANScope分析儀的幾個(gè)測(cè)試案例總結(jié)一下。
二、應(yīng)答位上的幅值“異?!?/p>
最常見(jiàn)的,當(dāng)CAN網(wǎng)絡(luò)上存在3個(gè)以上的節(jié)點(diǎn)時(shí),應(yīng)答位上的幅值要明顯高于同一報(bào)文的其他位置,如下圖所示??梢钥吹綀?bào)文在ID段、數(shù)據(jù)段、CRC校驗(yàn)段處的幅值均比較一致,但是到應(yīng)答位處時(shí)幅值出現(xiàn)突增。這是為什么呢,大家都知道CAN-bus總線(xiàn)擁有自動(dòng)應(yīng)答機(jī)制,即當(dāng)某一節(jié)點(diǎn)發(fā)送完一幀報(bào)文時(shí),所有總線(xiàn)中的其余非只聽(tīng)節(jié)點(diǎn)均會(huì)在應(yīng)答位處做出響應(yīng),如果報(bào)文被成功識(shí)別則發(fā)出一個(gè)顯性位做為應(yīng)答信號(hào)。結(jié)合上文所述,應(yīng)答位此時(shí)CAN總線(xiàn)上的電流是若干節(jié)點(diǎn)電流疊加的綜合,所以應(yīng)答位的幅值高就很容易講通了。
三、ID段上的幅值“異?!?/p>
CAN-bus總線(xiàn)的一大特點(diǎn)就是多主結(jié)構(gòu),即網(wǎng)絡(luò)中所有節(jié)點(diǎn)功能對(duì)等,沒(méi)有主從機(jī)的概念,所有節(jié)點(diǎn)均可自由收發(fā)數(shù)據(jù)。保證多主結(jié)構(gòu)得以實(shí)現(xiàn)的關(guān)鍵在于CAN總線(xiàn)的仲裁機(jī)制也稱(chēng)優(yōu)先級(jí)機(jī)制。當(dāng)網(wǎng)絡(luò)中同時(shí)有多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送數(shù)據(jù)時(shí)會(huì)在ID段處產(chǎn)生仲裁,優(yōu)先級(jí)高的節(jié)點(diǎn)會(huì)最終占有總線(xiàn)。如下圖所示,可以看到在圖中的標(biāo)記處波形出現(xiàn)了“臺(tái)階”。正是由于在“臺(tái)階”出現(xiàn)前有兩個(gè)節(jié)點(diǎn)同時(shí)發(fā)出數(shù)據(jù),導(dǎo)致幅值增高,在“臺(tái)階”處某一節(jié)點(diǎn)由于優(yōu)先級(jí)高占有總線(xiàn),另一個(gè)節(jié)點(diǎn)暫時(shí)退出,使得幅值又回歸平常。
四、錯(cuò)誤幀上的幅值“異常”
再看看這個(gè)案例,可以看到在波形的后半部分也出現(xiàn)了臺(tái)階式的幅值增高,光標(biāo)卡住的顯性電平區(qū)間可以看到寬度明顯超過(guò)了5個(gè)標(biāo)準(zhǔn)位寬,按照CAN總線(xiàn)的位填充規(guī)則(不能存在連續(xù)六個(gè)相同的顯性位或隱性位)表明這是一條錯(cuò)誤幀。但是不要誤會(huì),并不是因?yàn)檫@個(gè)幅值“異常”而導(dǎo)致的錯(cuò)誤幀,我們知道CAN總線(xiàn)有錯(cuò)誤重發(fā)機(jī)制,以保證總線(xiàn)傳輸數(shù)據(jù)的可靠性。這種可靠性正式通過(guò)錯(cuò)誤幀的“一票否決制”實(shí)現(xiàn)的。當(dāng)網(wǎng)絡(luò)中某一節(jié)點(diǎn)識(shí)別到一條認(rèn)為是有問(wèn)題的報(bào)文后會(huì)發(fā)送六個(gè)連續(xù)的顯性位(即錯(cuò)誤幀),投出這一否決票通知網(wǎng)絡(luò)上所有其他節(jié)點(diǎn),本條報(bào)文無(wú)效。此后其他節(jié)點(diǎn)會(huì)以“跟票”的形式全部發(fā)出六個(gè)顯性位錯(cuò)誤幀。所以此時(shí)多個(gè)節(jié)點(diǎn)重疊部分的錯(cuò)誤幀的幅值就會(huì)高一些了。