汽车CAN 总线系统原理设计与应用 (一)

1. CAN 协议标准

物理层(Physical Layer): 主要功能是完成相邻节点之间的原始比特流的传输,非屏蔽双绞线(Unshielded Twisted Pair- UTP)是应用中最常用的物理传输介质,在其上发生对称信号传输。通常,非屏蔽双绞线具有0.34 汽车CAN 总线系统原理设计与应用 (一) 和0.6 汽车CAN 总线系统原理设计与应用 (一) 之间的导线横截面。线路电阻应小于60mΩ。CAN的边界条件:最大数据速率为1 Mbit / s。允许最大网络扩展约40米。在CAN网络的末端,总线终端电阻有助于防止瞬态现象(反射)。ISO 11898将CAN节点的最大数量指定为32

数据链路层 (Data Link Layer):主要是如何在不可靠的物理层线路上进行数据的可靠性传输,完成的是网络中相邻节点之间可靠的数据通信,由于物理线路的不可靠,因此发送方发出的数据帧有可能在线路上发射出错或者丢失。

网络层(Network Layer):主要功能是完成网络中主机之间的报文传输,关键问题是使用数据链路层的服务将每个报文从源端传输到目的端。网络层的任务就是选择合适的路由,使发送站的传输层所传下来的分组能够正确地按照地址找到目的站,并交付给目的站的传输层。这就是我们所说的网络层的寻址功能。

传输层(Transport Layer):主要功能是完成网络中不同主机上的用户进程之间的可靠数据通信,任务是根据下面通信子网的特性,最佳的利用网络资源,并以可靠的和经济的方式为源站和目的站之间进程建立一条可靠的传输连接,以便透明的传送报文。

会话层(Session Layer):会话层允许不同机器上的用户之间建立回话关系,进行类似传输层的普通数据的传送,回话层提供的服务之一是管理回话控制,回话层允许信息同时双向传输,或同一时刻只能单向传输。

表示层(Presentation Layer):表示层涉及到数据压缩和解压,数据加密和解密等工作,表示层服务的一个典型例子是用大家一致选定的标准方法对数据进行解码。

应用层(Application Layer):连网目的在于支持不同计算机的进程进行通信,对于需要通信的不同应用来说,应用层的协议都是必须的。

汽车CAN 总线系统原理设计与应用 (一)

汽车CAN 总线系统原理设计与应用 (一)

ISO 11898 是CAN 总线规范,对应的是OSI 模型物理层和数据链路层,对于物理层而言,定义了CAN 总线信号在双绞线的电压形式;对于数据链路层而言,定义了CAN 帧的各个域的用途。

ISO 15765-2 是诊断服务在CAN总线传输的 实现方式,对应OSI 的传输层,对于classical CAN 总线来说,它一帧只能承载8个字节,而上层的诊断服务却可能超过8个字节,这时候就需要传输层对数据进行分包重组流控制。ISO 15765-2还定义了应用层、传输层、数据链路层之间的编程接口,其实就是request, confirm, indication这几个原语的定义。ISO 15765-3和ISO 14229-3的内容是一样的,后者取代了前者。ISO 15765-4定义了基于CAN总线实现OBD通信的方式

ISO 14229-1 对应于OSI的层7,即应用层,它定义了诊断服务的格式。ISO 14229-2定义了诊断会话中的各种时间参数,比如ECU的响应时间等。ISO 14229-3 一直到ISO 14229-7 分别定义了UDS在CAN,FlexRay, Internet Protocol ,K-Line ,LIN上的实现要求 。

这三部分协议一起使用,就可以实现完整的诊断功能了。总结来说,ISO 14229-1生成诊断服务,ISO 15765-2对诊断服务进行分包并把分包后的数据交给ISO 11898,ISO 11898给收到的数据加上CAN总线特有的包头和包尾,然后通过双绞线以电压差的形式发送出去。

作者:张丁
链接:https://www.zhihu.com/question/303256393/answer/542832019
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2. 总线标准

2.1 A类总线标准

大部分采用URAT 标准,首选标准是LIN ,LIN 是用于汽车分布式电控系统 的一种新型低成本串行系统,基于UART 的数据结构,主从结构的单线12V 的总线通信系统。传输速度最高可达20KB/S.

2.2 B 类总线

轿车应用ISO11898 ,传输速率100Kb/s 左右,在商用车应用SAE J1939, 传输速率250Kb/s

