第二章--控制器局域网CAN--20150205b - 图文

更新时间:2024-05-23 09:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第二章 控制器局域网(CAN)

CAN总线在BOSCH公司推出后,由于其可靠性高、性能价格比高、适应性好等优点,被广泛应用到车辆控制、工业控制、移动机械、交通控制、机器人、智能建筑、医疗系统以及嵌入式网络等领域。CAN节点的数量从二十世纪九十年代中期开始直线上升。以往较少使用CAN的北美和亚洲大汽车生产商也转向使用CAN构成汽车上的网络系统,使CAN节点数量增加的趋势更加强劲。随着市场的需求的增加,各大电子元器件厂商也不断推出新型的CAN产品。很多高档微控制器(单片机)也都支持CAN控制器接口。

第一节 CAN的基本知识

一、控制器局域网CAN(Controller Area Network)

控制器局域网(CAN)是一个支持分布式实时控制的串行通信网络,主要用于嵌入式控制器的通信系统及智能装置的开放通信系统。二十世纪八十年代,由于电子系统在汽车上的应用不断普及,车上控制单元(ECU)不断增加,BOSCH公司提出了最初用于汽车电子装置互连的控制器局域网CAN串行通信总线系统。之后,CAN被汽车行业和控制领域广泛应用,它已经成为ISO和SAE标准。CAN有CAN1.0 、CAN1.2、CAN2.0A和CAN2.0B等版本。CAN2.0A以及以下版本使用标准格式信息帧(11位标识符),CAN2.0B使用扩展格式(29位标识符)。CAN2.0A 及以下的版本接收到扩展格式信息时认为出现错误。CAN2.0B又分为“被动”CAN2.0B(CAN2.0B Positive)和“主动”CAN2.0B(CAN2.0B Active);“被动”CAN2.0B能够处理标准格式信息,接收时忽略扩展格式的信息帧,但并不认为是错误;“主动”CAN2.0B能够接收发送标准格式信息和扩展格式信息。CAN系统中,协议功能多数由硬件完成,这个硬件称为CAN控制器(CAN Controller)。根据功能,CAN控制器又被

2-1

分为“全CAN控制器(Full CAN Controller)”和“基本CAN控制器(Basic CAN Controller)”。“基本CAN控制器”实现CAN信息传送控制的最基本功能,一般只具有一个发送寄存器和一个或两个接收寄存器,只能按照接收寄存器存放的标识符进行接收过滤;适合于在低速系统或信息类型较少的系统中应用。“全CAN控制器”实现完整的通信过程控制和接收过滤功能。使用“全CAN控制器”系统的速度、总线负载和信息类型都可以大大增加。

CAN的应用领域包括车辆系统、交通控制系统、移动机械、工业仪器仪表、建筑自动化系统以及嵌入式网络等。现在欧洲几乎所有的轿车都使用了基于CAN的系统;欧洲以外的大汽车厂家也广泛使用CAN,其中包括通用公司和福特公司。在CAN出现后有很多控制总线或局域网以CAN为基础或为其底层协议。

SAE按CAN不同的通信速率把它分为三个级别:高速CAN,主要用于车上动力传动系控制系统和底盘的控制系统;中速CAN,主要用于车身系统;低速CAN,主要用于车上媒体系统控制(并非用于媒体信息传送)及仪表板。现在很多汽车产品供货商都提供支持CAN的相关产品,包括ECU(Electronic Control Units)、微控制器(Micro-controller)、接口元器件都有支持CAN协议的产品,为CAN的广泛应用提供了坚实的基础。但随着车上网络系统应用范围不断扩大和应用层次的深入,也发现了CAN的一些局限性。

二、CAN的基本特点

CAN 总线有如下特点:

1) 高速串行数据接口功能。CAN支持从几千到一兆bit·s的数据传输速率。 2) 使用廉价物理介质,CAN可以使用屏蔽或非屏蔽的双绞线、同轴电缆以及光纤作为网线。

3) 数据帧短,短数据帧有利于减小延时,提高实时性;但降低了有效数据传

-1

2-2

输率。

4) 反应速度快,发送时不需等待令牌,对请求反应迅速。 5) 多站同时发送,优先数据获取总线。

6) 错误检测和校正能力强,保证系统的可靠性。 7) 无破坏基于优先权的仲裁。

8) 通过接受滤波的方式实现多地址帧传送。 9) 具有远程数据请求功能。 10) 具有全系统数据兼容性。

11) 具有丢失仲裁或出错的帧自动重发功能。

12) 能判别暂时错误和永久性错误节点,具有故障节点自动脱离功能。 13) 基于事件触发的发送方式,信息传送延时离散度高,有出现长延时的可能。

三、CAN的一些基本概念

CAN定义了ISO/OSI 网络开放系统模型的最低两层,即数据链路层和物理层,主要是数据链路层。在不同的CAN版本中对分层的定义有一些区别。CAN1.2的分层结构如图2-1(a),数据链路层又分为传输层(TL, Transfer Layer)和目标层(OL, Object Layer)。目标层完成下列功能:

1) 2) 3)

获取由应用层传来的发送数据。 从传输层寻找要使用的数据。 提供与应用层相关的硬件接口。

