车载网络 - Autosar网络管理 - 跳转状态

news/2024/4/24 19:41:11/

 

四、Autosar网络管理跳转状态

        网络模式对应报文状态

        Autosar网络管理报文各个状态对应的网络管理报文和应用报文的发送和接收状态。

网络模式

网络管理报文

应用报文

收发类型

发送报文

接收报文

发送报文

接收报文

总线睡眠模式(BSM)

No

Yes

No

NA

准备总线睡眠模式(PBSM)

No

Yes

No

No

网络模式

重复报文状态(RMS)

Yes

Yes

Yes

Yes

网络模式

常规运行状态(NOS)

Yes

Yes

Yes

Yes

网络模式

准备睡眠状态(RSS)

No

Yes

Yes

Yes

 Yes:表示网络管理节点发送或者接收报文

 No:表示网络管理节点停止发送或者接收报文

应用报文:通信报文、诊断报文、标定报文

NA:这个根据实际情况决定,有些节点支持任意报文唤醒,此时这里就是Yes;如果仅支持网络管理报文唤醒,则此处就是No

No:需要将缓存中的报文发出后,将不在发出应用报文

        网络管理跳转图

CanNm_Init: CAN网络管理模块初始化 CanNm_PassiveStartUp:接收到被动唤醒事件后ECU请求网络,即远程唤醒

KL15 ON || IG ON:触发本地唤醒事件后ECU请求网络,即本地唤醒

KL15 OFF || IG OFF:释放网络,由于ECU不必在总线上进行通信。

NM Msg: 为总线上接下来发送的NM 报文设置重复消息请求位。

各状态描述

 总线睡眠模式 - Bus Sleep Mode

        当总线上没有CAN通信需求,为了电池能够使用的更久并且防止车辆馈电,需要减少对电池电量的消耗,但是在总线睡眠模式,节点依然保留唤醒机制,等待在需要的时候被唤醒。该模式下,一般来说是一定对网络管理报文有Ack应答,如果没有任意报文唤醒的需求,一般不对应用报文进行ack应答,当节点给出ack应答后,如果没有唤醒需求,几秒后会再次进入低功耗模式。

总线预休眠模式 - Prepare Bus Sleep Mode

        在该模式下,所有的应用报文和网络管理报文都已经停止,总线活动处于停止状态(已将所有缓存中的所有报文发出)。进入该模式后,立即启动定时器 - T_Wait_Bus_Sleep,在该定时器溢出后,节点离开Prepare Bus Sleep Mode,并进入总线睡眠模式(Bus Sleep Mode)。

        在该模式下,接收到本地唤醒请求时,将会进入到网络模式中的重复报文状态。

        在该模式下,接收到远程唤醒请求时,将会进入到网络模式中的重复报文状态。

网络模式 - Network Mode

        1)重复报文状态(Repeat Message State)

        2)常规运行状态(NormalOperation State)

        3)准备睡眠状态(Ready Sleep State)

        在进入到网络模式后,首先会进入到重复报文状态,并重启T_NM_TimeOut定时器,当节点成功接收或者发送一帧NM Msg报文,T_NM_TimeOut定时将会被重置。从总线睡眠模式到网络模式中,节点发出第一帧NM报文,时间必须小于T_Wake_UP。

重复报文状态 - Repeat Message State

        一旦进入到重复报文状态,无论睡眠条件是否满足,都会保持在该状态一段时间,直到定时器T_Repeat_Message超时。超时后,如果有网络通信需求,则会进入到常规运行状态,如果没有则会进入到睡眠就绪状态。

        重复报文状态结束后,网络管理报文中的重复报文请求指示位需要清零。

        节点进入到重复报文状态后,根据规范要求是否启动快发机制,进行总线通信的恢复。

        如果规范要求有快发机制,快发NM Msg的数量需要与规范要求一致。

        重复报文状态结束后,如果后网络通信需求,网络管理报文应以dbc定义周期发送。

        当节点从准备总线睡眠模式、常规运行状态、睡眠就绪状态接收到网络通信需求,需要在T_Start_NM_Tx时间内发出第一帧网络管理报文。

常规运行状态 - Normal Operation State

        常规运行状态下,网络管理报文需以一定的周期发送(周期需要跟dbc保持一致,偏差在10%以内)。

        常规运行状态下,需要有网络通信的保持源存在;网络管理报文和应用报文发送接收正常。

        常规运行状态下,节点每发出一帧网络管理报文,定时器T_Nm_TimeOut将会重置一次。

        常规运行状态下,接收到重复报文请求状态位为1的网络管理报文,节点将进入到重复报文状态。

        常规运行状态下,满足本地睡眠条件,将停止发送网络管理报文,准备进入到睡眠就绪状态

