• 504查看
  • 0回复

[网络开发] CAN通讯系列补充篇:OSEK NM异常工况分析11

[复制链接]


该用户从未签到

发表于 7-1-2024 16:44:59 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


本文经CSDN博主- 嵌软小白呗允许转发,感谢支持!分享了几篇作者关于AutoSAR NM相关内容后,本文接着了解OSEK NM,OSEK NM也是汽车ECU常用的网络管理方法,后续对两者做个比较,以此可以更清晰地了解网络管理。本文将在原文基础上稍作修改,欢迎关注作者。
原文链接:全面详细讲解OSEK直接网络管理,并对比Autosar网管。介绍提到以逻辑环为学习OSEK NM的突破口,引出4个问题:1、(开始)这个逻辑环是怎么建立的?2、(运行过程)逻辑环运行过程中,有一个新的ECU节点加入怎么处理?3、(运行过程)逻辑环运行过程中,有一个ECU节点异常退出怎么处理?4、(结束)如果所有ECU都不需要工作了,如何结束逻辑环进入休眠?目前还剩运行过程的2个问题未作解答,本文就针对这两个问题进行解答。1 运行过程:逻辑环运行过程中,有一个新的ECU节点加入怎么处理?当CAN总线上各节点唤醒并且处于逻辑环正常工作的时候,在一遍逻辑环的循环中的每个ECU肯定能被指向一次。如果这时有个ECU打开自己的CAN通道接入CAN总线中,CAN总线肯定没有一个ECU发的网管报文是指向它的。这怎么办呢?这时,新加入的ECU需要具备检测自己是否被逻辑环跳过的机制,当发现自己被跳过后,需要立即发送Alive报文,以加入逻辑环中。官方解释及检测是否被跳过的算法流程图,如下所示:
CAN通讯系列补充篇:OSEK NM异常工况分析11w1.jpg

CAN通讯系列补充篇:OSEK NM异常工况分析11w2.jpg
其中:R:Receiver为接收到网管报文的ECU(可以理解为自己)S:Source为发送网管报文的ECU(可以理解为发网管报文过来的ECU)D:Destination为所发送的网管报文的指向地址(可以理解为发网管报文过来的ECU的网管报文的指向地址)以第3行举例如下:
CAN通讯系列补充篇:OSEK NM异常工况分析11w3.jpg

假设Source为0x08,Destination为0x00, Receiver为0x0F。即Source节点发送的网管报文的指向地址为0x00,但是由于Receiver节点的地址是0x0F,因此,Source节点应该发送网管报文的指向地址为0x0F。可以发现Receive节点被跳过了,如下分析:

CAN通讯系列补充篇:OSEK NM异常工况分析11w4.jpg

CAN通讯系列补充篇:OSEK NM异常工况分析11w5.jpg
其它情况也是同样的分析方式。2 运行过程:逻辑环运行过程中,有一个ECU节点异常退出怎么处理?
2.1 某个ECU异常退出对于其它节点网管状态的影响:

逻辑环正常工作的时候,某个节点异常退出,对其它节点而言的现象,就是突然少了这个节点的Ring报文。

我们先看下逻辑环正常工作时,一帧Ring报文对其它节点有什么作用。

影响①:对Ring报文指向的ECU节点的作用。即Ring报文指向的ECU需要开启TTyp计时器,等待计时器到时后就发出它的Ring报文。

CAN通讯系列补充篇:OSEK NM异常工况分析11w6.jpg
影响②:对Ring报文不指向的ECU节点的作用。即当ECU接收到不指向自己的Ring报文的时候,会关闭TTyp定时器,因为Ring报文不指向它,所以下一个发Ring报文的ECU不是它,当然就不需要开启TTyp定时器。
CAN通讯系列补充篇:OSEK NM异常工况分析11w7.jpg
可见,当某个ECU突然退出逻辑环,当出现指向这个ECU的Ring报文时,其它所有ECU的TTyp定时器都会关闭,但由于最后一帧Ring报文指向的这个ECU退出了逻辑环,因此它不会再发出Ring报文了。逻辑环到它这就卡住了。因此,若Ring报文只控制CAN总线网络上ECU节点的TTyp计时器,则还无法监测到某个ECU退出逻辑环的情况。于是,另外一个叫做“TMax”计时器就排上用场了,  “TMax”定义如下:
CAN通讯系列补充篇:OSEK NM异常工况分析11w8.jpg
即两帧Ring报文之间最大的时间间隔。我们再来看下“ TMax”定时器开启、关闭及计时器到时动作,如下图所示:
CAN通讯系列补充篇:OSEK NM异常工况分析11w9.jpg
由上图可见,接收到不指向自己的Ring报文后会开启“TMax”定时器。并且当定时器到时后,NM状态会进入RESET状态。因此,当某个ECU突然退出逻辑环后,其它所有ECU的TTyp定时器都会关闭,但同时会开启“TMax”定时器,当定时器时间一到,CAN总线网络上每个正常节点都进入RESET状态,重新发送Alive报文,然后重复开始建环的动作。
CAN通讯系列补充篇:OSEK NM异常工况分析11w10.jpg

2.2 某个ECU异常退出对自己内部网管状态的影响:首先要知道,正常情况下,参与CAN网络的节点是不可能无故退出网络的,某个ECU退出CAN网络只有两种情况:① 该ECU的接收出问题了,导致无法接收网管报文。② 该ECU的发送出问题了,导致无法发送网管报文。那么,怎么样算接收出问题,怎么样算发送出问题?官方定义两个参数:
CAN通讯系列补充篇:OSEK NM异常工况分析11w11.jpg

这两个参数的值由车企定义。一般来说,rx_limit = 4。tx_limit = 8,阈值rx_limit和tx_limit对应两个计数器:

CAN通讯系列补充篇:OSEK NM异常工况分析11w12.jpg

当NMrxcount大于等于rx_limit或tx_limit大于等于NMtxcount,则认为ECU通信出现错误,NM状态进入NMLimpHome状态。

CAN通讯系列补充篇:OSEK NM异常工况分析11w13.jpg

NMrxcount和NMtxcount计数器累加或清0的条件:

CAN通讯系列补充篇:OSEK NM异常工况分析11w14.jpg

即:
进入NMRest状态:①NMrxcounter加1②NMtxcounter加1进入NMNormal状态:①成功接收网管报文时,清空NMrxcounter②成功发送网管报文时,清空NMtxcounter③有发送网管报文的请求时,NMtxcounter加1好了,当有了一些LimpHome的基本概念后,那么当ECU的通信出错后,具体是如何进入LimpHome状态的?下篇文章我们来详细分析。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 1-2-2025 14:47 , Processed in 0.426174 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.