【汽车电子】CAN总线分析仪使用介绍(PCAN/同星CAN卡)

本篇文章以CAN卡的使用为基本线索,介绍了在汽车电子领域涉及的一些CAN卡使用流程,搭配强大的上位机可以实现诸多功能。文章并没有局限于一种CAN卡,而是针对PCAN和同星的CAN卡分别以常用CAN报文收发以及诊断控制台实现这两种方向进行了CAN卡使用的详解。当然,文章涉及到了一些概念并没有具体展开,CAN卡相关的功能也仅仅介绍了常用常用的功能,如果读者在实际使用过程中有遇到欢迎私信讨论。

目录

使用背景

PCAN

与硬件建立连接 

接收和发送报文 

导入DBC文件

将报文保存为trc文件 

同星CAN卡

方案概述

基本参数配置

配置诊断服务 

配置刷写流程 


使用背景

新能源汽车区别于传统燃油车最核心的技术为“三电”,具体指的是电动车的电池、电机、电控,这三大件。这三部分的作用如下。

  • 电池:电池是与化学、机械工业、电子控制等相关的一个行业。电池的关键在电芯,电芯最重要的材料便是正负极、隔膜、电解液。正极材料广为熟知的有磷酸铁锂、钴酸锂、锰酸锂、三元、高镍三元。采用不同征极材料的电池在安全稳定性、能量密度以及循环寿命上有不同的表现。
  • 电驱(电机):电驱由三部分构成:传动机构、电机、逆变器。电机由三部分组成:定子、转子、壳体,电机技术的关键点在定子、转子。转子即新能源汽车的主驱动电机,它承担了与新能源汽车运动相关的所有功能。逆变器是把直流电转变成交流电的设备,逆变器中IGBT模块的散热问题,是提高充电效率的关键问题,目前日本丰田对此研究较深入,例如其加硅碳技术的应用。
  • 电控:新能源汽车电机、电控系统作为传统发动机(变速箱)功能的替代,其性能直接决定了电动汽车的爬坡、加速、最高速度等主要性能指标。狭义上的电控指的是整车控制器,但是新能源汽车的“电控”较多,还有电机控制器与电池管理系统等,这些控制器通过CAN网络等进行通信。
    • 整车控制器(VCU):采集油门,制动踏板等各种信号,并作出相应判断与给出指令,协调各个控制器之间的通信。
    • 电机控制器(MCU):接收整车控制器的扭矩报文指令,进而控制驱动电机的转速和转动方向,另外,在能量回收过程中,电机控制器还要负责将驱动电机副扭矩产生的交流电进行整流回充给动力电池。
    • 电池管理系统(BMS):电池物理参数实时监测、在线诊断与预警、充放电与预充控制、均衡管理和热管理等。

电控系统通过CAN网络指挥电动汽车电子器件的运行,包括各种电子控制器(ECU),传感器与驱动器等,简单的CAN盒可以实现CAN报文收发以及监控等功能,搭配功能强大的使用软件,CAN总线分析仪能够帮助调试模拟CAN总线状态,完成相关高级功能以及测试过程。


PCAN

PCAN为PEAK-System公司的CAN总线产品,下面我们介绍一下PCAN-Explorer5基本使用方法。

与硬件建立连接 

点击Nets Configuration,弹出网络配置对话框,该窗口中显示了已经连接上的硬件,我这里有两个PCAN-USB表示我连接了两个PCAN-USB到电脑上。有把蓝色锁的连接表示该连接已经通过另外一个软件与电脑连接上了。

首先要新建一个工程,然后在添加连接。

接收和发送报文 

点击View菜单下的Receive/Transmit,会出现如下图所示的发送接收窗口,在这里可以显示接收到的报文和要发送的报文。

导入DBC文件

CAN总线的dbc文件就是CAN总线的库文件,通过dbc文件,可以将16进制的CAN报文解析为我们容易识别和理解的信号值,如温度,压力等。