睡眠就绪状态 - Ready Sleep State

        睡眠就绪状态下,节点停止发送网络管理报文,但是应用报文正常发送。

        睡眠就绪状态下,定时器T_NM_TimeOut溢出后,进入到准备睡眠模式。

        睡眠就绪状态下,发送本地唤醒事件,直接进入到常规运行状态。

        睡眠就绪状态下,接收到重复报文请求指示位为1的网络管理报文,则需要在T_Start_NM_Tx时间内进入到重复报文状态。

实例总结部分

1、Power on(KL.30上电)后初始化完成CanNM模块后进入睡眠状态。

2、在睡眠状态中触发被动唤醒事件,ECU进入重复报文状态(简称RMS)。在RMS状态中,NM报文Repeat Message Request位始终置1,Active Wakeup Bit位置0。如果是触发本地唤醒事件唤醒ECU,在RMS状态中NM报文Repeat Message Request和Active Wakeup Bit位都置1。ECU进入重复报文状态后启动Repeat Message Timer和NM-Timeout Timer。在重复报文状态ECU以CanNmMsgCycleTime为周期发送NM报文。

3、当Repeat Message Timer超时后,如果ECU有维持本地唤醒事件(例如KL15上电/IgnON),则进入正常工作状态(简称NOS)。ECU仍以CanNmMsgCycleTime为周期发送NM报文。

4、在NOS状态, ECU接收到某个节点发送Repeat Message Request位置1的NM报文时要返回到RMS状态。

5、在NOS状态,ECU请求释放网络会进入进入准备睡眠状态(简称RSS)。此时ECU不发送自身NM报文,但会接收其他节点发送的NM报文。NM-Timeout Timer重启,维持在RSS状态。

测试关注

1. NM报文的格式是否符合厂商的定义,源地址和ID是否对应

2. CBV每一位的置位情况是否正确,如主要唤醒时(KL15 上电)Active wakeup bit是否置1

3. CBV每一位的初始化或重置是否正确。在上电初始化时CVB各位默认都为0

4.各模式、状态的切换是否符合义AUTOSAR标准或厂商的定义

5.各模式、状态切换时的时间参数是否符合厂商的定义


http://www.ppmy.cn/news/47033.html

相关文章

第14届蓝桥杯 | 冶炼金属

作者:指针不指南吗 专栏:第14届蓝桥杯真题 🐾慢慢来,慢慢来🐾 文章目录 题目代码摸索第一次 AC 5/10第二次 AC 100% 反思 题目 链接: 4956. 冶炼金属 - AcWing题库 小蓝有一个神奇的炉子用于将普通金属 O …

老宋 带你五分钟搞懂vue

Vue 1.1 什么是框架 任何编程语言在最初的时候都是没有框架的,后来随着在实际开发过程中不断总结『经验』,积累『最佳实践』,慢慢的人们发现很多『特定场景』下的『特定问题』总是可以『套用固定解决方案』。于是有人把成熟的『固定解决方案…

javascript之函数

什么是函数? (函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。) 是封装了一段可以重复调用执行的代码,通过找个代码块,能够实现大量代码的重复使用 使用函数的方式: 声明函数调用函数 声…

使用vscode+cmake进行c++代码编写

1. 前言 因为vcode的主题格式比visual studio好看,而且注释使用ctr/注释非常方便。所以对于一下小型的c代码测试,例如用不到外部库,只需要纯c自己语法,我就想和python一样,在vscode上写。因此记录一下比较简单的典型的…

C++算法初级10——动态规划

C算法初级10——动态规划 文章目录 C算法初级10——动态规划最优化问题动态规划分析流程和条件 最优化问题 生活中我们常常遇到这样一些问题: 看到上面的例子,我们发现这些问题都是在最大化(或者最小化)某个指标:最小…

剪枝与重参第七课:YOLOv8剪枝

目录 YOLOv8剪枝前言1.Overview2.Pretrain(option)3.Constrained Training4.Prune4.1 检查BN层的bias4.2 设置阈值和剪枝率4.3 最小剪枝Conv单元的TopConv4.4 最小剪枝Conv单元的BottomConv4.5 Seq剪枝4.6 Detect-FPN剪枝4.7 完整示例代码 5.YOLOv8剪枝总结总结 YOLOv8剪枝 前…

你真的会用iPad吗,如何使iPad秒变生产力工具?在iPad上用vscode写代码搞开发

目录 前言 视频教程 1. 本地环境配置 2. 内网穿透 2.1 安装cpolar内网穿透(支持一键自动安装脚本) 2.2 创建HTTP隧道 3. 测试远程访问 4. 配置固定二级子域名 4.1 保留二级子域名 4.2 配置二级子域名 5. 测试使用固定二级子域名远程访问 6. iPad通过软件远程vscode…

