AutoSar之CAN网络管理详解

article/2025/9/28 7:31:10

​AUTOSAR中网络管理主要使用了CAN接口(CanIf),并提供通用网络管理接口(NmIf)。CAN网络管理在CAN架构中所处的位置如图1,与其他模块的交互如图2。

图1 CAN架构

图2 网络管理和其他模块的联系

AUTOSAR网络管理基于分散的直接网络管理策略,这意味着每个网络节点仅依赖于通信系统中接收或传输的网络管理pdu来执行自给自足的活动。网络管理算法基于周期性的网络管理PDUs,通过广播传输被集群中的所有节点接收。接收网络管理PDUs表明发送节点希望保持网络管理集群处于唤醒状态。如果有节点准备进入总线休眠模式,它将停止发送网络管理PDU,但是只要接收到来自其他节点的网络管理PDU,它就会延迟向总线休眠模式的转换。如果由于不再接收网络管理PDU而导致计时器超时,则每个节点都将启动到总线休眠模式的转换。

如果网络管理集群中的任何节点需要总线通信,则可以通过传输网络管理PDU将网络管理集群从总线休眠模式中唤醒。

下面介绍几个相关的概念。

唤醒请求(Wake Up Request)

唤醒请求可分为两种:

● 主动唤醒请求:来自模块内部对网络的请求。主动唤醒节点的网络管理报文必须先于应用报文发送。

● 被动唤醒请求:来自总线上其他模块对该模块的网络请求。被动唤醒的节点,发送网络管理报文和应用报文的先后顺序无特别要求。

网络状态(Network States)

节点的网络状态包括以下两种:

● 网络请求:模块需要主动与总线上其他节点进行信息交换时,它必须通过发送网络管理报文来请求网络,并将其网络状态设置为“网络请求”;

● 网络释放:模块不需要主动与总线上其他节点进行信息交换时,必须将其网络状态设置为“网络释放”;需要注意的是,在网络释放状态下模块仍可能因总线上的其他节点请求网络而与其进行信息交互。

总线唤醒(Bus wake up)

采用AUTOSAR CAN 网络管理方式的ECU必须选择符合 ISO 11898-5 标准的高速 CAN 收发器。若ECU处于低功耗模式,仅在总线上出现符合ISO 11898-5标准定义的唤醒序列,且该 ECU成功接收到该网段定义的唤醒报文时才能够被总线唤醒。这里这条唤醒报文必须是该网段中 ECU 的网络管理报文。

理解上面几个概念后,我们可以看下AUTOSAR 网络管理模式(AUTOSAR Network Management Operational Modes)了,AUTOSAR网络管理(以下简称 CanNm)包含以下三种模式: 睡眠模式(Bus-Sleep Mode),预睡眠模式(Prepare Bus-Sleep Mode),网络模式(Network Mode) ,三种模式的切换过程如图3。

图3 网络管理状态切换图

睡眠模式

当节点没有主动网络唤醒及被动唤醒请求时,ECU 通信控制器切换至睡眠模式,ECU功耗降低至适当水平。在睡眠模式下,节点的网络管理报文和应用报文禁止发送,并且不能对总线上的报文进行ACK应答。同时节点在该模式下,如果检测到有效的唤醒源,节点必须被唤醒。

预睡眠模式

在预睡眠模式下,总线活动静止下来,最终达到总线上没有活动,ECU通信控制器状态处于工作模式。在该模式下,节点的网络管理报文和应用报文禁止发送,但应该对总线上的报文进行 ACK应答。节点的网络管理状态必须保持预睡眠模式一段时间,一旦超时,网络管理状态应该离开预睡眠模式,进入睡眠模式。

网络模式

网络模式可分为三种内部状态:

重复报文状态 (Repeat Message State)
常规操作状态 (Normal Operation State)
准备睡眠状态(Ready Sleep State)

重复报文状态

重复报文状态包含两个子状态:

  • 网络管理报文快速发送状态
  • 网络管理报文正常发送状态

NM PDU 快速发送状态

节点在进入NM PDU快速发送状态时,必须开启或重置NM-Timeout Timer,为了快速唤醒网络,必须以快速周期发送网络管理报文,同时不得发送正常周期网络管理报文;所有的应用报文必须在第一帧快速NM PDU报文发送开始后延迟一定时间才能发送。在NM PDU快速发送状态下,节点一旦接收或发送一条网络管理报文,或者NM-Timeout Timer超时,NM-Timeout Timer会立即重置。

NM PDU 正常发送状态