2.3 C 类总线

用于与汽车安全相关,对于实时性要求比较高,通常在125Kb/s~ 1M Kb/s 之间,

典型汽车网络如下:

汽车CAN 总线系统原理设计与应用 (一)

3. CAN 基础知识

3.1 性能特点
  • 采用双线差分信号

    汽车CAN 总线系统原理设计与应用 (一)

  • 优先级通过报文的标识符(ID)区分,报文标识符在网络中是唯一的

  • 广播发送报文,报文可以被所有的节点同时接收

  • 根据需要进行相关性报文过滤

汽车CAN 总线系统原理设计与应用 (一)

  • 保证系统数据一致性,接口的抗电磁干扰能力设计,采用CRC 及其其他检验措施,错误报文的自动重发

    汽车CAN 总线系统原理设计与应用 (一)

3.2 DLL -通信机制
  • 只有总线处于空闲,节点才能发送报文,在发送报文过程中进行“回读”,判断送出的位与回读的位是否一致。

汽车CAN 总线系统原理设计与应用 (一)

  • CAN 总线访问

    1. 线与机制, 显性位 0 ,隐形位1, 显性位可以覆盖隐性位

      汽车CAN 总线系统原理设计与应用 (一)

    2. 通过ID 仲裁

      ID 越小, 报文优先级越高

      汽车CAN 总线系统原理设计与应用 (一)

  • 报文发送

    1. 非破坏性仲裁

      退出仲裁后进入“只听”状态,等待总线再次空闲时进行报文重发,同时高优先级的报文不能中断低优先级报文的发送

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h0TZDWbg-1592216749696)(C:%5CUsers%5Cchen_w3%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20200615143459229.png)]

  • 报文接收过滤

    通过滤波器,节点可以对接收的报文进行过滤。接收规则: 比较消息ID与选择器中和接收过滤相关位是否相同.

    接收过滤相关位:由掩码定义 1=与消息过滤有关,0= 与消息过滤无关

    汽车CAN 总线系统原理设计与应用 (一)

  • NRZ 编码与位填充

    NRZ 编码: 确保报文紧凑,在相同带宽情况下,NRZ 编码方式的信息量更大,

    位填充:连续发送5个连续 的相同极性位后,在位流中自动插入一个极性相反的位→ 位填充;接收节点对相同极性位进行进检测,从位流中将填充位去掉。→ 清除填充

3.3 DLL -数据帧

汽车CAN 总线系统原理设计与应用 (一)

帧起始: 标识一个数据帧的开始,用于同步,一个显性位,只有总线空闲期间节点才能发送SOF

ID : 唯一确定一条报文,确定报文的仲裁优先级,ID 数值越小,优先级越高;标准帧 11位,扩展帧 29位

RTR 位: 用于区分数据帧和远程帧; 数据帧RTR=0,远程帧 RTR =1;

IDE 位: 用于区分标准帧和扩展帧,标准帧 IDE =0(11 位ID ), 扩展帧IDE=1 (29位ID)

SRR 位: 表明在该位替代了标准帧的RTR ,该位没有实际意义,SRR 永远置1

r0,r1 位:两个保留位,当前置0

DLC 包含4位,表示数据场包含数据的字节数;DLC =0-8, DLC =9-15→ DLC =8.

数据场:具有0-8 个字节长度,由DLC 确定,包含CAN 数据帧发送 的内容

CRC: 用于CRC 校验

汽车CAN 总线系统原理设计与应用 (一)

CRC 界定符DEL : 界定CRC 序列,固定格式,一个隐形位,CRC界定符之前进行位填充

ACK: 确定报文被至少一个节点正确接收

汽车CAN 总线系统原理设计与应用 (一)

ACK界定符DEL: 界定ACK , 固定格式,1个隐性位

EOF : 表示数据帧结束,固定格式,7个连续隐性位

ITM :固定格式,3个连续隐性位,ITM 之后进入总线空闲状态,此时节点可以发送报文

汽车CAN 总线系统原理设计与应用 (一)

汽车CAN 总线系统原理设计与应用 (一)
3.4 DLL - 错误检测
  • 错误检测

汽车CAN 总线系统原理设计与应用 (一)

位检测:节点检测到的位与自身送出的位数值不同→ 位错误。仲裁或者ACK位期间送出“隐性”位,而检测到“显性”不导致位错误