CAN2.0的分层结构如图2 -1(b),是按ISO/OSI模型对CAN结构的描述。数据链路层又分为逻辑链路控制(LLC,Logical Link Control)和媒体访问控制(MAC, Medium Access Control)两个子层。LLC层完成下列功能:

2-3

应用层 目标层 ? 信息滤波 传输层 ? 故障限制 ? 错误检测和信令 ? 信息检验 ? 应答 ? 信息与状态处理 ? ? ? 仲裁 格式化信息 传输速率与定时 物理层 ? 信号电平与位编码 ? 传输媒介 图2-1(a) CAN 1.2分层结构 数据链路层 逻辑链路层(LLC): 接受过滤、超载通告、恢复管理。 监控功能 媒体访问层(MAC): 数据打包/解包、帧编码(填充与除去填充码)、媒体访问管理、错误检测、错误信令、接收应答、串并转换。 故障限制 物理层 位编码/解码、位定时、同步。 输出驱动器/输入接收器特性。 总线故障管理 图2-1(b) CAN2.0 分层结构

2-4

1) 2) 3)

为数据发送以及远程数据请求传送服务。 判定是否接受接收到的信息。 提供恢复管理和超载处理。

CAN2.0 的MAC层(与CAN1.2 TL层对应)是CAN的核心,主要定义了传输协议,包括信息帧格式、仲裁方式、应答信号、错误检测、错误信令和故障限制等。MAC层的约定是固定的。LLC层(对应CAN1.2 OL 层)的设计有很大的自由度。

物理层实现节点间的物理信号传送, 主要定义网络的电器特性。CAN网络可以采用多种不同的物理层协议。Bosch CAN几乎没有对物理层定义。同样是基于CAN的网络,不同的网络物理层可能有很大差别,但同一网络上的所有节点物理层必须是相同的。物理层的协议主要根据要求的数据传输率、成本和可靠性决定。

下面主要说明CAN媒体访问控制层(传输层)有关的一些概念和特征: 1)

信息:CAN总线上的信息以一定的格式发送,当总线空闲时,任何一个

网上节点都可开始发送信息。

2)

信息的路由:CAN网络中,节点不使用任何站点地址信息,由接收节点

根据信息的特征判断是否接收这帧信息。所以,CAN网络有很多基于这个传输方式的特点。

3)

标识符:要传送的信息有特征标识符(Identifier,是数据帧的一个

域),它给出的不是目标节点地址,而是这个信息(数据帧)的特征。信息以广播方式向网上发送,所有节点可以接收。节点接收到一帧信息后,通过标识域判定是否接受这帧信息的数据。

4)

数据一致性:由于通过标识域识别数据,所以网络上同时可以有任意

多个节点接收应用传送的数据。配合错误处理和再同步功能,这也保证了系统数

2-5

据的一致性。

5)

信息传输率:不同的CAN系统可以有不同的数据传输率,同一网络上

的节点传输速率必须是兼容的。

6)

优先级:由发送数据的标识域判定数据占用总线的优先权级别。启动

发送后,先发送标识符,由标识符决定信息优先权,标识符小优先权高(参照9和15)。

7)

远程数据请求:一个节点通过想网络上发送一个远程帧请求需要的数

据;能提供数据的节点接收到远程帧后发送远程帧请求的数据,返回的数据帧与远程帧拥有相同的标识域。

8)

仲裁:当总线空闲时任何节点可以发送信息,出现竞争时,具有最高

优先权的信息获得总线的使用权。

9)

仲裁过程:发送时,节点不断监听总线状态,判别是否与发送的位一

致,如果一致,继续发送;否则(发送“隐性”位,总线为“显性”)丢失仲裁,从下一位开始停止发送。

10) 错误检测与可靠性:为了保证可靠性,CAN采用了发送/监听的位错误检测、帧数据的CRC校验、位填充技术(每5位相同极性的连续位,插入一个补位)、帧格式检验等故障检测方法。这些措施使CAN 具有识别全局错误、发送端的局部错误、一帧信息 中5个以内的随机错误、一帧信息中15个以内的突发性错误,以及一帧中任何个奇数错误的能力,使CAN错误漏报率小于4.7·10

-11

11) 错误信令与恢复时间:当节点检测出错误时,错误信息被标记并向网上发送,发送过程自动中止并重发。如果没有新的错误,从检出错误到开始重发的最大延时为29个位时段。

12) 故障界定(Confinement):CAN节点能区分瞬时扰动引发的故障与永久

2-6

性故障。坏节点将被关闭。

13) CAN网络节点数量:理论上CAN网络上的节点没有数量限制,实际应用中受限于总线上的信号传输延时和电气负载能力。

14) 同步:CAN节点间采用单串行线连接,数据和同步信号都由这个通道承担。信息发送时有起始同步信号,传输过程中接收节点进行再同步。

15) 总线状态:总线有“显性”和“隐性”两个状态,总线上有一个或多个节点发送“显性”位时总线处于“显性”状态。例如采用线与逻辑,“显性”状态为逻辑“0”电平,“隐性”状态为逻辑“1” 电平。但CAN协议并没有具体定义这两种状态的实现规范。

16) 应答:所有接收节点对正确接收的信息给出应答,对不一致的信息进行标记。

