随着汽车电子技术的发展,车辆上配备了越来越多的电子装置,这些设备多采用点对点的方式通信,这也导致了车内存在庞大的线束。造成汽车制造和安装的困难并进一步降低汽车的配置空间,汽车总线逐步开始向网络化方向发展。

在此背景下,CAN(Controller Area Network)总线应运而生,以其高可靠性和灵活性,成为汽车通信系统中不可或缺的一部分,承载着车辆控制、监控和诊断等关键任务。

一、技术演进:从CAN到CAN FD

随着技术的持续发展,传统的CAN总线在数据传输速率和带宽上逐渐显现出局限性。具体来说,传统的CAN总线波特率最大为1Mbit/s,数据帧中有效数据域最大为8个字节。

这种设计在早期满足了车辆控制和监控的需求,但随着车载系统复杂度的提升,对更高数据传输速率和更大数据容量的需求日益迫切。

因此,CAN FD(CAN with Flexible Data-Rate)随之推出。CAN FD在保持CAN优良特性的基础上,实现了技术上的重大突破:

1、可变数据位速率

CAN FD引入了数据段的波特率可变机制,其传输速率一般5-8Mbit/s,这一段的波特率可变,而其余部分仍使用原来的CAN速率,从而在保持兼容性的同时大幅提升了数据传输速率。

2、扩大的有效数据域

CAN FD将数据帧中有效数据域扩展到64个字节,相比传统CAN的8个字节,显著提高了单帧数据的传输量,使得通信更加灵活、快速、可靠。

3、新的CRC算法

为了适应更大的数据域和提高错误检测的准确性,CAN FD采用了新的CRC算法,并对填充位规则进行了优化,以减少错帧漏检率。

4、新的帧结构

CAN FD在控制场中增加了FDF位、BRS位和ESI位,这些位用于区分CAN报文与CAN FD报文,并确定是否转换为可变速率。同时,DLC编码方式也由线性变为阶梯式,以适应更大的数据长度。

二、ADTF:支持全面的CAN通信协议

ADTF(AUTOMOTIVE DATA & TIME-TRIGGERED FRAMEWORK)是一款汽车数据与时间触发框架,可用于开发车辆驾驶辅助系统。提供一系列功能和工具来支持车辆自动化和驾驶辅助系统的开发和测试。ADTF能用于快速原型设计、仿真、数据记录和验证(后处理)。

图1:ADTF框架

在总线方面,ADTF具备多个工具箱以支持其仿真与测试,比如ADTF Device Toolbox,ADTF Calibration Toolbox等。

在ADTF Device Toolbox中提供ARXML数据库文件总线解析,支持汽车总线(CAN 、CANFD 、 Flexray 、 以太网)、Vector设备、信号处理和可视化等。

在ADTF Calibration Toolbox中支持通过多个过滤器与 ECU 进行 XCP 通信,以便通过 CAN 、 FlexRay 或以太网进行通信。

结合上述工具箱,ADTF可以在应用在以下领域:

1、汽车电子系统开发

ADTF广泛应用于汽车电子控制单元(ECU)的开发,包括发动机控制、底盘控制、车身电子等。

2、仿真和测试

在汽车电子系统的仿真和测试中,ADTF能够模拟总线通信,进行系统级和组件级的测试。

3、数据记录和分析

ADTF支持数据记录功能,可以捕获和存储总线上的数据,便于后续分析和故障诊断。

三、应用实践:ADTF的技术实现

ADTF的一个强项就是对总线数据的解析。比如对CAN FD采集的数据,基于DBC配置进行解析和可视化呈现,如图2和3所示。

图2:CAN FD数据回放工程图

图3:CAN FD数据解析效果展示

此外,ADTF支持AUTOSAR架构下ARXML CANFD数据的解析。如图4和图5所示的ARXML CANFD数据解析工程。

图4:ARMXL CANFD数据回放工程图

图5:ARMXL CANFD数据解析效果展示

ADTF软件以其强大的功能、高度的灵活性和专业的技术支持,成为汽车电子开发领域的重要工具。无论是在产品开发、系统集成还是测试验证阶段,ADTF都能提供有效的解决方案,加速汽车电子系统的开发进程。


作者介绍

郑工

康谋科技高级自动驾驶技术研发工程师,拥有超过5年的汽车电子和自动驾驶数据分析经验专精于高精度传感器数据的获取、整合与优化。数据采集技术方面造诣深厚,尤其在车载网络和实时数采系统上富有实践成果,设计并优化了多种数据采集与传输方案。曾多次代表公司参加海外技术研讨会和培训项目,深入了解国际自动驾驶行业的最新动态和技术趋势,积累了丰富的国际视野。

