当前位置: 首页 > news >正文

Autosar UDS-CAN诊断开发02-1(CAN诊断帧格式类型详解、CANFD诊断帧格式类型详解、15765-2(CANTP层)的意义)

目录

前言

CANTP层(15765-2协议)存在的意义

CANTP层(15765-2协议)帧类型详细解读(普通CAN格式)

四种诊断报文类型

单帧SingleFrame(SF)

首帧:FirstFrame(FF)

流控帧:FlowControl(FC)  

连续帧:ConsecutiveFrame(CF)

中间小结 

CANTP层(15765-2协议)帧类型详细解读(CANFD格式)

差异点:单帧SingleFrame(SF)

差异点:首帧FirstFrame(FF)

结束


前言

         我们先来看一下诊断报文数据Log:

        上面图中,红色为诊断仪(Canoe或Canpro)发,蓝色为ECU发。

        我刚开始接触诊断的时候。

        看着这些密密麻麻的数据一脸茫然,由于经常能听到同事们在说19服务,所以我知道19服务读DTC,但Canoe发出的19 0A前面为啥还有个0x02?为什么ECU先返回了一帧然后再返回后面的多帧?为什么中间还夹这一帧Canoe发出来的?30 00 14又是啥意思?多帧的数据要怎么看啊,全部数据都是跟DTC故障有关吗?

        真的是小小的脑袋大大的问号。

        ...

        后来我才知道,这一切的由来都是15765-2协议。上面这个流程中,诊断仪和ECU间为什么是这样交互,所有数据中与诊断服务无关的其它数据分别代表什么意思,15765-2中全都有详细的定义。


CANTP层(15765-2协议)存在的意义

        先看一下在Autosar架构中,CANTP层在诊断链路中的位置:

        要理解为什么诊断报文的链路需要CANTP层(15765-2协议)。

        我们可以先看一下普通应用报文的链路:

                应用报文链路:CAN->CANIF->PDUR->COM->APP

        你会发现,应用报文其实很简单。它没有什么协议,收到什么就直接解读就好了。

        比如,车企定义了0x123报文中的Byte0的8个字节为电池的温度,那么当ECU收到0x123报文的时候,直接把Byte0的8个字节读取出来就直接是电池的温度了。换句话说,应用报文的发送和接收是没有什么协议的。

        由于应用报文没有什么协议,因此,应用报文传输数据就完全受限制于物理层的CAN协议(11898),一帧CAN报文的长度最大是CANFD的64Byte,再多就不行了。

        因此,15765-2协议的主要目的就是实现多帧传输。

CANTP层(15765-2协议)帧类型详细解读(普通CAN格式)

