CAN协议通信「建议收藏」

CAN协议通信「建议收藏」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协议的总结,如有错漏,还望广大网友指正,标准CAN协议适用于大多数的车辆诊断通信,CAN2.0在物理层和链路层做出规定;但J1939在CAN协议的基础上,最网络层做出了规定,大家有兴趣可以看看J1939协议;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154131.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 软磁盘阵列「建议收藏」

    软磁盘阵列「建议收藏」磁盘阵列是指通过软件或者硬件的技术来将多个磁盘整合成为一个大的磁盘设备,来实现存储和保护数据的功能。硬件实现的成为硬磁盘阵列,软件实现称为软磁盘阵列,硬件通过磁盘阵列卡上的芯片专门处理raid任务,性能最佳。但由于成本太高大多使用软磁盘阵列,就是mdadm软件,以分区或者磁盘为单位来进行设计。Raid-0(等量模式):将文件内容等量分配到各个磁盘中,大大增强读写速度,但只要硬盘有损坏,将会直接…

    2022年5月20日
    31
  • oracle物化视图的刷新命令_物化视图增量刷新

    oracle物化视图的刷新命令_物化视图增量刷新物化视图(MATERIALIZEDVIEW)是一个包含查询结果的数据库对象。将经常使用的数据拷贝并存储下来,在查询时就可以直接返回数据。本质上是一个物理表,会占用磁盘空间。本文主要记录了物化视图刷新的方法、时机等相关特性。

    2025年6月6日
    0
  • 5个常用的MySQL数据库管理工具_SQL工具

    5个常用的MySQL数据库管理工具_SQL工具原文:http://www.techxue.com/techxue-11898-1.html如今,Web应用程序的响应速度是成功的关键法宝之一。它与用户互动,用户对网站的看法,甚至谷歌网站排名情况都有着密不可分的关系。数据库性能是响应速度最重要的因素之一,一旦出错,所有程序都将会宕机。工欲善其事,必先利其器。几乎每一个Web开发人员都有一个最钟爱的MySQL管理工具,它帮助开发人员在许

    2022年8月22日
    3
  • idea创建工程的目录_idea创建java文件

    idea创建工程的目录_idea创建java文件前提:已安装好jdk,配置好环境变量。我使用的是java8首先在自己的d盘下建一个文件夹,用来存放我们待会新建的项目,我创建了ideaproject:1,第一步打开idea2,第二步选择创建java项目,并选择自己的jdk(我自己本地已经配置了所以有),没有可以点击new去自己的安装目录下找,一般默认安装c:\programfiles\java,然后选择next下一步3,第三步将“creat…

    2022年9月27日
    0
  • 13.1.2 拷贝赋值运算符、析构函数、三/五法则、阻止拷贝

    13.1.2 拷贝赋值运算符、析构函数、三/五法则、阻止拷贝

    2021年6月10日
    83
  • 局域网组建与维护期末考试题_局域网聊天程序java报告

    局域网组建与维护期末考试题_局域网聊天程序java报告局域网的组建与维护》学科期中测试题2014年秋季学期13级《局域网的组建与维护》期中测试题班别_____________姓名_____________成绩________________一、填空题(每空2分,共20分)1、计算机网络按地理位置分,可分为广域网、城域网、_局域网___。2、网线制作中,若采用T568B标准,则8针配线线序依次是白橙、橙、白绿_____蓝、白蓝、绿、白棕、棕3、两头都采…

    2025年7月1日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号