【AUTOSAR】--01 AUTOSAR网络管理基础

AUTOSAR网络管理做了几个项目了,但发现还是有些理解不够深入的地方,最近趁着有个新项目也要做AUTOSAR网络管理,再从头梳理一下AUTOSAR网络管理,预计用2-3篇文章,把AUTOSAR网络重新梳理完成。

这是第一篇,主要从如下三部分展开描述:

1)AUTOSAR网络管理的基础知识;

2)AUTOSAR网络管理主要涉及的软件模块及相关技术文档;

3)AUTOSAR网络管理的工作状态机;

1、网络管理基础知识介绍

车载网络管理常见的有如下两种:

1) OSEK网络管理几年前基本都是用OSEK网络管理。但它相对AUTOSAR网络管理来讲比较复杂,要建环啥的,所以现在慢慢用得少了。

2) AUTOSAR网络管理目前新开发的项目,大部分用的是AUTOSAR 网络管理。

本文主要介绍AUTOSAR网络管理。

网络管理主要是为了协调整车的各ECU的CAN网络同醒同睡。

即:

1、当网络上没有信息交互时,CAN网络将进入睡眠模式,之后本身的系统才允许进行休眠。

2、当ECU要需要获取CAN上的信息时,则该ECU唤醒CAN网络。

总结一句话,网络管理主要负责CAN网络的休眠唤醒,以达到本ECU以及整车的休眠唤醒

AUTOSAR网络管理可以适用于多种网络,如CAN/LIN/Eth/FlexRay等。

本文主要针对CAN部分展开描述,也是目前市场上使用得最多的,最实用的。

2、主要涉及模块及相关文档

从AUTOSAR规范上来看,主要涉及两个模块CanNM,NM模块

从源码层面来看,主要涉及如下源代码:

Nm.c (src\components\nm\implementation

Nm.h (src\components\nm\implementation)

CanNm.c (src\components\cannm\implementation)

CanNm.h(src\components\cannm\implementation)

ComM_Nm.h (src\components\comm\implementation)

Nm_Cbk.h (src\components\nm\implementation)

NmStack_Types.h (src\components\nm\implementation

BswM_Nm.h (src\components\bswm\implementation)

CanNm_Cbk.h (src\components\cannm\implementation

Nm_Cfg.c(src\gendata)

Nm_Cfg.h (src\gendata)

Nm_Lcfg.c (src\gendata)

SchM_Nm.h(src\gendata)

CanNm_Cfg.c (src\gendata)

CanNm_Cfg.h(src\gendata)

CanNm_Lcfg.c (src\gendata)

CanNm_PBcfg.c(src\gendata)

SchM_CanNm.h (src\gendata)

SchM_Nm_Type.h(src\gendata)

SchM_CanNm_Type.h(src\gendata)

对应相关的AUTOSAR标准为:

1) AUTOSAR_SWS_CANNetworkManagement.pdf

2) AUTOSAR_SRS_NetworkManagement.pdf

3) AUTOSAR_SWS_CANStateManager.pdf

对应相关的Vector开发技术规范为:

1) TechnicalReference_CanNm.pdf

2) TechnicalReference_Nm.pdf

3、AUTOSAR CAN Nm状态机

3.1 网络管理三大模式介绍

AUTOSAR网络管理主要分为三大模式:

1) 网络模式(Network Mode)

2) 预睡眠模式(Prepare Bus-Sleep Mode)

3) 睡眠模式(Bus-Sleep Mode)

其中网络模式有三个状态:

1) 帧重复状态(Repeat Message State)

2) 正常运行状态(Normal Operation State)

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

其中帧重复状态又有两个子状态:

1) 快速发送子状态(Normal immediate State)

2) 正常发送子状态(Normal transmit State)

上面每个模式/状态,对网络管理报文、应用报文、诊断报文的发送/接收要求不一样。

具体如下:

1) 网络模式(Network Mode):

允许所有报文的发送与接收(除了处于准备睡眠状态Ready Sleep State时,不能发送网络管理报文)

2) 预睡眠模式(Prepare Bus-Sleep Mode):

不允许发送网络管理报文,

不允许发送、接收应用报文/诊断报文等(已经存储在Tx缓存器的应用报文/诊断报文,仍然可以发送)

仅可接收网络管理报文;

可以对总线上的报文进行ACK响应

