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