概述
AutoSAR中CAN通信的網絡管理主要是根據CANNode接收和發送的NMMessage進行該節點在整個網絡中的活動的,根據NM Message控制整個網絡對Normal模式和Sleep模式的切換。
同時可以根據CAN NM PDU來檢測網絡上的其他節點的狀態,進行同步休眠等。主要包含以下內容:
1.周期性的NMMessage在發送節點廣播式的發送,節點可以周期接收到NM PDU。
2.對于接收節點而言,接收到NMPDU表明相應的節點想要保持網絡正常工作。
3.節點想要進入Sleep模式,那么停止發送NM PDU準備進入Sleep,如果此時網絡還有別的節點在發送NMPDU,則延遲進入Sleep。
4.在所有節點停止發送NMPDU并且設置的超時時間到,這時候整個網絡上的節點同步進入Sleep模式。
5.節點想要從Sleep進入到Normal模式,則請求發送NMPDU。
NM****狀態切換
在NM中狀態切換主要有兩個方面的考慮,其中一個是整個CAN NM的網絡切換關系,主要由三個主要的狀態,分別是Network Mode、Pre-Bus Sleep Mode和Bus Sleep Mode,對于其內部的轉換關系如下圖所示。
系統上電后,首先在Bus Sleep模式,如果有NM的通信請求就進入正常的通信模式也就是下中的Network Mode。
在Network Mode主要處理整個系統的網絡管理的正常運行,如果NM上的節點停止發送NM PDU,則在定義的TimeOut后進入到Pre-Bus Sleep模式,等待整個通信上的網絡達到Bus TimeOut后徹底進入Bus Sleep模式,如果在Pre-Bus Sleep模式下,收到了其它節點的NM請求,則進入正常的Network模式。
在NM的狀態切換中還有一個比較重要的就是Network Mode的內部狀態切換。無論是Bus Sleep還是Pre-Bus Sleep狀態下進入到Network模式都會直接進入Repeat Message State發送NM PDU,處于RepeatMessage State下的節點對于整個網絡上的節點來說是有效的節點,并確保其它節點在該狀態上保持激活狀態。Repaet模式下定義的TimeOut時間到同時接收到NM的請求進入到Normal Operation State,在該模式下只有NN的請求就保持節點處于Awake狀態。
接收到RepeatMsg的請求或者對應的RepeatMsg對應的控制Bit接收,則進入Repeat模式,如果接收到NMReleased請求則進入ReadySleep States,ReadySleep States狀態下等待其它節點進入到Sleep狀態,如果NM TimeOut時間達到進入到Pre-Bus Sleep等待總線Sleep。具體的狀態轉換如下所示。
網絡管理的狀態切換中一般主要是由TimeOut和Requested/Released進行切換的,同時包含了對外部NMReq的處理,在使用的時候注意幾個TimeOut的時間,尤其是在做整個網絡上的Sleep機制的時候要充分考慮不同節點產生的jitters,該部分的考慮主要從內部時鐘、NM相關模塊函數的循環時間和發送方式進行考慮,由于該部分還有連調連試過,所有先不詳細介紹,等后期如果進行相關的工作再補充更新。
NM PDU
AutoSAR中NM的PDU主要包括三大部分,分別是節點的ID、控制位以及用戶數據。在標準的CANFrame的具體定義如下:
其中Control Bit Vector的定義如下
Bit0: Repeat Message Request 表明Repeat Msg是否被請求。
Bit3: NM Coordinator Sleep Bit 表明是否開始同步的ShutDown。
Bit4:Active Wakeup Bit 表明是否喚醒通信網絡。
Bit6: Partial Network Information Bit (PNI)。
Bit1/2/5/7用于后期擴展。
對于Byte0和Byte1兩個Byte,AutoSAR定義的是通用的設置Byte,尤其是Byte0是Source的ID,只取其中的低八位,一般OEM都會定義特定的NM報文,而對于在NM PDU機制中的實現和定義主要寫入低八位的ID就可以。
對于UserData不同的OEM會有不同的定義,這個取決于自己的設置,之前參與Daimler的一個項目的時候,他們會把UserData0作為WakeUp Reason使用。
如果使用Partial Network Cluster(PNC),一般會在特定的UserData中包含PNC上節點所在的位置。對于NMPDU的使用根據具體的OEM要求設置即可。
Partial Network Cluster
PartialNetwork Cluster(PNC)的使用主要是關掉某些網絡上的不需要通信的節點,而一些必須的節點可以正常通信,從而更好的節約能量,減少消耗。
只有在該節點的PNC功能使能,同時接收的NM PDU中PNI位為1的時候才進行正常的PNC處理。同樣作為PNC的一個節點在發送NM PDU的時候PNI位也必須設置為1。
PNC在實現的時候在CANNM模塊提供了一種濾波機制,用來忽略無效的NMPDU。在使用PNC功能的時候,對于NMPDU 不用的OEM會在UserData中相應的Bit表示一個PNC的網絡節點,每一個Bit表示了一個PN節點。
對于濾波機制的使用一般從UserData數據開始,指定需要比較的Byte長度,然后設置需要的比較信息(定義需要接收的Byte Value和Mask Value),進行比較即可,只有滿足比較條件才認為接收到的NM PDU是一條有效的NMPDU,否則忽略。
在PNC中提供了兩種NM的管理機制,分別為Internal and External Requested(EIR)PN和ExternalRequested(ER)PN。
對于EIR PN而言,主要是用于在接收到NM后,ECU根據接收到的NM PDU通知COMM模塊和BSWM去控制相關的NM通道中的I-PDU的使能和禁用,同時可以將接收和發送的數據通過COM模塊與APP層進行交互。
ER PN而言主要是作為NM的Gateway收集外部的PN PDU使用,用于路由NM相關的PNC到指定的通信Bus通道,進行PN控制。
PNC在AutoSAR****中的實現
對于PNC在AutoSAR中的實現將從CAN相關的PNC做闡述,因為現在CAN的PNC網絡管理也是用的最多的。
CAN的PNC在AutoSAR架構中主要包括了支持CAN PNC的硬件、CAN、CanTrcv(SPI通信)、CanIf、CanNm、CanSM、NmIf、ComM、BSWM以及應用層的SWC。整個PNC的相關狀態切換如下圖所示。
根據上面的圖片簡單介紹幾個主要作用:
1.喚醒:MCU被喚醒后,對于帶有喚醒功能的TJA1145而言會在CANTrcv中將喚醒通知到CANIF,然后在EcuM中調用相關的函數對喚醒的有效性進行判斷,從而將當前喚醒的狀態通知給BswM進行狀態處理。
2.PNC通信:在CANIf收到相關的NMPDU后,通知CANNM做PNC的有效性校驗,在PNC校驗有效后通過PDUR和COM兩個模塊將有效PNC信息告知COMM中特定的PNC通道,然后COMM將PNC的狀態發送給BSWM,BSWM根據PNC的狀態和特定的Rules反饋給COMM進行PNC通信請求,同時通過CANSM模塊經CANIf去控制CNATrcv進行通信模式切換。
3.在應用層的SWC可以直接建立與BSWM的Mode Req CS接口或者SWC建立與COMM的用于請求通信的CS接口,實現SWC對通信的請求。
4.對于NM PDU的發送一般需要NM模塊進行請求或者釋放,其控制指令也是在COMM受到BSWM或者SWC請求后發出控制指令。
5.對于PNC的NM PDU Group的使能和禁用開關需要BSWM結合具體的Rules進行控制,從而StartNM PDU 和StopNM PDU。
6.TJA1145這款芯片的模式操作和喚醒幀定義需要通過SPI通信進行控制。
審核編輯:劉清
-
CAN通信
+關注
關注
5文章
93瀏覽量
17847 -
OEM
+關注
關注
4文章
402瀏覽量
50357 -
AUTOSAR
+關注
關注
10文章
362瀏覽量
21588 -
OSEK
+關注
關注
2文章
19瀏覽量
13031
發布評論請先 登錄
相關推薦
評論