17) 休眠态与唤醒:为了降低功耗,CAN设备可以被置于休眠状态,这时它没有任何内部活动并与总线驱动断开。休眠态的设备可以被内部或总线事件唤醒。一旦被唤醒,内部功能启动,传输层要直到与总线同步(检测到11个连续的隐性位)后才参与总线活动。

18) 发送端与接收端:当一个节点启动一个信息的发送过程,它称为发送端,这个状态直到总线空闲或这个节点丧失仲裁为止;当一个节点不是发送端,而且总线不是空闲状态,则为接收端。

19) 信息有效性:对于发送端,如果直到发送完一帧数据的终止域都没有出错,这帧数据是有效的;对于接收端,在一帧数据最后一位之前没有错误,则认为这帧数据有效。

20) 位流编码:一个帧中,起始域、仲裁域、控制域、数据域和CRC域的二进制位流通过位填充方式编码,每当发送端检测到连续的5个相同位时自动插

2-7

入一个补位。而一帧中其它的域不使用填充位。故障帧和超载帧也不使用填充位。二进制位采用非归零(NRZ)编码,所以位电平不是“显性”就是“隐性”。

2-8

第二节 CAN 总线物理层

一、CAN物理层特点

物理层定义了物理数据在总线上各节点间的传输过程,主要是连接介质、线路电气特性、数据传输的编码/解码、定时以及同步的实施标准。Bosch CAN基本没有对物理层进行定义,但基于CAN的ISO标准对物理层进行了定义。设计一个CAN网络时,物理层有很大的选择余地,但必须保证CAN协议中媒体访问层非破坏性位仲裁的要求,即,出现竞争时有高优先权标识符的数据获取仲裁的原则;所以要求物理层必须支持CAN中隐性位和显性位的状态特征。在没有节点发显性位时总线处于隐性状态,总线空闲时处于隐性状态,在有一个或几个节点发送显性位时,则覆盖隐性状态,使总线处于显性状态。在这个基础上,物理层主要取

节点微控制器 控制线 地址线 数据线 CAN 控制器 TX RX CAN发送/接收器 Vref CAN-H CAN-L 图 2-2 CAN总线节点构成 决于传输速率的要求。从物理结构上看,一个CAN节点的构成如图2-2。

在CAN网络中物理层从功能上又可以分为三层,如图2-3所示。

2-9

CAN物理层中,PLS(Physical Signaling)子层的功能主要由CAN控制器芯片完成,PMA(Physical Medium Attachment)子层的功能主要由CAN发送器/接收器电路完成,MDI(Medium Dependent Interface)子层主要定义了电缆和连接器的特性。目前,很多支持CAN的微控制器内部嵌入了CAN控制器和发送/接收电路。PMA和MDI两层有很多不同的国际或国家或行业的实施标准,也可以自行定义,

物理信号层(PLS) ? ? 位编码/解码 位定时 ? 同步 物理介质附件层(PMA) ? 发送/接收器特性 介质接口层(MDI) ? 电缆/连接器 图2-3 CAN物理层的功能 目前比较流行的是ISO11898定义的高速CAN发送/接收器标准。

二、PLS层

1、编码/解码

CAN总线使用非归零制编码方式,它在传送连续同极性位时,接收端没有可用于再同步的信号沿,所以CAN协议中规定发送数据时采用位填充,即,在发送时,最多可以有5个连续的同极性位,如图2-4,如果要发送的位流中有5个或以上同极性位时,每发送5个同极性位则填充一个补位,其中“r”表示隐性位,“d”表示显性位.

由于采用位填充,实际线路的传输效率可能会降低,图2-5是最坏的情况,这时,每发送N位,最多可能插入(N-1)/4个填充位。

2-10

r d r r r r r r d r d d d d d r 发送时加入填充位 r d r r r r r D r d r d d d d d R r 接收时去除填充位 r d r r r r r r d r d d d d d r 图 2-4 位填充规则 原始序列: d d d d d 加入填充位的序列: r r r r d d d d r r …… d d d d d r r r r r d d d d d r r r …. 填充位 填充位 标准格式中,一桢数据填充位最多时为: s-max=(34+8·dlc-1) / 4=8+2·dlc 图2-5 填充位最多的情况 在接收端填充位被剔除。

2、位定时与节点间的同步

如图2-6,一个位的传输时间分为4个时间段。CAN中所有时间都是以所谓的时间基准单元(TQ, Time Quantum)为单位,它由CAN节点的时钟频率通过一个可编程的分频器后得到,这部分功能在CAN控制器中完成。信号从发送到接收端的路径和延时如图2-7,一个位的时间关系是在发送时确定的,当信号通过物理电路到达接收端时,由于接收节点在网络上的位置不同、延时不同以及各自使用独

2-11

立时钟等原因,要保持数据的一致性,需要一个再同步(Resynchronization) 处

一个位时间 同步段 传播段 周期1段 周期2段 SYNC-SEG PROP-SEG PHASE-SEG1 PHASE-SEG2 图2-6 位时间的结构 发送节点 接收节点 光耦 光耦 光耦 光耦 发送/接收器 信 号 的 软 同 步 传 输 发送/接收器 信 号 的 硬 同 步 传 输 图2-7 信号传输过程 理。

