資料介紹
CAN總線起始于1986年左右,至今仍廣泛應用。現在人們對安全的要求已大為提高,所以要不斷仔細審視CAN的安全性能。現在已經發現的重要的CAN問題有:在消極報錯狀態下可能出現等效離線,使節點不能收發的時間相當長[1];錯幀漏檢率的估計不準,特別在誤碼率高時比Bosch CAN2.0數據高多個數量級[2],在單目的地址時影響數據正確性,在多個目的地址時會影響數據一致性;標準的振蕩源精度要求偏低[3],使誤用廉價器件成為可能,影響系統的穩定性;本文發現的優先級倒置的可能性,使調度分析結果的可信度下降;在數據幀倒數第二位的局部錯可能引起不一致的接收重復或丟失[4]。所以在FlexRay尚未達到預定目標、無論在可靠性還是價格上能取代CAN以前,對CAN作進一步的改進仍然是非常有意義的。
CAN是一種代表性的事件觸發通信協議,同時發生的多個通信請求將按照消息的優先級進行無損仲裁,高優先級的勝出。按照消息的優先級進行無損仲裁是CAN原始專利的唯一權利要求[5]。對于低優先級的消息而言,送達時間將受到高優先級消息的阻擾,在高優先級消息為周期性時,最壞送達時間是可以預先計算出的[6]。如果能安排好發送消息的初始相位并作寬松的時鐘同步,這個最壞送達時間可以大為減少。事件觸發協議的優點是總線帶寬可以得到充分利用。另一個優點是高優先級消息可得到迅速發送。但是由于工業環境中普遍存在的電磁干擾,總線上會有毛刺,CAN總線的標準中已考慮到應對方法。現在發現毛刺應對方法可能使節點的同步受到影響,從而損及高優先級消息的發送機會,出現優先級的倒置,動搖了CAN總線的基本性能。
1 毛刺的存在
車內電磁環境惡劣, ISO 76372/3總結出代表性的傳導和輻射干擾。有人專門作了輻射干擾的實驗,參考文獻[7]的實驗中用24 V蓄電池給車內常用的繼電器供電(CAN系統供電是獨立的),電源線與CAN電纜靠得很近,在電纜線有屏蔽、線長為2 m時,手動開關繼電器時可以看到CAN波形上疊加的毛刺,輻射干擾實驗結果如圖1所示。
![談談CAN優先級倒置的原因和對策](/uploads/allimg/171121/2755807-1G12115494GV.png)
圖1 輻射干擾實驗結果
實際汽車上也見到CAN總線失效的報告[8]:豐田汽車在經銷商產品報告中確認,由任何原因召回的車中發現丟失CAN數據的記錄有292宗。毛刺是引起CAN總線出錯的可能原因,其具體誘發過程需要仔細分析,不能掉以輕心。
2 CAN位時間與消息仲裁原理
CAN總線把位時間劃分為NBT等分的時間片,稱為Tq。CAN總線控制器按Tq對總線上的差分電平進行采樣,以決定內部狀態。當總線上沒有通信時,稱為總線空閑,電平差在0~0.5 V,邏輯值為“1”。電平差為0.9 V以上時邏輯值為“0”。 由圖1可知,存在“0“毛刺,也存在“1“毛刺。CAN總線驅動器的特性是線與,當“1”和“0”同時發生時,總線的電平為“0”,這便是仲裁功能。一幀開始發送的第一位是“0“,稱為SOF,然后是消息的標識符ID。ID代表了消息的優先級,每個節點通過位采樣知道總線上仲裁的結果,正常工作時如果發送“1”而讀回“0”,表示本發送節點本次ID發送失敗,需等下一次幀發送機會。
總線空閑時,一個有發送要求的節點須先觀察是否有別的節點已經開始發送,如已開始就不能發送。正是這里,由一個“0”毛刺開始的時段可以誤解為別的節點已開始傳送SOF,毛刺阻斷了該節點的發送(不管該節點要傳送的消息優先級有多高)。
由于傳送電纜延遲以及中間器件(如光隔離)的延遲τ,節點將見不到提前量τ以內發送的別的節點的SOF。同理,別的節點要經過τ以后才見到該節點發送的SOF,τ以后別的節點就因總線上已有發送而不允許發送了。這樣,在本節點請求時刻±τ內的發送被認為是“同時”請求發送,它們將按ID仲裁。對遲于其τ的其他低優先級幀的發送,它也是必然勝出的。
3 CAN位時間同步的有關規定
CAN的位時間分為同步段(Sync)、傳輸段(Tprop)、緩沖1段(Ph1)與緩沖2段(Ph2),位值采樣在Ph1 與Ph2之間。位值變化時將有跳變沿,只有1/0為同步用的跳變沿。跳變沿決定了相位差e,跳變沿在Ph2內e為負,在Sync內為0,在Tprop和Ph1內為正。每個節點根據e實行同步,同步的修正量受同步的種類限制。同步分兩種:硬同步與重同步。硬同步對應幀開始時的情況,重同步對應幀內有同步沿時的情況。對重同步而言,每次的修正量不能大于稱為重同步寬度的可預先設定的量SJW,SJW=min(Ph1,Ph2)。
有關本文討論內容的CAN總線標準為ISO 118981(2003)[9]及ISO 16845(2004)[10],正是這些條款的規定保證了CAN總線協議在高度干擾的環境下能可靠工作。
ISO 118981第10.4.2.2款規定,節點只有在總線空閑時可以發SOF,在服務間隔第3位(I.M.3)的“0”視為SOF。
ISO 118981第12.4.2.1款規定硬同步在幀間的間隔中實行。而幀間間隔包括服務間隔和總線空閑,對上次發送的消極報錯節點還包括禁發時間。因此,在I.M.3的跳變沿也是作硬同步用的。
ISO 118981第12.4.2.4款規定,重同步的目的是校正采樣點的位置,e為“+”時延長Ph1,e為“-”時縮短Ph2。校正量在e小于或等于SJW時為e,反之為SJW。
ISO 16845第7.7.2款規定了接收節點對SOF的硬同步驗證方法意味著同步段SYNC直接同步于1/0跳變沿。
ISO 16845第8.7.2.1款規定了發送節點在I.M.3位值采樣點前有1/0沿時的硬同步驗證方法:測試設備在被測單元I.M.3采樣點前Tq加被測單元內部處理時間前發0,要求被測單元在跳變沿1位后發ID最高位。這意味著發送節點要與I.M.3內1/0跳變沿硬同步,0值被采樣,下一位不再發SOF而是發ID最高位。
ISO 16845第8.7.3.1款規定了發送節點在I.M.3位值采樣點后有1/0沿時的硬同步驗證方法:測試設備在被測單元I.M.3采樣點后1個被測單元內部處理時間后發0,要求被測單元在跳變沿后1 Tq立即發SOF。這意味著發送節點是硬同步,但開始發SOF。
ISO 118981第4.18和4.16款規定了發送節點和接收節點的定義。發送節點指的是發數據幀或遠程幀的節點,其狀態維持到仲裁失敗退出或總線再度空閑,否則就是接收節點。因此總線空閑時遇到毛刺,則大家都是接收節點。
ISO 16845第7.7.9款規定了接收節點在總線空閑時對毛刺濾除的驗證方法:要確定對總線空閑時短于Tprop+Ph1-1的0不作SOF處理。也就是說硬同步后未被采樣到就不算作SOF。
4 毛刺造成優先級倒置
4.1 總線空閑時毛刺引起的倒置
總線空閑時,局部錯的0毛刺被Tq采樣到,發送節點就會按ISO 16845 7.7.2規定實行硬同步,然后就要按ISO 16845 7.7.9款確定是別的節點發送的SOF還是毛刺。如果節點H在毛刺后Tq有發送請求ReqH(如圖2所示),它也必須等待Tprop+Ph1以確定總線是否空閑。另一個節點L如有發送ReqL,其到H的傳送延遲為τ,只要它能在H的硬同步后的采樣點采到,H就不再有發送機會。此時H、L請求的時間差為Tprop+Ph1-τ。如果2個節點靠得很近,τ≈0,那么H甚至無法與比它遲Tprop+Ph1的L競爭。同時它也無法與比它早τ-1的其他節點的發送相競爭。針對第1節中所講的“同時”情況,它已完全無法參與競爭。
CAN是一種代表性的事件觸發通信協議,同時發生的多個通信請求將按照消息的優先級進行無損仲裁,高優先級的勝出。按照消息的優先級進行無損仲裁是CAN原始專利的唯一權利要求[5]。對于低優先級的消息而言,送達時間將受到高優先級消息的阻擾,在高優先級消息為周期性時,最壞送達時間是可以預先計算出的[6]。如果能安排好發送消息的初始相位并作寬松的時鐘同步,這個最壞送達時間可以大為減少。事件觸發協議的優點是總線帶寬可以得到充分利用。另一個優點是高優先級消息可得到迅速發送。但是由于工業環境中普遍存在的電磁干擾,總線上會有毛刺,CAN總線的標準中已考慮到應對方法。現在發現毛刺應對方法可能使節點的同步受到影響,從而損及高優先級消息的發送機會,出現優先級的倒置,動搖了CAN總線的基本性能。
1 毛刺的存在
車內電磁環境惡劣, ISO 76372/3總結出代表性的傳導和輻射干擾。有人專門作了輻射干擾的實驗,參考文獻[7]的實驗中用24 V蓄電池給車內常用的繼電器供電(CAN系統供電是獨立的),電源線與CAN電纜靠得很近,在電纜線有屏蔽、線長為2 m時,手動開關繼電器時可以看到CAN波形上疊加的毛刺,輻射干擾實驗結果如圖1所示。
![談談CAN優先級倒置的原因和對策](/uploads/allimg/171121/2755807-1G12115494GV.png)
圖1 輻射干擾實驗結果
實際汽車上也見到CAN總線失效的報告[8]:豐田汽車在經銷商產品報告中確認,由任何原因召回的車中發現丟失CAN數據的記錄有292宗。毛刺是引起CAN總線出錯的可能原因,其具體誘發過程需要仔細分析,不能掉以輕心。
2 CAN位時間與消息仲裁原理
CAN總線把位時間劃分為NBT等分的時間片,稱為Tq。CAN總線控制器按Tq對總線上的差分電平進行采樣,以決定內部狀態。當總線上沒有通信時,稱為總線空閑,電平差在0~0.5 V,邏輯值為“1”。電平差為0.9 V以上時邏輯值為“0”。 由圖1可知,存在“0“毛刺,也存在“1“毛刺。CAN總線驅動器的特性是線與,當“1”和“0”同時發生時,總線的電平為“0”,這便是仲裁功能。一幀開始發送的第一位是“0“,稱為SOF,然后是消息的標識符ID。ID代表了消息的優先級,每個節點通過位采樣知道總線上仲裁的結果,正常工作時如果發送“1”而讀回“0”,表示本發送節點本次ID發送失敗,需等下一次幀發送機會。
總線空閑時,一個有發送要求的節點須先觀察是否有別的節點已經開始發送,如已開始就不能發送。正是這里,由一個“0”毛刺開始的時段可以誤解為別的節點已開始傳送SOF,毛刺阻斷了該節點的發送(不管該節點要傳送的消息優先級有多高)。
由于傳送電纜延遲以及中間器件(如光隔離)的延遲τ,節點將見不到提前量τ以內發送的別的節點的SOF。同理,別的節點要經過τ以后才見到該節點發送的SOF,τ以后別的節點就因總線上已有發送而不允許發送了。這樣,在本節點請求時刻±τ內的發送被認為是“同時”請求發送,它們將按ID仲裁。對遲于其τ的其他低優先級幀的發送,它也是必然勝出的。
3 CAN位時間同步的有關規定
CAN的位時間分為同步段(Sync)、傳輸段(Tprop)、緩沖1段(Ph1)與緩沖2段(Ph2),位值采樣在Ph1 與Ph2之間。位值變化時將有跳變沿,只有1/0為同步用的跳變沿。跳變沿決定了相位差e,跳變沿在Ph2內e為負,在Sync內為0,在Tprop和Ph1內為正。每個節點根據e實行同步,同步的修正量受同步的種類限制。同步分兩種:硬同步與重同步。硬同步對應幀開始時的情況,重同步對應幀內有同步沿時的情況。對重同步而言,每次的修正量不能大于稱為重同步寬度的可預先設定的量SJW,SJW=min(Ph1,Ph2)。
有關本文討論內容的CAN總線標準為ISO 118981(2003)[9]及ISO 16845(2004)[10],正是這些條款的規定保證了CAN總線協議在高度干擾的環境下能可靠工作。
ISO 118981第10.4.2.2款規定,節點只有在總線空閑時可以發SOF,在服務間隔第3位(I.M.3)的“0”視為SOF。
ISO 118981第12.4.2.1款規定硬同步在幀間的間隔中實行。而幀間間隔包括服務間隔和總線空閑,對上次發送的消極報錯節點還包括禁發時間。因此,在I.M.3的跳變沿也是作硬同步用的。
ISO 118981第12.4.2.4款規定,重同步的目的是校正采樣點的位置,e為“+”時延長Ph1,e為“-”時縮短Ph2。校正量在e小于或等于SJW時為e,反之為SJW。
ISO 16845第7.7.2款規定了接收節點對SOF的硬同步驗證方法意味著同步段SYNC直接同步于1/0跳變沿。
ISO 16845第8.7.2.1款規定了發送節點在I.M.3位值采樣點前有1/0沿時的硬同步驗證方法:測試設備在被測單元I.M.3采樣點前Tq加被測單元內部處理時間前發0,要求被測單元在跳變沿1位后發ID最高位。這意味著發送節點要與I.M.3內1/0跳變沿硬同步,0值被采樣,下一位不再發SOF而是發ID最高位。
ISO 16845第8.7.3.1款規定了發送節點在I.M.3位值采樣點后有1/0沿時的硬同步驗證方法:測試設備在被測單元I.M.3采樣點后1個被測單元內部處理時間后發0,要求被測單元在跳變沿后1 Tq立即發SOF。這意味著發送節點是硬同步,但開始發SOF。
ISO 118981第4.18和4.16款規定了發送節點和接收節點的定義。發送節點指的是發數據幀或遠程幀的節點,其狀態維持到仲裁失敗退出或總線再度空閑,否則就是接收節點。因此總線空閑時遇到毛刺,則大家都是接收節點。
ISO 16845第7.7.9款規定了接收節點在總線空閑時對毛刺濾除的驗證方法:要確定對總線空閑時短于Tprop+Ph1-1的0不作SOF處理。也就是說硬同步后未被采樣到就不算作SOF。
4 毛刺造成優先級倒置
4.1 總線空閑時毛刺引起的倒置
總線空閑時,局部錯的0毛刺被Tq采樣到,發送節點就會按ISO 16845 7.7.2規定實行硬同步,然后就要按ISO 16845 7.7.9款確定是別的節點發送的SOF還是毛刺。如果節點H在毛刺后Tq有發送請求ReqH(如圖2所示),它也必須等待Tprop+Ph1以確定總線是否空閑。另一個節點L如有發送ReqL,其到H的傳送延遲為τ,只要它能在H的硬同步后的采樣點采到,H就不再有發送機會。此時H、L請求的時間差為Tprop+Ph1-τ。如果2個節點靠得很近,τ≈0,那么H甚至無法與比它遲Tprop+Ph1的L競爭。同時它也無法與比它早τ-1的其他節點的發送相競爭。針對第1節中所講的“同時”情況,它已完全無法參與競爭。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- uC/OS-II學習筆記——優先級反轉與優先級繼承機制
- STM32F103芯片中斷優先級以及FreeRTOS優先級設置
- 2.FreeRTOS中斷優先級和任務優先級
- cortex M內核優先級設置
- STM32的中斷:搶占優先級和響應優先級資料下載
- 51單片機的中斷優先級和中斷嵌套的詳細資料概述
- 51單片機的中斷優先級是怎么樣的及中斷嵌套的資料說明
- 51單片機的中斷源優先級問題的詳細資料說明
- 為什么51單片機的默認中斷優先級都是低級及中斷嵌套
- 51單片機的中斷優先級及中斷嵌套的詳細資料說明
- DSP中斷如何設置優先級 20次下載
- NVIC中斷優先級分組 1次下載
- STM32F10X的中斷優先級 41次下載
- 基于優先級的柔性時空工作流異常處理
- 優先級參數配對組合測試集生成策略
- 華為和思科默認路由優先級 1345次閱讀
- GD32如何配置中斷優先級分組以及中斷優先級 3175次閱讀
- 為什么有些STM32中斷沒有子優先級? 914次閱讀
- Free RTOS的優先級翻轉 1366次閱讀
- OB優先級和運行時特性 2126次閱讀
- 鴻蒙內核源碼:32級優先級的進程和線程調度 2090次閱讀
- 嵌入式技術中如何定義進程優先級 1570次閱讀
- 嵌入式系統中優先級反轉的產生原因及2種解決方案 3971次閱讀
- 關于嵌入式系統優先級反轉的原因及解決方法探討 5408次閱讀
- STM32單片機中搶占優先級和響應優先級的表達方式解析 1.1w次閱讀
- 解析單片機里的中斷優先級 9077次閱讀
- 如何設置51單片機的中斷優先級 3.3w次閱讀
- STM32單片機優先級的定義 9474次閱讀
- c語言運算符優先級規律 7562次閱讀
- stm32定時器優先級 5378次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1491次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機和 SG3525的程控開關電源設計
- 0.23 MB | 4次下載 | 免費
- 8基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537793次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論