目录
1 简介和功能概述
本文档描述了AUTOSAR CAN网络管理 (CanNm) 的概念、核心功能、可配置特性、接口和配置问题。
AUTOSAR CAN网络管理是一个独立于硬件的协议,只能在CAN上使用(有关限制,请参阅章节4.1)。其主要目的是协调网络正常运行和总线睡眠模式之间的转换。
除了核心功能外,还提供了可配置的功能,例如:实现一个服务来检测所有当前节点或检测所有其他节点是否准备好休眠。
CAN网络管理 (CanNm) 功能提供网络管理接口 (NmIf) 和 CAN接口 (CanIf) 模块之间的适配。
总结如下:
- 作用:网络管理就是通过在各个ECU的网络上,发送一些命令制定一套规则,来实现各个ECU的协同睡眠和唤醒。
- 核心思想:如果节点需要保持通信,则节点需要周期的发送NM消息,否则停止发送NM消息。如果总线上的所有节点不需要使用总线,那么总线上过了一段时间没有NM Messages时,则会进入Bus-Sleep Mode。
2 缩略语
2.1 缩写表
缩写 | 描述 | 解释 |
---|---|---|
CanIf | CAN Interface | CAN接口层 |
CanNm | CAN Network Management | CAN网路管理模块 |
CBV | Control Bit Vector | 控制位向量 |
ERA | External Request Array | 外部请求数组 |
EIRA | External and Internal Request Array | 外部和内部请求数组 |
NM | Network Management | 网络管理 |
PNC | Partial Network Cluster | 部分网络集群 |
PNI | Partial Network Information | 部分网络信息 |
PNL | Partial Network Learning | 部分网络学习 |
SNI | Source Node Identifier | 源节点标识符 |
2.2 术语
术语 | 描述 |
---|---|
PDU transmission ability is disabled | 通过服务CanNm_DisableCommunication禁止NM PDU的发送 |
Repeat Message Request Bit Indication | 在CanNm_RxIndication接收到NM PDU的CBV中的重复消息状态请求位被置1 |
PN filter mask | 配置参数CanNmPnFilterMaskByte的过滤掩码字节,用于过滤与节点相关的NM PDU |
Top-level PNC coordinator | 顶级PNC协调器是一个ECU,它在网络中充当PNC网关,并在所有分配的通道上处理至少一个主动协调的PNC;如果同步PNC关闭被启用且如果网络中没有其他ECU请求它们,顶级PNC协调器触发这些PNC关闭, |
Intermediate PNC coordinator | 中间PNC协调器是一个ECU,它在网络中充当PNC网关,并在至少一个指定的信道上处理至少一个被动协调的PNC。如果启用了同步PNC关闭,它将这些pnc收到的关闭请求转发到相应的主动协调通道,并相应地开始关闭它们 |
Subordinated PNC node | 从属的PNC节点是一个ECU,它在网络中根本不充当PNC协调器。它像处理普通的NM消息一样处理PN关闭消息 |
PN shutdown message | 顶级PNC协调器发送PN关闭消息,以指示跨PN拓扑的同步PNC关闭。PN关闭消息与NM消息一样,在控制位矢量中具有PNSR位,并且所有pnc都被指示为同步关闭设置为“1” |
3 相关文档
3.1. 输入文件
[1] General Requirements on Basic Software Modules
AUTOSAR_SRS_BSWGeneral.pdf
[2] Specification of the AUTOSAR Network Management Protocol
AUTOSAR_PRS_NetworkManagementProtocol.pdf
[3] Requirements on Network Management
AUTOSAR_RS_NetworkManagement.pdf
[4] Specification of CAN Interface
AUTOSAR_SWS_CANInterface.pdf
[5] Specification of Communication Stack Types
AUTOSAR_SWS_CommunicationStackTypes.pdf
[6] Specification of ECU Configuration
AUTOSAR_TPS_ECUConfiguration.pdf
[7] Specification of Generic Network Management Interface
AUTOSAR_SWS_NetworkManagementInterface.pdf
[8] Specification of Communication Manager
AUTOSAR_SWS_ComManager.pdf
[9] Specification of Standard Types
AUTOSAR_SWS_StandardTypes.pdf
[10] General Specification of Basic Software Modules
AUTOSAR_SWS_BSWGeneral.pdf
[11] Specification of SystemTemplate
AUTOSAR_TPS_SystemTemplate
3.2 相关规范
AUTOSAR 提供了基础软件模块的通用规范 [10] (General Specification of Basic Software Modules),它也适用于CAN网络管理。
因此,规范基础软件模块的通用规范应被视为CAN网络管理的附加和必需规范。
4 约束和限制
4.1. 限制
- CanNm的一个通道只关联一个网络中的一个网络管理集群(network management cluster)。
- 一个网络管理集群的一个节点只能有一个CanNm通道。
- CanNm的一个通道只关联同一个ECU内的一个网络。
- CanNm仅适用于CAN系统。
图4-1展示了一个示例ECU中的AUTOSAR网络管理堆栈,该示例ECU至少包含一个CanNm集群。
4.2 适用于汽车领域
CanNm模块可以在上述限制下应用于任何汽车领域。
5 对其他模块的依赖
CAN网络管理(CanNm)主要使用CAN接口(CanIf[4])的服务,并为通用网络管理接口(NmIf[7])提供服务。
6 主要学习方向
- 具备PN功能的网络管理
- 不具备PN功能的网络管理
- 网络协调功能
7 功能规范
7.1 协调算法
AUTOSAR CanNm基于分散的直接网络管理策略,这意味着每个网络节点仅根据在通信系统内收发的网络管理PDU执行自给自足的活动。
AUTOSAR CanNm算法基于周期性的NM PDU,集群中的所有节点接收这些广播传输的NM PDU。NM PDU的接收表明发送节点希望保持网络管理集群处于唤醒状态。如果任何节点准备好进入总线睡眠(Bus-Sleep)模式,它就会停止传输NM PDU,但只要收到来自其他节点的NM PDU,节点就需推迟转换到Bus-Sleep模式。最后,如果由于不再接收到NM PDU而导致专用计时器超时,则每个节点都会启动到总线睡眠模式的转换。
如果网络管理集群中的任何节点需要总线通信,它可以通过传输NM PDU将网络管理集群从总线睡眠模式唤醒。有关唤醒过程本身的更多详细信息,请参阅ComM规范。
AUTOSAR CanNm算法的主要概念可以通过以下两个关键需求来定义:CanNm集群中的每个网络节点只要需要总线通信,就应该定期传输网络管理PDU;否则它将无需传输网络管理PDU。
如果CanNmStayInPbsEnabled被禁用,并且CanNm集群中的总线通信被释放,并且在可配置的(CanNmTimeoutTime + CanNmWaitBusSleepTime)时间里,总线上没有任何NM PDU,则需转换到Bus-Sleep模式。
CanNm算法的整体状态机可以定义如下图:
注意:状态转换最晚必须在下一个主函数中执行。
7.2 运行模式
AUTOSAR CanNm应包含在模块接口上可见的三种操作模式:
网络模式(Network Mode)
准备总线睡眠模式(Prepare Bus-Sleep Mode)
总线睡眠模式(Bus-Sleep Mode)
AUTOSAR CanNm操作模式的变化需通过回调函数通知上层(ComM状态机同步变化)。当CanNm_GetState被调用时,CanNm将返回当前的NM状态和模式。
7.2.1 网络模式
网络模式应包括三个内部状态:
重复消息状态(Repeat Message State)
正常操作状态(Normal Operation State)
就绪睡眠状态(Ready Sleep State)
当从总线睡眠模式(Bus-Sleep Mode)/准备总线睡眠模式(Prepare Bus-Sleep Mode)进入网络模式(Network Mode)时,CanNm模块需默认进入重复消息状态(Repeat Message State)。
当进入网络模式时,CanNm模块需启动NM超时计时器(NM-Timeout Timer),同时通过调用回调函数Nm_NetworkMode通知上层(ComM)新的当前操作模式。
在网络模式下成功接收NM PDU(调用CanNm_RxIndication)后,如果启用了PDU发送,CanNm模块需重置NM超时计时器。
在网络模式下成功发送NM PDU(收到带有E_OK的CanNm_TxConfirmation调用)时,CanNm模块需重置NM超时计时器。
注意:如果启用CanNmImmediateTxConfEnabled,则假定每个NM PDU发送请求都会导致NM PDU发送成功。
CanNm模块需在每次启动或重启时,重置NM超时计时器。
如果在网络模式下调用CanNm_PassiveStartUp,CanNm模块将不执行该服务并返回E_NOT_OK。
如果在CanNmDynamicPncToChannelMappingEnabled设置为TRUE,且CanNm处于网络模式的通道上调用函数CanNm_PnLearningRequest,则 CanNm模块需在该通道上将CBV中的 Repeat Message Request位和部分网络学习Partial Network Learning位设置为1,并更改为或重新启动重复消息状态(Repeat Message State)。
如果在CanNmDynamicPncToChannelMappingEnabled设置为TRUE,且CanNm处于网络模式的通道上接收到的部分网络学习(Partial Network Learning)位和 Repeat Message Request位的值为1,则CanNm应在该通道上将CBV中的Partial Network Learning Bit设置为1,并更改或重新启动重复消息状态(Repeat Message State)。
7.2.1.1. 重复消息状态(Repeat Message State)
对于不处于被动模式的节点(请参阅第7.9.3章节),重复消息状态确保从Bus-Sleep 或 Prepare Bus-Sleep到Network Mode的任何转换,对网络上的其他节点都是可见的。 此外它还确保任何节点在最短的时间内保持活动状态。它可用于存在节点的检测。
当进入重复消息状态时,CanNm模块需(重新)开始传输NM PDU,除非被动模式被启用或者通信被禁止。
Repeat Message State中还分为Immediate transmit(快发,对应主动唤醒源请求)和Normal transmit(慢发,对应被动请求);
当NM超时计时器在重复消息状态中超时,CanNm模块需(重新)启动NM超时计时器,同时需向DET报告CANNM_E_NETWORK_TIMEOUT。
网络管理状态机应在由配置参数CanNmRepeatMessageTime确定的可配置时间内保持在重复消息状态;在此时间后,CanNm模块需离开重复消息状态。
当离开重复消息状态时,如果网络已被请求,CanNm模块需进入正常操作状态(Normal Operation State);如果网络已经被释放(ComM请求了NO-COM),则CanNm模块需进入就绪睡眠状态(Ready Sleep State)。
如果CanNmNodeDetectionEnabled设置为TRUE,CanNm将在离开重复消息状态时,清除重复消息位。
如果在重复消息状态(Repeat Message State)、总线睡眠模式(Prepare Bus-Sleep Mode)或