3) 睡眠模式(Bus-Sleep Mode)

允许发送网络管理报文,

允许发送、接收应用报文/诊断报文等

仅可接收网络管理报文;

不可对总线上的报文进行ACK响应

上面所有模式/状态,可整理成如下表:

具体这三个模式、三个状态、两个子状态,是怎么互相切换的?下面重点讲解下网络管理的状态机。

3.2 网络管理状态机

  • NM_01: 上电后,软件通过调用CanNm_Init() 完成CAN网络管理的初始化之后进入网络休眠模式Bus-Sleep Mode(BSM)。

  • NM_02: 在网络休眠模式Bus-Sleep Mode(BSM)下,

    若收到其他节点的NM PDU,则软件调用CanNm_PassiveStartup()将状态机切换至网络模式的重复报文状态Repeat Message State(RMS),并进入其中的正常发送子状态。

  • NM_03: 在网络休眠模式Bus-Sleep Mode(BSM)下,

    若本模块存在本地唤醒请求,则软件调用CanNm_NetworkRequest()将状态机切换至网络模式的重复报文状态Repeat Message State(RMS),并进入其中的快速发送子状态。

  • NM_04: 在网络模式下的重复报文状态Repeat Message State(RMS)或正常运行状态Normal Opeartion State(NOS)时,若NM-Timeout Timer超时,则重启NM-Timeout 定时器;

    该步骤正常运行时,是不会触发的分析如下:

    当处于Repeat Message Stat状态时,正常情况下,在NM-Timeout Timer超时前,肯定会接收到其他NM PDU或本NM PDU发送完成,则会如NM17步骤,软件会重启NM-Timeout Timer。

  • NM_05: 当Repeat Message Timer超时,若此时本ECU仍需要请求网络,则进入正常运行状态Normal Operation State。

  • NM_06: 满足如下任一条件时,则从正常运行状态Normal Opeartion State(NOS)进入重复报文状态Repeat Message State;

    1、接收到Repeat Message Bit置1的网络管理报文

    2、ECU需要置上Repeat Message Bit时,则软件调用CanNm_RepeatMessageRequest();

  • NM_07: 当Repeat Message Timer超时,若此时本ECU不再需要网络,则进入准备睡眠状态Ready Sleep State(RSS)。

  • NM_08: 满足如下任一条件时,则从准备休眠状态Ready Sleep State(RSS)进入重复报文状态Repeat Message State;

    1、接收到Repeat Message Bit置1的网络管理报文

    2、ECU需要请求网络且需置上Repeat Message Bit时,则软件调用CanNm_RepeatMessageRequest();

  • NM_9: 当本ECU需要请求网络时,则软件调用CanNm_NetworkRequest(() ,请求进入Normal Operation State。

  • NM_10: 当本ECU不需要网络时,则软件调用CanNm_NetworkRelease() ,请求进入准备休眠状态Ready Sleep State(RSS):

  • NM_11: 当快速发送次数到达,但Repeat Message Timer计时未到达时, 则从Normal immediate State切换至Normal transmit State

  • NM_12: 在网络模式下的Ready Sleep State时,NM-Timeout Timer超时,则软件调用CanNm_NetworkRequest((),进入 预休眠状态Prepare Bus-Sleep Mode (PBSM);

  • NM_13: 在预休眠模式Prepare Bus-Sleep Mode(PBSM)下,

    若本模块存在本地唤醒请求,则软件调用CanNm_NetworkRequest()将状态机切换至网络模式的重复报文状态Repeat Message State(RMS),并进入其中的快速发送子状态。

  • NM_14: 在预休眠模式Prepare Bus-Sleep Mode(BSM)下,

    若收到其他节点的NM PDU,则软件调用CanNm_PassiveStartup(),将状态机切换至网络模式的重复报文状态Repeat Message State(RMS),并进入其中的正常发送子状态。

  • NM_15: Bus-Sleep Timer超时,则进入Bus-Sleep Mode,MCU进入休眠。

  • NM_16: 电源下电,退出网络管理。

  • NM_17: 在网络模式,若成功接收到一帧网络管理报文后,则重启NM-Timeout Timer定时器。

  • NM_18: 在网络模式,若成功发送一帧网络管理报文后,重启NM-Timeout Timer定时器。

  • NM_19: 在网络模式的Repeat Message State(RMS)或Normal Opeartion State(NOS),若持续Tx Timeout Timer未成功发送网络管理报文,则表示当前存在异常,需调用Nm_TxTimeoutException()进行异常处理。

  • NM_20: 若接收到非网络管理报文,则应该保持在Bus-Sleep状态

4、总结

1)网络管理主要负责CAN网络的休眠唤醒,以达到本ECU以及整车的休眠唤醒

2)从AUTOSAR规范上来看,主要涉及两个软件模块CanNM,NM模块

