汽车CAN总线 CAN2.0

引言

为什么需要can?现在汽车逐渐走向智能化。传统汽车目标已经不在是像以前追求速度、舒适、经济安和全等多因素,主要以车为中心。现代汽车而是更加注重环保、智能、舒适度等以人、环境为中心。所以不断增加传感器、逆变电路换电机和动力电池,使得汽车稳定的机械结构,不断被替换成各种各样的电器设备。而这些众多繁杂的电器设备又使得汽车上线束繁杂、数据互通麻烦。这时候我们汽车线束救世主BOSCH博世在80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发了一种串行数据通信协议-CAN总线。

CAN

什么是CAN?CAN全称是Controller Area Network(控制器局域网)。是ISO国际标准化的串口通信协议。是一种多主总线,具有突出的可靠性、实时性和灵活性。CAN总线通常采用双绞线或光纤总线传输介质。

CAN的历史

1983年:BOSCH公司内部启动研究车内网络。
1986年2月:在密西根州底特律的汽车工程师SAE会议上,BOSCH公布CAN总线协议作为汽车电子解决方案。
1987年:同一年CAN控制器芯片由英特尔和飞利浦生产的先后上市,英特尔先发布82526,不久飞利浦随后发布82C200.
1991年:梅赛德斯奔驰W140是第一款采用基于CAN的多路布线系统的量产车;BOSCH公司发布CAN2.0,分CAN2.0A(11位标识符标准CAN)和CAN2.0B(29位标识符扩展CAN)。
1993年11月:CAN总线被接受并列入国际标准组织IOS的国际标准中,并发布ISO 11898(高速CAN)和ISO 11519(低速CAN).
C汽车CAN总线 CAN2.0_第1张图片

高速CAN与低速CAN 对立统一

统一性:架构相同,都有电阻、总线和节点;作用相同,都是局域网内设备之间通信。
对立性:
通信速率不一样,高速CAN通信速率可高达1Mbps,低速CAN通信速率可高达125Kbps;
电阻值不一样,高速CAN总线之间并联一个120Ω的电阻,低速CAN总线之间并联一个2.2KΩ电阻;
帧类型不一样,高速CAN有两种类型,标准帧和扩展帧,低速CAN只有标准帧。
1994年:美国汽车工程师协会SAE制定SAEJ1939标准,用于卡车和巴士控制和通信网络。
2003年:ISO开始将原先的ISO 11898CAN标准逐步分离为相互独立6个部分(ISO 11898CAN-X)。
2016年:ISO把6个相互独立部分又整合在一起。

CAN数据总线的数据传输终端

数据传输信号终端需要电阻隔离。电阻作用是防止差分信号在CAN_H与CAN_L的回路之间产生影响。一个CAN节点即一个CAN设备都有一个CAN控制器和一个CAN收发器。控制器接收MCU数据并发送给CAN。CAN信号是由收发器将数字信号高低电平转换为差分CAN信号进行传送:逻辑1(隐形):CANH=CAN_L=2.5V左右 ;逻辑0(显性):CAN_H比CAN_L高,CAN_H=3.5V ,CAN_L=1.5V 。可根据CAN_L电平特性测试CAN位码。
线与机制。当总线挂着多个设备节点且同时发送时,总线会是什么状况呢?多个节点都发隐形电平(1)时,总线状况是1,只要一个节点发送显性电平(0),总线状态是0。

线与逻辑
|节点1|节点2|总线
|–|–|
|0|0|0
|0|1|0
|1|0|0
|0|0|1

汽车CAN总线 CAN2.0_第2张图片

CAN数据传输系统基本特点:

标识符优先权的多主方式

在网络中,标识符ID唯一的。标识符越小,优先级越高。ID并不是地址,而是优先级。

仲裁机制

载波监测。总线上的节点发送信息报文前要先检测总线是空闲状态。
当节点发送数据冲突时,优先级高的节点报文先发,低的会被暂停。

NRZ不归零编码

数据位按照CAN_H与CAN_L的逻辑关系,显性为0,隐形为1。

消息以固定格式发送

接收滤波

节点的接收器是如何判断CAN总线上CAN帧是否与自己有关,是通过一种帧接收滤波的处理方法判断。

支持远程请求

CAN帧中有远程帧。

配置灵活。

与总线相连的节点没有类型“地址”的信息,在总线增加设备时,所以在软硬件及应用层不需要改变。

可配置通信速度即比特率

在同一网络所以节点的通信速度一致。若通信速度不一致就会报错,妨碍同一网络的通信。不同CAN网络间可有不同通信速度。

差错管理机制

