• 0
  • 0
分享
  • 汽车控制器CAN网络管理解析及测试方法(OSEK)——软件测试圈
  • 小丸子🍡 2024-07-09 16:31:26 字数 3324 阅读 909 收藏 0

  一、网络管理功能的目的

  解决蓄电池电量有限,如果整车控制器同时工作会造成电池亏电的问题。通过网络管理功能,当用户需要请求相关功能时,参与该功能的相关ECU节点才需要启动起来。

  协调各 ECU 同时进入网络睡眠模式;车载控制器网络管理功能就是通过在各个ECU的网络上,发送一些命令制定一套规则,来实现整车各个ECU的协同睡眠和唤醒。按照唤醒方式,我们可以将ECU网络节点类型划分为本地唤醒与远程唤醒。本地唤醒:唤醒源来源于自身模块,比如KL15硬线唤醒;远程唤醒:唤醒源来源于自身ECU节点所在的网络报文,该节点可以处于完全休眠状态;

  二、结合硬件电路说说网络管理功能

  为了支持睡眠和唤醒,ECU的芯片必须支持低功耗模式和正常工作模式的切换。低功耗模式(ECU睡眠)指一个ECU断电或者处于极少数的外围器件工作的模式;唤醒指的是ECU处于全工作模式。

  休眠机制:控制器在一段时间接收不到CAN网络管理帧,控制器的主芯片MCU通过GPIO口控制TJA1043 CAN芯片管脚STB_N为低电平和管脚EN为高电平,经过最小保持时间后芯片进入休眠模式,CAN芯片INH管脚置低。TLE8366电源芯片使能管脚EN置低(INH连接至电源管理芯片EN脚),停止输出主5V电源,主芯片不工作,整个控制器断电不再工作。TJA1043进入低功耗状态,仅由汽车电池对管脚VBAT提供基础工作电源。

  唤醒机制:控制器收到CAN网络管理帧,TJA1043短时唤醒,INH管脚置高。电源芯片使能管脚EN置高(INH连接至电源管理芯片EN脚)开始输出主5V电源,主芯片开始工作,MCU进入工作状态后立即控制CAN TJA1043芯片管脚STB_N为高电平和EN为高电平,使TJA1043从休眠模式进入待机模式后开始正常工作。

1-1.jpg

  三、网络管理功能的工作原理

1-2.jpg

  所有参与直接网络管理的ECU,建立逻辑环的通信机制:是由若干个节点组成的环状结构,每个节点都有一个逻辑上的后继节点,而最后一个节点的后继节点又是第一个节点,这样就组成了一个环状的结构。NM 报文以这种令牌环机制依次发送形成逻辑环;网络管理报文ID从小到大发送,然后从最大节点到最小节点依次建成逻辑环。

  唤醒后建立逻辑环过程:申请和传递的路径。

  1) 控制器唤醒后想参与网络的节点会先发Alive报文申请加入逻辑环。

  2)逻辑环建成后,各节点按顺序发Ring报文向后续节点传递“令牌”。

1-3.jpg

  每个参与网络管理报文包括ID和目标地址、操作码、用户数据部分组成。ECU 都有一个特定的网络管理地址;网络管理报文类型分为 Alive 报文、Ring 报文和 LimpHome 报文,通过操作码的组合形式实现;

  当建立逻辑环,ECU 发送Ring 报文,接收到Ring 报文的其它 ECU 监控目标地址,判断是否被跳过,若被跳过则发送Alive 报文,提示其它 ECU 更新逻辑后继,重新建立逻辑环;

  逻辑环稳定时,ECU不需要 CAN通信时,该 ECU 将发送的 Ring 报文中设置SleepInd,以通知网络中其它 ECU。当逻辑环中所有的 ECU 都发送了设置 Sleep.Ind 的 Ring 报文,总线上所有 ECU 都满足睡眠条件的 ECU 会发送Sleep.Ack的 Ring 报文,网络中所有的 ECU 接收到设置 Sleep.Ack 的 Ring 报文后同步进入等待睡眠状态;如果在进入等待睡眠状态后 t WaitBusSleep 时间内,网络中所有 ECU 没有检测到中断事件,将同步进入睡眠状态。如果ECU 监测到中断事件,则 ECU 重新发送 Alive 报文,重新建立逻辑环;如果应用程序需要 CAN 通信,睡眠指示位将被复位,此时 ECU 睡眠条件不满足,即 Sleep.Ind=0;当应用程序不再需要 CAN 通信,此时 ECU 睡眠条件满足,在下次发送 NM 报文时会将其睡眠指示位置位,即Sleep.Ind=1。

  四、网络管理报文格式

