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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 前言HTTP接口测试很简单,不管工具、框架、还是平台,只要很的好的几个点就是好工具。测试数据问题:比如删除接口,重复执行还能保持结果一致,必定要做数据初始化。接口依赖问题:B接口依赖A的返回值,C接口依赖B接口的返回值。加密问题:不同的接口加密规则不一样。有些用到时间戳、md5、base64、AES,如何提供种能力。断言问题:有些接口返回的结构体很复杂,如何灵活的做到断言。对于以上问题,工具和平台要么不支持,要么很麻烦,然而框架是最灵活的。unittest/pytest + requests/https 直接上手写代码就好了,既简单又灵活。那么同样是写代码,A框架...
            9 9 1096
            分享
          • 接口测试流程1、接口测试流程(1)首先是从开发那里拿到API接口文档,了解接口业务、包括接口地址、请求方式,入参、出参,token鉴权,返回格式等信息。(2)然后使用Postman或Jmeter工具执行接口测试,一般使用Jmeter的步骤是这样的: a、首先新建一个线程组。 b、然后就是新建一个HTTP请求默认值。(输入接口服务器IP和端口) c、再新建很多HTTP请求,一个请求一个用例。(输入接口路径,访问方式,参数等) d、然后创建断言和查看结果树。(3)最后调试并执行用例,最后编写接口测试报告(4)其实我们做接口的时候也碰到了蛮多的问题,都是自己独立解决的,比如返回值乱码(修改jmete...
            11 13 2240
            分享
          •   在美国推出数年后,苹果公司的 Mac 和iPhone自助维修计划将扩展到总共 32 个欧洲国家,加拿大也将于 2025 年加入。周三上午,苹果公司在一份非常简短的新闻稿中宣布扩大其自助服务维修计划。苹果公司具体列出的国家包括英国、法国、德国和荷兰。  自助维修服务支持 42 种 Apple 产品。服务文档现在有 24 种语言版本。  无论用户身处何地,该程序的操作步骤基本相同。用户在进行自我诊断后,通过专门的网上商店订购零件和工具。  消费者退还"核心"部件的方式将与现在维修店退还部件的方式相同,以获得对最初购买部件价格的抵扣。  维修工作的复杂性和高昂的零件成本意味着...
            0 0 194
            分享
          • 命题有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下“橙汁”或“啤酒”的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示“零钱找完”的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示“零钱找完”的红灯灭,在送出饮料的同时退还5角硬币。分析根据命题可以分析出,自动售货机的业务中一共存在5个条件和5个结果,分别是:条件:售货机有零钱找投入1元硬币投入5角硬币 押下橙汁按钮押下啤酒按钮 结果: 售货机〖零钱找完〗灯亮    当售货机中没有...
            12 13 10035
            分享
          • 常用的Android自动化测试框架包括UIAutomator、Appium以及Monkeyrunner等;其中,UIAutomator是谷歌在发布Android4.1版本时推出的一款基于Java语言的UI测试框架,由此,UIAutomator只能运行在4.1及其以上版本中。本篇文章将为大家介绍如何搭建基于Java+UIAutomator的测试环境。一、UIAutomator简介首先,作为Google自家推出的一款开源的UI自动化测试框架,其稳定性和可靠性可以得到极大的保障,运行时也有更多的权限。其次,UIAutomator可以跨进程操作,运行速度较快;但是UIAutomator不支持Andro...
            0 0 1275
            分享
      • 51testing软件测试圈微信