上一篇我們從CanNM模塊分析PN功能,本篇接著從ComM模塊分析。因為網絡管理的PN功能主要由這兩個模塊控制。不清楚CanNM模塊與PN關系的可以參閱前文Autosar網絡管理:從CanNM模塊看Partial Networking。
對于每一個PNC(partial network cluster)的通信狀態,ComM模塊都有獨立的一套狀態機進行管理。當CanNM從CanIf層拿到NM PDU以后,會將User Data部分數據獨立拆解出來,通過PDUR、COM,以信號的形式最終送給ComM模塊。為什么將User Data部分獨立拆解出來?因為User Data部分包含著PNC信息,該信息取決于項目需求:需要多少PNC,就開辟多少User Data空間。也就是說,ComM獲取的PNC信息與NM PDU中User Data 一一對應。
使能或是關閉PNC,最終的表現就是允許PNC關聯的Node(或者說Channel)通信與否。我們知道應用報文(Com層對應的Pdu)的發送/關閉由BswM管控,如果ECU收到的PNC關聯其對應的某個Channel,ComM模塊就會進行通信請求(進行狀態切換),BswM獲取請求信息后,使能或者禁止Com層對應的I-PDU groups通信。
1
ComM對PNC管理
前面我們說PN功能開啟需要在CanNM模塊打開CanNmPnEnabled參數,而在ComM模塊還需要將配置參數
ComMPncSupport
打開。在Autosar中,規定CanNmPnEnabled和ComMPncSupport需要存儲在NVM中,以便診斷服務使用,但是在實際的項目開發中,是否這樣實現還是需要看具體項目需求。
ComM管理每一個PNC狀態的切換,當狀態切換時,均需要通過接口BswM_ComM_CurrentPncMode()通知到BswM,以便BswM對Com層的
I-PDU groups
進行通信的管控。ComM在管控每個PNC狀態機之前,首先要獲取對應Channel的PNC信息,PNC信息通過Com層標準信號接口獲取ERA signal或者EIRA signal。如果signal是多字節的,一般會在Com層配置成uint8_n類型。Autosar里規定PNC對應的信號,最大可以包含56個PNC狀態位信息,這最大56是如何來的呢?對于一個經典CAN幀,一個PDU中最多攜帶8 byte有效數據,在CanNM模塊中,CBV字節是必須的,而NodeID是可選則,這樣在CanNM層級最多可以有7 byte的User Data,因此ComM最多可以管控7*8 = 56個PNC。雖然NodeID在CanNM是可選的,但還是要識別和過濾NM PDU,當NodeID在CanNM可選時,可以依賴xxIf層或者驅動層對NM PDU過濾和識別,驅動層負責將有效ID范圍的NM PDU送給xxIf層,xxIf層通過識別ID,負責將該PDU發送給對應的上層,比如:xx_TP層,xx_NM層等。
一直在說ComM通過信號獲取對應的PNC信息,這里我們再具體說一下,對ComM來說,獲取的是 EIRA 或者 ERA信號,這兩個信號獨立。可以使用其中一個,也可以均使用,ComM通過Com_ReceiveSignal()接口獲取。
ComM既然會接收信號,當然也會將PNC狀態信息通過信號發送給對應的通信總線。
ComM模塊可以處理EIRA 或者ERA信號的接收,但是發送只能處理EIRA信號。
2
ComM PNC狀態機對于每個Partial Network,會對應一個PNC狀態機,因為PNC最多可以有56個,因此ComM最多可以管理56個PNC狀態機。注意:PNC和ComM層的Channel不是一個概念,ComM的Channel對應具體的物理總線數。
在ComM模塊中,
一個Channel可以對應一個PNC,也可以對應多個PNC。
ComM管理的PNC狀態機包括兩大Mode:PNC_FULL_COMMUNICATION、PNC_NO_COMMUNICATION。PNC_FULL_COMMUNICATION模式又包含三個子狀態:PNC_PREPARE_SLEEP、PNC_READY_SLEEP、PNC_REQUESTED。