信号传输总的时间延迟Tp包括CAN控制器延时TC(约40~140ns)、发送/接收器延时Tt(大约120~250ns)和电缆延时Tl (大约5ns),如果使用耦合器(隔离器)还要包括这部分的延时,光电耦合器延时To(Opto-coupler)大约为40-~140ns。由于存在应答过程,实际延时应当是这些延时总和的两倍:

Tp = 2(TC + Tt + Tl + To )

设计时应当保证这些延时小于位传输时的PROG-SEG段的时间长度。 由于上述原因,不同节点上的信号会产生相位移(信号沿时刻不同),CAN控制器再同步就是用于补偿这个相位差。如图2-8,如果一个信号沿应当在

2-12

SYNC-SEG出现,在低速(与接收端比较)发送器情况,也就是这个沿在PROG-SEG段才被检测到,那么,接收端会把PHASE-SEG1段增加一个最大的再同步调节宽度

输入信号 SYNC-SEG PROP-SEG+PHASE-SEG1 PHASE-SEG2 标称采样点 SYNC-SEG PROP-SEG+PHASE-SEG1 + RJW PHASE-SEG2 实际采样点 图2-8 再同步情况1 (RJW, Resynchronization Jump Width)。

在高速发送器情况,如图2-9,这个沿在PHASE-SEG2之前就检测到了,这时接收端会把PHSAE-SEG2减小一个最大RJW。

输入信号 SYNC-SEG PROP-SEG+ PHASE-SEG1 PHASE-SEG2+RJW 标称采样点 PHASE-SEG2 SYNC-SEG PROP-SEG+ PHASE-SEG1 PHASE-SEG2 实际采样点 图2-9 再同步情况2 在一个位时间内只允许有一次再同步操作。

三、发送/接收器

Bosch CAN 没有发送/接收器以及以下各层的标准,ISO标准中对发送/接收

2-13

器制定了相应标准。发送/接受器在两条线的CAN网络上发送信号时,一条线称为CAN-HIGH,另一条称为CAN-LOW,两条线上是差动信号,具体电平和特性取决于适用的标准或设计规范。

1、ISO11898-2

一个适用于ISO11898-2的网络结构如图2-10,发送/接收器与总线通过两

节点1 …….. 节点n 120Ω CAN 总线 120Ω 图 2-10 ISO11898-2 标准网络 条线(CAN-HIGH,CAN-LOW)连接,总线两端有120欧姆的吸收电阻。

一个ISO11898-2兼容的总线节点结构如图2-11,CAN控制器可以嵌入到微控制器中,它通过串行口与CAN发送/接收器电路连接。参考电压Vref为0.5·Vcc ,

节点微控制器 CAN 控制器 TX RX Vref CAN发送/接收器 CAN-H CAN-L 图 2-11 ISO11898-2节点构成 2-14

发送/接收器使用+5伏电源Vcc 。发送/接收器在输入状态时,通过输入电阻上的电流状态检测总线,当总线为显性状态时,有电流流过电阻,在总线为隐性状态时,没有电流流过电阻;输出驱动时,输出显性位时打开驱动三极管,驱动总线上的接受节点,输出隐性位时驱动三极管关断。

总线上的接收节点,在CAN-HIGH与CAN-LOW的差值小于0.5伏时,认为总线是隐性状态;如果CAN-HIGH与CAN-LOW的差值大于0.9伏,认为是显性状态,图2-12是总线状态的一个例子。一般CAN-HIGH的标称取值(单位:V)有2.0、2.5、2.75、3.0、3.5、4.5,CAN-LOW对应的取值(单位:V)为0.5、1.5、2.0、2.25、2.5、3.0。

5V 3.5V 2.5V 1.5V 0V CAN-H 隐性位 显性位 隐性位 电 压 CAN-L 时 间 图 2-12 显性与隐性状态 如图2-13,由CAN控制器到发送/接收器的信息是通过有向信号传输的(通

CAN-H TX 0V 5V 0V 5V 发送/接收器 显性 隐性 显性 2.5V CAN-L RX 图 2-13 显性与隐性状态 2-15

过TX和RX连接),而发送/接收器通过总线传输的是无向信号(通过CAN-H和CAN-L连接)。发送/接收器在发送时同时监测总线状态并返回给CAN控制器,但有延时。

由于采用差动方式,CAN总线对电磁干扰不敏感;如图2-14,因为CAN-H和CAN-L绞在一起,同样的干扰在两条线上产生的影响相同,互相抵消,使差值保

电 压 电磁干扰(EMI) Vdiff =常量 CAN-H CAN总线 时间 120Ω Vdiff 120Ω CAN-L 图2-14 有电磁干扰时的情况 持不变。

2、SAE J2284

SAE推荐了一个用于动力传动系统控制器连接的标准SAE J2284,其特性如下:

1) 2) 3) 4) 5) 6) 7)

支持CAN2.0B兼容的CAN控制器。 标准11位标识符长度。

与ISO11898发送/接收器兼容。 最大节点数为16个ECU。 最高传输速率500K Bit·s。 总线采用非屏蔽双绞线。

最大桩线长度(Stub Length)为1m。

-1

2-16

8) 最小ECU间距离为0.1m,最大ECU间距离为40m。

SAE J2284位定时参数如表2-1。

表2-1 SAEJ2284位定时

