can bus 中spn是什么_CP AUTOSAR功能栈简介NM网络管理(Can)
CanNM模塊架構圖
1,概述
?? CP AUTOSAR提供一種直接分布式網絡管理方式,有單獨的網絡管理報文用于網絡管理,且總線上各個節點都是平等的,相比于OSEK基于令牌的直接網絡管理方式更簡單易部署。實際應用中,ASW一般不直接同NM交互,而是通過系統服務ComM通信管理對NM進行管理。ComM模塊介紹見:CP AUTOSAR功能棧簡介-COMM通信管理。
2,模塊介紹
ComM:通信管理系統服務模塊,通過與各通信總線的狀態管理模塊(如CanSM、LinSM等)和網絡管理模塊(NM)交互,為用戶提供統一、抽象、簡潔的通信模式管理方式。
NM:AUTOSAR網絡管理獨立于具體通信總線形式的統一接口模塊,內部對接各個具體總線的網絡管理模塊(如CanNM、LinNM等),同時提供協調各總線同步休眠功能(NM Coordinator functionality)。
xxxNM:xxx通信總線的AUTOSAR網絡管理實現模塊,比如CanNM,AUTOSAR提供一種直接分布式的網絡管理方式,每個節點都有特定的網絡管理報文用于網絡管理且每個節點在總線上都是平等的。
xxxIF:提供xxx通信總線的控制器和收發器驅動模塊的抽象接口,比如CanIF。
Can/Lin/FlexRay/Eth:各通信總線的控制器驅動,提供具體總線的收發驅動等。
3,CanNM狀態機簡介
CanNM狀態機
概述:
上電后,用戶如果需要主動保持網絡總線喚醒,需要調用CanNm_NetworkRequest()主動請求網絡進行主動喚醒,NM狀態經Repeat Message后進入Normal Operation,在此狀態下持續發送網絡管理報文以保持網絡喚醒,當不再需要保持網絡總線喚醒時,調用CanNm_NetworkRelease()釋放網絡請求,NM狀態進入Ready Sleep。而如果是被動喚醒,用戶不需要主動保持網絡喚醒,則調用CanNm_PassiveStartUp()進入被動喚醒,NM狀態經Repeat Message后進入Ready Sleep。
進入Ready Sleep后NM將停止發送網絡管理報文,應用報文正常發送,并等待總線同步休眠(未接收到其他節點發送的網絡管理報文),同步休眠NM-Timeout+Bus-Sleep Timer時間后,NM進入Bus-Sleep,總線關閉,此時系統可以啟動下電流程。
如果節點配置為passive模式(NMVariant為PASSIVE),那么整個過程都不發送任何網絡管理報文。?
狀態跳轉描述:
(PowerOn)->Bus-Sleep
上電后,調用CanNm_Init()完成CanNM模塊初始化后進入。
Bus-Sleep->Repeat Message
從Bus-Sleep進入Repeat Message有兩種方式:主動喚醒進入和被動喚醒進入。
主動喚醒進入:調用?CanNm_NetworkRequest()主動請求網絡后進入,進入后一般需要以CanNmImmediateNmCycleTime周期快速發送CanNmImmediateNmTransmissions幀網絡管理報文,而后轉為以CanNmMsgCycleTime周期正常發送網絡管理報文。
被動喚醒進入:調用CanNm_PassiveStartUp()進入,進入后以CanNmMsgCycleTime周期發送網絡管理報文。
Repeat Message->Normal Operation
在Repeat Message狀態下一定時間(CANNM_REPEAT_MESSAGE_TIME)后,如果用戶有過主動網絡請求(調用過CanNm_NetworkRequest())且未釋放(未調用過CanNm_NetworkRelease()),那么進入Normal Operation狀態,否則進入Ready Sleep狀態。
Normal Operation->Ready Sleep
在Normal Operation下,如果用戶調用CanNm_NetworkRelease()釋放了主動網絡請求,那么進入Ready Sleep,停止發送網絡管理報文。
Repeat Message->Ready Sleep
在Repeat Message狀態下一定時間(CANNM_REPEAT_MESSAGE_TIME)后,用戶如果沒有主動網絡請求(被動喚醒),那么進入Ready Sleep狀態,停止發送網絡管理報文。
Ready Sleep->NormalMessage
期間如果有了CanNm_NetworkRequest()網絡請求,進入NormalMessage。
Normal Operation/Ready Sleep->Repeat Message
期間如果接收到的了repeat message請求(Repeat Message Bit received 或CanNm_RepeatMessageRequest()),則再次進入repeat message狀態,但在Repeat message中不再進行快速報文的發送,其他處理同Bus-Sleep->Repeat Message
Ready Sleep->Prepare Bus-Sleep
在Ready Sleep狀態下,如果長時間(NM-Timeout)未接收到其他節點的網絡管理報文(意味著其他節點也都準備休眠了),進入Prepare Bus-Sleep狀態,停止所有報文的發送。
Prepare Bus-Sleep->Bus-Sleep
在Prepare Bus-Sleep下,Bus-Sleep timer超時后,進入Bus-Sleep狀態,關閉通信總線,此時系統如果休眠條件也滿足了,可以開始進入休眠流程。
Prepare Bus-Sleep->Repeat Message
期間如果用戶再次主動請求了網絡或進行被動喚醒,或者又收到了其他節點發送的網絡管理報文(CanNm_RxIndication()),則再次進入repeat message狀態,處理同Bus-Sleep->Repeat Message。
4,Partial Network (Can)
PN局部網絡管理,在大型CAN網絡中,通過PN可以實現同一CAN網絡中僅特定group的ECUs被喚醒或進入休眠。
實現原理簡介:具體做法為在網絡管理報文的數據中增加PNI Partial Network Info信息(PNI bit為1),然后ECU對接收到的網絡管理報文進行PNI濾波(見下文),僅包含了特定PNI值的網絡管理報文會被ECU的NM接收并處理。另外為了實現PN,ECU的網絡喚醒源(比如transceiver)也需要支持PN功能(能支持僅包含特定報文內容的特定報文ID喚醒)。
NM-PDU filter algorithm:每個PN ECU都會事先設計好一個PN MASK值,通過將MASK值與接收到的網絡管理報文中的PNI值進行位與操作,結果不全為0的接收處理,否則丟棄(不認為有接收到網絡管理報文)。例如某ECU的PN mask值為0x000F,那么PNI為0x0101的會被接收,PNI為0x0100的不會被接收處理。
Example NM PDU containing PNI
Control Bit Vector
5,主要功能調用管理(CanNM)
Active startup(本地喚醒)
ECU上電或喚醒后,如果檢測到為本地喚醒或其他條件需要ECU進行主動喚醒時,(ComM)調用NM接口?Nm_NetworkRequest(),NM再調用CanNM接口?CanNm_NetworkRequest()請求進入主動喚醒。
Passive startup(遠程喚醒)
ECU上電或喚醒后,如果檢測到為遠程喚醒或其他添加需要ECU進行passive喚醒時,(ComM)調用?Nm_PassiveStartUp()請求NM進行passive喚醒,NM調用CanNm_PassiveStartUp()進入被動喚醒。
Sleep
主動喚醒后,如果ECU需要進入休眠,(ComM)調用NM接口Nm_NetworkRelease()釋放主動網絡請求。
CanNM報文發送
在每次Tx Timeout之后,通過CanIf調用CanIf_Transmit()完成報文發送,如果對應Can通道硬件空閑,CanIf調用Can_Write()完成發送,否則在CanIf緩存,在硬件空閑時完成發送。
CanNM報文接收
接收到網絡管理報文后,在接收中斷(中斷方式接收)或Can_MainFunction_Read()(Polling方式接收)中判斷接收,回調CanIf_RxIndication()通知CanIf,CanIf回調CanNm_RxIndication()通知CanNM,如果通道不支持PN,則認為接收到了網絡管理報文,如果支持PN,還需檢查報文中的PNI位 bit是否為1,為1再對PNI進行濾波(見上文NM-PDU filter algorithm),通過后認為接收到了網絡管理報文。
6,參考文獻
AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf R19-11
AUTOSAR_SWS_NetworkManagementInterface.pdf?4.2.2
AUTOSAR_SWS_CANNetworkManagement.pdf 4.2.2
AUTOSAR_SWS_CANInterface.pdf 4.2.2
AUTOSAR_SWS_CANDriver.pdf 4.2.2
------END------
個人整理,有理解不對或不到位的地方,歡迎留言糾正!
歡迎留言或聯系微信estacks參與技術討論或投稿!
如果您覺得文章還不錯~
點擊右下方? 在看 或進入左上方?轉發分享是給我們最大的支持,謝謝!
關注公眾號“e棧社區”以獲取更多文章~
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的can bus 中spn是什么_CP AUTOSAR功能栈简介NM网络管理(Can)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 未处理sqlexception中valu
- 下一篇: linux mysql makefile