但是需要注意的是,导入dbc文件后还需要点击应用才可以解析报文。在dbc文件名上单击右键,选择Open in Symbol Editor,可以再Symbol Editor中看到每个ID所代表的信息,具体哪个字节代表什么信号,报文与信号值之间的数学关系等报文的详细信息。

我们还可以查看DBC文件中对信号的具体定义。

将报文保存为trc文件 

使用Trace记录报文,其记录报文的数量可以说是不受限制的,只与硬盘的容量相关,按照下图设置即可:

当然也可以点击主菜单栏中的File中的另存为按钮。


同星CAN卡

上海同星的CAN卡配合TSMaster可以实现一下测试仿真功能。

  • 使用TSMaster从零打造车辆控制器HIL实时仿真,搭配同星的硬件接口模块就可以达到最高性能。基于HIL仿真的实时性,我们就可以通过操纵总线数据发送的方法来执行实时仿真。
  • 运用TSMaster做CCP/XCP标定。标定是作为整车及ECU开发过程中不可或缺的一个开发流程,对整车及ECU性能的优化起着至关重要的作用。
  • 建立诊断控制台基础功能,用户可以根据需求配置自己的发送和应答请求。诊断传输层类型支持CAN/CANFD/LIN。未来将支持汽车以太网与FlexRay。

下面我们介绍一下使用同星CAN卡+TSMaster实现英飞凌TLE989X系列芯片程序烧录功能,无需单独开发上位机,如果更换新的芯片平台以及BootLoader刷写流程,仅需更改配置即可。


方案概述

同星提供的代码包内包含了APP1、APP2、Bootloader、boot_TSmaster、使用说明文档,其中:

  • APP1文件和APP2文件是LED闪烁不同频率的APP例程。
  • boot_TSmaster文件夹中是配置好的TSmaster上位机软件工程例程,结合Bootloader可以实现下载APP的功能。
  • Bootloader文件里面是 bootload 的源代码,需要预先编程至芯片内部,在芯片内部配合TSmaster完成应用程序的刷写功能。
  • Bootloader service manual是中英文的使用手册。

在BootLoader示例代码中,刷写流程分为以下十个步骤。

  1. 10 03 //10服务切换到03扩展模式。
  2. 85 02 //关DTC(Boot中为空服务,没有具体实现)。
  3. 28 03 01 //服务关报文(Boot中为空服务,没有具体实现)。
  4. 10 02 //10服务切换到02编程会话。
  5. 27 01 // 27服务,解锁,通过安全验证。
  6. 27 02
  7. 2e 00 00
  8. 31 00 00
  9. (34、36、37) //复合诊断服务下载APP。
  10. 11 //ECU复位。

下面从TSMaster软件的基本参数配置,以及诊断服务和刷写流程三个方面介绍一下要完成整个刷写流程,上位机需要完成的相关工程配置(也可以直接使用boot_TSmaster文件夹中是配置好的上位机软件工程例程)

基本参数配置

打开TSMaster软件,选择创建新工程-诊断-UDS诊断,然后选择一个新工作目录,创建一个新文件夹,点击选择之后进入到TSMaster工程文件中。

CAN通道配置,如下图所示,最上方硬件、通道选择设置一下CAN通道:点击总线硬件、配置波特率。配置通道一为1000kbps,通道二为500kbps。 

新建一个uds诊断模块。

设置诊断基本参数,Protocal的Transport Layer,通道选择channel 2。

设置Diagnostic layer参数。将安全算法的dll导入。

配置诊断服务 

在这里配置我们刷写流程中会用到的所有诊断服务,以及用于下载APP的复合诊断服务(343637),复合诊断服务中包含APP文件的加载、配置校验方式、配置擦除Flash、请求和传输数据配置、传输退出配置等。下面我们挑选两个比较重要的诊断服务进行说明。

下面为新建一个复合诊断服务(343637),在“Basic Diagnostic Config”选项卡,创建服务,在“Service Name”中修改想要的名字,点击+号选中想要烧录的文件之后,下方会显示出了文件中的数据区,以及每个数据区的参数信息,TSMaster会全自动地把这一切全部刷写进去,之后会得到两个重要信息,待刷写数据的地址、待刷写数据的长度。