进入NM PDU 正常发送状态后,节点必须以正常周期发送网络管理报文。若节点因被动唤醒请求进入NM PDU正常发送状态,必须开启NM-Timeout Timer,同时所有的应用报文必须从节点检测到唤醒请求后延迟Tx_Enable_Time 才能发送。在NM PDU正常发送状态下,节点一旦接收或发送一条网络管理报文,或者 NM Timeout Timer超时,NM Timeout Timer会立即重置。

节点的网络管理状态保持重复报文状态一段时间(这段时间一般可以配置),一旦超时,网络管理状态会离开重复报文状态。在该状态下,节点的网络管理报文和应用报文能够正常发送。

常规操作状态

当节点处于网络模式因主动网络请求需要与网络上其他节点继续进行通信时,必须保持在常规操作状态。在常规操作状态下,节点一旦接收或发送一条网络管理报文,或者NM-Timeout Timer超时,NM-Timeout Timer应该立即重置。在该状态下,节点的网络管理报文和应用报文必须正常发送。

准备睡眠状态

节点进入准备睡眠状态后,必须停止发送网络管理报文,所有的应用报文在NM Timeout Timer超时后必须停止发送。在准备睡眠状态下,节点一旦接收到一条网络管理报文,NM Timeout Timer会立刻重置。NM Timeout Timer超时,节点的网络管理状态应该进入预睡眠模式。

网络管理报文(NM PDU)

网络管理报文格式(NM PDU structure)

AUTOSAR CAN 网络管理报文的数据场格式如下表所示:

源节点标识符(Source Node Identifier)

NM PDU的字节 0 用于发送源节点标识符,每一个 ECU 都会被分配一个唯一的标识符,来告知接收节点该 NM PDU 是由哪个节点发送的。

控制比特向量(Control Bit Vector)

NM PDU 的字节 1 被分配用于发送控制比特向量。其中:

bit 0 :重复报文状态请求位;

bit 3 :网络管理睡眠协调位;

bit 4 :激活唤醒位;

bit 6 :部分网络信息位;

其他bit位暂时预留。

用户数据域(User Data)

网络管理报文的字节 2 到字节 7 用于发送用户自定义的数据信息,这些字节目前各项目为扩展预留,都被填充为‘0x00’。

网络管理状态切换(Network Management State Transition)

对照图一起看下:

(高清图可在微信公众号后台回复“网络管理”获取)
Condition_01

节点供电状态从电池off切换到电池on 后,节点必须进行网络管理模块CanNm初始化,初始化完成后节点必须进入睡眠模式,并且需要立即具备被主动唤醒请求或者被动唤醒请求唤醒的能力;

Condition_02

当节点处于睡眠模式时,如果收到有效的网络管理报文,那么节点将离开睡眠模式并进入重复报文状态中的NM PDU正常发送状态。进入NM PDU正常发送状态后,在计时器Repeat Message Timer超时以前,节点必须以正常周期发送网络管理报文。在节点收到网络管理报文时,它向总线发出的第一帧报文可以是网络管理报文也可以是应用报文。

Condition_03

如果节点在睡眠模式下检测到主动唤醒请求,那么节点必须发送网络管理报文来主动唤醒网络,在节点主动唤醒网络的过程中,必须首先进入NM PDU快速发送状态。当节点因主动唤醒请求需要唤醒网络时,必须快速发送连续NM PDU报文。

Condition_04

处于NM PDU快速发送状态的节点,在计数器为零时,节 点 将 进 入NM PDU正常发送状态,并开始等待一段时间后以正常周期发送网络管理报文。

Condition_05

处于重复报文状态下的主动请求网络节点,如果Repeat Message Timer 发生超时,但节点的主动网络请求仍持续存在,节点必须进入常规操作状态。节点继续保持以正常周期发送网络管理报文和应用报文PDU。

Condition_06

处于常规操作状态的节点,如果释放所有的网络请求,不再需要主动请求网络,那么它必须立即将网络管理状态切换到准备睡眠状态,同时该节点必须立即停止发送网络管理报文。

Condition_07

处于准备睡眠状态的节点,如果检测到主动网络请求,节点必须立刻进入常规操作状态,

同时必须开始以正常周期发送网络管理报文和应用报文PDU。

Condition_08

处于重复报文状态的NM PDU正常发送状态的节点,如果没有检测到主动网络请求,一旦 Repeat Message Timer超时,节点将进入准备睡眠状态。

Condition_09

处于准备睡眠状态的节点如果没有检测到主动网络请求,一旦NM Timeout Timer超时,节点将进入预睡眠模式。

Condition_10

处于预睡眠模式的节点,如果收到被动唤醒请求,节点将进入重复报文状态的NM PDU正常发送状态。

Condition_11

