《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 解決方案 > CAN優(yōu)先級倒置原因與對策分析

CAN優(yōu)先級倒置原因與對策分析

2013-01-18
關(guān)鍵詞: CAN總線 跳變 輻射干擾

CAN總線起始于1986年左右,至今仍廣泛應(yīng)用。現(xiàn)在人們對安全的要求已大為提高,所以要不斷仔細審視CAN的安全性能?,F(xiàn)在已經(jīng)發(fā)現(xiàn)的重要的CAN問題有:在消極報錯狀態(tài)下可能出現(xiàn)等效離線,使節(jié)點不能收發(fā)的時間相當長[1];錯幀漏檢率的估計不準,特別在誤碼率高時比Bosch CAN2.0數(shù)據(jù)高多個數(shù)量級[2],在單目的地址時影響數(shù)據(jù)正確性,在多個目的地址時會影響數(shù)據(jù)一致性;標準的振蕩源精度要求偏低[3],使誤用廉價器件成為可能,影響系統(tǒng)的穩(wěn)定性;本文發(fā)現(xiàn)的優(yōu)先級倒置的可能性,使調(diào)度分析結(jié)果的可信度下降;在數(shù)據(jù)幀倒數(shù)第二位的局部錯可能引起不一致的接收重復或丟失[4]。所以在FlexRay尚未達到預(yù)定目標、無論在可靠性還是價格上能取代CAN以前,對CAN作進一步的改進仍然是非常有意義的。

CAN是一種代表性的事件觸發(fā)通信協(xié)議,同時發(fā)生的多個通信請求將按照消息的優(yōu)先級進行無損仲裁,高優(yōu)先級的勝出。按照消息的優(yōu)先級進行無損仲裁是CAN原始專利的唯一權(quán)利要求[5]。對于低優(yōu)先級的消息而言,送達時間將受到高優(yōu)先級消息的阻擾,在高優(yōu)先級消息為周期性時,最壞送達時間是可以預(yù)先計算出的[6]。如果能安排好發(fā)送消息的初始相位并作寬松的時鐘同步,這個最壞送達時間可以大為減少。事件觸發(fā)協(xié)議的優(yōu)點是總線帶寬可以得到充分利用。另一個優(yōu)點是高優(yōu)先級消息可得到迅速發(fā)送。但是由于工業(yè)環(huán)境中普遍存在的電磁干擾,總線上會有毛刺,CAN總線的標準中已考慮到應(yīng)對方法。現(xiàn)在發(fā)現(xiàn)毛刺應(yīng)對方法可能使節(jié)點的同步受到影響,從而損及高優(yōu)先級消息的發(fā)送機會,出現(xiàn)優(yōu)先級的倒置,動搖了CAN總線的基本性能。

1 毛刺的存在

車內(nèi)電磁環(huán)境惡劣, ISO 76372/3總結(jié)出代表性的傳導和輻射干擾。有人專門作了輻射干擾的實驗,參考文獻[7]的實驗中用24 V蓄電池給車內(nèi)常用的繼電器供電(CAN系統(tǒng)供電是獨立的),電源線與CAN電纜靠得很近,在電纜線有屏蔽、線長為2 m時,手動開關(guān)繼電器時可以看到CAN波形上疊加的毛刺,輻射干擾實驗結(jié)果如圖1所示。


輻射干擾實驗結(jié)果
圖1 輻射干擾實驗結(jié)果

實際汽車上也見到CAN總線失效的報告[8]:豐田汽車在經(jīng)銷商產(chǎn)品報告中確認,由任何原因召回的車中發(fā)現(xiàn)丟失CAN數(shù)據(jù)的記錄有292宗。毛刺是引起CAN總線出錯的可能原因,其具體誘發(fā)過程需要仔細分析,不能掉以輕心。

2 CAN位時間與消息仲裁原理