参 数 标称位时间 媒体延时 ECU 延时 时间基准单位 最小值/ns 1990 0 100 常值/ns 2000 最大值/ns 2010 220 390 200 3、ISO 11992

ISO 11992 是对总线故障具有容错能力的发送/接收器标准之一。这个标准最初是为卡车或大客车设计的,具有很高的抗高频辐射干扰和地电平漂移(可达6V)的能力;缺点是需要附加一些电路和额外的功耗。其显性位CAN-H 为18V、CAN-L 为9V;隐性位CAN-H 为9V、CAN-L为 18V。图2-15为ISO11992的总线电

CAN-H TX 0V 5V 0V 5V 发送/接收器 CAN-L RX 图2-15 ISO11992 总线电平 平说明。

图2-16是一个有容错能力发送/接收器结构。它提供差动发送能力,但当有故障发生时它可以切换为一个单线发送或接收器。在设计适应的故障情况,所有节点可以继续通讯,但信/噪比降低。一旦故障解除,它会自动恢复差动传输。它最早由Daimler-Benz与另外一些乘用车和卡车公司提出,这个方案将成为

2-17

ISO11898-3。总线上信号的电平定义如图2-17,其显性位CAN-H 为3.6伏、CAN-L为1.4伏,隐性位CAN-H 为0伏、CAN-L为5伏。适用这一标准的发送/接收器如

节点微控制器 CAN 控制器 TX RX Vref CAN发送/接收器 控制 RTH CAN-H CAN-L RTL 图2-16 容错发送/接受器 CAN-H TX 0V 5V 0V 5V 发送/接收器 CAN-L RX 图2-17 容错信号电平 表2-2.

表2-2 容错发送/接收器

控制器类型 独立发送/接收器 嵌入式发送/接收器 Motorola MC33388 MC33389 Philips TJA1054 TJA1060 Siemens TEL6252 TEL6260 ST Micro U435 另外,ISO-TC22-SC3-WG1也是一个具有容错能力的发送/接收器标准,它主

2-18

要用于车身网络。

四、总线及连接器

不同的网络标准对网络连接总线和连接器可能有特定的要求,在构建网络时,如果选用的网络有自己的总线和连接器标准,应当适应这个标准。Bosch CAN 对总线电缆和连接器没有具体标准,ISO或其它一些标准中对总线电缆和连接器制定了一些标准。ISO11898规定总线电缆应为阻抗120欧姆的屏蔽或非屏蔽双绞线,标称线延迟5ns·m,总线两端各接一个120欧姆的电阻。线延长电阻(Length-Related Resistance)为70Ω·m。在这样的特性支持下,网络可达到1Mbit·s的传输率。表2-3列出了适用ISO11898-2标准的总线电缆的直流参数。

表2-3 适应ISO11898-2的电缆直流参数

电 缆 总线长度/ m 线电阻/(Ω·m) 0~40 70 -1-1

-1

-1

总线截面积/ mm 0.25~0.34 AWG23,AWG22 0.34~0.60 AWG22,AWG20 0.50~0.60 AWG20 0.75~0.80 AWG18 2端点电阻/Ω 最大波特率-1/( Kbit·s) 1000 (总线长度40m) 500 (总线长度100m) 100 (总线长度500m) 50 (总线长度1km) 124 40~300 <60 127 300~600 <40 150~300 600~1000 <26 150~300 为了减小电缆线上的衰减,端点电阻应适当大于ISO11898-2的标准值。在设计中还必需考虑连接器的参数;在计算线路上的电压降时,可按每使用一个类似9针D型插头的节点,大约引入5~20欧姆的传输电阻计算。连接CAN网络时,电缆线的线径也是应当考虑的参数。表2-4是在:

1) 2)

32个节点时 RW<21欧姆, 64个节点时 RW<18.5欧姆,

2-19

3) 100个节点时 RW<16欧姆,

条件下,适用于PC82C250/1 CAN发送/接收器的电缆截面积推荐值。选用这些参数时要满足地电平漂移不应引起大于2伏的电压降的条件。

表2-4 CAN总线电缆截面积 (单位:mm2)

节点数 长度/ m 32节点 100 250 500 0.25 0.34 0.75 64节点 0.25 0.50 0.75 100节点 0.25 0.50 1.00 总线电缆允许的长度与节点特性以及传输速率等参数有关。实际可使用的长度取决于以下因素:

1) 2) 3)

总线上节点和回路引起的延迟,

不同节点的时钟误差引起的定时误差(以时间基准单位计), 由于电缆电阻和节点输入电阻引起的信号幅值下降。

图2-18是使用ISO11898兼容的发送/接收器和电缆时,数据传输率与总线最大可用长度的对应关系。表2-5是没有使用光电偶合器时,传输速率与实用总线长度的参考对照表。总线信号要传输的距离超出最大允许值时,可以通过使用

传输速率 /(Kbit·s) 1000 100 10 5 10 100 1000 10000 总线长度/m -1图2-18传输速率与电缆长度关系 2-20

中继器或网桥增加传输距离。

表2-5 实用总线长度与传输速率对照

传输速率/( Kbit·s) 1000 800 500 250 125 62.5 20 10 -1总线长度/ m 30 50 100 250 500 1000 2500 5000 标称位时间/μs 1 1.25 2 4 8 20 50 100 由传输速率和电缆参数可以估算电缆可用长度。无终点匹配时长度的计算如下:

Ld?tprop?seg/(50?tp)

式中,tp 是电缆单位长度上的延迟( ns·m);tporp-1

?ges是位时间域PROG-SEG段

的长度(ns)。

有端点匹配时,总线长度可以增加约5倍,但任何部分的电缆长度原则上都是越短越好。

五、CAN网络的结构

网络的结构对系统的特性有很大影响,CAN网络一般采用总线结构,但又有多种具体连接方式。在一定的应用环境下,CAN网络结构选择的原则是:在同样的硬件参数下,尽量提高网络的电磁兼容性。另外,为实现一些特定情况的要求

节点1 节点2 节点n 图2-19 CAN基本结构 2-21

有时需要采用一些特殊结构,如无线连接等。CAN网络基本结构如图2-19所示。为了提高电磁兼容性,还可以采用图2-20的一些结构。

2-22

CAN 总线 图2-20(a) 终端分解结构 图2-20(b) 多终端结构 CAN 节点 CAN 节点 图2-20(c) 单端点结构 Rt——端点匹配电阻;Cg——端点电容 在网络的实际连接中如果需要使用非单线结构,如有三个分支的星型结构,

2-23

可以考虑多终端结构,这时终端电阻也对应增加,但一定要保证总的电阻值符合发送/接收器输出驱动的要求。

图2-21是一个利用电源线进行连网的方案,有两种通过电源线传输数据信号的方法,一种是基带传输,另一种是调制传输。

图2-21 通过电源线连网 UP——电源 Ri——电源内阻 LP——系统电源滤波电感 CP——系统电源电容 RP——系统电源电阻 CS——信号隔直电容 RS——信号电路电阻 在一些情况下,必须使用无线传输,或者使用无线传输有很大的优越性。典型的情况是在两个相对运动的子系统间进行连接,如吊车等。图 2-22是适应于这种情况的一种简单结构;它把CAN 网络在适当地方打开,然后加入一对无线CAN网桥,通过这对节点实现无线连接的两部分的通信。实现这种无线连接的的媒体可以是电磁波、红外线等。

2-24

无线传输 节点4 节点5 节点1 节点2 节点3 节点节点图2-22 CAN无线传输结构

2-25

第三节 数据链路层

一、概述

CAN的数据链路层是其核心内容,其中LLC完成接收过滤、超载通知和管理恢复等功能,MAC 子层完成数据打包/解包、帧编码(填充与除去填充码)、媒体访问管理、错误检测、错误信令、接收应答、串并转换等功能。这些功能都是围绕信息帧传送过程展开的。

CAN定义了4种不同的信息帧: 1) 2) 据帧。

3) 4)

错误帧:一旦某个节点发现错误就发出一个错误帧。

超载帧:用于请求在下一个数据帧或远程帧到来之前加入延时。 数据帧:传送从发送端到接收端的数据。

远程帧:由总线上一个节点发出,请求发送与这帧有相同标识符的数

数据帧和远程帧与前一个帧之间都会有一个隔离域,即帧间间隔。

1、数据帧

数据帧有7个不同的位域,如图2-23,七个位域依次是:起始域(SOF)、仲裁域、控制域、数据域、CRC校验码域、应答(ACK)域,和帧结束。

起始域为一个显性位,标志一个数据帧或远程帧开始。在CAN同步规则中,当总线空闲时(处于隐性状态),一个由隐性到显性的变化沿表示一个帧起始的硬同步。SOF也可以在传送挂起或帧间间隙结束时接收到,所以 CAN也能在这些状态时进行硬同步。

如图2-24,仲裁域由标识符和RTR位构成。不同的CAN版本标识域长度有所区别。标准CAN格式为11位,ID28—ID18;扩展CAN格式为29位,ID28—ID0。IDE(Identifier Extension)位为显性位表示数据帧为标准格式,IDE位为隐性

2-26

帧间间隙 数据帧 帧间间隙 或超载帧 或超载帧 帧 起始 仲裁域 控制域 数据域 CRC校验字域 应答域 帧 结束 图2-23 数据帧格式 位表示数据帧为扩展格式。在扩展格式中SRR(Substitute Remote Request)位为隐性。仲裁域传输顺序为从最高位到最低位,其中最高七位不能全为隐性位。RTR为远程传送请求位,数据帧中为显性,远程帧中为隐性,它是区别数据帧与远程帧的标志。

标准格式 仲裁域 11位标识符 控制域 扩展格式 仲裁域 11位标识符 18位标识符 控制域 图2-24 仲裁域 扩展格式与标准格式的控制域基本一致,如图2-25。标准格式中控制域包括数据长度码DLC(Data Length Code),IDE位和r0 位,这两位都是显性位。扩展格式中控制域包括DLC和两个保留位r1、r0,r1、r0发送时必须为显性位。数

2-27

据长度码DLC给出数据段的字节数,其定义如表2-6,DLC为0—7时表示对应的字节数,为其它值时表示数据段为8个字节长。由于编码超过8后数据都为8字节,DLC在9~15范围内的编码可以用于一些特殊的目的,如给出数据的特征描述。

仲裁域 控制域 数据域 或CRC域 保留位 数据长度编码 图2-25 控制字域格式 表2-6 数据长度编码

