首页 > 其他分享 >CAN协议通信,帧格式

CAN协议通信,帧格式

时间:2024-02-26 20:55:20浏览次数:29  
标签:协议 00 07 08 通信 数据位 E8 格式 字节

CAN协议通信「建议收藏」

 

简介

CAN(Controller Area NetWork)是局域网络控制器的简称;在汽车诊断行业,它充当了一系列汽车设备制造的标准,其中包括ECU(electronic Control Unit)的设计及制造;因此,在与汽车ECU通信的过程中,我们必须遵循这个标准,就是我们常说的CAN协议; 本章节简要介绍一下CAN2.0的车辆通信协议的使用,对于 CAN OSI的七层模型等则不做说明;

CAN协议通信

CAN通信根据协议结构而言分为标准CAN和拓展CAN;拓展CAN比标准CAN多了两个字节,然后请求应答需要交换ID外基本与标准CAN相同,故这里主要介绍标准CAN协议。

标准CAN协议

(1),标准帧:11个字节的标准帧,其协议格式如下图所示:

在这里插入图片描述 在这里插入图片描述

(2)在标准帧中,根据发送命令数据的长短,可分为单帧,多帧;使用着两种方式与车辆进行通信;

单帧

单帧指的是有效数据长度小于等于7的帧(请求数据只需要一帧就可以发送完成);适用于简单命令;

例1:

Req:07 E0 08 02 10 03 00 00 00 00 00

Ans:07 E8 08 02 50 03 00 00 00 00 00

命令解析:

1,上面的命令一般作为传统汽车的系统进入命令,让诊断工具(下面统称为tool)可以进去汽车ECU的命令; Req(请求):07 E0 08 02 10 03 00 00 00 00 00 07 E0:作为toolID,相当于自己的身份证,用于与车辆验证身份; —- 08: 表示后面的数据位长度,即8个数据位字节,一般固定为08; —- 02: 表示实际有效数据位长度,即后面实际有两个字节的数据; 10 03:作为实际有效字节(PID+SID),它表示系统进入的命令; 00 00 00 00 00 :填充字节,无意义,为满足标准can的字节数而存在;

Ans(应答):07 E8 08 02 50 03 00 00 00 00 00 07 E8 : 汽车ECUID;每个ECU都有的唯一标识符;响应tool的请求; —-08 :表示后面的数据位长度,即8个数据位字节,一般固定为08; —-02 :表示实际有效数据位长度,即后面实际有两个字节的数据; 50 03:表示请求的肯定应答((PID+0x40)+ SID),及允许进入系统; 00 00 00 00 00 :填充字节,无意义,为满足标准can的字节数而存在; 上述解其中涉及了PID(Process ID)和SID(Service ID)的概念;关于某个PID具体意思在CAN2.0中都做了规定,可以查询ISO 11898文档进行查询 肯定应答: PID + 0X40 否定应答: 7F + PID+否定类型 (注:否定类型在CAN2.0中也做了规定,可以查询)

多帧

多帧指的是大于7个有效字节的帧,需要发送多次才能将数据发送完成,如上所示 “02”表示有效字节数,但我们想想,一个字节所能表示的最大有效字节不过是0xFF个,如果一条命令需要大量数据时,一个字节所代表的字节数就不够用了;因此协议中将另一个字节的4个bit作为有效长度位;将最大有效字节数拓展到了0xFFF个有效字节;便于大量数据的发送和接收;

例1:

Req: 07 E0 08 02 21 01 00 00 00 00 00

Ans: 07 E8 08 10 3E 61 4D 58 47 52 38

Req: 07 E0 08 30 00 28 00 00 00 00 00

Ans: 07 E8 08 21 31 52 4A 4E 33 4A 49

Ans: 07 E8 08 22 44 58 4E 38 4C 4E 48

命令解析:

1,上面的命令一般作为读取车辆数据流(发动机转速,机油温度等)命令; (注:–表示空格) Req(请求):07 E0 08 02 21 01 00 00 00 00 00 07 E0:作为toolID,相当于自己的身份证,用于与车辆验证身份; —- 08: 表示后面的数据位长度,即8个数据位字节,一般固定为08; —- 02: 表示实际有效数据位长度,即后面实际有两个字节的数据; 21 01:作为实际有效字节(PID+SID),它表示读取车辆数据流命令; 00 00 00 00 00 :填充字节,无意义,为满足标准can的字节数而存在;

Ans:07 E8 08 10 12 61 4D 58 47 52 38 Req:07 E0 08 30 00 28 00 00 00 00 00 Ans: 07 E8 08 21 31 52 4A 4E 33 4A 49 Ans: 07 E8 08 22 44 58 4E 00 00 00 00 07 E8 : 汽车ECUID;每个ECU都有的唯一标识符;响应tool的请求; —-08 :表示后面的数据位长度,即8个数据位字节,一般固定为08; ——1 :表示多帧标志说明,且该帧数位多帧的第一帧; –0 12 :表示实际有效数据位长度,即后面实际有0x012个字节的数据; —–30:3 :表示流控制帧,对发送参数进行设置,0:表示可以连续发送; —–21: 2 :表示连续帧,1:表示发送帧需要(1-F,在从0-F循环); 0x12 个有效字节:61 4D 58 47 52 38 31 52 4A 4E 33 4A 49 44 58 4E (其中61表示PID+0x40,即0x21 + 0x40 = 0x61,表示肯定应答) 00 00 00 00 :填充字节,为满足标斜体样式准can的11个字节数而存在;

第一帧制帧详细解析:

第一帧:07 E8 08 10 12 61 4D 58 47 52 38 第一帧结构:0001+FF_DL (注:第一帧共两个字节,高位4个bi为0001固定值,后12bit表示FF_DL) (1) FF_DL:有效数据总长度 ,范围0x08-0xFFF Bytes

