AutoSar CanNm笔记

网络管理目的

网络管理的目的使车辆网络中的 ECU 节点有序的睡眠和唤醒。 在没有通信需求的时候睡眠,在需要通信的时候唤醒, 可以节约汽车电池的电量。

CAN Network Management(CanNm)是一种独立于硬件的协议实现的软件模块, 只能在 CAN 网络上使用, 主要功能是协调网络正常运行和总线睡眠模式之间的转换。 CanNm 提供了网络管理接口(NmIf) 和CAN 接口(CanIf) 模块间的适配。

CanNM与其他模块之间关系

在这里插入图片描述

主动唤醒和被动唤醒

网络管理唤醒分为主动唤醒和被动唤醒。(BMS的休眠唤醒包括CAN唤醒,CAN唤醒又叫网络管理唤醒)
主动唤醒和被动唤醒的区分: 简单来说,除了收到其他节点发送的网络唤醒报文是被动唤醒外,其他都是主动唤醒(如:KL15、菊花链、RTC定时唤醒等)。

主动唤醒请求: 来自模块内部对网络的请求,并通过发送NM PDU尝试唤醒其他ECU。主动唤醒又叫做本地唤醒,和硬线相关的唤醒方式一般称为本地唤醒源。如:KL15硬线,硬线传感器信号(如:脚踢门、后备箱打开)主动唤醒节点(BMS即是一个节点)的网络管理报文必须先于应用报文发送。

被动唤醒请求: 来自总线上其他节点对该节点(例:BMS)的网络请求。被动唤醒的节点,发送的网络管理 PDU 和应用报文没有顺序要求。被动唤醒又叫做远程唤醒,简单来时就是和总线信号相关的唤醒方式。比如收到网络管理报文或者指定诊断报文,或者包含KL15信号的应用报文(有些节点没有KL15硬线,而是网关转发包含KL15信号的应用报文唤醒)。

状态管理

AUTOSAR CanNm 包含三种模式,其中 Network Mode包括三种子状态:

  • 网络模式(Network Mode)
    • 重复报文状态(Repeat Message State)
    • 常规运行状态(Normal Operation State)
    • 准备睡眠状态(Ready Sleep State)
  • 准备总线睡眠模式(Prepare Bus-Sleep Mode)
  • 总线睡眠模式(Bus-Sleep Mode)

1. 总线睡眠模式(Bus-Sleep Mode)

总线睡眠模式(BusSleepMode)的作用,是当网络上没有通信需求的时候,减少节点对蓄电池电量的消耗。 节点进入总线睡眠模式(BusSleepMode)后,对蓄电池电量的消耗下降到适当的程度。节点保留唤醒机制,等待被唤醒。
原则上,处于总线睡眠模式(BusSleepMode)的节点不接收应用报文并且不应给出ACK应答。如果此时节点数据链路层被唤醒且给出了ACK应答,需要在最短时间内重新进入低功耗模式。

2. 准备总线睡眠模式(Prepare Bus-Sleep Mode)

准备总线睡眠模式(PrepareBusSleepMode)的作用,是保证在进入总线睡眠前,节点有足够的时间停止其网络活动。在准备总线睡眠模式(PrepareBusSleepMode)下,总线活动减少(如:存在于发送缓存中的报文被发送,以清空发送缓存),最终总线将不再有活动(即没有任何报文被发送)。

节点进入准备总线睡眠模式(PrepareBusSleepMode)后,将立即开启T_WAIT_BUS_SLEEP定时器。在该定时器溢出后,该节点将离开准备总线睡眠模式(PrepareBusSleepMode),进入总线睡眠模式(BusSleepMode)。

当处于准备总线睡眠模式(BusSleepMode) 的节点接收到网络管理报文时 , 将向网络模式(NetworkMode)转换;默认情况下,节点进入网络模式(NetworkMode)中的重复报文状态(RepeatMessageState)。

3. 网络模式(Network Mode)

当节点从总线睡眠模式(BusSleepMode)或准备总线睡眠模式(PrepareBusSleepMode)进入网络模式(NetworkMode)时,在默认情况下,需进入重复报文状态(RepeatMessageState)。

节点进入网络模式(NetworkMode)后,需开启T_NM_TIMEOUT定时器;

节点处于网络模式 (NetworkMode),成功接收或成功发送一帧网络管理报文(NM PDU)后,需重启T_NM_TIMEOUT定时器;

3.1 重复报文状态(RepeatMessageState)

无论其睡眠条件是否满足,重复报文状态(RepeatMessageState)都可以使节点保持一段时间的活跃状态。该状态可以被用来监测在线节点,并且告诉其它节点我上线了,可以正常通信了。

