CANalyzer及CANOE使用五:无DBC,调CSV方式的网关信号转发或单通道信号值控制ECU其他信号变化(包含设计自动化测试)[通俗易懂]

CANalyzer及CANOE使用五:无DBC,调CSV方式的网关信号转发或单通道信号值控制ECU其他信号变化(包含设计自动化测试)[通俗易懂]前言Panel界面CSV文件解析发送与接收————————————————前言同事:CAN网络UDS、NM等可以实现自动化,功能信号是否也可以?有简单方法吗?手动测太累了,矩阵表信号那么多,几十个Bit都够算了,脑袋都昏了。我:可以哇,那就整一个自动算信号bit值的吧。同事:不仅要算,还要判断ECU接收某些开关信号、温度、档位等的一系列反应(其他信号值的改变是否正确)我:可以,整一个同事:还有可能有网关转发信号起始bit,bit长度,接收的一方的信号值也要变。我:。。。。。。Pa.

大家好,又见面了,我是你们的朋友全栈君。

  • 前言
  • Panel界面
  • CSV文件解析
  • 发送与接收
  • 验证
  • 测试用例说明
  • 拓展思维
  • 补充说明
    ————————————————

前言

请输入公众号:总线网络。关注我,获取汽车网络开发及测试方面资料,更新干货!
同事:CAN网络用CANalyzer及CANOE测UDS、NM等,都可以实现自动化,功能信号是否也可以?不用HIL测试有简单方法吗?主机厂不给DBC,excel转DBC工具不合适咋办?手动测太累了,矩阵表信号那么多,几十个Bit都够算了,脑袋都昏了。
我:可以哇,那就整一个自动算信号bit值的吧。
同事:不仅要算,还要判断ECU接收某些开关信号、温度、档位等的一系列反应(其他信号值的改变是否正确),还可以通道不同的也可用于网关的,比如说BCM。。
我:可以,整一个。
同事:还有可能有网关转发信号起始bit,bit长度,接收的一方的信号值也要变,用于仪表,AC等。
我:。。。。。。

Panel界面

在这里插入图片描述
信号 panel界面图示
在这里插入图片描述
CSV格式信号图示
在这里插入图片描述
在这里插入图片描述

write窗口输出结果图示
说明-界面分为三部分:
1,红色框有很多控件,是用于单个信号测试。如图,有发送有接收的信息。
2,黄色框是加载CSV格式的信号,如上图CSV所示,里面有关于信号的ID,起始位,位长度等。
3,蓝色框是输出结果用,正确是黑色字体,错误是红色字体,另外在write窗口也可看

CSV文件解析

对于CSV文件解析前,我想用CAPL封装DLL封装调用矩阵表EXCEL,但是考虑到这是测试,需要明确每一项测试用例,每一项的正确值,我决定调CSV格式来做,比较方便,只是测试人员在前期写用例会枯燥一点,全是起始bit+bit长度,啊,我脑阔痛。
在这里插入图片描述
解析函数图示
如图所示,是解析csv格式的函数,VECTOR官方也是会给你的,有demo。我这也有,私我发。
解析出来是每一行都是字符串,这个就要把他们的值单独列出来,经过字符串转换成十进制或者十六进制装进数组里,在此我用了三维long型数组。
在这里插入图片描述
long型数组图示

发送与接收

1,当CSV里面的值或者panel界面的值获取到数组或对应变量里,再通过计算起始bit及bit长度算法,转换为发送报文的每个byte上。我通过bit长度>0来对字节>0为标准,只有字节>0时,同时CSV的bit才是我需要变的目标值,才能被存进响应字节中,其余不变的bit值通通为0,也就是CSV没有的bit,不是我要变的目标bit。
在这里插入图片描述
bit转为byte操作图示
2,,起始bit不同但字节有可能同的都考虑到了。用**signal_bit_data[8] [8]**数组,8×8相当于bit图,哪个bit置1就一直存在数组里等待下次进来计算有输出byte就+=。
在这里插入图片描述
8x8bit图示
在这里插入图片描述
字节同代码图示
3,接收的bit同上
4,通过以上计算,可得出理论发送和接收值。
在这里插入图片描述
理论值图示
注:发送报文不需要管目标bit值外的bit,以0默认。

验证

