首先介绍一下,我是一名刚刚入职1个月的汽车网络测试工程师,目前主要是一边学习一边跟着公司前辈做一个项目,主要的内容就是进行通信、网络、诊断方面的测试。想以文字的形式记下自己学习的一些感想或者是经验之类的,达到巩固知识的目的,同时也希望能通过这种形式与各位同行多多交流学习。今天就先直接说说关于CAN网络管理状态转换的一些内容吧,下面是一个网络管理的逻辑图:


上面就是我画的一个比较简单的网络状态转换逻辑图,在说明这张图之前,我先介绍以下其中用到的定时参数:
T_WAKE_UP:唤醒时间,用来计算从睡眠模式进入到网络模式并且开始发送第一帧NM(网络管理)报文的时间。
T_START_NM TX:这个时间用来描述从预睡眠模式、正常操作状态或准备睡眠状态进入到网络模式并开始发送第一帧NM报文的时间。(4种情况)
T_START_AppFrame:在成功发送第一帧NM报文后发送应用报文的时间。
T_REPEAT_MESSAGE:这个时间是指处于重复信息状态的时间。
T_NM_TIMEOUT:只要节点进入网络模式就开始启用这个计时器,当计时器到时后就会进入预睡眠模式。(在网络模式下成功接收NM报文就会重新开始计时)
T_ImmediateCycleTime:快速发送NM报文的周期时间。(只有在满足一定条件下进入重复信息状态下才有)
T_NM_MessageCycle:NM报文发送的正常周期时间。
T_WAIT_BUS_SLEEP:在总线预睡眠模式下启动该定时器,当定时器到期后即进入总线睡眠模式。
介绍完时间参数,现在来理一理网络管理状态转换的过程:
一开始在接通电源后初始化网络管理,总线处于睡眠模式,在这个模式下不能收发NM报文和APP报文;当收到NM报文或网络请求(本地条件)后,就会进入网络模式(默认进入重复信息状态)并开始发送报文(T_WAKE_UP、T_REPEAT_MESSAGE、T_NM_TIMEOUT、T_START_AppFrame)。在这两种情况下的NM报文的发送周期也不相同,如果是由于网络请求(本地条件)进入重复信息状态,则先以快速发送周期发送一定次数后再进行正常周期发送;若由于接收NM报文进入重复信息状态,则以正常发送周期发送NM报文。
当T_REPEAT_MESSAGE到期时,如果总线依然有通信需求,则进入正常操作状态(重复信息状态和正常操作状态都可以收发NM报文和APP报文);如果总线没有通信需求,则进如准备睡眠状态(停止发送NM报文,可以接收NM报文,收发APP报文)。在正常操作状态下,停止发送NM报文后立即进入准备睡眠状态。
在重复信息状态和正常操作状态下有两种情况可以回到重复信息状态,一种情况是自身的重复信息请求,另一种情况是收到重复信息请求位为1的NM报文,这个重复信息位在下面会进行解释。
当处于准备睡眠状态下T_NM_TIMEOUT到期时,则进入总线预睡眠模式(启动T_WAIT_BUS_SLEEP定时器),在这个状态下,若T_WAIT_BUS_SLEEP到期,就进入总线睡眠模式;若接收到NM报文或网络请求(本地唤醒),则进入重复信息状态。此时NM报文的发送周期与从睡眠模式进入重复信息状态时一样。
注:本地条件还有自身的重复信息请求所需条件是由主机厂进行定义的,所以我目前进行的单节点测试并没有涉及;测试所用到的本地唤醒通过上K15电实现。
以上就是网络管理状态转换的基本逻辑,下面说说网络管理报文的格式:

可以看到,网络管理的报文格式为10个位,即3个位的网络管理基本地址+1个字节的ECU地址,0x4**为网络管理报文的基本地址,所以网络报文的ID范围为0x400-0x4FF。举个例子,若ECU地址为06,则NM报文ID为406,若ECU地址为13,则NM报文ID为413,以此类推。展示一下CAN报文ID范围图:
然后是一个非常重要的数据部分,有8个字节:

Byte0就是刚刚说的ECU地址了;
Byte1为控制位矢量,这8个位里有两个非常重要:bit0和bit4。bit0就是之前说的重复信息请求位,主要由两点(1)该位默认值为0,当由于自身重复信息请求而从正常操作状态或准备睡眠状态进入重复信息状态时,此位置1,直到再次进入正常操作状态或准备睡眠状态。(2)若在正常操作状态或准备睡眠状态收到此位为1的NM报文,例如:byte1=01,则进入重复信息状态,该位置0。 bit4是主动唤醒位,如果由于网络请求(本地唤醒)从睡眠或预睡眠模式进入重复信息状态,此位置1,直到再次进入预睡眠模式;当由于接收到NM报文从睡眠或预睡眠模式进入重复信息状态,此位置0。
用户数据字节是自定义的,需要参考通信矩阵进行解读。