处于预睡眠模式的节点,如果检测到主动唤醒请求,节点将进入重复报文状态的NM PDU快速发送状态。

Condition_12

处于预睡眠模式的节点如果不再收到主动或被动唤醒请求,一旦Wait Bus-Sleep Timer超时,节点将进入睡眠模式。

Condition_13

在任何状态下发生电池掉电,节点都将进入关闭模式,不再拥有任何通信和网络管理的功能。

AUTOSAR网络管理的算法与处理器无关,即它不依赖于任何处理器特定的硬件支持,因此可以在AUTOSAR范围内的任何处理器架构上实现。

状态转换的时序图

当唤醒请求(主动唤醒请求、被动唤醒请求)将节点的网络管理状态激活时,该节点的所有应用报文必须延迟一定时间后才能够开始发送。网络中的被唤醒节点网络管理报文的发送不受 延迟时间的限制,可以在它结束前发送,但首帧网络管理报文必须在节点进入重复报文状态后再延迟一定时间发送,以避免被唤醒节点同时发网络管理报文而形成网络拥堵。

NM信号发送的时序图

NM信号接收的时序图

NM协调过程

在睡眠的过程中,一旦NM Timeout Timer超时,节点所有的应用报文必须立刻停止发送。

上图描述的案例是针对单一主动唤醒请求触发的唤醒与睡眠过程,当多个唤醒请求交错发生时,各唤醒请求必须遵守各自的定时参数,不会互相影响。

文中名词解释:

AUTOSAR:AUTOmotive Open System Architecture, 汽车开放系统架构

CAN:Controller Area Network, 控制器局域网

NM:Network Management, 网络管理


NM PDU:Network Management protocol data unit, 网络管理协议数据单元

CanIf:CAN Interface CAN接口

CanNm:CAN Network Management CAN网络管理

CBV:Control Bit Vector 控制比特向量

DTC:Diagnostic Trouble Code诊断故障码

CWU:Car Wakeup 整车唤醒

ERA:External Request Array 外部请求数组

EIRA:External and Internal Request Array 外部和内部请求数组

PNC:Partial Network Cluster 部分网络集

PNI :Partial Network Information 部分网络信息


http://chatgpt.dhexx.cn/article/vxWkypkL.shtml

相关文章

CAN网络通信

1.网络层概述 1.1综述 这部分描述了网络层的整体功能。TP协议规定了用于网络节点之间交换数据的网络层通信协议,例如ECU与ECU之间,或测试设备与ECU之间。如果要传输的数据不能使用单个的CAN帧传输,则提供一种分包传输的方法。 传输通道是通信链路的物理组成部分,包含接收/传…

CAN网络管理Autosar(入门)

一,个人小心得 作为刚入门两个月汽车电子行业的软件工程师,现阶段在学习汽车组合开关的测试(主要用CANoe软件),在学习过程中总结了一些自己理解的知识点,当然也希望得到大佬们的指点。当然如果要做一个优秀…

汽车总线CAN网络分层机构 --3

CAN网络分层机构 CAN的分层结构 遵循ISO/OSI标准模型,CAN规定了分数据链路层和物理层。数据链路层又分逻辑链路控制子层LLC和媒体访问控制子层(MAC) CAN协议层 LLC子层和MAC子层的运行被“故障界定“实体监控着。错误界定是一种能区分短期干扰和永久故障的自校验…

AUTOSAR —— CAN网络管理(CanNm)

1. 网络状态 AUTOSAR网络管理节点内部有两个状态,一个是Requested - 被请求状态,另一个是Released - 被释放状态,当节点的应用层需要使用总线进行通讯的时候,会调用接口使得节点进入请求状态,当应用层没有通信需求的时…

AUTOSAR通信篇 - CAN网络通信(二:CanIf)

目录 初始化 数据发送 请求发送 发送数据流 发送缓存 发送确认 数据接收 数据接收提醒 读取接收数据 CAN控制器模式 控制器模式转换 唤醒 PDU通道模式控制 PDU通道组 PDU通道模式 总结 在上一篇,我们介绍了CAN模块,接下来我们介绍在CAN模…

整车CAN网络介绍

整车CAN网络介绍 CAN(Controller Area Network)控制器局域网络,CAN网络在早期的整车应用中以BCM(车身控制器)为控制中心,主要是车身零部件(雨刮/大灯/车窗…),智能硬件较少,所以早期的正常CAN网络把所有其他的ECU全部放在Other EC…

CAN网络基础知识_20220727