当节点进入重复报文状态(RepeatMessageState)后,需要开始(或重新开始)发送网络管理报文。

节点处于重复报文状态(RepeatMessageState),T_NM_TIMEOUT定时器超时溢出时,需要重启T_NM_TIMEOUT定时器。

节点接收到本地唤醒源后,进入快发重复报文状态(InnmediateTransmitState);

节点接收到被动唤醒源后,进入正常重复报文状态(NormalTransmitState)。

节点在进入重复报文状态 (RepeatMessageState)需要保持一段时间 ,这段时间由参数T_REPEAT_MESSAGE 决定;T_REPEAT_MESSAGE 超时后,节点状态需进入常规运行状态(NormalOperationState)或准备睡眠状态(ReadySleepState)。 T_REPEAT_MESSAGE需保证网络上其它的节点都可以被网络管理报文唤醒。

节点离开重复报文状态(RepeatMessageState)后,若对网络通信有需求,应进入常规运行状态(NormalOperationState)。

节点离开重复报文状态(RepeatMessageState)后,若对网络通信无需求,应进入准备睡眠状态(ReadySleepState)。

节点离开重复报文状态(RepeatMessageState)后,需将重复报文请求标志位(RepeatMessageRequestBit)清零。

3.2 常规运行状态(NormalOperationState)

常规运行状态(NormalOperationState)用于保证只要对网络通信有需求,任何一个网络管理节点都可以保持网络处于唤醒状态。

当节点由重复报文状态(RepeatMessageState)或准备睡眠状态(ReadySleepState)进入常规运行状态(NormalOperationState)时,需按照T_NM_MessageCycle的周期发送网络管理报文。

当节点处于常规运行状态(NormalOperationState),而定时器T_NM_TIMEOUT溢出时需要重启定时器。

当节点处于常规运行状态(NormalOperationState),而本地睡眠条件满足时,需进入准备睡眠状态(ReadySleepState)。

当节点处于常规运行状态(NormalOperationState),而接收到重复报文请求标志位(RepeatMessageRequestBit)置位的网络管理报文时,需进入重复报文状态(RepeatMessageState)。

当节点处于常规运行状态(NormalOperationState),而RepeatMessageRequest()函数被调用时,需进入重复报文状态(RepeatMessageState),并将报文中重复报文请求标志位(RepeatMessageRequestBit)置位,同时启用快速发送机制

3.3 准备睡眠状态(ReadySleepState)

当节点从重复报文状态(RepeatMessageState)或常规运行状态(NormalOperationState)进入准备睡眠状态(ReadySleepState)后,需停止发送网络管理报文。

当节点处于准备睡眠状态(ReadySleepState),定时器T_NM_TIMEOUT溢出后,需进入准备总线睡眠模式(PrepareBusSleepMode)。

当节点处于准备睡眠状态(ReadySleepState),但因发生本地唤醒事件,睡眠条件不再满足时,需进入常规运行状态(NormalOperationState)。

当节点处于准备睡眠状态(ReadySleepState),接收到重复报文请求标志位(RepeatMessageRequestBit)置位的网络管理报文后,需进入重复报文状态(RepeatMessageState)。

当节点处于准备睡眠状态(ReadySleepState),RepeatMessageRequest()函数被调用时,需进入重复报文状态(RepeatMessageState),并将网络管理报文中的重复报文请求标志位(RepeatMessageRequest)置位,同时启用快速发送机制。

网络管理定时参数

参数描述
T_REPEAT_MESSAGE节点在重复报文状态(RepeatMessageState)中持续的时间
T_NM_TIMEOUT节点进入网络模式(NetworkMode)后,即开启该定时器;
在准备睡眠状态(ReadySleepState)中,该定时器溢出后,节点进入准备总线睡眠模式(PrepareBusSleepMode)
T_WAIT_BUS_SLEEP该定时器的作用是确保所有的节点都有时间停止其网络活动
T_START_NM_TX该参数定义了节点从准备总线睡眠模式(PrepareBusSleepMode)、常规运行状态(NormalOperationState)或准备睡眠状态(ReadySleepState)进入重复报文状态(RepeatMessageState),到发出第一帧网络管理报文的最大允许时间间隔。
T_START_App_TX在成功发送出第一帧网络管理报文后,节点应发送出应用报文的最大时间间隔
T_NM_ImmediateCycleTime节点启动快速发送机制时,需以此参数作为网络管理报文的发送周期
T_NM_MessageCycle在网络模式(NetworkMode) (除去准备睡眠状态)中,节点应以此参数作为网络管理报文的发送周期
T_WakeUp节点从唤醒事件发生,到发出第一帧网络管理报文的最大允许时间间隔
N_ImmediateNM_TIMES当节点处于重复报文状态并启用快速发送机制时,节点使用 T_NM_ImmediateCycleTime为周期发送网络管理报文的数量