CAN總線把位時間劃分為NBT等分的時間片,稱為Tq。CAN總線控制器按Tq對總線上的差分電平進行采樣,以決定內(nèi)部狀態(tài)。當總線上沒有通信時,稱為總線空閑,電平差在0~0.5 V,邏輯值為“1”。電平差為0.9 V以上時邏輯值為“0”。 由圖1可知,存在“0“毛刺,也存在“1“毛刺。CAN總線驅(qū)動器的特性是線與,當“1”和“0”同時發(fā)生時,總線的電平為“0”,這便是仲裁功能。一幀開始發(fā)送的第一位是“0“,稱為SOF,然后是消息的標識符ID。ID代表了消息的優(yōu)先級,每個節(jié)點通過位采樣知道總線上仲裁的結(jié)果,正常工作時如果發(fā)送“1”而讀回“0”,表示本發(fā)送節(jié)點本次ID發(fā)送失敗,需等下一次幀發(fā)送機會。

總線空閑時,一個有發(fā)送要求的節(jié)點須先觀察是否有別的節(jié)點已經(jīng)開始發(fā)送,如已開始就不能發(fā)送。正是這里,由一個“0”毛刺開始的時段可以誤解為別的節(jié)點已開始傳送SOF,毛刺阻斷了該節(jié)點的發(fā)送(不管該節(jié)點要傳送的消息優(yōu)先級有多高)。

由于傳送電纜延遲以及中間器件(如光隔離)的延遲τ,節(jié)點將見不到提前量τ以內(nèi)發(fā)送的別的節(jié)點的SOF。同理,別的節(jié)點要經(jīng)過τ以后才見到該節(jié)點發(fā)送的SOF,τ以后別的節(jié)點就因總線上已有發(fā)送而不允許發(fā)送了。這樣,在本節(jié)點請求時刻±τ內(nèi)的發(fā)送被認為是“同時”請求發(fā)送,它們將按ID仲裁。對遲于其τ的其他低優(yōu)先級幀的發(fā)送,它也是必然勝出的。

3 CAN位時間同步的有關(guān)規(guī)定

CAN的位時間分為同步段(Sync)、傳輸段(Tprop)、緩沖1段(Ph1)與緩沖2段(Ph2),位值采樣在Ph1 與Ph2之間。位值變化時將有跳變沿,只有1/0為同步用的跳變沿。跳變沿決定了相位差e,跳變沿在Ph2內(nèi)e為負,在Sync內(nèi)為0,在Tprop和Ph1內(nèi)為正。每個節(jié)點根據(jù)e實行同步,同步的修正量受同步的種類限制。同步分兩種:硬同步與重同步。硬同步對應(yīng)幀開始時的情況,重同步對應(yīng)幀內(nèi)有同步沿時的情況。對重同步而言,每次的修正量不能大于稱為重同步寬度的可預(yù)先設(shè)定的量SJW,SJW=min(Ph1,Ph2)。

有關(guān)本文討論內(nèi)容的CAN總線標準為ISO 118981(2003)[9]及ISO 16845(2004)[10],正是這些條款的規(guī)定保證了CAN總線協(xié)議在高度干擾的環(huán)境下能可靠工作。

ISO 118981第10.4.2.2款規(guī)定,節(jié)點只有在總線空閑時可以發(fā)SOF,在服務(wù)間隔第3位(I.M.3)的“0”視為SOF。

ISO 118981第12.4.2.1款規(guī)定硬同步在幀間的間隔中實行。而幀間間隔包括服務(wù)間隔和總線空閑,對上次發(fā)送的消極報錯節(jié)點還包括禁發(fā)時間。因此,在I.M.3的跳變沿也是作硬同步用的。

ISO 118981第12.4.2.4款規(guī)定,重同步的目的是校正采樣點的位置,e為“+”時延長Ph1,e為“-”時縮短Ph2。校正量在e小于或等于SJW時為e,反之為SJW。

ISO 16845第7.7.2款規(guī)定了接收節(jié)點對SOF的硬同步驗證方法意味著同步段SYNC直接同步于1/0跳變沿。

ISO 16845第8.7.2.1款規(guī)定了發(fā)送節(jié)點在I.M.3位值采樣點前有1/0沿時的硬同步驗證方法:測試設(shè)備在被測單元I.M.3采樣點前Tq加被測單元內(nèi)部處理時間前發(fā)0,要求被測單元在跳變沿1位后發(fā)ID最高位。這意味著發(fā)送節(jié)點要與I.M.3內(nèi)1/0跳變沿硬同步,0值被采樣,下一位不再發(fā)SOF而是發(fā)ID最高位。

