)
目錄網絡管理概述狀態機Bus Sleep ModePrepare Bus Sleep ModeNetwork ModeRepeat Message StateNormal Operation StateReady Sleep StateNetwork State定時參數NM PDU網絡管理報文數據格式源節點地址控制比特向量用戶數據狀態機梳理網絡管理概述網絡管理的重要任務是保證網絡通信的安全可靠。網絡管理可以實現初始化控制器資源啟動網絡檢測、處理以及通知網絡和節點的狀態協調網絡節點同步進入睡眠等功能。根據電源模式/KL15 轉為 OFF 后 ECU 的通信狀態本文檔將 CAN(FD)網絡中的ECU分為兩類INM 類和DNM 類。INM類ECUECU只在電源模式/KL15由OFF切換到ON狀態時開始通信由非OFF狀態切換到OFF狀態之后立刻停止或者延時通信一段時間的節點DNM類ECUECU 在電源模式/KL15 為 OFF 時可進行 CAN 通信并遵循AUTOSAR直接網絡管理進行同步休眠和喚醒的節點。狀態機圖1 CanNm模式切換【Note:】上電之后在CanNm_PassiveStartup()或CanNm_NetworkRequest()函數接口被調用之前ECU需要維持在總線睡眠模式(Bus-Sleep Mode).Bus Sleep Mode如果ECU處在總線睡眠模式下CAN(FD)物理層檢測到喚醒信號如報文或總線電平變化ECU應打開相應CAN(FD)通道的報文接收能力并啟動T_WakeUpTimeout。若ECU在T_WakeUpTimeout時間內成功接收到一幀網絡管理PDU則進入正常喚醒流程(調用CanNm_RxIndication)若ECU在T_WakeUpTimeout時間內一直未接收到網絡管理PDU則在超時后ECU應關閉該通道的報文接收能力。在正常喚醒流程開啟前ECU不應發出任何報文。如果CanNm模塊處于總線睡眠模式且CanNm_NetworkRequest()函數接口被調用CanNm模塊應進入網絡模式并啟用快發機制默認情況下CanNm模塊應進入重復報文狀態。如果CanNm 模塊處于總線睡眠模式且CanNm_PassiveStartup ()函數接口被調用CanNm模塊應進入網絡模式默認情況下CanNm模塊應進入重復報文狀態。當 CanNm 模塊在總線睡眠模式成功接收到一幀網絡管理 PDU調用CanNm_RxIndication CanNm 模塊應通知上層。理由為了避免網絡與模式管理之間競爭條件和狀態的不一致CanNm不會自動執行從總線睡眠模式到網絡模式的轉換。CanNm 只會通知需要做出喚醒決策的上層應用??偩€睡眠模式下對網絡管理PDU的接收處理必須根據ECU關閉/啟動過程的當前狀態進行。Prepare Bus Sleep Mode準備總線睡眠模式(Prepare Bus-Sleep Mode)的作用是保證在進入總線睡眠前節點有足夠的時間停止其網絡活動。在準備總線睡眠模式Prepare Bus-Sleep Mode下總線活動減少如存在于發送緩存中的報文被發送以清空發送緩存最終總線將不再有活動即沒有任何報文被發送.CanNm 模塊應處于等待睡眠模式一段時間這段時間由可配置參數CanNmWaitBusSleepTime 決定該時間超時后CanNm模塊應離開等待睡眠模式并進入總線睡眠模式。當處于準備總線睡眠模式(Prepare Bus-Sleep Mode)的節點接收到網絡管理報文時CanNm_RxIndication 函數接口被調用將向網絡模式(Network Mode)轉換默認情況下節點進入網絡模式(Network Mode)中的重復報文狀態Repeat Message State當節點處于準備總線睡眠模式并且 CanNm_PassiveStartup()被調用時CanNm模塊應進入網絡模式默認情況下CanNm模塊應進入重復報文狀態。當 CanNm 處于準備總線睡眠模式(Prepare Bus-Sleep Mode)且函數接口CanNm_NetworkRequest()被調用CanNm 將向網絡模式(Network Mode)轉換并啟用快發機制默認情況下CanNm應進入網絡模式(Network Mode)的重復報文狀態(Repeat Message State)。原因這種情況下網絡中的其他節點仍處在準備總線睡眠模式為避免它們進入總線睡眠模式并且通信應盡可能快地被恢復。Network Mode網絡模式(Network Mode)由三種內部狀態組成Repeat Message State/重復報文狀態Normal Operation State/常規運行狀態Ready Sleep State/準備睡眠狀態當節點從總線睡眠模式(Bus-Sleep Mode)或準備總線睡眠模式(Prepare Bus-Sleep Mode)進入網絡模式(Network Mode)時在默認情況下需進入重復報文狀態(RepeatMessage State)。節點進入網絡模式(Network Mode)后需開啟CanNmTimeoutTime定時器。節點處于網絡模式(Network Mode)成功接收或成功發送一幀網絡管理報文后需重啟NM-Timeout定時器如果NM模塊從總線睡眠模式進入網絡模式需進入重復報文狀態(Repeat Message State)。這一過程需在規定的喚醒時間t內完成要求t≤T_WakeUp。圖2 喚醒時間tRepeat Message State無論其睡眠條件是否滿足重復報文狀態(Repeat Message State)都可以使節點保持一段時間的活躍狀態。該狀態可以被用來監測在線節點。當節點進入重復報文狀態(Repeat Message State)后需要開始或重新開始發送網絡管理報文。節點處于重復報文狀態(Repeat Message State)NM-Timeout定時器超時溢出時需要重啟NM-Timeout定時器。節點在進入重復報文狀態(Repeat Message State)后需要保持一段時間這段時間由參數 CanNmRepeatMessageTime 決定CanNmRepeatMessageTime 超時后CanNm模塊將離開重復報文狀態。節點離開重復報文狀態(Repeat Message State)后若節點對網絡通信有需求應進入常規運行狀態(Normal Operation State)。節點離開重復報文狀態(Repeat Message State)后需將重復報文請求標志位Repeat Message Request Bit清零。如果節點處于重復報文狀態、準備總線睡眠模式、總線睡眠模式而CanNm_RepeatMessageRequest()服務被上層調用CanNm模塊不應執行此服務。當節點進入重復報文狀態(Repeat Message State)后需T_START_NM_TX時間內發送出第一幀網絡管理報文。圖3 Repeat Message State網絡管理報文周期定義當節點被本地喚醒或遠程喚醒后在 T_All_App_TX 時間內所有周期應用報文必須至少被發送一次。T_All_App_TX從喚醒事件開始計時。當節點被本地喚醒或遠程喚醒后在T_AllPlaus_App_TX之后所有應用報文中的信號值都應為可信的。T_AllPlaus_App_TX從喚醒事件開始計時。節點進入重復報文狀態(Repeat Message State)后若需要盡可能快地喚醒總線或恢復總線通信需使用快速發送機制。當節點啟用快發機制時需使用 CanNmImmediateNmCycleTime 的周期來發送網絡管理報文如圖3所示。使 用 快 速 發 送 機制發送的網絡管理報文的數量由參數CanNmImmediateNmTransmissions 決定。當節點發送完所有的快速周期報文后需按照參數CanNmMsgCycleTime規定的周期發送網絡管理報文。若節點進入重復報文狀態(Repeat Message State)并且快速發送機制未啟動需按參數CanNmMsgCycleTime 規定的周期發送網絡管理報文如圖4所示。圖4 Repeat Message State網絡管理報文周期定義當節點從總線睡眠模式(Bus Sleep Mode)或準備總線睡眠模式(Prepare Bus Sleep Mode)進入重復報文狀態(Repeat Message State)并成功發送第一幀網絡管理報文后需在T_START_App_TX時間內將第一幀CAN應用報文發送出來如圖5所示。圖5 T_START_NM_TX參數定義Normal Operation State常規運行狀態(Normal Operation State)用于保證只要對網絡通信有需求任何一個網絡管理節點都可以保持網絡處于喚醒狀態。當 節點進入常規運行狀態(Normal Operation State) 時需按照CanNmMsgCycleTime 的周期發送網絡管理報文。當節點處于常規運行狀態(Normal Operation State)而 NM-Timeout定時器溢出時需要重啟定時器。當節點處于常規運行狀態(Normal Operation State)而本地睡眠條件滿足時需進入準備睡眠狀態(Ready Sleep State)。當節點處于常規運行狀態(Normal Operation State)而接收到重復報文請求標志位Repeat Message Request Bit置位的網絡管理報文時需進入重復報文狀態(Repeat Message State)。當節點處于常規運行狀態(Normal Operation State) 而CanNm_RepeatMessageRequest()函數接口被調用時需進入重復報文狀態(Repeat Message State)并將報文中重復報文請求標志位Repeat Message Request Bit置位。Ready Sleep State當網絡中仍有節點對通信有需求時處于準備睡眠狀態(Ready Sleep State)的節點將推遲其向準備總線睡眠模式(Prepare Bus-Sleep Mode)的轉換。當節點進入準備睡眠狀態(Ready Sleep State)后需停止發送網絡管理報文。當節點處于準備睡眠狀態(Ready Sleep State)NM-Timeout定時器溢出后需進入準備總線睡眠模式(Prepare Bus-Sleep Mode)。當節點處于準備睡眠狀態(Ready Sleep State)但因發生本地喚醒事件睡眠條件不再滿足時需進入常規運行狀態(Normal Operation State)。當節點處于準備睡眠狀態(Ready Sleep State)接收到重復報文請求標志位Repeat Message Request Bit置位的網絡管理報文后需進入重復報文狀態(Repeat Message State)。當節點處于準備睡眠狀態(Ready Sleep State)Repeat Message Request()函數接口被調用時需進入重復報文狀態(Repeat Message State)并將網絡管理報文中的重復報文請求標志位Repeat Message Request置位。Network State網絡狀態即“請求”和“釋放”是AUTOSAR CanNm狀態機的兩個附加狀態它們與狀態機并行存在。網絡狀態表示上層軟件是否需要在總線上通信網絡狀態被“請求”或者上層軟件是否不需要在總線上通信總線網絡狀態隨后被“釋放”注意如果網絡被釋放一個ECU仍然可以通信因為其他ECU可能仍然在請求網絡。函數接口CanNm_NetworkRequest()的調用將導致網絡被請求。即CanNm模塊應將網絡狀態更改為“請求”。函數接口CanNm_NetworkRelease ()的調用將導致網絡被釋放。即CanNm模塊應將網絡狀態更改為“釋放”。定時參數參數值容差描述CanNmRepeatMessageTime1500ms±10%節點在重復報文狀態(Repeat Message State)中持續的時間CanNmTimeoutTime3000ms±10%節點進入網絡模式(Network Mode)后即開啟該定時器在準備睡眠狀態(Ready Sleep State)中該定時器溢出后節點進入準備總線睡眠模式(Prepare Bus-Sleep Mode)CanNmWaitBusSleepTime2000ms±10%該定時器的作用是確保所有的節點都有時間停止其網絡活動T_START_NM_TX25ms-該參數定義了節點從進入重復報文狀態(Repeat Message State)到發出第一幀網絡管理報文的最大允許時間間隔。 原則上這個時間越短越好。T_All_App_TX700ms-所有周期應用報文必須至少被發送一次的最大允許時間。該時間間隔從喚醒事件開始計時。T_AllPlaus_App_TX1000ms-所有應用報文中的信號值在此最大允許時間間隔之后均應為可信的。該時間間隔從喚醒事件開始計時。T_START_App_TX20ms-第一幀NM報文發出后第一幀應用報文發出的最大時間間隔。CanNmImmediateNmCycleTime20ms±10%節點啟動快速發送機制時需以此參數作為網絡管理報文的發送周期CanNmMsgCycleTime500ms±10%在網絡模式(Network Mode)除去準備睡眠狀態中若快速發送機制未被啟動節點應以此參數作為網絡管理報文的發送周期T_WakeUp75ms-處在Bus-Sleep Mode的節點從喚醒事件發生到轉換到Repeat Message State的最大允許時間間隔CanNmImmediateNmTransmissions10-當節點處于重復報文狀態并啟用快速發送機制時節點使用CanNmImmediateNmCycleTime為周期發送網絡管理報文的數量T_WakeUpTimeout3000ms~5000ms-本參數定義了在監測到CAN(FD)物理層喚醒事件后ECU應使能報文接收能力的最大允許時間。NM PDU每一個節點都會被分配一個唯一的標識符NODE_ID。網絡管理報文需使用統一的基地址0x400唯一標識符NODE_ID網絡管理報文數據格式源節點地址源節點地址Source Node Identifier在 PDU中的位置必須設置為Byte 0。每一個參與直接網絡管理的節點都會被分配一個唯一的標識符NODE_ID存放于網絡管理報文的Byte0Source Node Identifier中??刂票忍叵蛄靠刂票忍叵蛄緾ontrol Bit Vector在 PDU中的位置必須設置為Byte 1??刂票忍叵蛄恐行璋˙it 0: 重復報文請求標志位(Repeat Message Request Bit)信號值描述為0x0該報文發送節點未請求其他節點進入重復報文狀態0x1該報文發送節點請求其他節點進入重復報文狀態Bit 4: 主動喚醒網絡標志位(Active Wakeup Bit)信號值描述為0x0該報文發送節點未主動喚醒網絡被其它節點喚醒0x1該報文發送節點主動喚醒網絡重復報文請求標志位(Repeat Message Request Bit)的默認值為 0。當節點由于CanNm_RepeatMessageRequest()接口被調用從常規運行狀態(Normal Operation State)或準備睡眠狀態(Ready Sleep State)進入重復報文狀態(Repeat Message State)時需將其發送的網絡管理報文中的重復報文請求標志位置1直到其離開重復報文狀態(Repeat Message State).當節點由于本地睡眠條件不再滿足CanNm_NetworkRequest ()從總線睡眠模式(Bus-Sleep Mode)或準備總線睡眠模式(Prepare Bus-Sleep Mode)進入重復報文狀態(Repeat Message State)時需將主動喚醒網絡標志位(Active Wakeup Bit)置1。節點離開網絡模式后需將主動喚醒網絡標志位(Active Wakeup Bit)清零。控制比特向量中未使用的位須置0。用戶數據在NM PDU中有6個字節(User Data Byte 0~5)用于傳輸用戶數據信息。在用戶數據中WUS元素代表控制器的喚醒源。當節點從總線睡眠模式(Bus-Sleep Mode)或準備總線睡眠模式(Prepare Bus-Sleep Mode)進入重復報文狀態(Repeat Message State)時需將WUS置為對應的編碼值。當處于網絡模式中時WUS的編碼值不允許變化。節點離開網絡模式后需將WUS清零。對WUS的系統通用編碼(0x0~0xA)定義詳見表中。每一個ECU具體WUS的編碼定義(0x10~0xFF)將在系統設計階段詳細定義。編碼值0x0defaultValue0x1wakedUpByNetwork0x2KL15OnOrPowerModeOn0x3~0xAreserved for future0x10~0xFF……(ECU specific)當ECU的NM模塊處于重復報文狀態時須將ECU發送的Nm報文中的RepeatSts位設為0x1。當 ECU 的 NM 模塊未處于重復報文狀態時須將 ECU 發送的 Nm 報文中的RepeatSts 位設為0x0。用戶數據中未使用的位應設為0x0未使用的字節應設為0x00。狀態機梳理節點狀態總線睡眠模式網絡模式預睡眠模式重復報文狀態常規運行狀態準備休眠狀態控制器狀態睡眠工作是否發送應用報文否是否是否發送網絡管理報文否是否定時器行為NM-Timeout Timer關閉開啟接收NM/發送NM/超時后均重啟接收NM重啟超時后節點進入預睡眠模式關閉Repeat Message Timer關閉開啟每發送一幀NM加1達到計數值后進入常規運行狀態關閉CanNm Message Cycle Timer常規模式關閉裝載值為CanNmMsgCycleTime關閉NM立即發送模式-被動激活關閉裝載值為CanNmMsgCycleTime不影響關閉NM立即發送模式-主動激活關閉裝載值為CanNmImmediateNmCycleTime不影響關閉總線負載降低模式-發送NM關閉不影響裝載值為CanNmMsgCycleTime關閉總線負載降低模式-接收NM關閉不影響裝載值為CanNmMsgReducedTime關閉Wait Bus-Sleep Timer關閉開啟超時后進入總線睡眠模式