1-4.jpg

  OSEK网络管理报文规则:

  ID:4xx,其中4代表此帧报文为网络管理报文,xx代表当前节点的基地址。在OSEK网络管理中会给每个节点分配一个基地址(00~FF)。

  Byte0: 网络管理报文发送的目标地址。表明网络管理报文是发送给哪个控制器节点。

  Byte1:代表发送的网络管理报文的类型即是ring报文还是Alive报文或者LimpHome报文;01:代表 Alive报文,在总线上声明自己的存在,请求其他节点与自己建环。02:代表Ring报文;12:代表当前节点已无通讯请求(睡眠标志位置位SleepInd=1),即告知其他节点我已满足睡眠条件;32:睡眠应答请求(SleepAck =1),当检测到其他节点都在发送12的ring报文后,最后节点发送此应答报文,此时进入睡眠等待状态。04:代表跛行报文,如果网络管理报文接收计数器和发送计数器超限后,发送跛行报文即无其他节点与此节点建环,只有一个节点存在。

  Byte2-Byte7:用户定义的数据。

  五、网络管理功能测试方法

  测试工具主要包括CANoe工具、CANStress工具、VN1640工具及其上位机软件。

1-5.jpg

1-6.jpg

  测试项目主要包括:逻辑环测试、睡眠状态测试、Limphome状态测试、逻辑环中新节点加入测试、本地唤醒请求测试、远程唤醒请求测试、结束唤醒测试、网络管理报文格式测试、TType/TMax/Terror/TWaitBusSleep等时间参数测试、网络管理错误处理测试。

  逻辑环测试

  CANOE工具模拟其它节点,通过KL15唤醒网络,通过CANOE模拟总线其它节点,与该节点进行建立逻辑环。

  睡眠状态测试

  CANOE工具模拟其它节点,通过KL15唤醒网络,通过CANOE模拟总线其它节点,并设置睡眠标志位为真,检测睡眠标志位为真,经过t时间后,总线进入睡眠模式。

  Limphome状态测试

  CANOE工具模拟其它节点,通过KL15唤醒网络,被测节点进入Limphome模式。

  逻辑环中新节点加入测试

  CANOE工具模拟其它节点,通过KL15唤醒网络,通过CANOE模拟总线其它节点,与该节点进行建立逻辑环,通过CANOE再模拟一个新的节点加入到逻辑环中。

  逻辑环中某节点退出测试

  CANOE工具模拟其它节点,通过KL15唤醒网络,通过CANOE模拟总线其它节点,与该节点进行建立逻辑环,通过CANOE停止模拟其中一个节点退出逻辑环。

  本地唤醒请求测试

  CANOE工具模拟其它节点,通过KL15唤醒网络,检查是否发出Alive及Ring报文

  远程唤醒请求测试

  CANOE工具模拟其它节点,通过CANOE模拟总线其它网络节点报文,检查是否有Alive报文发出。

  结束唤醒测试

  CANOE工具模拟其它节点,通过CANOE模拟总线其它网络节点报文,Alive报文发出后,进入Limphome模式,并发送SleepInd标志位。

  网络管理报文格式测试

  CANOE工具模拟其它节点,通过KL15唤醒网络,检查是报文格式及ID。包含Alive、Ring、Limphome、SleepInd、SleepAck、Dest等报文组合形式。

  TType/TMax/Terror/TWaitBusSleep等时间参数测试

  测试的Alive报文与Ring报文之间的时间参数TTyp、测试的Ring和下一帧Alive报文之间的时间参数TMax、测量时间参数TError是否满足协议要求的网络管理时间参数,NMNormal状态下TWaitBusSleep时间参数测试。

  网络管理错误处理测试

  使用CANOE模拟节点网络管理报文,让总线进入睡眠模式,通过本地唤醒,使用CANstress干扰DUT发送报文RTR bit位,确保进入busoff状态,通过canoe trace窗口检查Tbusoff的时间。