3)AUTOSAR网络管理总共有三个模式(网络模式/预休眠模式/休眠模式),其中网络模式里又有三个状态(重复报文状态/正常发送状态/准备休眠状态),另外重复报文状态里又有两个子状态(正常发送子状态/快速发送子状态)。具体详见下表:

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

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

相关文章

Element-Puls Form表单内嵌套el-table表格,根据表格复选框多选或单选动态设置行的验证规则

需求 根据 Table 表格内的复选框来控制当前选中行是否添加必填校验规则 效果图 实现思想 我们需要设置一个 flag 来标识已勾选的行,el-table渲染数据结构是数组对象形式,我们可以在每个对象中手动加如一个标识,例如默认:selected …

Windows环境 elasticsearch 及可视化界面 安装

安装 elastic 的官网 elastic.co/downloads/elasticsearch 当你解压好了归档文件之后&#xff0c;Elasticsearch 已经准备好运行了。按照下面的操作&#xff0c;在前台(foregroud)启动 Elasticsearch&#xff1a; cd elasticsearch-<version> ./bin/elasticsearch 如…

大型语言模型综述/总结 LLM A Survey of Large Language Models

A Survey of Large Language Model AbstractINTRODUCTIONOVERVIEW背景LLM的新兴能力LLM的关键技术GPT 系列模型的技术演进 大语言模型资源公开可用的模型检查点或 API常用语料库代码库资源 预训练数据收集架构 论文标题&#xff1a;A Survey of Large Language Model 论文地址&…

详谈Python的开发工具

Python作为一种流行的编程语言&#xff0c;在开发过程中需要使用各种工具来提高效率、简化工作流程和改善开发体验。在本文中&#xff0c;我们将介绍一些常用的Python开发工具&#xff0c;包括文本编辑器、集成开发环境&#xff08;IDE&#xff09;、虚拟环境管理工具、包管理器…

git常用命令集合及其演示

文章目录 一.git常用命令集合及其演示1.git config --list 查看配置信息2.git status 查看当前仓库的状态3.git add . 加到暂存区4.git commit -m "描述信息" 添加到版本库5.git diff xxxx 查看xxxx文件修改了哪些内容&#xff0c;相比于暂存区的区别6.git rm --cach…

PLSQL启动报错:Initialization error,不能初始化

出现场景&#xff1a;我这里原来有个旧版的PLSQL&#xff0c;想用新版的又装了个新版&#xff0c;启动的时候报错 解决办法 1.核对程序位数 第一个提示明显看到是和程序位数相关的&#xff0c;不管是32位还是64位要做到向匹配 2.设置oci.dll 第二个提示可以看到是和oci.dll…

03 Lombok+AOP思想+注解进化SqlSession工具类03

Lombok 实体类中除了定义好的属性外&#xff0c;我们常常还要写set/get构造方法等&#xff0c;用Lombok可以用一条注解帮忙生成。 一个Data会同时包含 Getter/Setter ToString EqualsAndHashCode RequiredArgsConstructor 使用方法&#xff1a;需要同时添加Lombok插件和Lombo…

【云原生】springboot 整合 OpenTelemetry

目录 一、前言 二、应用可观测性概述 2.1 什么是可观测性 2.2 可观测性三大指标 2.2.1 指标&#xff08;Metrics&#xff09; 2.2.2 日志&#xff08;log&#xff09; 2.2.3 追踪(Traces) 三、OpenTelemetry 介绍 3.1 什么是OpenTelemetry 3.2 OpenTelemetry架构和组件…

蓝桥杯省赛无忧 STL 课件17 map

01 map 02 multimap 03 unordered_map 04 代码示例

财务管理软件,用表格导出账目明细

