淺談CAN發(fā)送仲裁機(jī)制
發(fā)布時(shí)間:2019-04-04 責(zé)任編輯:wenwei
【導(dǎo)讀】CAN總線高負(fù)載率發(fā)送測試時(shí),如果出現(xiàn)大量錯誤報(bào)文、被測設(shè)備報(bào)文周期出現(xiàn)異常、甚至總線鎖死等,有很大可能是CAN網(wǎng)絡(luò)上的仲裁發(fā)生了異常。
隨著工業(yè)技術(shù)不斷發(fā)展,CAN總線已廣泛應(yīng)用于,車輛、航空、醫(yī)療等高安全要求領(lǐng)域。高頻發(fā)送CAN報(bào)文也成為安全測試的必要組成部分。在信號正常的網(wǎng)絡(luò)上高負(fù)載率發(fā)送測試時(shí),總線上偶然會出現(xiàn)許多意想不到的問題,例如出現(xiàn)大量錯誤報(bào)文、被測設(shè)備報(bào)文周期出現(xiàn)異常、甚至總線鎖死等。這個(gè)時(shí)候我們則需要考慮一下CAN網(wǎng)絡(luò)上的仲裁是否發(fā)生了異常。
首先我們來了解一下CAN總線仲裁機(jī)制。
1 CAN總線仲裁機(jī)制
CAN總線作為現(xiàn)場總線,每個(gè)節(jié)點(diǎn)可以同時(shí)偵測到網(wǎng)絡(luò)上正在發(fā)送的數(shù)據(jù),當(dāng)總線空閑時(shí)每個(gè)節(jié)點(diǎn)均可以發(fā)起自身報(bào)文發(fā)送。如果多個(gè)節(jié)點(diǎn)同時(shí)發(fā)起報(bào)文發(fā)送請求,由哪個(gè)節(jié)點(diǎn)占用總線就是仲裁機(jī)制的主要用途。
首先CAN總線物理層通常是雙絞線。當(dāng)邏輯“1” 被寫進(jìn)總線時(shí),CANH和CANL的電平都是2.5V,這種狀態(tài)并被定義為“隱性”位;當(dāng)邏輯“0”被寫進(jìn)總線時(shí)CANH會上拉到為5V,CANL被下拉到地0V,這種狀態(tài)被定義為“顯性”位。如果顯性位和隱性位被不同的節(jié)點(diǎn)同時(shí)寫進(jìn)總線時(shí),總線會表現(xiàn)為“顯性”位。“顯性位覆蓋隱性位”是CAN總線沖突檢測的基礎(chǔ)。
當(dāng)節(jié)點(diǎn)開始傳送它們各自的報(bào)文時(shí),如果一個(gè)節(jié)點(diǎn)寫進(jìn)了隱性位而讀回顯性位,節(jié)點(diǎn)會知道另一個(gè)高優(yōu)先權(quán)節(jié)點(diǎn)正在占用總線,該節(jié)點(diǎn)會停止傳送報(bào)文并繼續(xù)接收總線報(bào)文。這種技術(shù)叫做“非破壞性逐位”仲裁。
圖1 CAN仲裁機(jī)制
如圖1所示,在多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送報(bào)文時(shí),首次出現(xiàn)不同,且發(fā)送顯性位的節(jié)點(diǎn)占用總線。由于CAN報(bào)文首先發(fā)送的為ID段且顯性位為邏輯“0”,因此ID越小該幀的優(yōu)先級越高。
2 仲裁場
似乎按照“非破壞性逐位”仲裁機(jī)制,就可以從ID一直仲裁到CRC段,可是CAN傳輸標(biāo)準(zhǔn)并不是這樣, CAN標(biāo)準(zhǔn)要求,仲裁僅從基本ID第一位開始,到標(biāo)準(zhǔn)幀的IDE位或擴(kuò)展幀的RTR位結(jié)束。這個(gè)區(qū)域被定義為仲裁場。如圖2所示。
圖2 CAN仲裁場區(qū)域
依據(jù)仲裁場范圍,CAN總線仲裁流程如圖3所示。
圖3 CAN仲裁場區(qū)域
3 仲裁異常的影響
在CAN仲裁機(jī)制中,理論上仲裁必須在仲裁場完成。不過CAN總線配置錯誤或者測試時(shí)發(fā)送CAN幀疏忽,也存在仲裁場數(shù)據(jù)完全相同的情況,在這樣的情況下會對總線造成什么后果呢?下面我們按照CAN通訊原則分析一下仲裁異常時(shí)CAN總線可能出現(xiàn)什么表現(xiàn)。
1、仲裁場后數(shù)據(jù)傳輸不一致
在仲裁場結(jié)束后CAN節(jié)點(diǎn)需要對發(fā)送的數(shù)據(jù)進(jìn)行一致性對比,如果發(fā)送的數(shù)據(jù)與讀取回得數(shù)據(jù)不一致,收發(fā)器則需要發(fā)送CAN錯誤幀,以通知總線各個(gè)節(jié)點(diǎn)自身發(fā)送數(shù)據(jù)錯誤,停止接收并快速進(jìn)入總線空閑,以便再次數(shù)據(jù)發(fā)送。
圖4 仲裁場后數(shù)據(jù)傳輸不一致
如圖4所示當(dāng)兩個(gè)節(jié)點(diǎn)發(fā)送的仲裁場相同,在仲裁場后DLC段發(fā)生數(shù)據(jù)不同情況。發(fā)送單元1發(fā)現(xiàn)自己本身需要發(fā)送的隱性電平而收到的是顯性電平,識別到數(shù)據(jù)不一致現(xiàn)象后立即發(fā)出錯誤幀信息(6個(gè)顯性位)。發(fā)送單元1發(fā)送錯誤信息過程中,發(fā)送單元2也將捕獲到自己某個(gè)隱性位發(fā)送與收取的不一致,從而也發(fā)出主動錯誤幀。最終造成類似圖4總線電平特征。
需要注意,大部分CAN收發(fā)器在發(fā)送過程中因?yàn)闆]有占用到總線或者發(fā)送失敗,會在下一次總線空閑到來時(shí)再次占用總線發(fā)送相同的數(shù)據(jù)。因此當(dāng)出現(xiàn)仲裁場數(shù)據(jù)相同,后續(xù)數(shù)據(jù)不同時(shí),有極大的可能造成總線錯誤后兩個(gè)節(jié)點(diǎn)再次同時(shí)占用總線,再次進(jìn)行仲裁并總線錯誤,甚至反復(fù)進(jìn)入錯誤造成網(wǎng)絡(luò)鎖死等嚴(yán)重情況。
2、仲裁場后數(shù)據(jù)相同
如果兩個(gè)CAN節(jié)點(diǎn),發(fā)送CAN幀完全相同,兩個(gè)發(fā)送單元均認(rèn)為占用了總線,并成功發(fā)送完數(shù)據(jù)。雖然數(shù)據(jù)發(fā)送完成,不過需要注意CAN節(jié)點(diǎn)在發(fā)送數(shù)據(jù)幀時(shí),是不能夠?qū)ψ约喊l(fā)送的CAN幀進(jìn)行應(yīng)答,這個(gè)時(shí)候則會出現(xiàn)不同的情況。
不存在多余的應(yīng)答節(jié)點(diǎn)
圖5 傳輸數(shù)據(jù)相同無應(yīng)答
當(dāng)所有的總線節(jié)點(diǎn)發(fā)送的數(shù)據(jù)均相同,那么所有節(jié)點(diǎn)認(rèn)為自己成功發(fā)送了數(shù)據(jù),而等待總線其他節(jié)點(diǎn)應(yīng)答。此時(shí)發(fā)送節(jié)點(diǎn)會因?yàn)闆]有得到應(yīng)答而被CAN節(jié)點(diǎn)識別為發(fā)送失敗,從而重新占用總線再次發(fā)送。
(注:此現(xiàn)象與應(yīng)用層有很大的關(guān)系,節(jié)點(diǎn)也可以被識別為發(fā)送成功而不再重發(fā)。)
存在多余應(yīng)答節(jié)點(diǎn)
圖6 傳輸數(shù)據(jù)相同有應(yīng)答
在多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送相同數(shù)據(jù)到總線,并存在其他節(jié)點(diǎn)不處于發(fā)送狀態(tài),其他節(jié)點(diǎn)則會對總線進(jìn)行應(yīng)答,發(fā)送節(jié)點(diǎn)會認(rèn)為CAN數(shù)據(jù)成功發(fā)送。從而隱藏了這種仲裁異常現(xiàn)象。
4 仲裁的其他特性與測試建議
1、CAN總線中的節(jié)點(diǎn)在仲裁失敗、發(fā)送失敗或者請求發(fā)送時(shí)總線被其他節(jié)點(diǎn)占用,一般會在下一次空閑到來時(shí)請求發(fā)送,總線負(fù)載率越高,遇到上面的情況概率也就越大,因此仲裁事件的發(fā)生常出現(xiàn)在高負(fù)載率的總線環(huán)境下,如果可以控制總線負(fù)載率在合理范圍內(nèi),可以大大減少仲裁事件的發(fā)生。
2、每個(gè)CAN節(jié)點(diǎn)在發(fā)送報(bào)文時(shí),顯性電平都存在一定的驅(qū)動能力,在仲裁事件發(fā)生時(shí),由于多個(gè)節(jié)點(diǎn)同時(shí)驅(qū)動總線,會造成CAN總線顯性電平電壓與平時(shí)高一點(diǎn)(驅(qū)動點(diǎn)越多,電壓越高)。同時(shí)由于每個(gè)節(jié)點(diǎn)同步性可能存在微小的差異,其脈寬也可能發(fā)生改變。
3、當(dāng)需要測試指定節(jié)點(diǎn)長時(shí)間占用不到總線的表現(xiàn)時(shí),應(yīng)該使用高優(yōu)先級測試報(bào)文進(jìn)行高負(fù)載率發(fā)送(盡可能達(dá)到100%)。高優(yōu)先級報(bào)文一直占用總線,低優(yōu)先級報(bào)文永遠(yuǎn)占用不到總線。當(dāng)需要部分允許部分禁止,應(yīng)設(shè)置測試報(bào)文優(yōu)先級在允許報(bào)文與不允許報(bào)文之間。
4、如果需要測試指定節(jié)點(diǎn)高負(fù)載率情況下報(bào)文周期特性,發(fā)送的報(bào)文優(yōu)先級不能高于被測節(jié)點(diǎn)周期特性報(bào)文的優(yōu)先級。如果被測節(jié)點(diǎn)滿足周期性,周期到來后的第一個(gè)空閑后報(bào)文發(fā)送就可以仲裁成功將該周期報(bào)文成功發(fā)送。
5、在某些CAN高層總線協(xié)議中,存在可變優(yōu)先級字段,(依據(jù)請求發(fā)送等待時(shí)間變化優(yōu)先級)。如果需要驗(yàn)證報(bào)文優(yōu)先級變化特性,所發(fā)送的報(bào)文優(yōu)先級,需要使用高于初次請求優(yōu)先級,低于最高優(yōu)先級的報(bào)文。
5 總結(jié)
CAN總線中,無論節(jié)點(diǎn)還是測試設(shè)備發(fā)送報(bào)文仲裁場應(yīng)該不同,這樣可以避免因仲裁異常造成的錯誤出現(xiàn)。同樣在CAN測試時(shí),應(yīng)依據(jù)測試目的選擇合理的CAN報(bào)文ID,避免仲裁特性影響測試效果。
CANScope總線綜合分析儀是一款綜合性的CAN總線開發(fā)與測試的專業(yè)工具,集海量存儲示波器、網(wǎng)絡(luò)分析儀、誤碼率分析儀、協(xié)議分析儀及可靠性測試工具于一身,并把各種儀器有機(jī)的整合和關(guān)聯(lián);重新定義CAN總線的開發(fā)測試方法,可對CAN網(wǎng)絡(luò)通信正確性、可靠性、合理性進(jìn)行多角度全方位的評估;幫助用戶快速定位故障節(jié)點(diǎn),解決CAN總線應(yīng)用的各種問題,是CAN總線開發(fā)測試的終極工具。
推薦閱讀:
特別推薦
- 克服碳化硅制造挑戰(zhàn),助力未來電力電子應(yīng)用
- 了解交流電壓的產(chǎn)生
- 單結(jié)晶體管符號和結(jié)構(gòu)
- 英飛凌推出用于汽車應(yīng)用識別和認(rèn)證的新型指紋傳感器IC
- Vishay推出負(fù)載電壓達(dá)100 V的業(yè)內(nèi)先進(jìn)的1 Form A固態(tài)繼電器
- 康佳特推出搭載AMD 銳龍嵌入式 8000系列的COM Express緊湊型模塊
- 村田推出3225尺寸車載PoC電感器LQW32FT_8H系列
技術(shù)文章更多>>
- “扒開”超級電容的“外衣”,看看超級電容“超級”在哪兒
- DigiKey 誠邀各位參會者蒞臨SPS 2024?展會參觀交流,體驗(yàn)最新自動化產(chǎn)品
- 提前圍觀第104屆中國電子展高端元器件展區(qū)
- 高性能碳化硅隔離柵極驅(qū)動器如何選型,一文告訴您
- 貿(mào)澤電子新品推薦:2024年第三季度推出將近7000個(gè)新物料
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
音頻IC
音頻SoC
音頻變壓器
引線電感
語音控制
元件符號
元器件選型
云電視
云計(jì)算
云母電容
真空三極管
振蕩器
振蕩線圈
振動器
振動設(shè)備
震動馬達(dá)
整流變壓器
整流二極管
整流濾波
直流電機(jī)
智能抄表
智能電表
智能電網(wǎng)
智能家居
智能交通
智能手機(jī)
中電華星
中電器材
中功率管
中間繼電器