能自动检测错误信息并由出错计数器记录次数。 当出错严重时,节点会与总线隔离。这种根据监测故障节点是短期还是永久故障,并采取“故障界定隔离”。

CAN2.0 通信速率快

CAN总线速率可高达1Mbps。

CAN结构

CAN的分层结构
遵循ISO/OSI标准模型,CAN分数据链路层和物理层。数据链路层又分逻辑链路控制子层LLC和媒体访问控制子层(MAC)汽车CAN总线 CAN2.0_第3张图片

报文

什么是报文?报文也叫消息帧,报文是网络中数据交换与传输的数据单元。报文包含了优先级标识和数据内容。
报文的帧格式
汽车CAN总线 CAN2.0_第4张图片

RTR: 远程传输请求位,在数据帧结构中RTR为显性电平(0),在远程帧中,为隐性电平(1)
SRR: 替代传输请求位,在扩展格式中始终为隐性位(1)
IDE: 标识符扩展位,在扩展格式中为隐性电平(1)

报文的分类

根据用途不同分为4类
数据帧 发送数据
远程帧 向其他节点请求发送同一标识符(ID)的数据帧
错误帧 指明已检测到总线错误
超载帧 在数据帧(或远程帧)之间提供一附加延时

数据帧的组成

数据帧由7个场组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束数据帧的组成

帧起始(Start of frame,SOF):标志着数据帧和远程帧的起始,仅由一位显性组成。总线空闲时,才允许开始发送。
仲裁场:判断报文ID的优先权,ID越小,优先级越高。标识符的位从高位到低位顺序发送,ID.0是最低位,是最后发送。按照帧分类的帧优先级:数据帧>远程帧 标准帧>扩展帧
组成
在标准帧格式中,仲裁场由11位标识符和RTR位(远程请求位)组成
在扩展帧格式中,仲裁场由29位标识符、SRR(替换传输请求)位、标识扩展位IDE和RTR组成。
IDE位(标识符扩展位):只有扩展帧存在时,IDE为隐形电平。
SRR(代替传输请求位):扩展帧格式中始终位隐形位。
控制场:控制场由6位组成,包括数据长度码DLC和两个保留位,保留位且为显性位。数据长度码DLC指出了数据场里的字节数目(0~8个字节)
CRC(循环冗余码)场
由CRC序列(15bit)和CRC界定符(1bit)。
作用:可以判断帧是否出错,但并不能指出那个数据位出错和纠错。
应答场:两位,包含应答间隙和应答界定符。
应答过程
发送器发送两个隐形位。
正确接收有效报文的接收器,在应答间隙发一个显性位给发送器。
帧结束 每个数据帧和远程帧均由7个隐位组成的标志序列界定。

远程帧

组成:由6个分位场组成帧起始、仲裁场、控制场、CRC场、应答场和帧结束。
作用:接收数据的节点可以通过发送一个远程帧来要求源节点发送数据。
特点:远程帧RTR(远程传输请求)位是隐位、不存在数据场。

出错帧

组成:由两个不同的场组成,第一个场由来自各节点的出错标志叠加而成。第二场是错误标定符。
作用:区分错误帧并计数错误次数。在接收和发送消息时检查错误、通知错误的帧。
出错标记标记有两类
主动错误标志(ERROR-ACTIVE):由6个连续的显性位组成,由处于主动错误状态的节点检测出错误时输出的错误标志;
被动错误标志:由6个连续的隐性位构成,可被来自其他节点的显性位改写;处于被动错误状态的单元检测出错误时输出的错误标志。
接收节点发现总线上的报文有错误时将会自动发出主动错误标志(6个连续显性位)。其他节点检测到主动错误标志位后发送被动错误标志(6个连续隐性位)

超载帧

组成:由超载标志和超载界定位场组成。
作用:用于接收节点通知尚未完成接收准备的帧。
过载情况:
接收器的内部情况(此接收器对于下一数据帧或远程帧需要一定延时)
在间隔的第一和第二字节检测到一个“显性”位。
CAN节点在错误界定符或过载界定符的第8位采样到显性位,节点会发送一个过载帧。错误计数器不会计数。
帧间空间
数据帧和远程帧均以一种称为帧间空间的位场与先前各种类型的帧(数据帧、远程帧、出错帧或超载帧)相分隔。
超载帧和出错帧前面没有帧间空间。
组成
包括帧间歇场(ITM)、总线空闲场(bus idle)、以及暂停发送位(延迟发送)等场构成。
其中暂停发送只用于错误认可状态下的节点刚完成发送动作的场合。
帧间空间各个场的介绍
间隙帧
由3个隐形位组成。间歇期间,不允许启动发送数据帧或远程帧。可操作通报超载状态。