数据长度编码(DLC) 数据长度 DLC3 0 1 2 3 4 5 6 7 8 D D D D D D D D R DLC2 D D D D R R R R D DLC1 D D R R D D R R D DLC0 D R D R D R D R D 注:其中D表示显性位,R表示隐性位。

数据域给出要传送的数据;CAN标准格式中,一个帧中数据为0~8个字节长;CAN扩展格式中,可以使用更长的数据域。数据发送时高位在前低位在后。数据域长度可以为0,这时往往是通过仲裁域传递特定的信息。

如图2-26, CRC校验域由CRC序列和CRC界定符构成。CRC序列是这帧信息的校验码,它的计算过程是:首先由从起始域到数据域的所有二进制位,在最低位补上15个0作为系数构成特征多项式,再由生成多项式

x15?x14?x10?x8?x7?x4?x3?1

2-28

数据字域或控制字域 CRC校验字应答字域 CRC校验字 CRC界定符 图2-26 CRC校验字域格式 去除特征多项式得到的余数多项式,这个余数多项式的系数就是CRC序列值。CRC界定符是在CRC序列后的一个隐性位,标志CRC校验域结束。

应答域ACK(Acknowledge)由两部分构成。如图2-27,在ACK时间片,发送节点发送两个隐性位;已经正确接收在这之前总线上数据的节点,在这期间发送一个显性位,其含义是已经正确接收了一帧数据。这时,总线被接收节点强置为显性状态,发送节点检测到这个状态就知道传送的数据至少已经被一个节点正确接收。ACK界定符是一位隐性位,标志应答域结束。

帧结束域EOF(End of Frame)是任何数据帧和远程帧之后连续的七个隐性位,它是一帧的结束标志。

CRC校验字域 应答域 帧结束 应答时间片 应答字段界定符 图2-27 应答域格式 2、远程帧

如图2-28,远程帧由六个域构成。与数据帧相比,RTR位为隐性,没有数据域,数据长度编码域可以是0~8的任何值,这个值是远程帧请求发送的数据帧的数据域长度。当具有相同仲裁域的数据帧和远程帧同时发送时,由于数据帧的

2-29

RTR为显性,所以数据帧获得仲裁,发送远程帧的节点可以直接接收数据。

帧间间隔 远程桢 帧间间隔 或超载帧 帧起始 仲裁字域 控制字域 CRC字域 应答域 帧结束 图2-28 远程帧格式

3、故障帧

如图2-29, 故障帧有两个域,一个是不同节点发出的错误标志的重叠域,第二个为界定符。一个节点有两种形式的错误状态,即故障激活状态和故障接受状态。故障激活标识含有六个连续的显性位,故障接受标识有六个连续的隐性位。 一个检测到错误的故障激活节点,通过发送故障激活标识向网络上发布故障信令。

数据帧 故障帧 帧间间隙或超载帧 故障标志域 故障标志重叠域 故障界定符 图2-29 故障帧格式 2-30

由于有六个连续的相同位,这个消息格式违背位填充规则,结果网上其它节点就会检测到一个错误,而且开始发送故障标志。故障接受节点通过发送故障接受标识发送故障消息。故障接受节点等六个连续位后,开始发送故障接受标志。当检测到这六个连续的位后,结束发送故障标志。故障界定符域是连续的八个隐性位,在发送故障标志后,每个节点都发送隐性位并监听总线状态,直到收到隐性位之后再传送七位隐性位标志一个错误信令过程的结束。

4、超载帧

如图2-30,超载帧由超载标志和界定符两位构成。有两种所谓超载,它们都导致发送超载帧。一是接收端要求推迟下一数据帧或远程帧的发送;第二种情况是在间休时域的第一、第二位时域检测到一个显性位。对于扩展CAN,还包括另外一种情况,如果一个CAN节点在错误界定符或超载界定符的第八位(最后一位)采样到一个显性位,则发送超载帧。第一种情况导致的超载帧,只允许在一个预知的间休时域的第一位时刻开始发送;而第二种情况则在检测到显性位后隔一个

帧结束或故障界定符或超载界定符 超载标志域 帧间间隔或超载帧 超载帧 超载标志重叠域 超载界定符 图2-30 超载帧格式 位开始发送。一次最多可以使用两个推迟发送的超载帧。

超载标志由六个显性位构成,它与故障激活标志一样。它的出现,破坏了间隔时域,结果导致所有节点检测到超载情况,开始发送一个超载标志。当间隔时域的第三位时段内检测到显性状态,节点将认为这是一个帧起始位。

超载界定符由八个隐性位组成,与故障界定符一样。在发出超载标志后,节

2-31

点检听总线状态,直到出现一个显性到隐性的变化标志超载周期结束。在这域时间内,原节点已经完成了超载标志的发送,而且,开始发送另外七个隐性位。

5、帧间间隔

如图2-31,数据帧和远程帧与前一个信息帧间由一个称为帧间间隔(Interframe Space)的时间域。而超载帧和故障帧与前一个帧间没有这个间隔。帧间间隔有间休(Intermission)域和总线空闲(Bus Idle)两个时域,对于原来正处于发送请求的故障接受节点,还包括传送挂起(Suspend Transmission)时域。