1,在发送信号之前,得先存储ECU发出来的所有RX信号,用word型三维数组,每一个大括号表示ID和八个字节数据。
在这里插入图片描述
再通过for循环找到on mseeage下的所有ID,与数组里的ID遍历比较是否相同(第一个ID可不比较直接存储);真,则不存储,假,则存储。
在这里插入图片描述
最后再存储其ID的八个字节数据(代码不展示,用for循环)。
2,当所有ID及其数据存储进之后,就可以再发送信号之后去与目标信号ID比较其数据。
(1)当目标信号是增加值时,与发送信号前数组里的值是被包含关系,用(目标值)&(发送前值)=(目标值)是否为真。
(2)当目标信号是减少或者替代值时,与发送信号钱数组里的值没关系,我们就比较(发送后当前信号值)=(目标值)是否为真。

测试用例说明:

1,根据CSV里的ID所有信息有效判断测试项数(解析时自动判断)。
2,通过定时器T里步骤TEST_CUR_N++即可实现测试项数以3000ms(可变值)周期测试,代码如下图。
3,通过write打印出来结果效果如下图,或者用Testmodule来做报告输出形式(不展示)。
在这里插入图片描述
在这里插入图片描述
效果图如图示

拓展思维

1,此代码适用于自动化发送信号与接收信号,适应通道不同互转发及网关信号互转,对于需要观察零部件(仪表、AC,BCM等)或整车的不建议使用。
2,对于需要观察零部件(仪表、AC,BCM等)或整车变化的,可做成半自动。
(1)在CSV里设置好目标信号ID及接收值,通过ECU按钮变化,观察ECU按钮变化后(驾驶模式)引起其他变化(运动模式or一般模式)的屏(眼睛看到的)及程序检测到的信号ID及值变化即可实现半自动化。
(2)每检测完一个测试用例,通过提示进行下一步操作。

补充说明

对于ECU功能测试,大多数供应商都用HIL来测试或者全手动。
欢迎各位一起讨论交流汽车总线上的各种问题。
请输入公众号:总线网络。关注我,获取汽车网络开发及测试方面资料,更新干货!
分享总线开发知识
分享CAN/CANFDLIN/ETH等网络资料
分享CANoe/TSMaster/PCAN等设备工具使用
分享UDS/NM/Bootloader测试用例等
一起来学习,进步,交流吧!
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151271.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 几个常用算法的适应场景及其优缺点!

    几个常用算法的适应场景及其优缺点!

    2021年11月22日
    37
  • 开心网买房子外挂_开心躲猫猫穿墙版下载

    开心网买房子外挂_开心躲猫猫穿墙版下载     开心网的买房子组件出了很久了,竟然到现在还没有出一个买房外挂。上星期某一晚上基于turbozv.com提供的抢车位的源代码,改写了一个买房子的外挂,此外挂不具有抢人住自己家的功能,那个不赚钱。来钱最快的是每隔一小时换一个地方住,随机得0到6000之前的住房津贴。经过一个星期的尝试,平均每天入帐5万,嘿嘿。发给大家一起来挂吧,祝大家早日住上大别墅。…

    2025年11月4日
    2
  • http://www.msftconnecttest.com/redirect找不到应用程序解决办法

    我在连学校内网的时候,不能自动跳转到登录的页面,因为有一些默认的配置已经被修改。可能有的人认为不是自己修改的,那么原因也有可能是软件安装的过程中默认设置被修改,也有可能是你不轻易间点错了。不废话了,直接发图:第一步:window10:点击左下角的window图标—-找到设置—-点击默认设置第二步:往下拉,找到浏览器的默认设置,点击重置,ok…

    2022年4月6日
    3.3K
  • kettle使用教程(超详细)

    kettle使用教程(超详细)今天详细详细说一下kettle的安装,安装的版本:jdk:jdk-8u152-windows–x64kettle:KETTLE-5.4一、环境部署1、安装JDK,按默认值安装即可2、设置环境变量,如图下图具体步骤:1.右击我的电脑-属性-高级系统设置-环境变量-系统变量-新建2.变量名:JAVA_HOME3.变量值:JDK安装目录3、…

    2022年5月24日
    114
  • DLL注入

    DLL注入DLL注入DLL注入原理dll注入实现过程功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入DLL注入原理在Windows操作系统中,运行的每一个进程都生活在自己的程序空间中(保护模式),每一个进程都认为自己拥有整个机器的控制权,

    2022年5月17日
    62
  • word2vec 原理

    word2vec 原理转自:http://www.cnblogs.com/iloveai/p/word2vec.htmlSVD分解:低维词向量的间接学习既然基于co-occurrence矩阵得到的离散词向量存在着高维和稀疏性的问题,一个自然而然的解决思路是对原始词向量进行降维,从而得到一个稠密的连续词向量。第一个出场的对原始矩阵进行降维的方法是奇异值分解(SVD)。SVD的基本思想是,通过将原co-occurrence…

    2022年5月16日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号