零基础快速上手CANoe

  • 前言
    • 什么是CANoe
    • CANoe的工作原理
  • 一. 如何新建一个工程
  • 二. 如何发送报文
    • 2.1 尝试发送报文
    • 2.2 DBC文件的使用
  • 三. 报文的录制与回放
    • 3.1 使用CANoe进行报文录制
    • 3.2 使用CANoe进行报文回放
  • 四. 读取/修改报文的值
    • 4.1 添加cdd文件
    • 4.2 使用CANoe诊断功能
  • 五. 报文值可视化
  • 六. CANoe自动化
    • 6.1 怎么样增加自动化脚本
    • 6.2 自动化脚本的基础知识
    • 6.3 其他设置
  • 总结

前言

什么是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,用于事件触发:

关键字 作用
on Start CAPL程序开始
on preStart 仿真初始化
on preStop 仿真测量停止
on timer 设置一个定时器
on message xxx 对xxx报文反应
on key 对键盘事件反应
on busoff CAN控制器进入busoff状态
on diagResquest 收到诊断请求的时候
on diagResquestSent 发出诊断请求的时候

由于CANoe提供了非常多的函数来满足不同的诊断需求,因此CAPL的函数非常非常多,难以进行列举或者是描述,后续再继续一个整理,在日常使用中我们也可以查阅CANoe提供的相关帮助文档,了解是要使用函数的类型于使用方法,提高效率;

6.3 其他设置

在脚本编写完成后,启动工程,按下开始按钮就可以运行脚本;

左下角可以设置CAPL脚本跑的次数,时间等,或者是一直跑下去,当CAPL脚本跑完的时候会生成一个测试报告,从测试报告里可以比较好的看出测试的问题点。

总结

CANoe可以说是汽车总线调试开发的常用工具了,CANoe的应用还是比较广泛的,学习了解CANoe一些基础操作可以有效提高对CAN相关知识的认识 ;今天的文章先写到这里,共勉!

零基础快速上手CANoe相关推荐

  1. Vue-cli 3.X 构建工具零基础快速上手

    文章目录 一.环境准备 1. 安装node 2. 配置镜像 二.安装Vue CLI 2.1. 查看当前vuecli版本 2.2. 安装最新版本 2.3. 安装指定版本 三.创建web项目 3.1. 指 ...

  2. Premiere 零基础快速上手教程

    关注并星标"高级农民工" 回复"视频"可获取视频剪辑软件和教程 在前几天的文章中,我分享了几款主流视频剪辑软件: 最主流的视频剪辑软件 简单来说就是,手机端用「 ...

  3. Excel之VLOOKUP函数(零基础快速上手)

    目录 VLOOKUP介绍 VLOOKUP快速上手 需求描述 需求实现 常见问题 问题一: 问题二: 问题三: VLOOKUP介绍 VLOOKUP函数是Excel中的一个纵向查找函数,在工作中都有广泛应 ...

  4. Three.js 入门2 零基础快速上手(地球和月亮 示例)

    threejs官网:https://threejs.org/ 版本更迭很快,我用的r104 复制粘贴出效果 <!DOCTYPE html> <html> <head> ...

  5. Git | 一文带你零基础快速上手Git

  6. python海龟教程_Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 7. 条件循环...

    条件循环能够让程序在条件成立时(即为真时)重复执行循环体中的语句.如果条件一直成立(即永远不会为假),则循环会一直进行下去,不会停止.如果初始时,条件不成立,则循环 1 次也不会执行.Python 中 ...

  7. 零基础快速打造一个属于自己的微信聊天工具

    " 零基础快速打造一个属于自己的微信聊天工具" 打开微信,我们可以和别人进行聊天,发送消息.非常方便,那微信是怎么来的呢​?这个本质的问题让人突发奇想,我们能不能做一个属于自己的微 ...

  8. 【PR】零基础快速入门教程

    [PR]零基础快速入门教程 PR(Premiere)能做什么? PR欢迎界面及新建项目 工作区及窗口说明 导入文件 建立序列 视频剪辑 添加字幕 导出视频 使用软件:Premiere2020 新年卷起 ...

  9. 《Kubernetes零基础快速入门》简介

    容器技术快速入门书<Kubernetes零基础快速入门>,京东当当天猫都有发售.定价59元,打折一下更合适. Kubernetes为容器化的应用提供了资源调度.部署.运行.服务发现.扩容和 ...

最新文章

  1. 串口编程-读写超时 COMMTIMEOUTS设置
  2. echarts饼图解析html标签,解决echarts中饼图标签重叠的问题
  3. Python 技术篇-socket套接字实现两个窗口间消息传递实例演示,TCP实现
  4. [python-图像处理]python图片处理技巧[基本操作]
  5. Codeforces 697C Lorenzo Von Matterhorn(严格二叉树的LCA) - xgtao -
  6. 市场规模占全国4成,广东物联网市场发展强劲
  7. 07.Numpy广播和ufunc
  8. 牛客IOI周赛19-普及组 C.小y的旅行
  9. Leet Code OJ 328. Odd Even Linked List [Difficulty: Easy]
  10. 开发asp.net2.0手机用网站 点滴[xgluxv]
  11. 微软职位内部推荐-Software Development Engineer 2
  12. 用Spring组成自定义注释
  13. 适合新手使用的编辑制作管理软件:Substance Alchemist Mac版
  14. 前端—每天5道面试题(十三)
  15. Qt交互界面设计探索
  16. 计算机的发展是小报,电脑小报作品展示评价与交流.ppt
  17. 【20考研】考研数学 复习书籍推荐!
  18. 提问的智慧 | 推荐好文
  19. mysql有next_day用法_Next_day()函数的用法
  20. Using the Scheduler Application - JDE Scheduler Job 原理

热门文章

  1. 微信小程序开发拼图小游戏
  2. CUDA:使用CUDA/OpenGL互操作性对在OpenGL中生成的3D场景的图像进行后处理实例
  3. python微信api会封号吗_python调用微信api发告警message
  4. 英文不好看GitHub很费劲怎么办?使用Google浏览器,自带翻译功能
  5. 20211213电子物证培训学习笔记
  6. 【APP设计规范指南—工信部启示】
  7. office365邮箱批量添加到指定组
  8. idea翻译插件:Translation
  9. Android实现手写板和涂鸦功能
  10. Java+JSP政府机关公文文档收发管理系统(含源码+论文+答辩PPT等)