间休域由三个隐性位组成,在这个时间域,任何节点不得发送数据帧和远程帧,但可以发送超载信息。在CAN2.0中,如果一个节点在等待发送一个信息,而且它在间休时域的低三位处检测到一个显性状态,它将认为是一个帧的起始位;这时,它不是转换为接收端,也不再发送自己的起始位,而是在下一个位域,开始发送它的标识符的第一位,去竞争总线。

总线空闲状态可以持续任意长时间。这时表示总线上没有信息传送,总线处

帧 帧 帧间间隔 间休域 总线空闲 对于上一个信息的发送端的错误接受节点桢间间隔如下: 帧 帧间间隙 帧 间休域 传送挂起 总线空闲 图2-31 帧间间隔 于空闲状态,任何节点都可以访问总线。在间休域后的第一位时域就可以启动发

2-32

送,这时总线上的一个显性状态表示一个帧发送开始。

CAN节点还有一种状态称为发送挂起。它是指故障接受节点在发送了一些信息后,在开始发送下面信息或检测到总线空闲之前,要发送八个隐性位再加上间休域,如果这时有另外一个节点开始了一个发送,那么这个节点就转入接收状态,原来的发送被挂起。

CAN的不同版本,对信息帧格式的定义有所不同,如果一个CAN控制器不仅支持标准格式,还可以接收某一种帧格式的信息,就称为与这种格式相容。

6、错误处理

CAN定义了五种互不包含的错误: 1)

位错:一个节点发送一个位时,同时监听总线状态;当监听到的状态

与发送的位不同时,确定为位出错。但当在发送仲裁域、填充位或应答域时,发送隐性位而监听到显性状态时不认为是出错。发送故障接受标志时,检测到显性位也不认为是出错。

2) 3)

填充错:当检测到连续的六个相同位时,确定为填充错。

CRC校验错:当计算的CRC校验码与接收到的CRC序列不同时,确定为

CRC校验错。

4) 5)

格式错:当一个固定的域或域含有不和法的值时,确定为格式错。 应答错:当发送端在应答域内监听不到显性位,确定为应答错。

当一个节点发生位错、填充错、格式错以及应答错时,在下一个位时间开始发送故障标志;而发生CRC校验错时,在应答界定符后开始发送故障标志。

出现错误时,CAN处理错误的步骤如下: 1) 2)

检测是本地(Local)错误还是远程(Global)错误。 发送错误标志(广播错误状态)。

2-33

3) 当错误为本地错误时,接着发送一个错误标志覆盖时域,之后再发送

错误界定符。

4) 5) 6)

所有节点废弃传送的信息。 每个节点进行错误计数。 信息自动重传。

如果发生错误后没有更高级的信息传送,因为出错废弃的信息最大在31个位时间后重传。

7、故障状态

CAN节点定义了三种故障状态:“故障激活”状态、“故障接受”状态和“总线脱离”状态,其转换关系如图2-32。

复位或重置 故障激活 接收错误计数大于等于127 或发送错误计数大于等于127 接收错误计数小于127或 发送错误计数小于127 故障接受 接收错误计数大于255 复位或重置 并接收128x11隐性位 总线脱离 图2-32 故障状态转换关系 一个故障激活节点可以正常进行网络通信,在有错误发生时发送故障激活标志。故障接受节点可参与网络通信,在检测到错误时发送故障接受标志。总线脱离节点不允许再对总线有任何影响,即输出驱动被关闭。节点通过错误计数界定故障状态,计数规则与错误状态关系如下:

1)

当一个节点作为接收端检测到一个错误时,接收错误计数加1,但在发

送应答错误标志和超载标志时的位错不计数。

2-34

2) 当一个节点作为接收端,在发送故障标志后检测到的第一位为显性位,

接收错误计数加8。

3)

当一个节点作为发送端发送故障标志时,发送错误计数加8。当发送端

是故障接受状态,而且检测到一个应答错误时;以及由于在仲裁域发生填充错,从而使填充位在RTR位前导致的发送隐性位监听到显性位时不计数。

4)

发送端在发送一个错误激活标志时,或超载标志时,检测到位错,则

发送错误计数加8。

5)

接收端在发送应答或错误激活标志或超载标志时,检测到位错,则接

收错误计数加8。

6)

在错误激活标志或超载标志传送时,检测到连续的第14个显性位,或

在错误接受标志传送时,检测到第8个连续的显性位,而且每增加8个连续的显性位时,每个发送端发送错误计数加8,接收端接收错误计数加8 。

7) 8)

在正确发送一帧时,发送错误计数减1,如果已经为0则不计数。 在正确接收一帧时,如果接收错误计数在1至127之间,则减1,大于

127时置为119至127之间的值;如果为0,则不计数。

9)

一个节点发送错误计数等于或大于127,或接受错误计数等于或大于

127,这个节点为错误接收状态,一个错误引起节点为故障接受状态时,使节点发送故障激活标志。

10) 当一个节点发送错误计数大于等于255时,被置为总线脱离状态。 11) 当一个故障接受节点的发送故障计数和接收故障计数都小于127时,它成为故障激活状态。

12) 当一个总线脱离节点的错误计数被置为0,在总线上检测到128个11位连续隐性位后,可以转为故障激活状态。

2-35

本文来源:https://www.bwwdw.com/article/q257.html

Top