作者:汽车电控技术开发    

来源:http://www.51testing.com/html/07/n-7796507.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 软件测试分类按测试用例的设计方法,软件测试分为白盒测试和黑盒测试。按测试策略和过程,软件测试分为单元测试、集成测试、确认测试和系统测试。按软件系统工程,测试是软件质量保证的最后的一关。高质量的程序取决于以下几个方面:高质量的设计规范的编码有效的测试开发部的测试 效果不好:为什么?没有时间测试不知道怎样测试不好组织缺乏方法和工具这种情况下,往往把单元测试的任务堆积到系统测试阶段。如果把单元测试的任务堆积到系统测试阶段,将会怎样?大量的故障堆积在项目中后期:项目后10%的工作,占用了项目90%的时间。故障难以定位故障飘忽不定开发、测试人员疲于奔命软件缺陷的修复费用单元测试(why)最高的成本收益比...
            10 10 1494
            分享
          •   对于测试的各项评审中,测试用例的评审尤为重要。因为测试用例的设计决定了测试的充分性和有效性。即使测试报告的评审能够发现测试的问题,但到了那时再重新设计测试用例,重新安排测试,会耗费更多的工作量,会影响软件项目的进度。  那么要如何做好测试用例的评审呢?  要做好测试用例的评审,就要抓住以下的评审重点:  · 测试用例的整体设计  评审测试用例,首先要关注测试用例设计的整体思路。测试用例的设计要能够考虑测试环境的实际,需求的关键程度和优先级,来确定合理的测试优先级或先后次序,以及测试用例数目的多少。  软件薄弱环节的测试用例设计 根据二八定理,软件缺陷往往集中在一小部分的软件构件上,即软件的...
            0 0 1015
            分享
          •   纵观软件测试行业的发展史,相信很多人都知道它是伴随着“软件”而出现的。  在早期软件开发的过程中,“测试”的含义其实是比较狭窄的,测试这一行为也完全由开发人员执行,几乎等同于“调试”工作。  到了上世纪80年代,IT行业得到了大力的发展,“软件”也趋向于大型化、高复杂度,这个时候“软件测试”才逐渐形成了自己的理论基础和实用技术。  从上世纪90年代开始,软件行业的发展形势可谓迅猛。随着软件行业规模变大,“软件测试”活动也变得需要更多的时间和成本了。  又经过20年的持续发展,“软件测试”行业已经有了自己的行业标准(IEEE/ANSI ),也经历了手工测试到自动化测试的技术变革,更是形成了自...
            0 1 997
            分享
          •   一、十年测试感悟  恍惚间,已经进入测试岗位十年多的时间了,回顾过往,思绪良多,一路走来,或多或少的经历了一些坎坷,也遇到了不少的困难,也曾一时间四顾迷茫,在此,我结合了自己的一些心得,愿本篇文章,能让想进入测试行业的朋友们有一个方向,避免和我一样,独自闯荡江湖还没成为大侠,却已经走了不少弯路。  二、写给刚进入测试岗位的你  刚入测试行业,你会发现自身的期望与现实落差很大,随着时间迁移越来越迷茫,当时的我也是摸着石头过河,随着时代的飞速发展 ,技术的变更也越来越快,测试人员需要学的越来越多,在此给出几点建议。  三、勾画职业蓝图  明确中前期测试工程师本身的发展规划,在此建议大目标、小阶...
            0 0 1210
            分享
          • 目录一、问题预测1. 让简单介绍下自己(每次面试开场)2. 让说下自己会的内容3. 看了哪些书籍(有问到)4. 了解过哪些技术博客/论坛(有问到)5. 是否了解软件测试需要掌握哪些知识(问到类似问题)6. 之前面试过,觉得自己需要补充哪些?做了哪些行动?7. 为什么做测试,觉得自己做测试有哪些优势?(有问到)8. 知道哪些Bug系统9.测试用例的基本要素是?二、介绍一下公司项目三、技能方面1、 数据库方面常识2、 linux操作3、缺陷方面(有问到)4、用例部分5、软件测试流程6、网络相关7、测试工具8、其他概念问题四、你还有什么想问的吗(必答)一、问题预测1. 让简单介绍下自己(这个不用说了...
            2 10 5365
            分享
      • 51testing软件测试圈微信