【通信协议】二、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:作为实际有效字节(SID+PID),它表示系统进入的命令;
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:表示请求的肯定应答((SID+0x40)+ PID),及允许进入系统;
00 00 00 00 00 :填充字节,无意义,为满足标准can的字节数而存在;
上述解其中涉及了PID(Process ID)和SID(Service ID)的概念;关于某个PID具体意思在CAN2.0中都做了规定,可以查询ISO 11898文档进行查询
肯定应答: SID + 0X40
否定应答: 7F + SID+否定类型
(注:否定类型在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:作为实际有效字节(SID+PID),它表示读取车辆数据流命令;
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表示SID+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-7F0-127ms表示连续帧之间的发送时间间隔至少为指定时间间隔
80-F0保留保留
F1-F9100-900微秒表示连续帧之间的发送时间间隔至少为指定时间间隔
FA-FF保留保留

结束语

这是我对于CAN协议的总结,如有错漏,还望广大网友指正,标准CAN协议适用于大多数的车辆诊断通信,CAN2.0在物理层和链路层做出规定;但J1939在CAN协议的基础上,最网络层做出了规定,大家有兴趣可以看看J1939协议;

  • 9
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
### 回答1: CAN(Controller Area Network)总线通信协议是一种用于多个节点之间进行高速数据传输的协议。它最早是由德国博世公司于1986年开发的,用于汽车电子系统中的数据通信。CAN总线通信协议的主要特点是高可靠性、实时性和抗干扰能力强。 CAN总线通信协议采用了主从节点的结构,主节点负责发送命令和控制数据的传输,从节点负责接收和执行主节点发送的命令。CAN总线通信协议的物理层采用了双绞线传输数据,可以实现较长的传输距离。 CAN总线通信协议的数据包括四个基本部分:起始符(SOF)、标识符(ID)、数据(Data)和校验码(CRC)。其中,标识符用于区分不同的,数据用于传输实际的命令和控制数据,校验码用于检验数据的正确性。 CAN总线通信协议具有以下优点:首先,CAN总线通信协议可以支持多个节点的同时通信,实现了高效的数据传输;其次,CAN总线通信协议具有较高的可靠性,即使在部分节点故障的情况下,不会影响整个系统的工作;再次,CAN总线通信协议具有较好的抗干扰能力,可以应对复杂的工作环境;最后,CAN总线通信协议具有实时性能,可以满足对数据传输时延较高的应用需求。 总之,CAN总线通信协议是一种可靠、高效的数据通信协议,广泛应用于汽车电子系统以及其他需要多个节点间进行高速数据传输的领域。 ### 回答2: CAN(Controller Area Network)总线通信协议是一种广泛应用于车载网络和工业自动化领域的串行通信协议。CAN总线通信协议采用了一种分布式通信结构,在一个网络中连接多个设备,并且允许这些设备在同一时间进行数据传输。 CAN总线通信协议的主要特点是高可靠性和实时性。它采用了差分信号传输和抗干扰技术,能够在恶劣的环境中保证数据的稳定传输。同时,CAN总线通信协议使用了先进的冲突检测与回避机制,能够实现多个设备同时发送消息而不发生冲突。 CAN总线通信协议还具有灵活的网络拓扑结构和高带宽的传输能力。它允许将多个设备通过总线连接起来,形成一个分布式的网络。同时,CAN总线通信协议支持多种数据传输速率,从几千bps到几百万bps都能满足不同领域的需求。 CAN总线通信协议在工业控制和汽车领域中有广泛的应用。在工业控制领域,CAN总线通信协议可以连接各种传感器和执行器,实现对生产过程的监控和控制。在汽车领域,CAN总线通信协议被广泛应用于车辆的电子控制系统,比如发动机管理、底盘控制和信息娱乐系统等。 总而言之,CAN总线通信协议是一种高可靠性、实时性和灵活性强的串行通信协议,应用于车辆和工业自动化领域,为各种设备之间的数据传输提供了可靠的解决方案。 ### 回答3: CAN总线通信协议是一种用于微控制器和其他设备之间进行实时通信标准协议。CAN(Controller Area Network)总线是一种串行通信协议,通常用于汽车、工业控制和其他领域中的网络通信。 CAN总线通信协议通过一对互补的差分信号线来传输数据。它采用了CSMA/CD(载波监听多点冲突检测)的访问机制,允许多个设备共享同一总线,以实现实时通信和数据交换。 对于CAN总线通信协议的控制和管理,使用一种称为CAN的数据包来进行。CAN由四个主要部分组成:起始位、标识符、数据和校验位。起始位用于同步总线,标识符用于识别消息的发送者和接收者,数据部分包含要传输的实际数据,校验位用于检测传输过程中的错误。 CAN总线通信协议具有许多优点。首先,它具有高度可靠性和实时性,能够在多个设备之间进行快速、准确的数据传输。其次,CAN总线支持多主机结构,允许多个设备同时发送和接收数据。此外,CAN总线协议还具备较低的成本和复杂性,易于集成到各种应用中。 在实际应用中,CAN总线通信协议被广泛应用于汽车电子系统、工业自动化、医疗设备等领域。它可以用于车辆的发动机控制、底盘控制、仪表盘显示等方面,也可以用于工业控制系统中的传感器和执行器之间的通信。 总而言之,CAN总线通信协议是一种高效、可靠的数据通信协议,适用于各种实时要求较高的应用场景。它通过使用CAN来传输数据,具有多主机结构、低成本和复杂性的优点,被广泛应用于汽车、工业控制等领域。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修道-0323

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值