四种诊断报文类型

        我们先来看一下诊断报文都有哪些类型:

        这个图简单一眼看过去,初学者肯定不是那么好理解,所以我们提取一些关键信息来看。(先把普通CAN格式的诊断报文提取出来看一下,下图没框出来的就是CANFD格式的,后面再讲)

        从上面图中红色框出来的地方可以看出。诊断报文的类型共有4种。分别叫做:

                        单帧:SingleFrame(SF)

                        首帧:FirstFrame(FF)

                        连续帧:ConsecutiveFrame(CF)

                        流控帧:FlowControl(FC)

        我们暂时先不管他们具体的意义以及什么情况下才发出来。先从上面图中看看每种诊断报文的类型都有什么不同的地方。(注意,上面标准规范里面的图中的Byte#1是起始字节,对应我们口头常说的报文的Byte0起始字节。)

        以下面这张图为栗子,接下来分别讲解各个帧类型的差异。再次注意,下面图中Tx表示诊断仪(Canpro或Canoe)发出去,Rx表示ECU接收到诊断仪请求后ECU返回的数据。

单帧SingleFrame(SF)

        如下图:

        另外说明,后面的无效数据“AA AA ...”叫做填充字节(具体我们后面再讲,现在只要知道它是无效数据就好了。 

        单帧:Byte#1的低4位填写要发送的有效数据长度(SF_DL),Byte#1的高4位固定为0。

首帧:FirstFrame(FF)

        如下图:

        这里它要发送23个Byte的有效数据,但很明显,这一帧里只跟着6个有效Byte。因此还剩下17个Byte的有效数据没发完,它后面要发的数据叫做连续帧。

        首帧:Byte#1的高4位固定为1。Byte#1的低4位和Byte#2的8位共同填写要发送的诊断有效数据长度(SF_DL)。

流控帧:FlowControl(FC)  

        如果流控帧这一部分看不懂,大家可以先看下面的连续帧,然后再反回来看这里流控帧。因为所谓流控,就是控制连续帧的发送。

        如下图:

        下面我们依次讲解FS、BS、STmin这3个的含义

        FS:FlowStatus,即流控状态。它只有3个值:

                FS=0:允许对方继续发送

                FS=1:等待

                FS=2:溢出

                一般来说,我们只会看到FS为0的状态。知道FS等于0表示能继续发送就好了。(其它两个值我到目前为止还没看到出现这种情况)

                关于FS的官方标准如下(大家随便看看就好了):

        BS:BlockSize,即允许对方一次发送连续帧的数量。

                如果发送流控帧的这方发送的BS为0x00,则表示发送流控帧的这方可以接收无穷多的数据,对方只需要把所有要发送的数据全部发过来就好了。

                比如下面这里:

                我们另外再举一个BS不等于0x00的例子。如下面这里,BS=0x01,表示一次对方只能发送1帧数据过来:

        关于BS的官方解释如下(大家也随便看看就好了):

        STmin:SeparationTime minimum,即要求对方发送连续帧的最小时间间隔。

                如下面这张图,STmin=0x0A,即10ms。也就是说,对方发送的连续帧每帧的时间间隔最小是10ms。

                 官方解释如下(也是随便看看就好了)

连续帧:ConsecutiveFrame(CF)

        如下图:

         Byte#1的低四位叫做SN。Byte#1的高4位固定为2。

        SN:SequenceNumber,即当前连续帧的帧数。该值从0-15循环,但是第一帧连续帧的值是从1开始。

        官方解释如下:

        说人话其实就是,叫做SN的这4个Bit,发出第一帧连续帧的时候是1,如果连续帧的数据量很大,比如由上百个Byte,那么,当SN等于15之后的下一帧,就再从0开始,然后不断循环,并且中间不受流控帧的影响。 


中间小结 

        看完上面普通CAN格式的诊断报文类型

        我们另外再补充一个与协议无关的知识点:诊断仪与ECU的关系

        在诊断交互中,诊断仪永远是主动方,ECU永远是被动方。

        理解起来也很简单:ECU不可能能主动发数据给诊断仪说:“诊断仪,你快来读读我的DTC故障状态吧。诊断仪,你快来给我升级下软件吧...”。要是真这样,那真的是智能觉醒了。

        所以,在诊断交互中,第一帧肯定是诊断仪发出去的。

        好了,补充了这个知识点。我再贴一遍一开始那张密密麻麻数据的图

        这次,虽然里面诊断服务的数据的具体含义你不理解,但是你是不是已经能看懂整个交互流程了?

        讲完15765-2中普通CAN格式帧的诊断报文类型,我们接下来再看看CANFD格式帧的诊断报文类型。

        虽然普通CAN和CANFD的诊断报文格式差异其实不大。

        但是大家做Autosar诊断开发的时候,一定要知道诊断报文要有CANFD格式的。

        我之前做CANFD格式的诊断报文的时候,我感觉明明已经完成了整个CANFD诊断报文的开发链路,但是我用CANoe发送诊断请求的时候,ECU死活没有反应,然后各种调试,最后才发现,原来CANFD格式的诊断报文跟CAN格式的诊断报文的发送数据内容是不一样的。

        也就是说,对于CANFD诊断格式的ECU,如果你还用诊断仪按照普通CAN格式的方式发送诊断请求报文,ECU就不会响应你,这并不是ECU坏了或没开发对,而是你没按照人家的协议要求发数据。

        这可真的坑死我了。

        好了,话不多说,我们接下来看下CANFD格式的诊断报文类型。


CANTP层(15765-2协议)帧类型详细解读(CANFD格式)

         从上面图中可以看到,CAN格式和CANFD格式的差异是SF(单帧)、FF(首帧)的差异,连续帧和流控帧是没有差异的。

        关于CANFD格式的诊断报文类型就不详细讲了,只讲于普通CAN有差异地方对比。

        再次说明:上面标准规范里面的图中的Byte#1是起始字节,对应我们口头常说的报文的Byte0起始字节。

差异点:单帧SingleFrame(SF)

        普通CAN:Byte0的高4位固定为0,低4位表示有效数据长度

        CANFD:Byte0的高4位、低4位都固定为0,Byte1表示有效数据长度

差异点:首帧FirstFrame(FF)

        普通CAN:Byte0的高4位固定为1。Byte0低4位和Byte1的8位是一个整体,表示要发送的有效数据长度。

        CANFD:Byte0的高4位固定为1、Byte0低4位和Byte1的高4位都固定为0。Bye1的第4位、Byte2、3、4、5是一个整体,表示要发送的有效数据长度。


结束

        关于诊断报文CANTP层的存在意义和诊断报文的类型就讲到这里了,下一章我们讲一下诊断仪和ECU的交互流程中的帧类型使用情况


 返回目录:

Autosar BSW 开发笔记(目录)-CSDN博客

       

相关文章:

Autosar UDS-CAN诊断开发02-1(CAN诊断帧格式类型详解、CANFD诊断帧格式类型详解、15765-2(CANTP层)的意义)

目录 前言 CANTP层(15765-2协议)存在的意义 CANTP层(15765-2协议)帧类型详细解读(普通CAN格式) 四种诊断报文类型 单帧SingleFrame(SF) 首帧:FirstFrame(FF) 流控帧:FlowCont…...

swing快速入门(三)

解答一下上一篇关于留下的关于布局管理器的疑问 上一篇 几种常见的布局管理器 看不懂?看不懂没关系,这篇是概念篇,大概了解一下就行~ 1.FlowLayout(流式布局):按照从左到右、从上到下的顺序依次排列组件。…...

Swagger PHP Thinkphp 接口文档

安装 1. 安装依赖 composer require zircote/swagger-php 2. 下载Swagger UI git clone https://github.com/swagger-api/swagger-ui.git 3. 复制下载好的Swagger UI 中的dist目录到public目录中,修改目录名称 cp -rf swagger-ui/dist /home/htdocs/public/ m…...

12.9每日一题(备战蓝桥杯循环结构)

12.9每日一题(备战蓝桥杯循环结构) 题目 2165: 求平均年龄题目描述输入输出样例输入样例输出来源/分类 题解 2165: 求平均年龄题目 2166: 均值题目描述输入输出样例输入样例输出来源/分类 题解 2166: 均值题目 2167: 求整数的和与均值题目描述输入输出样…...

与时代共进退

还记得当初自己为什么选择计算机? 当初你问我为什么选择计算机,我笑着回答:“因为我梦想成为神奇的码农!我想像编织魔法一样编写程序,创造出炫酷的虚拟世界!”谁知道,我刚入门的那天&#xff0…...

Python 云服务器应用,Https,定时重启

Python 云服务器应用,Https,定时重启 环境搭建Python模块模块导入生成Flask实例GET处理启动服务器打开网页验证 GET接入证书 支持https申请证书下载证书保留 xxx.crt 和 xxx.key文件就可以了 copy到python项目目录ssl_context 配置 宝塔面板操作在www目录下新建python工作目录在…...

pytorch 笔记:dist 和 cdist

1 dist 1.1 基本使用方法 torch.dist(input, other, p2) 计算两个Tensor之间的p-范数 1.2 主要参数 input输入张量other另一个输入张量p范数 input 和 other的形状需要是可广播的 1.3 举例 import torchxtorch.randn(4) x #tensor([ 1.2698, -0.1209, 0.0462, -1.3271…...

Java的List中的各种浅拷贝和深拷贝问题

先来看一组代码 public class Temp{public static void main(String[] args) {List<Integer> list new ArrayList<>();list.add(1);list.add(2);list.add(3);List<Integer> temp list;list.add(4);System.out.println(list.toString());System.out.print…...

20231207_最新已测_Centos7.4安装nginx1.24.0_安装详细步骤---Linux工作笔记066

以前安装的太模糊了,干脆重新写一个: 1.首先下载对应的nginx-1.24.0.tar.gz安装文件 2.然后: 去执行命令 安装依赖 yum install -y gcc yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel 3.然后:去解压 tar -zxvf ngi…...

前端知识笔记(二十六)———React如何像Vue一样将css和js写在同一文件

如果想在React中想要像Vue一样把css和js写到一个文件中&#xff0c;可以使用CSS-in-JS。 使用CSS-in-JS 下载 npm i styled-components使用 就像写scss一样&#xff0c;不过需要声明元素的类型 基本语法及展示如下 import styled from "styled-components"expor…...

Photoshop Circular Text

Ctrl N 新增 现学现卖...

深入解析Spring Boot中的注解@PathVariable、@RequestParam、@RequestBody的正确使用

文章目录 1. 引言2. PathVariable&#xff1a;处理路径变量2.1 简介2.2 使用示例 3. RequestParam&#xff1a;处理请求参数3.1 简介3.2 使用示例 4. RequestBody&#xff1a;处理请求体4.1 简介4.2 使用示例 5. 多个注解的组合使用6. 参数绑定的原理6.1 HandlerMethodArgument…...

Qt Location中加载地图对象

在Qt Location中加载地图对象&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1&#xff0c;首先&#xff0c;确保你已经安装了Qt Location模块&#xff0c;并在项目中包含了相应的头文件。在项目文件&#xff08;.pro&#xff09;中添加以下行&#xff1a; QT locatio…...

4-Docker命令之docker ps

1.docker ps介绍 docker ps命令是用来列出容器的相关信息 2.docker ps用法 docker ps [参数] [rootcentos79 ~]# docker ps --helpUsage: docker ps [OPTIONS]List containersAliases:docker container ls, docker container list, docker container ps, docker psOptions…...

你在地铁上修过bug吗?

作为技术人员&#xff0c;有没有遇到下班路上收到老板电话&#xff0c;系统故障&#xff0c;然后地铁上掏出电脑&#xff0c;修bug的场景。自己负责的业务线上出现问题&#xff0c;负责人心里是很慌的&#xff0c;在这种心理状态下做事很容易二次犯错&#xff0c;造成更大的问题…...

CPU、MCU、MPU、DSP、FPGA各是什么?有什么区别?

1、CPU 中央处理器&#xff0c;简称 CPU&#xff08;Central Processing Unit&#xff09;&#xff0c;中央处理器主要包括两个部分&#xff0c;即控制器、运算器&#xff0c;其中还包括高速缓冲存储器及实现它们之间联系的数据、控制的总线。 电子计算机三大核心部件就是CPU…...

SpringBoot之logback 在Linux系统上启动的时候,设置日志按日期分割并设置指定时间自动清除日志

一、在src/main/resources/下创建logback-spring.xml文件 <?xml version"1.0" encoding"UTF-8"?> <configuration><!-- 日志存放路径 --><property name"log.path" value"/home/xmmc/logs" /><!-- 日志…...

OpenHarmony北向-让更广泛的应用开发者更容易参与

一、标准系统的体验 按照官方文档指导&#xff0c;这样操作&#xff0c;OH标准系统开发板就可以运行开发者开发的OpenHarmony应用了。 二、实际情况 按照开发文档上的说明&#xff0c;肯定是装不上的。因为OH不同的发行版&#xff0c;不同发行板不同的设备&#xff0c;IDE&…...

数据结构之归并排序及排序总结

目录 归并排序 归并排序的时间复杂度 排序的稳定性 排序总结 归并排序 归并排序大家只需要掌握其递归方法即可&#xff0c;非递归方法由于在某些特殊场景下边界难控制&#xff0c;我们一般很少使用非递归实现归并排序。那么归并排序的递归方法我们究竟是怎样实现呢&#xff…...

仿windows12网盘,私有云盘部署教程,支持多种网盘

仿windows12网盘,私有云盘部署教程&#xff0c;支持多种网盘 资源宝分享&#xff1a;www.httple.net 视频教程&#xff1a;https://www.bilibili.com/video/BV1m64y1G7Bq/ 宝塔部署方式&#xff1a; 1.验证是否安装jdk,没有安装请看安装教程 推荐安装jdk8&#xff08;注意您…...

告别手动调参!用Simulink扫频法+PID Tuner,10分钟搞定升降压电路的PI控制器设计

10分钟自动化PI设计&#xff1a;Simulink扫频与PID Tuner在升降压电路中的实战技巧 电力电子工程师们对这样的场景一定不陌生&#xff1a;面对一个全新的升降压电路拓扑&#xff0c;为了获得稳定的输出电压&#xff0c;不得不花费数小时甚至数天时间反复调整PI控制器的参数。传…...

3分钟让Windows文件资源管理器焕然一新:ExplorerBlurMica毛玻璃效果完全指南

3分钟让Windows文件资源管理器焕然一新&#xff1a;ExplorerBlurMica毛玻璃效果完全指南 【免费下载链接】ExplorerBlurMica Add background Blur effect or Acrylic (Mica for win11) effect to explorer for win10 and win11 项目地址: https://gitcode.com/gh_mirrors/ex/…...

从《阵列天线分析与综合》到HFSS实战:手把手教你仿真4x1微带天线阵(含相位扫描设置)

从理论到实践&#xff1a;HFSS中4x1微带天线阵的建模与相位扫描全解析 微带天线阵列因其低剖面、易集成和成本优势&#xff0c;在现代通信系统中扮演着重要角色。对于刚接触天线设计的工程师和学生而言&#xff0c;如何将《阵列天线分析与综合》等经典教材中的理论概念转化为可…...

人工智能准备好进行多模态仇恨言论检测了吗?

摘要 网络仇恨言论针对个人或群体的身份属性进行攻击&#xff0c;传播迅速&#xff0c;带来严重的社会风险。模因&#xff08;结合图像与文本的形式&#xff09;已成为传播仇恨言论的一种隐蔽载体&#xff0c;其解读往往依赖文化背景知识。 然而&#xff0c;现有的多模态仇恨言…...

GLM-4-9B-Chat-1M模型推理加速方案

GLM-4-9B-Chat-1M模型推理加速方案 1. 引言 如果你正在使用GLM-4-9B-Chat-1M这个支持百万级上下文的大模型&#xff0c;可能会发现推理速度有时候不太理想。特别是在处理长文本时&#xff0c;生成响应需要等待较长时间。这其实是很正常的现象&#xff0c;毕竟模型参数量达到9…...

SerialLCD库深度解析:SerLCD v2.5串口LCD驱动实践

1. SerialLCD 库技术解析&#xff1a;面向嵌入式系统的 SparkFun SerLCD v2.5 串口 LCD 驱动深度实践 1.1 背景与工程定位 SerialLCD 是一个专为 SparkFun SerLCD v2.5 硬件模块设计的轻量级串口 LCD 控制库&#xff0c;其原始实现源自 Arduino.cc Playground 社区维护的 Ser…...

从数学直觉到代码实践:Harris角点检测的算法拆解与性能调优

1. 角点检测&#xff1a;计算机视觉的基石 想象一下你正在玩一个拼图游戏。当两块拼图能够严丝合缝地拼接在一起时&#xff0c;往往是因为它们在某些关键位置完美匹配——这些位置通常是拼图块的拐角处。计算机视觉中的角点检测&#xff0c;本质上就是在做类似的事情&#xff1…...

如何快速解锁网易云音乐NCM文件:ncmdumpGUI终极指南

如何快速解锁网易云音乐NCM文件&#xff1a;ncmdumpGUI终极指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐下载的NCM格式文件无法在其他…...

中小企业SEO推广应该投入多少费用

<h2>中小企业SEO推广应该投入多少费用</h2> <p>在数字化时代&#xff0c;网络已经成为企业推广和销售的重要渠道之一。特别是对于中小企业来说&#xff0c;通过优化搜索引擎&#xff08;SEO&#xff09;来提升网站的自然流量&#xff0c;是非常有效且相对经济…...

原神帧率解锁器:告别60帧限制,开启高刷新率游戏新时代

原神帧率解锁器&#xff1a;告别60帧限制&#xff0c;开启高刷新率游戏新时代 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 对于追求极致游戏体验的《原神》玩家来说&#xff0c;60帧的…...