填充检测: 在使用位填充编码的帧场(帧起始于CRC 序列)中,不允许出现6个连续相同的电平位

CRC 检测: 节点计算的CRC序列与接收到的CRC序列不同

格式检测: 固定格式位场(如CRC 界定符,ACK 界定符, 帧结束等)含有一个或者更多非法位

ACK 检测: 发送节点在ACK 位期间未检测“显性”位

发送节点→ 位错误,格式错误,ACK 错误

接收节点→ 填充错误,格式错误,CRC 错误

检测到错误后,发送错误标志: 1. 位错误、填充错误、格式错误、ACK 错误产生后 错误位标志下一位发送; 2. CRC 错误:错误位标志在ACK 界定符后发送

  • 错误界定

    每个节点都含有REC 和TEC, 当接收错误产生时,REC 增加;正确接收到数据帧,REC 减少;TEC 类似。

    REC:Receive Error Counter 接收错误计数器

    TEC:Transmit Error Counter 发送错误计数器

  • 节点状态

    汽车CAN 总线系统原理设计与应用 (一)
  • 错误帧格式

    包括错误标志错误界定符

    错误标志: Active 6个显性位; Passive 6个隐性位。错误标志违背“位填充规则”,其他节点也会发送错误标志→错误标志6-12 位长度

    错误界定符: 8个连续隐性位, 节点发送错误标志后,发送隐性位,直至检测到总线上出现隐性位,之后发送7个剩余隐性位。

    汽车CAN 总线系统原理设计与应用 (一)
  • 错误帧
    汽车CAN 总线系统原理设计与应用 (一)
  • 帧格式

    数据帧: 携带发送节点至接收节点的数据

    远程帧: 向其他节点请求发送具有同一标识符的数据帧

    帧间空间:数据帧通过帧间空间与前述的各帧分开

    错误帧: 节点检测到错误后发送错误帧

    超载帧:在先行的和后续的数据帧(或远程帧)之间附加一段延时

    1. 数据帧

      汽车CAN 总线系统原理设计与应用 (一)
    2. 远程帧

      汽车CAN 总线系统原理设计与应用 (一)

      汽车CAN 总线系统原理设计与应用 (一)
    3. 帧间空间

      主动错误节点使用的帧间空间格式

      汽车CAN 总线系统原理设计与应用 (一)

      被动错误节点使用的帧间空间格式

      汽车CAN 总线系统原理设计与应用 (一)

    4. 错误帧

      主动错误节点使用的错误帧格式

      汽车CAN 总线系统原理设计与应用 (一)

      被动错误节点使用的错误帧格式

      汽车CAN 总线系统原理设计与应用 (一)

    5. 超载帧

      超载帧用以在先前的后后续的数据帧(或远程帧)之间提供一附加延时,大部分高层协议不使用超载帧

3.5 DLL- 位定时与同步
  • 位定时

    时间份额源于对系统时间可编程的分频

    汽车CAN 总线系统原理设计与应用 (一)
  • 波特率

    汽车CAN 总线系统原理设计与应用 (一)
  • 位时间

    汽车CAN 总线系统原理设计与应用 (一)

    同步段: 一个位的输出从同步段开始,同步段用于同步总线上的各个节点,跳变沿产生在此段内,固定长度,1个时间份额。

    传播段用于补偿信号通过网络和节点传播的物理延迟,传播段长度应能保证2倍的信号在总线延迟,长度可编程

  • 同步

    CAN 的同步包括硬同步和重同步两种同步方式, 同步规则:

    1. 一个时间内只允许一种同步方式
    2. 任何一个隐性到显性的跳变都有可能用于同步
    3. 硬同步发生在SOF→ 所有接收节点调整各自当前位的同步段,使其位于发送的SOF之内
    4. 重同步发生在一个帧的其他位场内,当跳变沿落在同步段之外

4. 物理层

高速总线电压:

汽车CAN 总线系统原理设计与应用 (一)
  1. 一个时间内只允许一种同步方式
  2. 任何一个隐性到显性的跳变都有可能用于同步
  3. 硬同步发生在SOF→ 所有接收节点调整各自当前位的同步段,使其位于发送的SOF之内
  4. 重同步发生在一个帧的其他位场内,当跳变沿落在同步段之外

4. 物理层

高速总线电压:

汽车CAN 总线系统原理设计与应用 (一)

汽车CAN 总线系统原理设计与应用 (一)

相关文章: