此問題源于群內小伙伴的討論,本文將該問題帶來的思考分享給大家。
1、RPB的作用
首先,確定一下RPB的位置,RPB在CBV字節的Bit0,如下所示:
RPB的作用是什么呢?看一下Autosar的官方解釋,如下所示:
意思就是:RPB = 1,有RMS(Repeat Message State)請求,否則沒有RMS請求。這里我們需要從收/發兩個層面理解:
接收:如果接收到的網絡管理報文中,RPB = 1,請求當前的節點進入RMS狀態。
發送:如果本節點的上層邏輯主動請求進入RMS,則會主動調用接口CanNm_RepeatMessageRequest(),之后本節點外發的網絡管理報文中RPB = 1。提示:RPB置位與否的操作需要靜態配置CANNM_NODE_DETECTION_ENABLED參數。
CanNm_RepeatMessageRequest()接口聲明如下所示:
2、RPB的使用場景
這里我們假設一種工況:某個網段存在3個ECU:ECU1、ECU2、ECU3,且ECU3具有PN功能,ECU1對應的網絡管理報文0x501,ECU2對應的網絡管理報文0x502,ECU3對應的網絡管理報文0x503。三個ECU在總線上的拓撲關系如下所示:
具體解釋3個節點的網絡狀態切換時序:
t0時刻:ECU1和ECU2正常通信,兩者均處于NOS(Normal Operation State)狀態,發送的網絡管理報文中,RPB未置位(RPB = 0)。ECU3處于BSM(Bus-Sleep Mode)狀態(ECU3具有PN功能,因為收到的網絡管理報文中,對應的PNC未置位,所以此時ECU3處于休眠狀態)。
t1時刻:ECU1主動調用
接口CanNm_RepeatMessageRequest()請求進入RMS(Repeat Message State)狀態,此時:
ECU1進入RMS狀態,ECU1發送的網絡管理報文中,PNI(Partial Network Information Bit)置位(PNI= 1),且關聯ECU3的PNC_ECU3 = 1,ECU3網絡被喚醒;
且RPB = 1,隨即ECU2和ECU3進入RMS狀態;
ECU2和ECU3發送的網絡管理報文中,RPB = 1,且稍微晚于ECU1。
t2時刻:ECU1、ECU2、ECU3依次進入NOS狀態,且三者的RPB = 0。
如下所示:
注意:同一網段內的所有節點,對應的CANNM_MSG_CYCLE_TIME、CANNM_REPEAT_MESSAGE_TIME、CANNM_WAIT_BUS_SLEEP_TIME、NM-TIME_OUT時間參數需要保持一致,以便于網段內所有節點在近似相等的時間內進入相同的網絡狀態。
綜上述:RPB具有協調不同ECU節點狀態切換的作用,以便于網段內所有節點在近似相等的時間內進入相同的網絡狀態。
RPB是否還有其他使用場景?期待你不同的看法。
審核編輯:劉清
-
CAN總線
+關注
關注
145文章
1946瀏覽量
130727 -
網絡管理
+關注
關注
0文章
120瀏覽量
27670 -
AUTOSAR
+關注
關注
10文章
360瀏覽量
21556 -
RMS
+關注
關注
2文章
138瀏覽量
35787
發布評論請先 登錄
相關推薦
評論