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