AutoSar CAN网络管理(CanNm)

news2024/11/16 23:59:45

文章目录

  • 网络管理目的
  • 主动唤醒和被动唤醒
  • 状态管理
    • 1. 总线睡眠模式(Bus-Sleep Mode)
    • 2. 准备总线睡眠模式(Prepare Bus-Sleep Mode)
    • 3. 网络模式(Network Mode)
      • 3.1 重复报文状态(RepeatMessageState)
      • 3.2 常规运行状态(NormalOperationState)
      • 3.3 准备睡眠状态(ReadySleepState)
  • 网络管理定时参数
  • 状态切换整体框图
  • 网络管理报文(NM PDU)
    • 源节点地址(SourceNodeIdentifier)
    • 控制比特向量(ControlBitVector)
    • 用户数据(Userdata)
  • 常用缩写

网络管理目的

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

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

主动唤醒和被动唤醒

网络管理唤醒分为主动唤醒和被动唤醒。(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_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:部分网络信息位
    • 0x0:NM PDU未包含部分网络请求信息
    • 0x1:NM PDU包含部分网络请求信息

用户数据(Userdata)

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

常用缩写

缩写英文名称中文名称
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就绪睡眠状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/503639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于springboot+mysql+jpa+html实现商品销售信息系统

基于springbootmysqljpahtml实现商品销售信息系统 一、系统介绍1、系统主要功能:2.涉及技术框架:3.本项目所用环境: 二、功能展示三、其它系统四、获取源码 一、系统介绍 1、系统主要功能: 订单管理模块 商品管理模块 品牌管理模…

【项目实战】—— 我们应该如何正确得创建线程池?

项目实战-我们应该如何正确得创建线程池? 对于现在而言多线程编程已经成为程序员必备的职业技能了,在开发实践过程中,你是否也遇到过相关多线程问题,比如创建多少线程才是合适的?线程池该如何创建?今天我们…

类和对象中(2)

文章目录 一、运算符重载1、运算符重载出现的原因2、在全局和类里实现运算符重载3、赋值运算符重载1、为什么赋值运算符重载不能写在全局 ?2、什么时候需要自己实现赋值运算符重载 ? 4、前置和后置重载5、运算符重载的优势 二、const成员函数1、两个常见…

GNN与MLP:GNN是一种泛化器

图神经网络(GNN)作为图表示学习的模型,建立在MLP架构之上,具有额外的消息传递,以允许特征在节点之间流动。作者通过引入一个被称为P-MLP的中间模型,将GNN性能增益的主要来源定位为其内在的泛化能力&#xf…

JSR303统一校验和分组校验及常用注解@NotBlank@NotEmpty 的使用

JSR303-bean校验规范 JSR303常用注解,下面注解在JavaBean的字段上使用,必须在方法上搭配Vaild才会开启校验,也可以设置分组校验 Null 必须为空 主键字段常用,可以规定新增时字段必须为空NotNull 不能为null 添加数字时使用常用&…

前端学习笔记:CSS中浮动的原理,定位

这是本人学习的总结,主要学习资料如下 马士兵教育 目录 1、float1.1、float设计的初衷1.2、浮动的原理,类似两个图层1.3、浮动的原理,两个图层的特殊性1.4、消除浮动的影响 2、定位2.1、相对定位(relative)2.2、绝对定…

CSS var()的使用

最近在做流量对比的功能,有如下的效果图,当某个节点失败的时候,点击能够弹出对应的提示信息。 这个库使用的是jenkins-pipeline 的库, 但是由于它原本的提示框比较糟糕,所以我们想结合antd的tooltip进行展示&#xff0…

CM211-1-ZG-当贝纯净桌面-线刷固件包-

CM211-1-ZG-当贝纯净桌面-线刷固件包-内有教程及短接点 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软件,运…

设计模式之【工厂模式】,创建对象原来有这么多玩法

文章目录 一、什么是工厂模式1、工厂模式的意义2、什么时候应该用工厂模式 二、简单工厂模式1、实例(1)使用简单工厂进行优化(2)静态工厂(3)使用map来去除if(4)使用反射(…

.netCHARTING Crack,添加圆角半径控制

.netCHARTING Crack,添加圆角半径控制 直角或直线组织连接线-通过默认情况下以直角绘制组织连接线,增强了组织连接线的显示方式。可以使用直线选项更改此默认设置,并直接在点之间绘制连接线。 同步组织节点的宽度和高度-添加了Element.Annotation.SyncWi…

Vue3+element-plus实现后台管理系统

背景(未完待续) 环境:node.js软件 、Vs code、vite、elemnt-plus、windicss(样式框架) 第一节课 1、首先,使用npm 命令构建项目( vscode安装的插件 vscode中文显示插件 2、高亮提示插件volar 3、vue 3 …

【Ansys Fluent】根据export导出的ASCII文件按坐标和物理量之间的关系重建物理场(温度场、压力场等)

一、问题说明 在fluent中利用export功能导出ASCII格式的文件,例如下面的文件,第2-4列是单元中心坐标值,第5列是温度值。 如果给出和「导出这个ASCII数据文件时用的几何模型尺寸」一致或等比例放缩的几何模型,可否根据这个ASCII文…

【PCIE体系结构八】数据链路层是如何保证TLP的正确传输的?

👉个人主页:highman110 👉作者简介:一名硬件工程师,持续学习,不断记录,保持思考,输出干货内容 参考书籍:《深入浅出SSD:固态存储核心技术、原理与实战》 目…

kafka3.x详解

kafka 一、简介1.1、场景选择,与其他mq相比1.2、应用场景1.2.1、流量消峰1.2.2、解耦1.2.3、异步通讯 1.3、消息队列的两种模式1.3.1、点对点模式1.3.2、发布/订阅模式 1.4、Kafka 基础架构 二、安装部署2.1、安装包方式2.2、docker安装方式2.3、docker安装kafka-ma…

RuoYi-Cloud-Plus 登录过程源码

登录界面 ruoyi-ui/src/views/login.vue 点击登录按钮进入handleLogin方法 handleLogin() {//验证数据是否合法this.$refs.loginForm.validate(valid > {if (valid) {this.loading true;//如果记住密码被勾选if (this.loginForm.rememberMe) {//直接在cookie中存入相关信…

面试也要说人话

整理了一些读者的问题。 什么是《面试1v1》? 《面试1v1》是一个以对话形式讲解知识点的文章合集,是由 JavaPub 编写的真人1对1面试对话教程,通过真实案例编写,生动、有趣、干货满满。 为什么要写《面试1v1》这个专题&#xff1…

排序篇:归并排序的递归,非递归以及计数排序的实现(C语言)

目录 一:归并排序 (1)归并排序的基本思想 (2)递归版本 ①实现思路 ②合并 ③递归实现有序 ④最终代码 (3)非递归版本 ①实现思路 ②控制分组 ③最终代码 (4)时间,空间复杂度分析 (5)小结 二:计数排序 (1)计数排序的基本思想 …

asp.net+sqlserver体育器材租赁借还系统

本器材借还系统分为管理员和用户两部分,具体功能如下 管理员部分功能 1.管理员管理,管理系统内所有的管理员信息 2.器材信息管理,对器材的基本信息进行管理,方便用户的租借 3.申请审核管理,当用户申请了器材的使用只&a…

跨境卖家必看系列:沃尔玛美国站入驻教程

沃尔玛自从2020年开始重点发展线上商店以来,销售额一直都很可观。前段时间,沃尔玛美国电商还开了个全球招商战略发布会。所以今天龙哥就根据会议官方发布的步骤,给大家总结一下想要入驻沃尔玛美国站的话需要怎么操作。 沃尔玛的入驻渠道 1.…

35-40的技术人员为什么会被“不友好”,请你们自身反思-拒做职场的“嗯嗯”怪

35-40真的是IT人员的一道坎吗? IT技术做不到35-40,可是我身边有大量35-40事业发达、职业发展更好的朋友。同时,我身边也有大量35-40被“毕业”的人更多。 本人经过7年来先后带队过3个大型研发团队,最少的也有60-70号人。最多的达到…