天天看點

OSEK網絡管理入門

目錄

    • OSEK初級認知
    • OSEK中級認知
        • 結構說明
        • 1. 正常上線、建環、傳遞令牌(Taken)及休眠
        • 2. 已建環有403新節點插入
        • 3. 已建環現有節點403異常掉線
        • 4. 上線未發現其他節點建環失敗(跛足模式)
    • OSEK進階認知
        • 網絡管理分類
        • 網絡管理作用(巧記:同時休眠,提供狀态)
        • 時間參數
    • 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
    OSEK網絡管理入門

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内有任何封包,則退出休眠重新申請

    -

    OSEK網絡管理入門
    [ tWaitBusSleep = 1500ms ]

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

OSEK網絡管理入門
  • 新節點03發Alive表明上線,同時節點00将下家節點從07更新為03
    OSEK網絡管理入門
  • 03上線後監聽到09有發言,就把自己的下家節點更新為09
    OSEK網絡管理入門
    OSEK網絡管理入門
  • 03上線後隻有09号比自己大,就理所當然到發言時通知09,這讓07發現自己被忽略了
    OSEK網絡管理入門
  • 07繼續通知09,不再發02Ring封包,而是發01Alive廣播(這就是注意[1]裡的原因,Alive時data[0]也不一定代表自己),次時03發現有個07在自己和下家09之間,則更新下家為07
    OSEK網絡管理入門
    OSEK網絡管理入門

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

  • 以下圖文是示範403節點掉線又上線的過程,如果403直接掉線,則400把Taken傳給403逾時未響應時,所有節點重新發Alive封包重建立環
    OSEK網絡管理入門
    OSEK網絡管理入門

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

OSEK網絡管理入門
  • 發Alive封包100m後發特殊Ring封包(正常的Ring封包data[0]應該訓示下家節點,現在找不到隻能填充自己節點ID)并監聽網絡,260ms逾時後再次重發Alive封包
  • OSEK網絡管理入門
    OSEK網絡管理入門

OSEK進階認知

網絡管理分類

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

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

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

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

時間參數

  1. ECU本地喚醒(IGN等)一般要求150ms内使能CAN接收處理應用封包,并在200ms内發出第一條封包且必須為Alive封包而非應用封包,并在第一條Alive後[60~120ms]間發送第一條應用封包,在700ms内所有周期封包至少發送一次(此要求依賴車廠)
    OSEK網絡管理入門

    2.ECU遠端喚醒(收到網絡封包)一般要求50ms内發出第一幀Alive封包,并在700ms内發送完成所有周期封包

    3.ECU休眠 當節點發出休眠申請後開始監聽網絡,當收到休眠應答(或輪到自己廣播休眠應答)後進入1500ms休眠等待時間,時間到後關閉所有發送進入休眠。未避免反複喚醒,喚醒後至少5s才能下一輪休眠

    4.ECU跛足模式 當ECU連續4次發Alive封包無法建環時,進入LimpHome模式,以1000ms周期發送LimpHome 04封包

    OSEK網絡管理入門
    5.時間參數
    OSEK網絡管理入門

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網絡管理可以被應用封包喚醒。

繼續閱讀