ISO 16845第8.7.3.1款規(guī)定了發(fā)送節(jié)點在I.M.3位值采樣點后有1/0沿時的硬同步驗證方法:測試設(shè)備在被測單元I.M.3采樣點后1個被測單元內(nèi)部處理時間后發(fā)0,要求被測單元在跳變沿后1 Tq立即發(fā)SOF。這意味著發(fā)送節(jié)點是硬同步,但開始發(fā)SOF。

ISO 118981第4.18和4.16款規(guī)定了發(fā)送節(jié)點和接收節(jié)點的定義。發(fā)送節(jié)點指的是發(fā)數(shù)據(jù)幀或遠程幀的節(jié)點,其狀態(tài)維持到仲裁失敗退出或總線再度空閑,否則就是接收節(jié)點。因此總線空閑時遇到毛刺,則大家都是接收節(jié)點。

ISO 16845第7.7.9款規(guī)定了接收節(jié)點在總線空閑時對毛刺濾除的驗證方法:要確定對總線空閑時短于Tprop+Ph1-1的0不作SOF處理。也就是說硬同步后未被采樣到就不算作SOF。

4 毛刺造成優(yōu)先級倒置

4.1 總線空閑時毛刺引起的倒置

總線空閑時,局部錯的0毛刺被Tq采樣到,發(fā)送節(jié)點就會按ISO 16845 7.7.2規(guī)定實行硬同步,然后就要按ISO 16845 7.7.9款確定是別的節(jié)點發(fā)送的SOF還是毛刺。如果節(jié)點H在毛刺后Tq有發(fā)送請求ReqH(如圖2所示),它也必須等待Tprop+Ph1以確定總線是否空閑。另一個節(jié)點L如有發(fā)送ReqL,其到H的傳送延遲為τ,只要它能在H的硬同步后的采樣點采到,H就不再有發(fā)送機會。此時H、L請求的時間差為Tprop+Ph1-τ。如果2個節(jié)點靠得很近,τ≈0,那么H甚至無法與比它遲Tprop+Ph1的L競爭。同時它也無法與比它早τ-1的其他節(jié)點的發(fā)送相競爭。針對第1節(jié)中所講的“同時”情況,它已完全無法參與競爭。


總線空閑時毛刺引起優(yōu)先級倒置
圖2 總線空閑時毛刺引起優(yōu)先級倒置


估計倒置的概率用圖
圖3 估計倒置的概率用圖


在I.M.3中的毛刺引起優(yōu)先級倒置
圖4 在I.M.3中的毛刺引起優(yōu)先級倒置

現(xiàn)在對出現(xiàn)優(yōu)先級倒置的概率作初步分析。估計倒置的概率用圖如圖3所示。tG為毛刺發(fā)生時刻,tH為高優(yōu)先級消息請求時刻,tL為低優(yōu)先級消息請求時刻。如果tH發(fā)生在tG之后、該位的采樣點前,tL也在采樣點前到達,那么tH的請求將無法獲得參與競爭的機會。這件事的概率為Pa。Pa與誤碼率有關(guān),毛刺被采到會有誤碼。假定位時間為1 μs,毛刺寬度為0.2 μs,采到機會便是20%,也就是說毛刺概率在1位時間內(nèi)為誤碼率的5倍,考慮到毛刺有0毛刺與1毛刺2種,只有0毛刺會引起假的硬同步,再考慮到考察的時段為Tprop+Ph1,而不是1位,所以保守估計Pa為誤碼率的2倍。但是Pa不是因毛刺而引起倒置的概率,其中還包括了tL請求確實早于tH請求τ的部分,這部分用Pb表示。Pb=(tH-tG-τ)/(tH-tG),當(tH-tG)=τ時扣除部分Pb=0。所以最壞情況下沒有扣除,優(yōu)先級消息倒置的概率近似為誤碼率的2倍。

4.2 I.M.3內(nèi)毛刺引起的倒置

