從PN到PNC
PN一般指Partial Networking,中文名是部分網絡或局部網絡。
根據AUTOSAR_EXP_Layered Software Architecture這篇PPT的說法,PN的初衷是在AUTOSAR中,實施高效的能源管理,其目標是提供一種節能機制,尤其是在總線通信處于激活狀態時(例如充電或KL15處于激活狀態時)。
Partial Networking允許在不需要那么多ECU工作的時候,關閉一批ECU的網絡通信。其他ECU可以繼續在同一總線通道(比如動力CAN)上通信。對于從節點來說,就是需要你的時候,你必須在;不需要你的時候,你必須閉嘴。通常CAN和FlexRay是支持Partial Networking的。
Partial Networking的兄弟被稱為Pretended Networking,姑且翻譯為裝模作樣網。這種方式允許在總線通信時關閉現有網絡中的ECU,節點可以自行決定是否切換到休眠模式。比如一個從節點,把KL15拔了,ECU就不工作了,發什么CAN報文喚醒都不起作用。
AUTOSAR_EXP_LayeredSoftwareArchitecture(V4.2.2)p155
如上圖,黑線是真實的CAN總線,ECU A、B、C、D都被真實的雙絞線連在了一起。但是!從功能上來講,ECU A和B可以劃分為一組,ECU B、C、D可以劃分為一組。這樣我們就把真實的物理CAN總線,圈成了兩個相對獨立的網絡小組,組1和組2。我們管這樣的小組叫做Partial Network Cluster,中文名是部分網絡集群,姑且理解為虛擬CAN小組。這些小組成員的特點是,要醒一起醒,要睡一起睡。
PNC一般指Partial Network Cluster,是一組用于支持車輛功能的系統信號,這些功能分布在車輛網絡中的多個ECU上。
PNC若是蝶,它化繭成蝶之前是VFC。VFC指Virtual Function Cluster, 是初期設計階段的一種通信概念,用于實現一個或多個車輛功能所需的軟件組件之間的端口級通信。這里要解釋下AUTOSAR的開發思想,為了實現功能我們需要若干個SWC(Software Component-軟件組件)。這些SWC根據功能組成了若干個CSWC(Composition SWC),把CSWC之間的端口(Port)連在一起,就組成了VFC網絡。
AUTOSAR_EXP_LayeredSoftwareArchitecture(V4.2.2)p158
后來,圖紙變成了現實,VFC變成了PNC(基于CAN的)和ECU內部的Interface,CSWC則變成了真實的ECU。
AUTOSAR_EXP_LayeredSoftwareArchitecture(V4.2.2)p158
總結:PNC是住在CAN Bus上的小團體,既求同年同月同日醒,又求同年同月同日睡。
從PNC醒和睡的暗號是什么
CAN上的網絡管理幀有8個字節,通常我們會占用Byte2(含Byte2)之后的字節,作為PNC的區域。舉個例子,Byte2里頭有效的PNC位就是PNC16-PNC23,Byte7里頭有效的PNC位就是PNC56-PNC63。以PNC16舉例,如果這個位的值是1,就是PNC生效,反之為0則PNC失效。
AUTOSAR_SWS_CANNetworkManagement(V4.2.2)p32
AUTOSAR_SWS_CANNetworkManagement(V4.2.2)p33
這里也要注意,對于一幀含有PNC信息的網絡管理報文來說,位于Byte1(CBV,控制位向量)的PNI Bit是需要置起的,這是后續判斷PNC生效與否的先決條件。即PNI Bit若為1,則需要繼續檢查PNC各個位是否置起;PNI Bit若為0,PNC信息整體丟失,注意不是失效,是上層收不到PNC信息。
總結:PNC有效與失效的信息藏在網絡管理報文的User data中,以位為最小單位,1有效,0無效。但PNI是前提條件,PNI為1,PNC信息才能向上層傳遞;PNI為0,算作沒收到PNC信息。
從站獲取PNC信息的數據流
AUTOSAR_EXP_LayeredSoftwareArchitecture(V4.2.2)p159
我們看下數據流的流向。為了獲取到EIRA(External Internal Request Array)這個信息,我們在Ecu Config中設置了三個Global PDU,即PDU_CanIf_CanNm(8bytes),PDU_EIRA_CanNm_PduR(6bytes),PDU_EIRA_PduR_Com(6bytes)。
首先是CanIf,我們在這里可以先對網絡管理報文根據CAN ID進行濾波,之后將數據放到PDU_CanIf_CanNm里面。
再向上是CanNm,8個字節去掉了Node ID和CBV,變成了6個字節。檢查CBV中PNI bit的值,若為1則向上層傳遞User Data。PNI如果為0的話,就算沒收到任何PNC,一定時間后會報超時。
到了PduR,我們配置了一條Path,把PDU送往Com(注意這里是Trigger發送),ComSignal我們假定主機廠要求只取前3個字節,后面3個字節被舍棄。這樣我們只剩下了原來網絡管理幀的Byte2-Byte4。
最后ComSignal傳給了ComM,我們會進一步通過Pnc Id去找到Pnc的位置,并檢查它的值是到底1還是0。
審核編輯 :李倩
-
CAN總線
+關注
關注
145文章
1952瀏覽量
130830 -
AUTOSAR
+關注
關注
10文章
362瀏覽量
21618 -
網絡通信
+關注
關注
4文章
808瀏覽量
29833
原文標題:AUTOSAR PNC數據流分析
文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論