1. 程式人生 > >can 網路管理

can 網路管理

網路管理主要功能:

  1. 是用來管理ECU是否在網路裡面,不在的話請求加入,也就是ALIVE報文,
  2. 要判斷是否掉線,以及睡眠狀態的轉換機制,以及跛行狀態判,也即是RING報文。

主要的實現邏輯流程:

從rtos佇列裡面取出資料,儲存在自定義的結構體裡面
不論在何種狀態只要接收到報文都需要靜進入normal狀態,等於初始化一次
提取資訊,報文的主要資訊有三部分,報文ID,目的地址,以及訊息型別
如果是alive報文,進行環的更新,如果是ring報文進行狀態轉換機制判斷。
ring報文的判斷的目的有兩個,一個是進行狀態的轉換,二是為了將ring報文繼續傳遞下去。

       當ring報文是節點在請求睡眠的時候,睡眠ind為true,然後在環裡迴圈,如果有一個節點為false,則請求失敗,返回原來的狀態,都為true,則自己傳送一個為ind 和ack都為true,   則進入等待睡眠狀態。

 

在接收到報文之後,如果是目的地址是自己的的話,則進行判斷然後啟動Ttype定時器,時間到了傳送後繼的ring報文。如果不是傳送給自己的,則啟動Tmax定時器,如果在定時器時間到的時候沒有收到下一條ring報文表示,我出故障了,進入跛足狀態。在跛足狀態的時候,定時器Terror時間到就發一個跛足報文,Tlimphome時間到的時候則進入準備睡眠狀態。

接收到睡眠報文應答的時候,進入等待睡眠狀態,讓後啟動定時器Twait,時間到沒有收到報文的話則進入睡眠狀態。