烧录完s19文件后需要进行一个校验来判断烧录文件的完整性。在31服务中创建一个新的服务,改好对应的数据,在下方参数中的“Value Type”里选择“SystemVar”,修改数据长度为32,最后添加校准参数。 

然后点击下方参数列表中右侧的+号,在内部变量中找到相应文件的校验参数。点击确定。 

 完成之后,再去把该动作添加至“Automatic Diagnostic”中相应烧录文件的流程后。

配置刷写流程 

在自动诊断流程中配置根据我们前面提到的步骤配置刷写流程。配置好之后,可以用CAN转USB的CAN卡在线刷写,也可以将这个流程下载到离线工具TF1011中实现离线刷写。

配置完成之后点击启动,则进行整个诊断流程,如下图程序正在刷写中。


十六宿舍 原创作品,转载必须标注原文链接。

©2023 Yang Li. All rights reserved.

欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/145256.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java学习之路 —— Day2(OOP)

文章目录 1. 方法2. OOP2.1 static2.2 单例模式2.3 继承2.4 多态 3. 常用API3.1 包3.2 String3.3 ArrayList 1. 方法 方法定义时要使用public static修饰,这是和C最不同的地方,因为java都是基于类执行的。 Java的参数传递机制是值传递,即传…

关于 Java NIO 的 Selector 的事儿,这篇文章里面全都有

前面 4 篇文章深入分析了 NIO 三大组件中的两个:Buffer 和 Channel: 【死磕 NIO】— 深入分析Buffer【死磕 NIO】— 深入分析Channel和FileChannel【死磕NIO】— 跨进程文件锁:FileLock【死磕NIO】— 探索 SocketChannel 的核心原理 这篇文…

数据结构与算法【递归】Java实现

递归 递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集。 特点: 自己调用自己,如果说每个函数对应着一种解决方案,自己调用自己意味着解决方案是一样的(有规律的)每次调用&#xf…

【Linux】Ubuntu16.04系统查看已安装的python版本,及其配置

前情提示:我已经在Ubuntu16.04里用源码安装了python3.8.11,Ubuntu16.04系统默认安装2.7.12与3.5.2 1.查看已安装版本 python2 --version #查看python2安装版本 python3 --version #查看python3安装版本 python3.5 --version #查看python3.5安装…

Elasticsearch:ES|QL 快速入门

警告:此功能处于技术预览阶段,可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新发行版为 Elastic Stack 8.11。 Elasticsearch 查询语言 (ES|QL) 提供了一种强…

百望云携手华为发布金融信创与数电乐企联合方案 创新金融合规变革

10月27日,北京发布《关于开展全面数字化的电子发票试点工作的公告》,自2023年11月01日起开展数电票试点。千呼万唤始出来,拉开了北京地区企业开展数电票试点的序幕。 百望云作为数电票行业翘楚,电子发票服务平台供应商&#xff0c…

Java学习之路 —— API篇

文章目录 前言Object类2. Objects类3. 包装类4. StringBuilder和StringBuffer5. StringJoiner6. Math7. System8. JDK8开始新增的日期、时间9. Arrays10. Lambda表达式11. 方法引用 前言 其实转语言来说,语法都比较简单,花个三天就会了,但最…

【luckfox】2、添加lcd spi屏st7735和gc9306

前言 本章使用fbtft添加spi lcd st7735/gc9306。 fbtft生成fb0设备,后续通过lvgl可以实现自定义界面绘制。 代码参考 https://gitee.com/openLuat/LuatOS/blob/master/components/lcd/luat_lcd_gc9306x.c 硬件是合宙的,合宙esp32有支持,仿…

Mistral 7B 比Llama 2更好的开源大模型 (二)

