【汽车电子】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示例代码中,刷写流程分为以下十个步骤。
- 10 03 //10服务切换到03扩展模式。
- 85 02 //关DTC(Boot中为空服务,没有具体实现)。
- 28 03 01 //服务关报文(Boot中为空服务,没有具体实现)。
- 10 02 //10服务切换到02编程会话。
- 27 01 // 27服务,解锁,通过安全验证。
- 27 02
- 2e 00 00
- 31 00 00
- (34、36、37) //复合诊断服务下载APP。
- 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.
欢迎关注 『十六宿舍』,大家喜欢的话,给个👍,更多关于嵌入式相关技术的内容持续更新中。
相关文章:
【汽车电子】CAN总线分析仪使用介绍(PCAN/同星CAN卡)
本篇文章以CAN卡的使用为基本线索,介绍了在汽车电子领域涉及的一些CAN卡使用流程,搭配强大的上位机可以实现诸多功能。文章并没有局限于一种CAN卡,而是针对PCAN和同星的CAN卡分别以常用CAN报文收发以及诊断控制台实现这两种方向进行了CAN卡使…...
C //例 7.13 有一个3*4的矩阵,求所有元素中的最大值。
C程序设计 (第四版) 谭浩强 例 7.13 例 7.13 有一个3*4的矩阵,求所有元素中的最大值。 IDE工具:VS2010 Note: 使用不同的IDE工具可能有部分差异。 代码块 方法:使用指针、动态分配内存 #include <stdio.h> …...
基于SSM的供电所档案管理系统
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
excel用RAND函数生成一个大于0小于1的随机数
插入-》函数: 选择RAND函数: 点击“继续”: 点击“确定”,就生成随机数了:...
详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议
目录 IP安全概述 IPSec协议簇 IPSec的实现方式 AH(Authentication Header,认证头) ESP(Encapsulating Security Payload,封装安全载荷) IKE(Internet Key Exchange,因特网密钥…...
mysql使用--数据库的基本操作
在MYSQL中,一些表的集合称为一个数据库。MYSQL服务器管理若干个数据库,每个数据库下都可有若干个表。 1.展示数据库 SHOW DATABASES; 2.创建数据库 如:CREATE DATABASE myname; 更智能语法,可用:CREATE DATABASE IF …...
计算机毕业设计选题推荐-个人记账理财微信小程序/安卓APP-项目实战
✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…...
如何利用IP代理进行海外推广?
在当今数字化的时代,网络营销已经成为企业策略的重要组成部分。而对于进去海外市场的跨境玩家来说,海外的推广推广是重中之重。然而,在开展推广的过程中,我们常常会遇到各种挑战,如地域限制、访问速度慢等。 为了解决…...
使用FFmpeg转封装为hls(m3u8)流
改造ffmpeg/doc/examples/remuxing.c,支持将输入流转封装为hls协议对应的github地址:GitHub - yagerfgcs/FFmpeg at examples/remuxing_support_hls修改点:增加设置hls头 // example:https://www.ffmpeg.org/ffmpeg-all.html#hls-2 // f…...
npm install导致的OOM解决方案
文章目录 问题记录解决方法Linux重启排查方法 如何排查Linux自动重启的原因 问题记录 我在华为云服务器配置npm开发环境的时候, SSH远程连接一直掉线,无奈提了工单,被告知是NPM install导致的OOM问题。无语了,破NPM还有这个问题呢…...
HTTP和HTTPS详解
一)什么是HTTP协议 1)HTTP协议是倾向于相遇业务层次上面的一种协议,传输层协议主要考虑的是端对端之间的一个传输过程,TCP重点进行关注的是可靠传输;咱们的HTTP/1,HTTP/2是基于TCP的,但是咱们的HTTP/3是基于UDP的&…...
设计模式之模版方法(TemplateMethod)
模版方法 钩子函数 回调函数 在父类里面有一个模版方法,在这个方法里面调用了op1,op2,op3… 在子类里面如果想要改变父类的op1和op2 只需要重写op1和op2,那么这个重写之后的方法,可以在父类里面直接调用的到 例子: J…...
为什么数据安全很重要?哪些措施保护数据安全?
数据安全很重要的原因是因为数据是现代社会的重要财产之一。很多组织和企业依赖数据来做出商业决策,管理客户关系,进行财务规划等等。如果这些数据泄露或遭到黑客攻击,那么就会影响企业的经济利益,甚至影响到个人的隐私和安全。此…...
git push 操作代码回退
git reset revert 回退回滚取消提交返回上一版本 总有一天你会遇到下面的问题. (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚. 这些开发中很常见的问题,所以git的取消提交…...
ESP32 Arduino引脚分配参考:您应该使用哪些 GPIO 引脚?
ESP32 芯片有 48 个引脚,具有多种功能。并非所有 ESP32 开发板中的所有引脚都暴露出来,有些引脚无法使用。 关于如何使用 ESP32 GPIO 有很多问题。您应该使用什么引脚?您应该避免在项目中使用哪些引脚?这篇文章旨在成为 ESP32 GP…...
【链接装载与库】 Linux共享库的组织
Linux共享库的组织 由于动态链接的诸多优点,大量的程序开始使用动态链接机制,导致系统里面存在数量 极为庞大的共享对象。如果没有很好的方法将这些共享对象组织起来,整个系统中的共享对象文件则会散落在各个目录下,给长期的维护…...
大模型时代的机器人研究
机器人研究的一个长期目标是开发能够在物理上不同的环境中执行无数任务的“多面手”机器人。对语言和视觉领域而言,大量的原始数据可以训练这些模型,而且有虚拟应用程序可用于应用这些模型。与上述两个领域不同,机器人技术由于被锚定在物理世…...
devops步骤 -- jenkins安装
安装的docker-compose ##安装步骤参考: https://editor.csdn.net/md/?articleId133070011 编写docker-compose.yml version: 3 services: # 集合docker_jenkins:user: root # 为了避免一些…...
docker命令大全
1、查看Docker 容器占用的空间 docker ps -s2、查看所有容器 docker ps -a3、启动、关闭、重启一个已存在的容器 docker start <容器ID> docker stop <容器ID> docker restart <容器ID> 4、进入容器,退出终端的时候不会关闭container的ma…...
【EI会议征稿】第三届区块链、信息技术与智慧金融国际学术会议 (ICBIS2024)
第三届区块链、信息技术与智慧金融国际学术会议 (ICBIS2024) The 3rd International Academic Conference on Blockchain, Information Technology and Smart Finance 第三届区块链、信息技术与智慧金融国际学术会议 (ICBIS2024) 将于2024年2月23-25日在马来西亚举行。本次会…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