连续帧详细解析:

连续帧:连续帧是发送第一帧后面没有传完的数据。 Ans: 07 E8 08 21 31 52 4A 4E 33 4A 49 Ans: 07 E8 08 22 44 58 4E 00 00 00 00 连续帧结构:0002+SN (2)SN:连续帧的序号,从0x21开始,满0x2F后从0x20开始循环计数。

流控制帧详细解析:

流控制帧:Req:07 E0 08 30 00 28 00 00 00 00 00 流控制帧结构:

0011+FS

BS

STmin/ESTmin

30

00

28

(1)FS(Flow state): 流的状态.

FS

定义

内容说明

0

连续输出

传输的帧数能达到最大值

1

等待

正在等待连续帧

2

溢出

收到的有效数据长度超多缓冲区大小

3-F

保留

保留

(2)BS(Block Size): 可传输的数据块的大小(帧),表示最大能传输多少帧.

BS

内容说明

00

表示连续传输的信息可以达到最大值

01-FF

表示每个数据包可以传输的最大帧数

(3)STmin/ESTmin: 指定连续帧之间的发送时间间隔

STmin/ESTmin

定义

内容说明

00-7F

0-127ms

表示连续帧之间的发送时间间隔至少为指定时间间隔

80-F0

保留

保留

F1-F9

100-900微秒

表示连续帧之间的发送时间间隔至少为指定时间间隔

FA-FF

保留

保留

标准CAN协议适用于大多数的车辆诊断通信,CAN2.0在物理层和链路层做出规定;但J1939在CAN协议的基础上,最网络层做出了规定.J1939协议;

标签:协议,00,07,08,通信,数据位,E8,格式,字节
From: https://www.cnblogs.com/yangfuren/p/18035143

相关文章

  • [COPYRIGHT] 常见版权许可协议
    [COPYRIGHT]常见版权许可协议 目录1.版权许可协议是什么?2.常见许可协议总结2.1创作共用许可协议2.2软件开源许可协议3.创作共用许可协议3.1简介3.2主要标志3.3组合3.4适用作品3.5署名权的一般要求3.6CSDN所使用的默认版权协议4.BSD许可协议4.1BSD许可协议基本内......
  • MAUI Blazor+MASA开发安卓应用学习笔记 - 设置APP格式、名称、版本信息
    上一期说到了如何生成APP应用,生成的文件是AAB格式的,这个格式安装不是很方便,如果能生成APK就好了 一、设置APP格式打开项目文件.csproj,在PropertyGroup下添加属性<AndroidPackageFormat>apk</AndroidPackageFormat>二、设置名称和版本信息在项目文件里,可以设置全局的应用......
  • PowerShell 中,你可以使用一些命令来处理映像文件,包括挂载、捕捉、卸载、格式转换和编
    PowerShell中,你可以使用一些命令来处理映像文件,包括挂载、捕捉、卸载、格式转换和编辑映像。以下是一些常用的命令:挂载映像(MountImage):powershellCopyCodeMount-WindowsImage-ImagePath"C:\Path\To\Image.wim"-Path"C:\Mount\Directory"-Index1捕捉映像(CaptureIm......
  • vscode格式
    ctr+shift+P  搜settings.json {"security.workspace.trust.untrustedFiles":"open","vetur.format.options.tabSize":4,"vetur.format.defaultFormatterOptions":{"prettier":{......
  • Arrow和ArrowStream格式的区别
    Arrow是Apache软件基金会的一个顶级项目,它提供了一种内存布局格式,用于在不同系统之间高效地共享数据。Arrow旨在提供一种跨平台、跨语言的数据交换格式,以便在大数据处理和分析领域中提高数据处理效率。在Arrow中,数据可以被序列化为不同的格式,其中两种主要格式是Ar......
  • SIP协议消息
    SIP协议消息关于SIP协议指定在端点之间传送状态的消息。每条标准化消息都按下面列出的数字进行索引。RFC3261单击此处展开目录要求回应1xx信息性消息2xx成功响应3xx重定向响应4xx请求失败响应5xx服务器故障响应6xx全局故障响应示例:播放自定义错误消息也......
  • Python 字符串格式化输出
    数字n:int=1000000000print(f'{n:_}')#1_000_000_000print(f'{n:,}')#1,000,000,000对齐var:str='var'#右对齐,使用_填充print(f'{var:_>20}')#_________________var#左对齐,使用#填充print(f'{var:#<20}�......
  • PNG格式PNG(Portable Network Graphics)位图图形文件格式 无损压缩的图片格式,支持索引
    PNG(PortableNetworkGraphics)是一种位图图形文件格式,它是一种无损压缩的图片格式,支持索引、灰度、RGB和RGBA等多种颜色模式。PNG格式支持多种颜色模式,包括以下几种:索引色模式(IndexedColor):索引色模式使用一个颜色索引表来存储图像中使用的颜色。每个像素使用索引值来指定......
  • C#使用Channel实现异步任务之间的通信
    channel中也是有一个ConcurrentQueue来维护的usingSystem.Threading.Channels;varchannel=Channel.CreateUnbounded<Message>();//在赋值的时候,两个Task就开始执行了,下面的await就是为了等待执行完成varsender1=SendMessageAsync(channel.Writer,1);varsender2=......
  • 导出页面为PDF格式
     安装(注意安装顺序) npminstall--savehtml2canvas npminstall--save jspdf文件htmlToPdf.js//导出页面为PDF格式importhtml2Canvasfrom'html2canvas'importJsPDFfrom'jspdf'exportdefault{install(Vue,options){Vue.prototype.getPd......