在上一幀認可位(ACK)“0”的重同步下,H、L兩個節(jié)點的位時間會有相位差τ,L超前時τ的大小對分析并無影響。當節(jié)點H、L均有掛起待發(fā)的消息時,按ISO 118981 10.4.2.2規(guī)定,它們應(yīng)在I.M.3后一位開始發(fā)SOF,并進行競爭。若H節(jié)點由于局部錯,在I.M.3位值采樣點前有毛刺,按ISO 16845 8.7.2款,H將作硬同步,位值采樣點的移動使它可以見到L所發(fā)的SOF(如圖4所示),其條件是e>Ph2。由于在I.M.3內(nèi)讀到SOF,H將在下一位開始發(fā)它的IDH最高位。假定H的IDH=“01***”,L的IDL=“10***”,H的ID11H=0經(jīng)τ后傳到L,與L的SOF部分重合,并延續(xù)到L的ID10L位,當毛刺發(fā)生的e滿足NBT-(2τ+e)>Ph2時,L不會采到H的ID11H,所以它不會退出。位時間設(shè)計時NBT=SYNC+Tprop+Ph1+Ph2,Tprop≥2τ,故上式在e<SYNC+Tprop-2τ+Ph1時能滿足,即0<e-Ph2<SYNC+Tprop-2τ+Ph1-Ph2。一般Ph1=Ph2,或者Ph1=Ph2+1,當節(jié)點靠得較近時τ比較小,e有較大的范圍可同時滿足該式。而L發(fā)的ID10L=0經(jīng)τ后到達H,當e>Ph2時成為H的ID10H中的同步沿,并被H采樣到,H便仲裁失敗退出,形成優(yōu)先級倒置。

此種倒置的概率的估計比較復雜,需要進一步研究。

5 解決方案

5.1 總線空閑時的硬同步抗毛刺措施

接收節(jié)點在總線空閑時檢查到1/0跳變沿就作硬同步,然后再每Tq繼續(xù)采樣。如在位值采樣點前發(fā)現(xiàn)有1,則認為總線恢復到空閑狀態(tài)。如其間已有本節(jié)點的發(fā)送請求,就在查到1的下一Tq開始本節(jié)點的發(fā)送。這樣,本節(jié)點的發(fā)送被推遲了毛刺寬度對應(yīng)的時間,但是也確保本節(jié)點發(fā)送前沒有其他節(jié)點已開始傳送,所以不會有優(yōu)先級倒置。

這種方法沒有解決毛刺較寬、一直延續(xù)到別的節(jié)點的SOF到達的情況。此時本節(jié)點仍然因無發(fā)送而出現(xiàn)優(yōu)先級倒置。

5.2 I.M.3內(nèi)硬同步抗毛刺措施

I.M.3內(nèi)位值采樣點前出現(xiàn)毛刺引起硬同步,本節(jié)點也繼續(xù)采樣總線。有“1”時后繼判斷比較困難,因為硬同步后再遇到“0”的時刻不確定,可能是別的節(jié)點發(fā)的SOF在原I.M.3位值采樣點前收到,也可能在I.M.3原位值采樣點后收到,還可能又是毛刺。所以,為處理簡化起見,有掛起待發(fā)幀的本節(jié)點發(fā)送超載幀。通過報超載,超載幀結(jié)束后總線回到空閑狀態(tài),重新實現(xiàn)同步。

這種方法也沒有解決毛刺較寬、一直延續(xù)到別的節(jié)點的SOF到達的情況。此時本節(jié)點仍然因無發(fā)送而出現(xiàn)優(yōu)先級倒置。

6 小結(jié)

毛刺濾除和幀開始時刻的硬同步是為保障通信正常的兩個不同側(cè)面的要求,在現(xiàn)有CAN總線協(xié)議的設(shè)計中出現(xiàn)了沖突,造成在某種特定情境下出現(xiàn)優(yōu)先級倒置。由于毛刺引起優(yōu)先級倒置的危害性與具體應(yīng)用的種類有關(guān),一般地說,系統(tǒng)設(shè)計時已盡量防止毛刺的干擾,毛刺發(fā)生的概率已比較小,發(fā)生在特定位置就更小。

在優(yōu)先級倒置的情況下,可能下一次競爭就不會發(fā)生倒置,做最壞送達時間分析時[6],可以將低優(yōu)先級的阻斷加倍來加以分析。

但是也可能在下一次競爭時仍發(fā)生倒置。在車輛安全認證分析時,需要確定倒置引起的的每小時的故障率,這使分析需要引入誤碼率的假設(shè),需要進一步的工作。

本文提出了在完全兼容CAN總線的條件下的改進方案,但方案只是局部有效,根本的改進可能無法達到完全兼容。

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。