康谋分享 | 从CAN到CAN FD:ADTF在汽车网络中的应用的更多相关文章

  1. 融云技术分享:融云安卓端IM产品的网络链路保活技术实践

    本文来自融云技术团队原创分享,原文发布于“ 融云全球互联网通信云”公众号,原题<IM 即时通讯之链路保活>,即时通讯网收录时有部分改动. 1.引言 众所周知,IM 即时通讯是一项对即时性要 ...

  2. [分享]一个String工具类,也许你的项目中会用得到

    每次做项目都会遇到字符串的处理,每次都会去写一个StringUtil,完成一些功能. 但其实每次要的功能都差不多: 1.判断类(包括NULL和空串.是否是空白字符串等) 2.默认值 3.去空白(tri ...

  3. 分享一个Maven的架构,以及在Maven配置中的注意事项

    Maven作为一个十分流行的项目管理工具,在我们的项目变得逐渐复杂的时候,可以有效的降低项目管理难度. 聚合工程就是当项目到达一定规模时,十分有效的管理子项目和模块的方法. 首先介绍一下,在大型项目中 ...

  4. 分享一段js,判断是否是在iPhone中的Safari浏览器打开的页面

    头部引用jquery包 将下面的一段js写在</body>的前面 <script type="text/javascript"> var ua = navi ...

  5. 分享一个好用的函数吧,将js中的对象转成url参数

    JavaScript&jQuery获取url参数方法 这个函数呢是自己在写基于Vue+ElementUI管理后台时用到的,,下面列出来两种使用方式: 最普通的,封装一个js函数 /** * 对 ...

  6. 分享一下我在mysql5.6+mysql8数据库安装过程中的一些坑!

    Mysql5.6安装 下载好安装包后,在bin目录下用cmd打开,输入mysqld install [服务名]新建个服务 在windows+r输入services.msc即可查看服务 怎样使用mysq ...

  7. 分享一个FileUtil工具类,基本满足web开发中的文件上传,单个文件下载,多个文件下载的需求

    获取该FileUtil工具类具体演示,公众号内回复fileutil20200501即可. package com.example.demo.util; import javax.servlet.htt ...

  8. BlackHat会议上将公布一款免费的汽车黑客工具

    汽车,无可厚非是现代社会很重要的交通工具,但与此同时却也带来了诸多安全隐患,不管怎样,汽车安全都是我们不可忽视的一个重大问题. 即将免费分享该工具 近日一名法国研究者将发布一款检测汽车安全漏洞的工具, ...

  9. 线上Linux服务器运维安全策略经验分享

    线上Linux服务器运维安全策略经验分享 https://mp.weixin.qq.com/s?__biz=MjM5NTU2MTQwNA==&mid=402022683&idx=1&a ...

  10. 分享数百个 HT 工业互联网 2D 3D 可视化应用案例

    过去的 2018 年,我们认为是国内工业互联网可视化的元年,图扑软件作为在工业可视化领域的重度参与者,一线见证了众多 HTML5/Web 化.2D/3D 化的项目在工业界应用落地,我们觉得有必要在此分 ...

随机推荐

  1. Go语言【Gin框架】:JSON、AsciiJSON、PureJSON和SecureJSON的区别

    在Go语言中,JSON.AsciiJSON.PureJSON 和 SecureJSON 是Gin框架用于发送JSON响应的方法. 1. c.JSON 功能:将提供的数据序列化为标准的JSON格式,并将 ...

  2. MacOS修改应用快捷键的一般思路

    具体步骤为: 使用CheatSheet软件查看菜单项名称 在系统设置中修改菜单项的快捷键 举个例子:修改Chrome中左右切换tab的快捷键(系统语言为英文,中文同理) 默认采用Ccontrol Ta ...

  3. 打造有效安全闭环,天翼云MDR来了!

    随着网络攻-防对抗形势愈演愈烈,传统的安全防护模式已难以应对频率暴增.昼夜不停的网络安全攻-击,提升组织安全防护能力势在必行.事实上,一些单位在网络安全建设工作中经验不足,在安全组件/设备采购方面大量 ...

  4. Integer超过128要用对象比较,否则出问题

    一.测试代码 public void testEquals() { int int1 = 12; int int2 = 12; Integer integer1 = new Integer(12); ...

  5. Scratch教程:第1课认识Scratch

    一.Scratch来源 Scratch最初是由麻省理工学院媒体实验室的终身幼儿园研究小组的米切尔雷斯尼克和西摩于2003年发起的. 希望帮助所有的孩子"发现和跟随自己的激情和探索力,敢于尝试 ...

  6. [luogu4114] Qtree1 题解

    \(LCT\) 动态维护树上路径最值,典中典了. 时间复杂度 \(O(n\log n)\). #include<bits/stdc++.h> #define fa(x) lct[x].fa ...

  7. CF1837E Play Fixing 题解

    首先来考虑什么情况方案数为 \(0\): 可以确定,在某一层中,两个原本都能晋级的队伍比赛: 可以确定,在某一层中,两个原本都不能晋级的队伍比赛. 发现假如写出每一场比赛及其胜者,可以形成一棵树形结构 ...

  8. nginx出现: [error] open() "/usr/local/nginx/logs/nginx.pid" failed错误

    问题情况 登陆服务器之后进到nginx使用./nginx -s reload重新读取配置文件,发现报==nginx: [error] open() "/usr/local/nginx/log ...

  9. QT5笔记:24. 自定义对话框以及模态 调用

    创建窗口时 窗口对象为QDialog 调用方法为exec(); int res = setSizeDialog->exec();//模态窗口 (不必要)exec可以获取到调用的是对话框的 QDi ...

  10. Linux 宝塔常用命令教程

    一.引言 在 Linux 服务器管理中,宝塔面板是一款非常实用的工具.然而,了解一些相关的命令可以让我们在特定情况下更高效地进行操作和管理.本文将为您介绍一些常用的 Linux 宝塔相关命令. 二.安 ...