Java的时代依然还在,合格的Java工程师成为紧缺人才

Java的时代依然还在,合格的Java工程师成为紧缺人才 编程语言的世界变化莫测,在其中浮浮沉沉28年的Java,也经历见证了很多语言的兴起和衰败。在最新的编程语言排行榜中,Java依旧位居前三,可见Java的发展后劲有多强&…

C++linux高并发服务器项目实践 day3

Clinux高并发服务器项目实践 day3 文件IO标准C库IO函数与LinuxIO函数虚拟地址空间文件描述符Linux系统IO函数open与close mode:八进制的数,表示用户对创建出的新的文件的操作权限 最终的权限是:mode & ~umask 0777 r(读) w(写) x(可执行)都有这样的权…

Linux 的 grep 命令使用大全

当你需要在Linux或Unix系统中快速搜索文件中的特定字符串时,grep命令是非常有用的工具。Grep是Global Regular Expression Print的缩写,它是一个文本搜索工具,可以用来在一个或多个文件中查找文本模式。在这篇博客中,我将会讲解gr…

FPGA基于SFP光口实现1G千兆网UDP通信 1G/2.5G Ethernet PCS/PMA or SGMII替代网络PHY芯片 提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、详细设计方案4、vivado工程详解5、上板调试验证并演示6、福利:工程代码的获取 1、前言 目前网上的fpga实现udp基本生态如下: 1:verilog编写的udp收发器,但不带ping功能,这样的代…

Spark 实现重新分区 partitionBy、coalesce、repartition(附代码演示)

文章目录 1、partitionBy 源码中的定义(部分) 调用方式 2、coalesce 源码中的定义 调用方式 3、repartition 源码中的定义 调用方式 repartition和coalesce的区别 代码演示 (跳转代码) 实现重新分区,本质上…

C++ [图论算法详解] 欧拉路欧拉回路

蒟蒻还在上课,所以文章更新的实在慢了点 那今天就来写一篇这周刚学的欧拉路和欧拉回路吧 讲故事环节: 在 一个风雪交加的夜晚 18世纪初普鲁士的哥尼斯堡,有一条河穿过,河上有两个小岛,有七座桥把两个岛与河岸联系…

linux知识

1.vi 删除-dd i-insert 最后一行-G 第一行-g 查找-/ 替换-:s/old/new/g 2.wc -》 行数 字符数 字节数 -w 统计字数 3. sort -k 按某一列排序 -r reverse -n 按字符排 4.uniq -c 统计重复数量 5.head -4 取文件前4行 6.date --date"1 days ago" date "%Y%m%D %H…

Python 单样本学习实用指南:1~6 全

原文:Hands-On One-shot Learning with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关心如…

C learning_6

目录 语句的种类 C语言&#xff1a;结构化是程序设计语言 顺序结构&#xff1a; 选择结构(分支结构): 循环结构&#xff1a; while语句中的break和continue 语句的种类 1.表达式语句&#xff1a;表达式语句是指一个表达式后面跟随一个分号的语句。 #include<stdio.h&g…

2021地理设计组二等奖:基于GIS的东江源区土壤侵蚀及其影响因素空间分析

一、作品背景 水土保持情况普查对我国具有重要意义。我国目前是世界上水土流失最严重的国家之一&#xff0c;水土流失面积极其广且量大&#xff1b;严重的水土流失问题是我国生态环境问题的重要板块&#xff0c;若是持续恶化&#xff0c;将会严重影响我国的生态安全、饮水安全…

4.17日报

get()和 load()的区别&#xff1f; 数据查询时&#xff0c;没有 OID 指定的对象&#xff0c;get() 返回 null&#xff1b;load() 返回一个代理对象。 load()支持延迟加载&#xff1b;get() 不支持延迟加载。 121. 说一下 hibernate 的缓存机制&#xff1f; hibernate 常用的缓存…

MIT6.824 Lecture18 Fork Consistency

Background 拜占庭问题&#xff08;Byzantine Generals Problem&#xff09;得名于一个古老的传说&#xff0c;讲述了拜占庭帝国在战争中的一个失败策略。在这个故事中&#xff0c;多名拜占庭将军要协调进攻或撤退的行动&#xff0c;但是其中一些将军可能会向其他帝国泄露假消…

【MySQL | 进阶篇】09、MySQL 管理及常用工具(mysqladmin、mysqlbinlog、mysqldump 等)的使用

目录 一、系统数据库 二、常用工具 2.1 mysql 示例 2.2 mysqladmin 示例 2.3 mysqlbinlog 示例 2.4 mysqlshow 示例 2.5 mysqldump&#xff08;数据备份&#xff09; 示例 2.6 mysqlimport/source&#xff08;数据恢复&#xff09; 2.6.1 mysqlimport 2.6.2 …