不论是工资收入&#xff0c;还是日常花销&#xff0c;每一笔钱都需要我们认真对待。然而&#xff0c;许多人在财务管理上仍然采用传统的纸质记账方式&#xff0c;这不仅容易丢失数据&#xff0c;还难以实现财务的统一管理。为此&#xff0c;我为大家推荐一款简单好用的记账软件…

高效构建Java应用:Maven入门和进阶(二)

高效构建Java应用&#xff1a;Maven入门和进阶&#xff08;二&#xff09; 二.基于IDEA的Maven的工程创建2.1 梳理Maven工程GAVP属性2.2 Idea构建Maven JavaSE工程2.3 Idea构建Maven JavaEE工程2.4 Maven工程项目结构说明 二.基于IDEA的Maven的工程创建 2.1 梳理Maven工程GAVP…

ppt怎么录屏录音并且导出?好用录屏软件推荐

ppt已经成为了日常工作与学习中必不可少的工具&#xff0c;而ppt屏幕录制功能&#xff0c;可以方便用户将他人的演讲或视频中的内容记录下来&#xff0c;以便进一步学习与研究。录制ppt演示并将其导出为视频文件&#xff0c;可以帮助我们进行分享&#xff0c;但是很多人不知道p…

三种风格:山海鲸可视化软件模板的个性化定制之旅“

当我们谈论数据可视化时&#xff0c;一个好的可视化组件套件模板至关重要。一个优秀的模板不仅可以提高数据可视化的效果&#xff0c;还能让用户更加深入地探索和理解数据。作为山海鲸可视化软件的开发者&#xff0c;在提供免费好用的产品同时我们也希望最大限度降低用户设计难…

13、Redis高频面试题

1、项目中为什么用Redis 我们项目中之所以选择Redis&#xff0c;主要是因为Redis有下面这些优点&#xff1a; 操作速度快&#xff1a;Redis的数据都保存在内存中&#xff0c;相比于其它硬盘类的存储&#xff0c;速度要快很多数据类型丰富&#xff1a;Redis支持 string&#x…

逻辑回归(解决分类问题)

定义&#xff1a;逻辑回归是一种用于解决分类问题的统计学习方法。它通过对数据进行建模&#xff0c;预测一个事件发生的概率。逻辑回归通常用于二元分类问题&#xff0c;即将数据分为两个类别。它基于线性回归模型&#xff0c;但使用了逻辑函数&#xff08;也称为S形函数&…

Android Studio下载gradle反复失败

我的版本&#xff1a;gradle-5.1.1 首先检查设置路径是否正确&#xff0c;参考我的修改&#xff01; 解决方案 1.手动下载Gradle.bin Gradle Distributions 下载地址 注意根据编译器提示下载&#xff0c;我这要求下载的是bin 而不是all 2.把下载好的整个压缩包放在C:\Users\…

图像的初识

一、图像的数组表示 RGB能够构成人眼所能识别的所有颜色。 二、图像的变换 Example&#xff1a; img.shape Out[329]: (512, 768, 3) img.dtype Out[330]: dtype(uint8) #补值变换 shift_temp_img [255,255,255] - img shift_img Image.fromarray(shift_temp_img.astype(ui…

「 典型安全漏洞系列 」03.跨站请求伪造CSRF详解

引言&#xff1a;CSRF&#xff08;Cross-Site Request Forgery&#xff0c;跨站请求伪造&#xff09;是一种攻击技术&#xff0c;通过使用用户的身份进行不诚实地操作&#xff0c;恶意用户可以在受害者&#xff08;目标&#xff09;的机器上执行一些未授权的操作。这可能会危及…

Jenkins自动化部署docker

Jenkins自动化部署docker和普通方式构建 docker外挂目录 准备测试服务器docker环境准备jdk环境将上传jar包修改为app.jar对外暴露1000端口启动jar FROM openjdk:8-jdk-alpine ARG JAR_FILE COPY ${JAR_FILE} app.jar EXPOSE 1000 ENTRYPOINT ["java","-jar&q…

MobaXterm连接服务器步骤

双击该软件 选择Session 点击SSH 填写服务器的IP地址、服务器的用户名称、Port这个端口号一般都是这个&#xff0c;但有些可能例外&#xff0c;自己注意一下&#xff0c;最后点击OK就行 这个五角星点击一下&#xff0c;就可以看到您自己刚才的配置。 鼠标左键双击&…