對上圖狀態行為進行解讀:
PNC_NO_COMMUNICATION主狀態行為
系統上電時,PNC默認狀態即PNC_NO_COMMUNICATION。如果某個PNC進入PNC_NO_COMMUNICATION狀態后,沒有收到內部或者外部請求,則狀態不跳轉。(1)
EcuM或者NM模塊調用ComM_EcuM_WakeUpIndication()接口,且配置參數ComMSynchronousWakeUp = TRUE
,PNC的狀態由PNC_NO_COMMUNICATION切換到PNC_FULL_COMMUNICATION::PNC_PREPARE_SLEEP狀態。且該PNC對應的ComMPncPrepareSleepTimer(
ComMPncPrepareSleepTimer
> 0)啟動,同時通知到BswM,PNC狀態切換。
(2)EcuM模塊調用ComM_EcuM_WakeUpIndication()接口,且配置參數ComM_PncWakeUpEnabled = TRUE
,PNC的狀態由PNC_NO_COMMUNICATION切換到PNC_FULL_COMMUNICATION::PNC_PREPARE_SLEEP狀態。且該PNC對應的ComMPncPrepareSleepTimer啟動(ComMPncPrepareSleepTimer
> 0),同時通知到BswM,PNC狀態切換。
(3)如果PNC請求信號收到(至少一個bit在EIRA 中置位),PNC的狀態由PNC_NO_COMMUNICATION切換到PNC_FULL_COMMUNICATION::PNC_READY_SLEEP 狀態。
(4)如果ComMUser調用ComM_RequestComMode()接口請求 FULL_COMMUNICATION,PNC的狀態由PNC_NO_COMMUNICATION切換到PNC_FULL_COMMUNICATION::PNC_REQUESTED 狀態。
(5)
如果PNC請求信號收到(至少一個bit在ERA 中置位)
,AND
ComMPncGatewayEnabled= TRUE
,AND
ComMPncGatewayType != NONE
。PNC的狀態由PNC_NO_COMMUNICATION切換到PNC_FULL_COMMUNICATION::PNC_REQUESTED 狀態。
PNC_FULL_COMMUNICATION主狀態行為
該狀態下,所有與此PNC關聯的通道均進入Full Communication狀態。
進入PNC_REQUESTED子狀態工況:
ComMUser對此PNC請求COMM_FULL_COMMUNICATION;
ERA信號中的PNC置位,且此PN是同步的。
進入PNC_PREPARE_SLEEP子狀態工況:
接收的EIRA信號PNC未置位;
EcuM通知ComM,Passive喚醒事件發生,且是同步喚醒,且ComMPncPrepareSleepTimer > 0。
進入PNC_READY_SLEEP子狀態工況:
此PN的所有ComMUser請求COMM_NO_COMMUNICATION, AND 接收到的EIRA信號PNC置位 ,AND 所有的ERA信號PN未置位,且此PN是同步的。
3
PNC Gateway
使能PNC的網關功能,需要在ComM中配置參數
ComMPncGatewayEnabled = TRUE
。默認的網關類型是:COMM_GATEWAY_TYPE_ACTIVE。PNC的網關類型分為:Active PNC Gateway和Passive PNC Gateway 兩種。
ComM通過ERA或者EIRA與其他ECU交互PNC信息。對于ERA,
僅當PNC網關功能開啟
,
分配給多個ComM通道時可用
。每個PNC在位向量中使用相同的位位置,由 PNC ID 定義。比如:定義PNC1、PNC2,這兩個PNC均長度均為2 byte,其中bit0均表示關聯某個ECU的指定Channel與否。
ComM負責協調網絡的網關行為,即將PNC激活請求從一個通道路由到其他通道。通過發送 EIRA TX 信號完成路由。通道的路由取決于該通道的網關類型。
PNC請求在Passive通道
如果在網關類型為PASSIVE的通道上接收到ERA=1的請求,則該請求不會鏡像回該通道,即該請求不會在EIRA Tx 信號中設置,并且不會路由到網關類型為PASSIVE的通道。請求僅路由到網關類型為ACTIVE 的通道。
PNC請求在active通道
如果在網關類型為 ACTIVE 的通道上通過 ERA=1接收到PN請求,則該請求會鏡像回此通道,且路由到所有其他協調通道。
PNC請求在網關類型為NONE的通道
如果在網關類型為NONE的通道上通過ERA=1接收到請求,則該請求不會存儲在內部ComM ERA信號中,即該PNC請求被忽略。因此,請求不會鏡像回此通道,也不會路由到任何其他通道,即請求不會設置在EIRA發射信號中。網關類型為NONE的通道忽略通過ERA信號接收的PNC請求,但它們處理通過 EIRA Rx 信號接收的PNC請求。在這種情況下,目標PNC狀態不受通過 ERA 接收的PNC請求影響,但通過EIRA=1 接收的 PNC 請求而進行狀態改變。
審核編輯:劉清
-
CAN總線
+關注
關注
145文章
2043瀏覽量
135228 -
AUTOSAR
+關注
關注
10文章
398瀏覽量
23653 -
狀態機
+關注
關注
2文章
499瀏覽量
29152
發布評論請先 登錄
WL-PBM-PN網關實現PROFINET轉PROFIBUS功能
PN/PN Coupler模塊進行控制器與控制器之間的相關通信
AUTOSAR架構中CanNm模塊的問題解答
AUTOSAR架構下CanNM User Data的概念及配置
PN/PN Coupler模塊概述
pn8024r引腳功能和電壓功能
DCM模塊喚醒網絡主動與被動喚醒機制探討
EtherNet/IP從站轉Profinet從站協議轉換網關(JM-PN-EIP)
Profinet從站轉CAN協議轉換網關(JM-PN-CAN)
Modbus(TCP)轉Profinet從總線協議轉換網關(JM-TCP-PN)
從CanNM模塊分析PN功能
評論