比如有个报文为: 406 06 10 00 00 00 00 00 00
406为ID,06是ECU地址,Byte1=10,即主动唤醒位=1,重复信息位=0,表示当前处于重复信息状态,并且是由于本地条件唤醒的。

    先写这么多吧,第一次写可能写的不是很好,有错误的请帮忙指正,有问题也可以提出来一起交流。发现网上关于使用CANoe进行测试的内容比较少,下次打算写写CANoe测试方法之类的,毕竟实践才是最重要的。

关于CAN网络管理状态相关推荐

  1. 车联网_网络管理ECU状态转换

    网络管理ECU的状态转换(2022年各车企版本大致相同) 模式和状态说明网络管理模式和状态说明如表所示. 状态 描述 状态网络模式 描述网络模式包括三种内部状态:启动状态.正常运行状态和准备休眠状态. ...

  2. 科普系列:AUTOSAR与OSEK网络管理比较(下)

    在上篇中我们分别在状态机和报文格式方面对OSEK和AUTOSAR网络管理进行了简单介绍,感兴趣的小伙伴请移步至文章<科普系列:AUTOSAR与OSEK网络管理比较(上)>. 三.OSEK与 ...

  3. 科普系列:AUTOSAR与OSEK网络管理比较(上)

    一.前言 汽车网络管理从根本上来说是为了省电的,基本的实现方式就是汽车在没有使用的情况下一些ECU会通过网络管理协调进入低功耗模式或者睡眠模式,从而达到省电的目的.目前主流的网络管理标准有两个,一个是 ...

  4. CAN总线的AUTOSAR网络管理

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

  5. AUTOSAR网络管理

    了解如何测试AutoSar网络管理之前,先要了解什么是AutoSar网络管理 AutoSar网络管理 什么是AutoSar Automotive Open System Architecture,汽车 ...

  6. AUTOSAR PN网络管理测试开发实践

    背景介绍 提起"匮电"二字,做测试的老司机定会虎躯一震,而根据过往经验,"网络管理"常是引起匮电的"钉子户",所以针对网络管理的验证是测试的 ...

  7. 硬核科普:到底啥是云原生?

    本文主要根据课程 什么是云原生?_哔哩哔哩_bilibili 总结而来,其他参考文章如下: <云原生人才计划之Kubernetes 技术图谱>发布! - 知乎 (zhihu.com) ku ...

  8. vmware下ubuntu重启后不能上网

    重启电脑以后,ubuntu的网络图标消失,可能是虚拟机不稳定导致网络启动失败,打开终端, 执行以下命令, cat /var/lib/NetworkManager/NetworkManager.stat ...

  9. Autosar Nm机制

    先从状态机说起: AUTOSAR网络管理状态: 睡眠模式(Bus-Sleep Mode):当节点没有本地网络唤醒以及远程唤醒请求时,ECU通讯控制器切换至睡眠模式,ECU功耗降低至适当水平:此模式下, ...

  10. 第三届世界5G大会召开之前,我们来复习一下这本6G白皮书

    凌云时刻 编者按:主题为"5G深耕,共融共生"的第三届世界5G大会将于8月6日到8日回归北京举行,作为全球首个5G领域的国际型盛会,它从开始就见证着中国5G建设的历程.XG实验室作 ...

最新文章

  1. cifs------网络文件系统(2)
  2. 注册表----修改Win7登录界面
  3. Redis常用命令之操作Hash类型
  4. Druid如何自动根据URL自动识别DriverClass的
  5. cf1552F. Telepanting
  6. Maven实战(Maven+Nexus建立私服【Linux系统】)
  7. pytorch-pretrained-bert的模型下载慢的问题
  8. restful api php,RestfulAPI · ThinkPHP6.0接口开发与应用及uniapp快速入门(更新完毕) · 看云...
  9. 再等等!华为折叠屏手机Mate X预计在7月底至8月初开售
  10. 从零开始学前端:作用域、执行顺序 --- 今天你学习了吗?(JS:Day9)
  11. layUI日期框回调函数
  12. 创建Android Virtual Device
  13. halcon 深度学习标注_halcon深度学习: 分类
  14. 【css】css实现斜线表头
  15. 阿里云DataV数据展示的一些sql写法
  16. centos(一)安装及 设置基础软件仓库出错 的问题
  17. Android显示raw格式,手机上怎么处理RAW格式?有何不同?
  18. 厦门大学计算机学院控制系,厦门大学
  19. Latex 自定义命令与环境、箱子
  20. U盘可以被电脑识别,但无法读取U盘里的内容

热门文章

  1. python在视频上方加字_python 使用 MoviePy 给视频添加文字水印demo实现[附代码]
  2. Wireshark捕获过滤器
  3. kettle读txt文件并处理
  4. 扫描仪服务器正在运行中,针对使用 Acrobat 时出现的扫描仪问题的故障排除提示...
  5. 【WPS】数学公式用插入打的 为什么公式显得比字体靠上
  6. android点击特效,android 点击特效动画
  7. 【单片机基础】(四)单片机的引脚功能
  8. Pyrene-PEG-Acid,芘丁酸聚乙二醇羧基,Pyrene-PEG-COOH
  9. 06_标识符的命名规则(笔试)
  10. 音频降噪-fir滤波器