目录 通信协议 汽车网络如何进行数据的传输以及节点的通信? 高速CAN差分电压示意图 低速CAN差分电压示意图 通信协议的基本规则 通讯帧格式 数据帧结构/帧起始​编辑/仲裁场​编辑/控制场/数据场/CRC校验场 应答场/帧结束/拓展帧​/远程帧/错误帧结构/过载帧…

【CAN总线学习01】CAN网络概述

一、车载网络概述 1.1 车载网络起源及CAN诞生条件 二十世纪九十年代前,传统汽车的电器系统中各个模块之间采用点对点的通信方式,造成了庞大的布线系统,加之汽车近年来电子化、智能化趋势,独立运行的ECU足以实现电子功能。但工程…

CAN网络总线_20220720

本文提纲: 一、CAN 网络概念 二、新、老车型CAN网络对比 三、CAN网络ID规范 四、CAN网络规范 本文主要介绍了: 通过对CAN网络及其架构的学习,来对比熟悉新、老车型CAN网络架构; 学习CAN网络ID命名规范、CAN网络规范&#xf…

浅谈数据仓库维度建模

浅谈数据仓库维度建模流程 谈到Big Data就离不开数据仓库、数据集市等概念,而谈到数据仓库、数据集市,就又离不开数据仓库设计的方法,维度建模则是其中的典型。与维度建模相对立的则是范式建模,范式建模常用于传统的DB关系型数据库…

维度建模+实例

https://www.cnblogs.com/suheng01/p/13522677.html 第一步:选择业务过程 1、通过对业务需求以及可用数据源的综合考虑,确定对哪种业务过程开展建模工作 2、建立的第一个维度模型应该是一个最有影响的模型——它应该对最紧迫的业务问题作出回答&#…

数据仓库-维度建模

目录 1. 数据仓库定义 2. 数据仓库和数据库 3. 数仓分层 4. 维度建模 4.1 维度建模 VS 第三范式 4.2 维度建模设计过程 5. 粒度概念 6. 事实概念 6.1 事实表技术 7. 维度概念 7.1 维度表技术 8. 数据关系模型 8.1 星型模型 8.2 星座模型 8.3 雪花模型 9. 写在最…

维度建模详解

文章目录 1 维度设计1.1 代理键(太复杂,不推荐)1.2 稳定维度1.3 缓慢渐变维 > 拉链表1.4 维度表的拆分、合并 2 事实表设计2.1 明细事实表(dwd)2.1.2 案例:2.1.3 存储方案2.1.4 事实拉链表示例: 2.2 聚合事实表(dws)2.2.1 分类2.2.2 案例 …

老司机带带我:数仓建模架构|维度建模剖析与案例演示

作者基于多年的大数据处理经验,当前管理着100PB数据仓库和2000节点的集群。持续系统化给大家分享一下关于数据仓库建设的经验总结。本系列既有数据仓库的形而上学理论体系,也有结合公司业务的实践,既有大厂如阿里巴巴,京东&#x…

维度建模入门

1 概念 维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法。数据集市可以理解为是一种"小型数据仓库"。 1.1 维度表(dimension) 维度表示你要对数据进行分析时所用的一个量,比如你要分析产品销售情况, 你可以选择按类别来进行分…

数据仓库——维度建模

数据仓库——维度建模 在维度建模中,将度量称为“事实”,将环境描述为“维度” 维度表 维度表概念 维度是维度建模的基础和灵魂。在维度建模中,将度量称为“事实”,将环境描述为“维度”,维度是用于分析事实所需要…

维度建模基本流程总结

一、维度建模基本流程图 数据RD进行业务调研和数据现状调研,产出符合相关模版规范的业务知识文档和数据现状文档。数据PM也会调研相关业务产出需求设计文档,三方参与需求评审,评审通过后基建数据RD进行需求拆解,产出技术方案&…

维度建模的基本理论

维度建模 围绕三个问题来展开 1、怎么组织数据仓库中的数据? 2、怎么组织才能使得数据的使用最为方便和便捷? 3、怎么组织才能使得数据仓库具有良好的可扩展性和可维护性? 维度建模两大派系 Bill Inmon(数据仓库之父) 的企业…

Kimball 维度建模理论

一、维度建模分为两种表 事实表 存在这样一些数据,如行为记录,操作记录,订单,日志等,都可以作为事实表 特点:每条数据都有一个唯一键,数据通常来说不会更新,随着时间的增加而增加维…

维度建模示例

以库存模块和零售模块这两个模块来谈一谈维度建模的相关事项梳理库存业务中的表的构造与设计思想梳理一下缓慢变化维的处理方法与优缺这篇博客计划用周末来完成,只能简单的讨论一下建模概况,从维度建模这本书中摘录出一些重要的知识点,对于维度建模这本书的报告计划在5.1之前完…