总线空闲

总线空闲时间长短不限。总线一经确认处于空闲状态,则任何节点都可以访问总线来传送信息。
发送帧总线冲突后,优先级低的帧从间歇后的第一位开始送出。
对总线检测,出现在总线空闲期间的显性位被认为是帧起始。
暂停发送
处于错误认可状态的节点完成其发送动作后,在被容许发送下一帧以前,它要在间歇之后发送8个隐形位。
若间歇期间,另外一个节点执行了发送动作,则本节点将会变成正在发送帧的接收器。

CAN负载与网络延时

汽车CAN总线 CAN2.0_第5张图片

CAN总线消息帧编码说明-位填充

构成一消息帧的帧起始、仲裁场、控制场、数据场和CRC序列均借助位填充规则进行编码,以减少传送过程中的突发错误
当发送器在发送的位流中检测到5位连续的相同数值时,将自动地在实际发送的位流中插入一个补码位
数据帧和远程帧的其余位场(CRC界定符、ACK场、帧结束)采用固定格式,不进行填充
出错帧和超载帧同样是固定格式,也不进行位填充
报文中的位流按照非归零(NRZ)码方法编码,这意味着一个完整位的位电平要么是显性,要么是隐性。

CAN的错误类型(两类5种)

发送
位错误:向总线发送差分信号同时也在监视总线,当监视到总线位 数值与送出的位 数值不同时,则在该时刻检出一个位错误。
应答错误:在应答间隙,发送器未检测到显位时,则由它检出一个应答错误。应用于数据帧和远程帧。
接收部分
填充错误:在需要位填充的段内,连续检测到 6位相同的电平时所检测到的错误。
CRC错误:CRC 序列是由发送器 CRC 计算的结果组成的。接收器以与发送器相同的方法计算 CRC。如发送器CRC计算结果与接收到的 CRC 序列不相同,则检出一个 CRC 错误。
格式错误:当固定形式的位场中出现一个或多个非法位时,则检出一个格式错误。
错误标定的发送
检测到出错条件(位错误、填充错误、格式错误或应答错误)的节点通过发送错误标志进行标定。当节点检测出错误条件,在下一帧发送出错标志。
当检测到CRC错误时,出错标志在应答界定符后面那位开始发送。汽车CAN总线 CAN2.0_第6张图片

CAN的故障界定

作用:区分临时错误和永久故障的方法
目的:防止连续发生错误的节点干涉无错节点之间的通信,实现数据传输系统即使在节点发生故障的情况下也能维持很高的可用性。
故障界定策略 各个CAN节点配置发送错误计数器(TEC:transmit error counter)和接收错误计数器(REC:receive error counter)
故障界定状态(节点状态)
节点模式及节点状态
错误计数器
正常模式 正常参与总线通信
TEC=REC=0
主动错误ERROR-ACTIVE模式 检错到错误时发送主动错误标记
TEC<128 和REC<128
被动错误模式 参与总线通信 发送被动错误标记 连续发送更长延时
TEC>=128或REC>=128
总线脱离BUS-OFF模式 不参与总线通信 当总线监听到128次11个连续隐性位可进入主动错误模式,TEC和REC复位为0
TEC>255
CAN的物理层
汽车CAN总线 CAN2.0_第7张图片

PLS物理信令子层规范
CAN的传输速率可以达到1Mbps,通常由石英晶振体作为时钟发生器;
但不稳定(温度、电压及器件异常);
ECU节点需通过再同步进行弥补。

位时间:

一位持续时间。
ECU同步化动作、网络传输延时补偿、采样点定位等总线管理功能,均以位时间位框架执行,并由CAN协议的可编程位定时逻辑实现。
组成汽车CAN总线 CAN2.0_第8张图片

同步段SYNC_SEG:这一段时间用来使总线上的各ECU同步。在该段内会出现一个跳变沿
传播段PROP_SEG:
用来对出现在网络内部的物理延迟时间进行补偿;
该延迟时间由信号在总线上的传播时间和ECU内部的延迟时间组成
相缓冲段1( PHASE_SEG1 )和相缓冲段2( PHASE_SEG1 )
用来补偿跳变沿的相位误差;
可以被再同步处理延长或缩短。
采样点是读取总线电平并将其转换成位值的时刻,位于PHASE_SEG1的结尾
信息处理时间:从采样点开始留出的一段用于计算后续位电平的时间

你可能感兴趣的:(总线协议,网络,物联网,iot,can)