状态切换整体框图

下图显示了与API规范相关的UML状态图。模式更改相关转换用绿色表示,错误处理相关转换用红色表示,可选节点检测相关转换用蓝色表示。此外,还假定启用了总线负载减少功能。
在这里插入图片描述
状态切换详述:
请添加图片描述

网络管理切换状态描述
NM_1CAN 网络管理模块的初始化
NM_2节点在睡眠模式下检测到主动唤醒请求,发送网络管理报文来主动唤醒网络,必须首先进入 NM PDU 快速发送状态。
NM_3处于睡眠模式时,收到有效的网络管理报文后,进入重复报文状态中的 NM PDU 正常发送状态。
NM_4处于 NM PDU 快速发送状态的节点,在计数器 N_ImmediateNM_TIMES 为零时,节点将进入 NM PDU 正常发送状态,以正常周期发送网络管理报文。
NM_5处于重复报文状态下的主动请求网络节点,如果 T_REPEAT_MESSAGE 发生超时,但节点的主动网络请求仍持续存在,节点必须进入常规操作状态。节点继续保持以正常周期T_NM_MessageCycle 发送网络管理报文和应用报文 PDU。
NM_6如果节点的主动网络请求取消, 并收到有效的网络管理报文后, 节点应进入重复报文状态中。
NM_7处于常规操作状态的节点,如果释放所有的网络请求,不再需要主动请求网络,那么它必须立即将网络管理状态切换到准备睡眠状态,同时该节点必须立即停止发送网络管理报文。
NM_8处于准备睡眠状态的节点, 如果检测到主动网络请求,节点必须立刻进入常规操作状态,同时必须开始以正常周期 T_NM_MessageCycle 发送网络管理报文和应用报文 PDU。
NM_9处于重复报文状态的 NM PDU 正常发送状态的节点,如果没有检测到主动网络请求(即被动唤醒),一旦T_REPEAT_MESSAGE 超时,节点将进入准备睡眠状态,在此状态下只发送应用报文,不发NM报文。
NM_10如果节点的主动网络请求取消, 并收到有效的网络管理报文后, 节点应进入重复报文状态中。同NM_6。
NM_11处于准备睡眠状态的节点如果没有检测到主动网络请求,一旦T_NM_TIMEOUT 超时, 节点将进入预睡眠模式。
NM_12处于预睡眠模式的节点,如果检测到主动唤醒请求,节点将进入重复报文状态的 NM PDU 快速发送状态。
NM_13处于预睡眠模式的节点,如果收到被动唤醒请求,节点将进入重复报文状态的 NM PDU 正常发送状态。
NM_14处于预睡眠模式的节点如果不再收到主动或被动唤醒请求,一旦 T_WAIT_BUS_SLEEP 超时, 节点将进入睡眠模式。
NM_15在任何状态下发生 Battery Power Off,节点都将进入关闭模式,不再拥有任何通信和网络管理的功能。

当ECU处于不同的运行模式时,可以发送和接收的CAN报文的类型。

网络模式网络管理报文应用报文[1]
TxRxTxRx
总线睡眠模式NYNN[2]
准备总线睡眠模式NYN[3]N
网络模式重复报文状态YYYY
常规运行状态YYYY
准备睡眠状态NYYY
除特殊说明外, Tx/Rx 是对应用层而不是对数据链路层的需求;
“N”表示不允许报文的发送或接收;
“Y”表示允许报文的发送或接收;
[1]:应用报文包括常规应用报文、诊断报文、标定用报文;
[2]:是对数据链路层的需求(不应给出 ACK 应答);
[3]:已经存在于发送缓存中的报文允许被发送出来。

网络管理报文(NM PDU)

每一个AUTOASAR网络管理节点都会被分配一个唯一的网络管理报文ID。

NM PDU数据结构如下:
在这里插入图片描述

源节点地址(SourceNodeIdentifier)

每一个参与网络管理的节点都会被分配一个唯一的标识符(NODE_ID),存放于网络管理报文的Byte0(SourceNodeIdentifier)中。

控制比特向量(ControlBitVector)

在这里插入图片描述

  • Bit0:重复报文请求标志位(RepeatMessageRequestBit),信号值描述为:
    • 0x0:该报文发送节点未请求其他节点进入重复报文状态
    • 0x1:该报文发送节点请求其他节点进入重复报文状态
  • Bit3:NM协调器休眠位
    • 主协调器未请求启动同步关机
    • 主协调器请求启动同步关机
  • Bit4:主动唤醒网络标志位(ActiveWakeupBit),信号值描述为:
    • 0x0:该报文发送节点未主动唤醒网络(被其它节点唤醒)
    • 0x1:该报文发送节点主动唤醒网络
  • Bit6:PN功能位
    • 0x0:网络管理不使用PN功能。
    • 0x1:网络管理报文中包含PNC信息。如果项目中,网络管理要求使用PN功能,发送的网络管理报文中,有PNC请求时,需要先置位PNI。接收节点会根据PNI情况决定网络管理的处理流程。

用户数据(Userdata)

在网络管理报文中有6个字节的用户数据(Userdata0~5),可以被应用层读取和写入,用于传输用户定义信息。

被动唤醒和主动唤醒时的状态切换

  • 被动唤醒:
    处于休眠状态的主板,在收到NM报文唤醒时,会从 Bus-Sleep 模式切换到Network 模式的Repeat state,进行慢发NM报文,以 CanNmMsgCycleTime(例:200ms) 为周期,在Repeat Message Timer(例:1000ms)定时器到时时跳转到 Ready state, 此时主板不会再发送NM报文,只会发送APP应用报文。
  • 主动唤醒:
    处于休眠状态的主板,在由主动唤醒源唤醒后,会从 Bus-Sleep 模式切换到Network 模式的Repeat state,进行快发报文,以 CanNmImmediateNmCycleTime(例:20ms) 为周期,发送 CanNmImmediateNmTransmissions(例:10) 次,之后进入慢发报文,以 CanNmMsgCycleTime(例:200ms) 为周期,在Repeat Message Timer(例:1000ms)定时器到时时跳转到 Normal State,在此状态会一直发NM报文和应用报文,当满足休眠条件则切换到 Ready state,此时主板不会再发送NM报文,只会发送APP应用报文。

其中被动唤醒时,只发送几帧NM报文,意在告诉其他节点本节点已经被唤醒。

常用缩写

缩写英文名称中文名称
AutosarAutomotive Open System Architecture汽车开发系统架构
ECUElectric Control Unit电控单元
NMNetword Management网络管理
PMPower Mode电源模式
PDUProtocol Data Unit协议数据单元
KL15Terminal 15 of the vehicle网络唤醒硬线电压
KL30Terminal 30 of the vehicle12V电源电压
Power OnKL30 is connected12V电源上电
Power OffKL30 is disconnected12V电源下电
CANController Area Network控制器局域网络
CANFDCAN with Flexible Data Rate灵活速率CAN网络
RMRRepeat Message Request重复报文状态请求
BSMBus Sleep Mode总线休眠状态
PBSMPrepare Bus Sleep Mode总线预休眠状态
RMSRepeat Message State重复报文状态
NOSNormal Operation State正常运行状态
RSSReady Sleep State就绪睡眠状态
  • 20
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1.背景 2 2.技术驱动因素 2 3.AP的特点 3 4.经典、自适应和非AUTOSAR ECU的集成 4 1.逻辑视图 5 2.物理视图 7 3.方法论和Manifest 8 5.应用设计 10 6.执行Manifest 10 7.服务Instance Manifest 11 1.概述 11 3.调度 12 4.内存管理 12 5.设备管理 12 1.概览 12 2.系统启动 12 3.执行管理责任 13 4.确定性执行 13 5.资源限制 14 6.应用程序恢复 14 7.受信任的平台 15 1) 可以要求将功能组设置为专用状态 16 2)(部分)网络可被要求取消/激活 16 3) 可以要求机器关闭或重新启动 16 4) 其他自适应(平台)应用程序的行为可能会受到影响 16 5) 可以执行项目特定的动作 16 1.概述 20 2.架构 20 3.组件 20 1.概述 21 2.诊断通信子集群 22 3.事件存储子集群 23 1.概述 25 2.设计 26 3.架构 26 1.网络管理算法概述 26 2.架构 27  图1 NM概述 27 1.术语 40 2.IAM框架的范围和重点 41 3.AUTOSAR规范的内容 41 4.IAM框架的体系结构 ①一般框架 42 (1) 使用加密的密钥或密钥句柄进行操作 46 (2) 尽管可能会损害应用程序安全地管理密钥 46 (3) 限制应用程序对键的访问和允许的操作 46  API扩展说明 47 2.架构 47 1.Safety概述 48 2.信息交换保护(E2E保护) 49 3.平台健康管理 49 Core Types定义了多个功能集群作为其公共 interface 的一部分使用的通用类和功能。定义Core Types的理由之一是包括 Interface 定义中经常使用的常见复杂数据类型。 52 1.错误处理 52 2.高级数据类型 53 3.全局初始化和关闭功能 53

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值