零基础快速上手CANoe
文章目录
前言
什么是CANoe
之前我们介绍了CAN通讯,它是一种用于实时应用的串行通讯协议总线,使用双绞线来传输信号,CAN被广泛地应用于车辆,工业等多个领域,有着传输速度快,安全性好等等的优势,而我们说到CAN通讯常常会使用到的工具是CANoe和CANFD,而今天我们主要聊一聊CANoe的简单用法,本文为本人使用CANoe的一个总结回顾,部分资源源于网络,如有侵权请联系作者进行删除,也欢迎大家继续纠错和交流。
CANoe全称叫CAN open environment,即”CAN开发环境“,它是由德国Vector公司出品的一款总线开发工具,主要用于汽车总线的开发,虽然叫CANoe,但是它也支持对其他的汽车总线进行测试开发,常见的比如LIN、Ethernet、FlexRay、MOST等网络,CANoe都能较好的支持。
CANoe的工作原理
好,我们正式开始;首先来了解CANoe的工作原理,按照我的理解是:CAN通讯网络是由多个ECU组成的,ECU把需要发送的报文信息发送到CAN总线上,这条CAN总线是共用的,即所有的节点都把报文发送到这条CAN总线上,然后根据ECU节点根据不同的过滤器设置对总线上的报文继续过滤,而CANoe的作用就是相当于外接了一个新的节点,能够对总线上的报文进行读取或者是更改,CANoe的硬件部分如下图所示;如图所示,不同型号的CANoe硬件也有一些差别,比如对应通道数量的不同等,但是在软件的使用上是一致的。
在简单了解了CANoe的硬件组成后,我们来简单了解一下CANoe的软件,CANoe是我们软件的名字,在部分地方我们常常把CAN硬件的部分称为CANoe,在正式使用之前我们需要把硬件连接到我们的笔记本电脑上,如上所示,硬件的一端是连接我们的CAN,另一端通过USB口连接到电脑上。我们在连接硬件后,就需要使用我们的CANoe软件,目前CANoe最新的版本已经到达16,比较常见常用的是CANoe12/13,但是CANoe软件的界面大体上是一致的,只有在细微之处存在区别,我们主要以最新版本的CANoe16作为讲解。
一般来说,CANoe软件要解锁所有的功能和使用场景是需要先购买CANoe硬件的,而CANoe硬件往往价值不菲,但是我们可以通过下载官方的demo版本来实现CANoe软件的学习,官方的demo版本做了一些功能的限制,比如回放报文条数限制等等,但是基本的功能还是得以保留,可以满足我们学习CANoe的需求。
一. 如何新建一个工程
找到我们的CANoe软件,双击打开,会弹出以下的开始界面;
点击’I accept"按钮,如果是demo版本软件,会提醒你功能受限,确定后稍等片刻即可以进入软件界面了,CANoe的软件界面大概如下图所示,不同的版本有细微的差距,但是基本的功能实现是相同的;
如上图所示,我们可以把初始界面划分为三个部分,第一部分是菜单栏的功能区,第二部分是Trace界面,主要用于显示发送的报文情况,第三部分是“write”界面,主要是打印一些信息;
如果要新建一个工程的话,我们需要点击初始界面左上角的“File”,即文件,然后选择“New”,创建一个新的工程;
在选项“CAN”中选择CAN 500kBaud 1/2ch,双击打开工程,就可以完成工程的创建了。
选择CAN 500kBaud 1ch和CAN 500kBaud 2ch主要在于Network节点数量的不同,不过没有关系,不够的话可以手动添加;
需要添加新的节点的话,可以在Networks选项下右击,选择“add”,就可以添加新的网络节点了。
然后点击左上角的保存按钮,选择保持的路径,恭喜你,你的工程已经成功建立,创建的工程是一个后缀为.cfg的文件,你可以在你保存的路径下找到它,双击就可以打开对应的工程了。
二. 如何发送报文
2.1 尝试发送报文
在建立一个新的工程下,可以分成两种情况进行讨论,如果在没有连接硬件设备的情况下,此时启动工程,是没有报文发送的,而如果是连接了硬件设备,在实车环境下,车辆启动状态下,是可以读取到报文的,而在台架环境下,需要对ECU进行唤醒才能够读取到报文状态。
如下图所示,在没有连接硬件的情况下,我们点击菜单栏的闪电小图标“Start”,是读取不到报文的;
如果在连接硬件的情况下启动过程,软件会弹出界面让你选择通道,按照实际连接的情况进行设置即可;我们也可以在开始前先设置好,设置的路径为菜单栏下的“Hardware”—“Channnel Mapping”
那我们如何发送报文呢,其实非常简单,在“Simulation”下选择“Simulation Setup”,会出现以下标红的界面;
在Network CAN1/2的连线区域右击,选择“Insert CAN Interactive Generator”,创建一个IG节点来发送报文;创建完成如下图所示;
双击打开“CAI IG”,即双击打开刚刚创建的IG节点,对应的配置界面如下图所示;
2.2 DBC文件的使用
在界面右击选择“Add CAN Frame”或者是“Add CAN FD Frame”,二者是格式上的不同,这里若只是为了发送报文,不需要纠结选项,而另外一个选项“Add Frame from Databse”需要导入DBC文件后才可用,我们后续再讲;
添加之后,会有以下几个选项,分别是“Trigger”—触发方式;“Name”—名字;“ID”,“Channel”—通道,”DLC“–报文位数
在这里,你只需要先设置两个参数,“Trigger”—触发方式,按键触发还是定时发送,ID–报文名称,你也可以尝试更改下面的“Raw Data”的位置,它对应的是报文内容,更改完成后启动工程,你就可用看见发送的报文了。
如果你仔细观察就可以发现,我们发送的报文是没有名字的,并且在刚才的设置中也没有发现名字的设置,在实际应用中发送的报文数量往往是难以计量的,如果通过ID来判断报文的类型与名称,效率往往是非常低下的,那怎么给报文赋以名称呢,这个就需要我们的DBC文件了。
在实际的开发中,车辆报文往往是批量定义与导入的,DBC文件就是起到这样的作用,它像是一张表一样,里面记录了已定义报文的详细信息,如果总线上出现了DBC文件中已定义的报文,导入DBC文件的Trace界面就会对报文进行解析,以获得详细的报文信息。
我们可以使用CANoe软件来完成DBC文件的编写,这个我们后续再进行介绍,目前先了解DBC文件的作用就行了,假设你已经有了DBC文件,需要怎么导入呢?
首先需要选择对应CAN通道下的"Database"选项;右击选择“Add”,在弹出的窗口中选择对应的DBC文件即可完成导入,成功导入如下图所示,双击就可以打开对应的DBC文件,看到详细的报文信息了;
比如同样是发送一个报文0x102;导入DBC文件的情况下可以解析为“EngineData”,而没有导入的情况下Name下面是空的;
未导入DBC文件发送同样的报文:
三. 报文的录制与回放
在日常的使用场景中,常常有着保留环境分析问题的场景,而CANoe就能够很好的实现这一点,你可以根据你的需要,对发送的报文进行录制,用于保留现场或者是其他的操作,等到需要了,再使用CANoe软件进行回放,下面就来介绍一下录制与回放的操作;
3.1 使用CANoe进行报文录制
在工程未启动的情况下,在“Analysis”下找到“Measurement Setup”,在切换的开关处切换为Online,即在线播放;双击1处的图标打开录制log的相关设置,2处包含了录制数据的保存位置和保存的名字,而3处是保存格式的设置,比较常用的保存格式有.asc,.blf.,mdf等;
在设置完成后,启动配置好的CANoe工程,点击下图中的录制按钮,开始报文的录制,完成录制之后就可以在设置的保存位置找到对应的log录制文件了,至此,CANoe录制log的方法你就已经掌握了,接下来讲一下回放;
3.2 使用CANoe进行报文回放
报文回放首先需要在工程停止的情况下,将工程模式由“online”更改为“offline”,即进行离线回播,在切换区右击即可以进行模式切换,切换为“offline”模式后前面的文件夹会亮起,双击打开。
在弹出的界面选择文件导入,可以使用文件导入或者是文件夹导入,成功导入后左上角的启动会变成文件后的小闪电图案,点击就可以对录制的报文进行回播了;
注意左上角开始播放的按钮已经变成了文件夹的显示,证明报文回放成功导入,点击即可开始报文的回放;
需要注意的是,在报文回播结束之后需要将模式切换为“online”才可以恢复到正常功能进行使用。
四. 读取/修改报文的值
CANoe的一大功能就是能够实现对ECU的诊断,这项功能就要用到CANoe的诊断功能’‘Diagnostic’'了,但是根据常理,我们不能够轻易的对总线数据进行读取或者是写入,那这样汽车总线通讯安全很难得到保证,因此我们就需要使用到不同级别的密钥和cdd文件来对读取权限进行限制与分类,因此在实际应用中,我们需要拿到对应的cdd文件和密钥才能够实现诊断功能;
4.1 添加cdd文件
在’‘Diagnostic’‘下选择’‘Diagnostic ISO IP’‘,会弹出设置界面,选择’‘Add Diagnostic Description’',选择第一个添加cdd文件
在导入对应的cdd文件后会显示相关的信息,要实现诊断功能还需要导入密钥;
如下图所示,在Security Access下选择加载密钥,增加准备好密钥后点击“”OK“;
4.2 使用CANoe诊断功能
在设置完成之后会出现一个”Diagnostic Console“的界面,对应的是一些诊断功能,比如数据的读取和写入,首先10 01对应的是普通模式,10 03对应的是扩展模式,扩展模式的功能和权限要更高一些,但是进入扩展模式需要密钥,即需要在双击10 03后再分别双击”27 01“和”27 02“,经过密钥验证后才能进入扩展模式。
通过双击对应的功能,即可完成对设备对应项目的写入和读取测试,还有一些其他的功能也可以通过双击对应的功能完成,比如重启,清除故障码等功能。
五. 报文值可视化
在实际的报文发送过程中,报文的值往往是在变化的,比如是开关,可能就是在”0“和”1“之间变化,而更多的场景下,数据往往会涉及到一个较大的波动,而如果我们需要针对某一条报文的值进行查看,可以使用"Graphics"曲线图来进行更加直观的查看;
开启的方法也非常简单,在“Analysis”找到"Graphics"曲线图,打开;
然后在Trace的报文界面找到自己所需要查看的报文,把所需要的报文拖拽到"Graphics"窗口即可,对应显示的是报文的”Name“,图是信号的随时变化状态,这样就可以实现直观地对报文信号的变化进行查看了。
六. CANoe自动化
使用CANoe工具配合脚本可以实现一些自动化的操作,比如一些老化测试需要反复多次的去完成写入和读取,使用人工进行测试往往是非常费时费力的,而配合自动化脚本CANoe就可以很好地完成一些自动化测试。
6.1 怎么样增加自动化脚本
在Network CAN1/2的连线区域右击,选择“Insert CAPL Test Moudle”,创建完成如下图所示,选择节点按下空格键可以快速屏蔽/启用对应的节点;
点击对应CAPL节点下的铅笔图案进入编辑,首先会让你选择保存的路径/已经完成的CAPL文件,完成后会自动打开脚本编辑的界面,如下图所示:
1是菜单区,常见的功能都放置于此,如编译替换等;2是缩略区,当你完成一个脚本的时候,可以从2处快速定位到所编写的函数;3是主要编写区域,你的脚本就编写于此;4是函数区,所需要使用的函数可以直接从4拖拽到3中,5是输出区,编译的结果会打印于此。
6.2 自动化脚本的基础知识
CANoe使用的自动化脚本称为CAPL,它是一种类C语言的编程语言,有许多和C语言类似的地方;
比较常用的CAPL关键字:on,用于事件触发:
由于CANoe提供了非常多的函数来满足不同的诊断需求,因此CAPL的函数非常非常多,难以进行列举或者是描述,后续再继续一个整理,在日常使用中我们也可以查阅CANoe提供的相关帮助文档,了解是要使用函数的类型于使用方法,提高效率;
6.3 其他设置
在脚本编写完成后,启动工程,按下开始按钮就可以运行脚本;
左下角可以设置CAPL脚本跑的次数,时间等,或者是一直跑下去,当CAPL脚本跑完的时候会生成一个测试报告,从测试报告里可以比较好的看出测试的问题点。
总结
CANoe可以说是汽车总线调试开发的常用工具了,CANoe的应用还是比较广泛的,学习了解CANoe一些基础操作可以有效提高对CAN相关知识的认识 ;今天的文章先写到这里,共勉!
文章转自 小宇你好
原文链接:https://blog.csdn.net/weixin_47082588/article/details/127594552