Mistral 7B 论文学习 Mistral 7B 论文链接 https://arxiv.org/abs/2310.06825 代码: https://github.com/mistralai/mistral-src 网站: https://mistral.ai/news/announcing-mistral-7b/ 论文摘要 Mistral 7B是一个70亿参数的语言模型,旨在获得卓越的性能和效率。Mistral 7…

外汇天眼:你的交易技术分析,为什么不赚钱?

众所周知,交易圈分为两个派别,一个是基本面分析派,另外一个就是技术分析派。 无论哪个派别都有成功的案例。 今天我们主要来说一下技术分析,市场中,用技术分析来做交易的人有很多,但并不是人人都赚钱&#…

SELF-AUGMENTED MULTI-MODAL FEATURE EMBEDDING

two embeddings f o r g _{org} org​ and f a u g _{aug} aug​ are combined using a gating mechanism 作者未提供代码

RT-Thread系列10——ETH网口设备

文章目录 1. ETH测试第一步:cubemx配置。第二步:board.h配置。第三步:rtthread settings配置第四步:以太网复位引脚设置第五步:修改rtthread源码第六步:修改 cubemx 生成的 main 函数第七步:编译…

救命!这套性能测试的实践痛点和解决方法真的绝了

昨天有同学找我咨询了一个性能测试相关的问题,他说: 他们公司的性能测试实践目前基本成为了形式主义,除了版本迭代时候的单系统单接口压测,没有其他亮点,领导也不重视。想做一些异常测试和高可用测试,体现自…

C++ builder 常见问题汇总

1、CB静态编译设置 2、CB10.3设置经典编译器(用于解决10.3弹出代码提示慢) 3、CBuilder生成Release版本 : project->Options->CCompiler->Build Configuration 选择 Release project->Options->CLinker中取消Use dynamic RTL…

PP-YOLO: An Effective and Efficient Implementation of Object Detector(2020.8)

文章目录 Abstract1. Introduction先介绍了一堆前人的work自己的workexpect 2. Related Work先介绍别人的work与我们的区别 3.Method3.1. ArchitectureBackboneDetection NeckDetection Head 3.2. Selection of TricksLarger Batch SizeEMADropBlockIoULossIoU AwareGrid Sensi…

python 随机密码生成器

最近在研究PySimpleGUI库,把之前写的一个随机密码生成器改成GUI版本发出来,有兴趣的兄弟们可以拿走。 因为能力有限,目前只能写生成一个随机密码的Gui版本,等我学了更多的内容再慢慢完善。 核心代码很简单,界面也很粗陋…

2023年华为杯数学建模E题——代码复盘(第一问)

2023年华为杯数学建模E题 代码复盘 写在最前面目录问题1a计算时间间隔思路说明代码输出结果 插值求解思路代码输出结果 绘图绘制3D图(待修改) 问题1b数据预处理思路代码 模型训练思路代码输出结果网格调参代码输出结果 写在最前面 超开心又有点遗憾 结果…

Vue3 watch监视和watchEffect函数

Vue3 中的watch使用效果和Vue2 中配置watch配置项的使用效果是一致的。 使用watch监视之前,需要先对watch进行引入。 import {watch} from vue; 一、监视一个ref对象 以下情况只适用于监视一个ref对象。 watch(监视对象, (newValue, oldValue) > { // 监视操作…

使用清华智谱ChatGLM2大模型搭建本地私有知识库

首先放上该方案项目的git地址:https://github.com/chatchat-space/Langchain-Chatchat 以下是我的搭建和踩坑经验记录 一、环境准备 1、python安装 在环境中安装python,我安装的是3.9版本的python,官方要求的是Python 3.8 - 3.10 版本。不知…

Java学习之路 —— Day1(环境配置、变量)

文章目录 前言1. 搭建Java开发环境1.1 下载java1.2 JDK组成1.3 使用idea开发 2. java基本语法2.1 变量类型2.2 Scanner输入2.3 随机数2.4 数组 前言 已经好久没有写博客了,打开这个网站有一种熟悉又陌生的感觉。 前段时间一直在准备秋招,现在也告一段落…