OSEK網絡管理入門

以下分級純粹個人瞎分,專業人士請忽略

OSEK初級認知

有幾個小朋友要玩“擊鼓傳花”遊戲,遊戲規則很簡單:
1、想玩的人自己隨機報個數,所有人報完後自己心裏排個序,花從小數往大數傳,最大數者傳給最小數,花到誰手裏誰發言:表明想繼續玩還是想退出
2、第一個報數的人等一段時間後看沒人再報數了就可以開始傳花了。
3、花到誰手裏發言前,他需要檢查一下是否所有人都申請過想退出,如果是,他就通知大家:散場
4、當然如果中途有人表明:想繼續玩,那他之前所有人的申請都作廢,大家重新表明態度,直到出現第一個發現所有人都提過申請退出的人,這個人才正式通知大家:散場

初級中規則其實是爲了讓大家好幾好回憶,理解規則後現在上數據玩真的

OSEK中級認知

實際場景中遇到的情況主要有以下四種情況:

  1. 正常上線、建環、傳遞令牌(Taken)及休眠(初級中描述的情況)
  2. 已建環有新節點插入
  3. 已建環現有節點異常掉線
  4. 上線未發現其他節點建環失敗(跛足模式)

結構說明

  • data[1]表明自己節點當前狀態
    • 0x01 Alive(上線,玩遊戲前自我報數過程)
    • 0x02 Ring(建環,玩遊戲傳花中)
    • 0x04 LimpHome(跛足,網絡無人響應無法建環)
    • 0x10 SleepIndicatio(休眠申請,遊戲中申請退出)
    • 0x20 SleepAcknowledege(應答申請,遊戲中通知大夥散場)
    • 以上命令可以組合比如建環中想申請休眠就是0x12
  • OSEK網絡管理報文CAN ID 一般爲4XX,其中XX就是自己的網絡ID,data[0]在Alive狀態時填充自己ID,但注意[1]建環前表明身份還是靠監聽CAN ID XX而不是Alive時的data[0],在Ring狀態時填充傳遞Taken的ID
    在這裏插入圖片描述

1. 正常上線、建環、傳遞令牌(Taken)及休眠

注意幾個點:

  • 表格中時間是時間間隔,Alive在100ms內隨機響應,Ring響應間隔是100ms
  • 當輪到自己發言0x12表明休眠申請後,只需處理3種狀態:
    1. Taken未到自己(即下輪發言未輪到自己)時監聽到休眠應答(其他節點發22或32)則進入休眠等待(1.5s)
    2. Taken未到自己時監聽到有節點不想休眠發02,則退出休眠申請狀態,輪到自己時重新發起
    3. Taken到自己時監聽並檢查所有節點都發出過10休眠申請,則自己發32廣播集體休眠,進入休眠等待(1.5s)
  • 發出32休眠應答命令1.5s內有任何報文,則退出休眠重新申請
    -在這裏插入圖片描述
    [ tWaitBusSleep = 1500ms ]

2. 已建環有403新節點插入

在這裏插入圖片描述

  • 新節點03發Alive表明上線,同時節點00將下家節點從07更新爲03
    在這裏插入圖片描述
  • 03上線後監聽到09有發言,就把自己的下家節點更新爲09
    在這裏插入圖片描述
    在這裏插入圖片描述
  • 03上線後只有09號比自己大,就理所當然到發言時通知09,這讓07發現自己被忽略了
    在這裏插入圖片描述
  • 07繼續通知09,不再發02Ring報文,而是發01Alive廣播(這就是注意[1]裏的原因,Alive時data[0]也不一定代表自己),次時03發現有個07在自己和下家09之間,則更新下家爲07
    在這裏插入圖片描述
    在這裏插入圖片描述

3. 已建環現有節點403異常掉線

  • 以下圖文是演示403節點掉線又上線的過程,如果403直接掉線,則400把Taken傳給403超時未響應時,所有節點重新發Alive報文重新建環
    在這裏插入圖片描述
    在這裏插入圖片描述

4. 上線未發現其他節點建環失敗(跛足模式)

在這裏插入圖片描述

  • 發Alive報文100m後發特殊Ring報文(正常的Ring報文data[0]應該指示下家節點,現在找不到只能填充自己節點ID)並監聽網絡,260ms超時後再次重發Alive報文
  • 在這裏插入圖片描述在這裏插入圖片描述

OSEK高級認知

網絡管理分類

  • 直接網絡管理(OSEK, AUTOSAR等專門網絡報文進行整車節點控制喚醒休眠)
  • 間接網絡管理(個人理解就是沒有網絡管理,IGN ON 發應用報文,OFF停發應用報文)

(本文中提及的網絡管理都是指直接網絡管理

網絡管理作用(巧記:同時休眠,提供狀態)

  • 協調各ECU節點同時進入休眠
  • 監控網絡配置
  • 提供本身系統狀態

時間參數

  1. ECU本地喚醒(IGN等)一般要求150ms內使能CAN接收處理應用報文,並在200ms內發出第一條報文且必須爲Alive報文而非應用報文,並在第一條Alive後[60~120ms]間發送第一條應用報文,在700ms內所有周期報文至少發送一次(此要求依賴車廠)
    在這裏插入圖片描述
    2.ECU遠程喚醒(收到網絡報文)一般要求50ms內發出第一幀Alive報文,並在700ms內發送完成所有周期報文
    3.ECU休眠 當節點發出休眠申請後開始監聽網絡,當收到休眠應答(或輪到自己廣播休眠應答)後進入1500ms休眠等待時間,時間到後關閉所有發送進入休眠。未避免反覆喚醒,喚醒後至少5s才能下一輪休眠
    4.ECU跛足模式 當ECU連續4次發Alive報文無法建環時,進入LimpHome模式,以1000ms週期發送LimpHome 04報文
    在這裏插入圖片描述
    5.時間參數在這裏插入圖片描述

OSEK網絡管理總結

1、建環機制:網絡管理報文ID從小到大發送,然後從最大節點到最小節點依次建成邏輯環。

2、OSEK網絡管理報文規則:ID:4xx,其中4代表此幀報文爲網絡管理報文。xx代表當前節點的基地址,在OSEK網絡管理中會給每個節點分配一個基地址(00~FF)

  • Byte0:代表此幀網絡管理報文發送的目標地址(一般情況)。通俗說就是這幀網絡管理報文是發送給BCM還是給PEPS或者其他節點。

  • Byte1:代表發送的網絡管理報文的類型即是ring報文還是Alive報文或者LimpHome報文;

    • 01:代表 Alive報文,在總線上聲明自己的存在,請求其他節點與自己建環。

    • 02:代表Ring報文;

    • 12:代表當前節點已無通訊請求(睡眠標誌位ind置位),即告知其他節點我已滿足睡眠條件;

    • 32:即將其睡眠應答位置1,當檢測到其他節點都在發送12ring報文後,最後一個節點發送此應答報文,告知其他節點當前整個網絡無通信請求,可以睡眠。此時進入睡眠等待狀態即Twbs狀態。

    • 04:代表跛行報文,如果網絡管理報文接收計數器和發送計數器超限後,發送跛行報文即無其他節點與此節點建環,只有一個節點存在。

  • 其餘字節預留。

3、OSEK網絡管理可以被應用報文喚醒。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章