控制器局域网- CAN 总线

32
1 控控控控控控CAN 控控

description

控制器局域网- CAN 总线. 参考文献. 1. 邬宽明编著, CAN 总线原理和应用系统设计,北航出版社, 2001 。 2. 饶运涛等编著,现场总线 CAN 原理与应用技术,北航出版社, 2003 。 3. 史久根等编著, CAN 现场总线系统设计技术,国防工业出版社, 2004 。. 概述. 控制器局域网 CAN( Controller Area Network ) 为国际上应用最广泛的现场总线之一。 - PowerPoint PPT Presentation

Transcript of 控制器局域网- CAN 总线

Page 1: 控制器局域网- CAN 总线

1

控制器局域网- CAN总线

Page 2: 控制器局域网- CAN 总线

2

参考文献1.邬宽明编著, CAN总线原理和应用系统设计,北航出版社, 2001。

2. 饶运涛等编著,现场总线 CAN原理与应用技术,北航出版社, 2003。

3.史久根等编著, CAN现场总线系统设计技术,国防工业出版社, 2004。

Page 3: 控制器局域网- CAN 总线

3

概述• 控制器局域网 CAN(Controller Area Network)为国际上应用最广泛的现场总线之一。

• 来源于 80年代初期德国 Bosch公司为汽车监测、控制系统而设计开发的一种串行数据通信总线。 CAN被设计作为汽车环境中的微控制器通讯网,在车载各电子控制装置ECU之间交换信息,形成汽车电子控制网络(如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中,均嵌入 CAN控制装置)。

• 据资料介绍,世界上一些著名的汽车制造厂商,如 BENZ(奔驰)、 BMW(宝马)、 PORSCHE(保时捷)、ROLLS- ROYCE(劳斯莱斯)和 JAGUAR(美洲豹)等都已开始采用 CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。

• 1993年, CAN已成为国际标准 ISO11898(高速应用 )和ISO11519(低速应用)。

Page 4: 控制器局域网- CAN 总线

4

应用行业• 汽车行业• 过程工业、机械工业• 纺织机械、农用机械• 机器人、数控机床• 医疗器械、传感器

Page 5: 控制器局域网- CAN 总线

5

CAN 硬件• 丰富廉价的 CAN总线器件

– INTEL 、 PHILIPS 、 MOTOROLA 、 SIEMENS 、 NEC 及 SILIONI 等公司推出的各种系列CAN 通信控制器和带有 CAN 总线接口的微控制器、 I/O 器件。

– 美国 TI 公司推出了集成有 CAN 控制器的系列DSP 芯片 TMS320F2×××(243 、 2401 、 2407 、 2812) 。

– 多种 ARM 嵌入式芯片中都带有 CAN 控制器。• 集成了 CAN标准的微控制器系统扩展及多机通信接口推广了 CAN 技术的应用领域,提升了 CAN技术的应用层次。

Page 6: 控制器局域网- CAN 总线

6

CAN总线的信号编码• CAN总线中的数值为两种互补逻辑状态之一:“显性”或“隐性”。“显性”( Daminant)数值表示逻辑“ 0”,而“隐性”( Recessive)数值表示逻辑“ 1”。

• 在“隐性”( Recessive)状态下, VCAN-H和 VCAN-L被固定于平均电压电平, Vdiff近似为 0。在总线空闲或“隐性”位期间,发送“隐性”状态。“显性”( Daminant)状态以大于最小值的差分电压表示。当在总线上同时发送显性和隐性位时,其结果是总线数值为显性(即“ 0”与“ 1”的结果为“ 0”)。它正是实现按位仲裁的基础。

Page 7: 控制器局域网- CAN 总线

7

CAN总线主要特点

结构简单两根线与外部相连内部含有错误探测和管理模块

Page 8: 控制器局域网- CAN 总线

8

特点(1)借助接收滤波的多地址帧传送 CAN协议废除了传统的站地址编码而采用对通信数据报文进行编码。报文标识码可由 11位或 29位二进制数组成,因此可定义 211或 229 个不同报文。不同的节点可接收相同的数据,这使 CAN 组成的通信网在点对点、点对多点及广播方式之间没有区别。

(2)通信方式灵活 多主站依据优先权进行总线访问,网络上任一节点均可以在任意时刻主动地向网络上的其它节点发送信息,而不分主从。

Page 9: 控制器局域网- CAN 总线

9

特点——仲裁(3) 采用非破坏性的基于优先权的位仲裁技术。•以报文为单位进行数据传递、广播给网络中所有节点。• 每个报文的起始部分有一个唯一的 11位或 29位的标识符 ID。•在总线访问期间,标识符定义了一个静态的(固定的)报文优先权。•标识符值越高的报文优先级越低,反之越高。•11位标识符就意味着有 211=2048种数据帧,也就有 2048种优先权。

– 在仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一“隐性”电平而监视到的是一“显性”电平,那么这个单元就失去了仲裁,必须退出发送状态。

– 当两个节点同时向总线上发送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,节省了总线仲裁冲突时间,在网络负载很重的情况下也不会出现网络瘫痪。

Page 10: 控制器局域网- CAN 总线

10

特点— CAN总线的收发电路与仲裁

收发器框图

网络布线方式

Page 11: 控制器局域网- CAN 总线

11

特点——仲裁• CAN 总线物理层通常是双绞线,当逻辑“ 1 ”被写进总线里,两条线的电平是 2.5V(输出管都截止) 并被定义为“隐性”位;当逻辑“ 0”被写进总线里, CANH线被上拉到为 5V而 CANL线被下拉到地(输出管都导通) ,此时定义为“显形”位。但是如果显形位和隐性位都被不同的节点同时写进总线里,总线呈“显形”位状态,即“显性”位覆盖了“隐性”位。

Page 12: 控制器局域网- CAN 总线

12

特点( 4) CAN上的节点数理论上可以为 211=2048或 229,采用扩展帧格式,其个数几乎不受限制。但为了保证信号的稳定、有效以及实时处理能力,实际节点数现在只能达到110 个。

( 5)网络上的信息可以分成不同的优先级,可以满足不同的实时要求。

( 6) CAN采用短帧结构。每一个报文的数据段为 8 个字节,通信时间短,保证了通讯的实时性;受干扰概率低,具有极好的检错效果。

( 7) CAN总线采用 CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。

( 8)直接通讯距离可达 10km(速率 5kb/s以下),最高通讯速率可达 1Mb/s(此时距离最长为 40m)。

Page 13: 控制器局域网- CAN 总线

13

特点( 9)通信介质可以是双绞线、同轴电缆或光导纤

维。(10) CAN 节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响。CAN总线的诸多优势,促使其在各个领域得到日益广泛的应用,成为公认的最有前途的现场总线之一。

Page 14: 控制器局域网- CAN 总线

14

CAN通信报文的标准化• 1991年 9 月 Philips Semiconductors制定并发布了 CAN技术规范( Version2.0)。– 2.0A: 标准报文格式– 2.0B: 标准的和扩展的两种报文格式

• 1993年 11 月 ISO正式颁布了高速通信控制器局部网( CAN)国际标准( ISO11898。

• CAN通信报文的标准化 :1991年 9 月 Philips Semiconductors制定并发布了 CAN技术规范( Version2.0)。

Page 15: 控制器局域网- CAN 总线

15

通信距离

Page 16: 控制器局域网- CAN 总线

16

CAN的分层结构及功能

Page 17: 控制器局域网- CAN 总线

17

帧类型• 数据帧( Data Frame):将数据从发送器传输

到接收器。• 远程帧( Remote Frame):请求发送具有同一标识符的数据帧。

• 错误帧( Error Frame):任何单元检测到总线错误就发出错误帧。

• 过载帧( Overload Frame):为相邻数据帧或远程帧之间提供附加的延时。

Page 18: 控制器局域网- CAN 总线

18

帧格式• 扩展帧(含有 29位标识符)• 标准帧(含有 11位标识符)• 一帧应由其 SOF (Start of Frame)场开始逐个位场进行发送。

• 在一个场内首先发送最高位。• MAC数据帧包含七个不同位场

– 帧起始– 仲裁场– 控制场– 数据场– CRC 场– ACK 场– 帧结束

Page 19: 控制器局域网- CAN 总线

19

数据帧-标准信息帧格式

• RTR(Remote Transmission Request 远程发送请求位 ):在数据帧中必须是显性位,在远程帧中是隐性位。

• IDE(Identifier Extension Bit 标识符扩展位 ):标准格式中的为显性、扩展格式中的为隐性。

• r0:保留位• DLC(数据长度代码): 4位。允许的数据字节数 0 ~ 8。

Page 20: 控制器局域网- CAN 总线

20

数据帧-扩展信息帧格式

• SRR( Substitute Remote Request Bit 替代远程请求位):隐性位。

• IDE(Identifier Extension Bit 标识符扩展位 ):标准格式中的为显性、扩展格式中的为隐性。

• r0:保留位• r1:保留位• DLC(数据长度代码): 4位。允许的数据字节数 0 ~ 8。

Page 21: 控制器局域网- CAN 总线

21

数据帧说明• 只有当总线为空闲状态时,才允许节点开始发送、

所有节点必须同步于首先开始发送节点帧起始引起的上升沿。

• 当节点接收到一个报文,首先与节点验收滤波器所规定的标识符相比较。如果标识符通过了验收过滤器,它就会被节点接收并产生 CPU 中断。

• CAN2.0B 对报文滤波特别加以描述,报文滤波以整个标识符为基准,屏蔽寄存器可用于选择一组标识符,以便映像能够至接收缓冲器中,屏蔽寄存器每一位都需是可编程的。它的长度可以是整个标识符,也可以仅是其中一部分。

Page 22: 控制器局域网- CAN 总线

22

数据帧说明• 发送节点的 ACK(应答)场中,送出两个“隐位”,在 ACK间隙内,所有接收到匹配 CRC 序列的节点,以“显位”改写发送器的“隐位”送出一个应答,告诉发送器报文已经被正确接收。如果发送节点没有得到应答,它会继续重新发送报文直到得到应答为止。

Page 23: 控制器局域网- CAN 总线

23

远程帧格式

•远程帧发送者:作为数据接收器的节点•远程帧发送目的:请求发送节点重发与该请求帧标识符相同的报文(往往因为原发报文接收出错)。

•远程帧格式特点:远程帧的 RTR 位是隐性(同数据帧相反)远程帧不存在数据场远程帧中数据长度码的值( 0~8 )要与对应数据帧的数据字节数相同

Page 24: 控制器局域网- CAN 总线

24

出错帧格式• 由两个不同场组成:第一个场由来自各站的错误标志叠加

得到;第二个场是出错界定符。

• 因为总线上的任一个节点检测到总线出错时,都向总线上发出错帧,因而错误标志场是由不同节点发出的错误标志叠加而成的。

• 错误标志有两种:– “ 激活错误”标志: 6 个连续的 0 位(显位)组成。– “ 认可错误”标志: 6 个连续的 1 位(隐位)组成。

Page 25: 控制器局域网- CAN 总线

25

超载帧格式• 包括两个位场:超载标志场: 6 个 0位(显位)

超载界定符: 8 个 1位(隐位)• 其结构与出错帧类似。

Page 26: 控制器局域网- CAN 总线

26

帧间空间( InterframeSpace)

• 数据帧和远程帧与前面的帧(任何帧)以帧间空间位场隔开;过载帧和错误帧前面不存在帧间空间,并且多个过载帧也不用帧间空间分隔。

Page 27: 控制器局域网- CAN 总线

27

CAN 节点的报文滤波• CAN控制器监听并接收总线上的所有报文,只有通过 CA

N控制器的报文筛选器筛选的报文才能进入 CAN的报文接收缓冲区,被该节点所接收并传送给应用程序。程序员通过对报文筛选器的预定义,决定某个节点接收那些特定的报文。例如: SJA1000CAN网络控制器的滤波

CAN 报文

报文接收筛选器

报文接收缓冲区

接收码寄存器( ACR0~ACR3):规定了拟接收报文中参与筛选比较的各位(主要是标识符)必须匹配的值接收屏蔽寄存器( AMR0~AMR3):将 ACR中的某些位屏蔽为“无关位”,对应“无关位”的报文的位不参加筛选比较。

Page 28: 控制器局域网- CAN 总线

28

CAN 节点的总线仲裁与监听机制

CAN控制器发送数据时,按字节的高位到低位的顺序串行发送(MSB在最前, LSB在最后) ;

发送的同时进行接收,同时将收到的数据与发送的数据逐位进行比较。在总线仲裁阶段,若发送的位是“ 1”,而接收到的是“ 0”(总线完成线与功能),则该节点停止发送,退出总线,即仲裁失败。因而,标识符二进制数值低的报文具有更高的优先级。仲裁丢失的节点等到总线空闲后,再重新尝试报文发送。

总线仲裁阶段之后,发送节点仍将发送数据与接收数据逐位进行比较,称为“位校验”。若接收数据与发送数据不一致,则指出“位出错”,节点发送出错帧。

除发送节点和脱离总线的节点外,其他节点均为接收节点。接收节点不停地接收总线上的传输报文,由此不停地监测总线传输的错误状态。每个监听到总线上有传输错误的节点,都会发激活或认可错误帧,故总线上的错误帧是由多个节点发送的错误标志叠加而成的。

Page 29: 控制器局域网- CAN 总线

29

错误类型为了获得尽可能高的数据传输安全性,在每个 CA

N 节点中均设有错误检测、标定和自检的强有力措施。

CAN协议定义了 5种错误类型( 1 )位出错( 2 )填充位出错( 3 ) CRC 出错( 4 )帧格式出错( 5 )应答出错

Page 30: 控制器局域网- CAN 总线

30

错误界定• CAN总线上的每一个节点设立错误计数器

若帧被正确送出或接收,计数值减少。在出现错误的情况下,计数值增加。 CAN 节点的三种状态由这两个计数器的计数值决定。

“错误激活( Error Active)”节点:( REC、 TEC<128)

可正常参与总线通信,并在检测到错误时,发出一个活动错误标志( 6 个连续显性位)。

“错误认可 (Error Passive)” 节点:( REC或 TEC>128)

可参与总线通信,并在检测到错误时,发出一个认可错误标志( 6 个连续隐性位)。发送后,“错误认可”节点在开始进一步发送前将等待一段附加时间。

“总线脱离 (Bus Off)” 节点:( TEC>255)

不允许对总线产生任何影响。

错误计数器发送错误计数器 TEC:寄存帧发送期间的错误数目。

接收错误计数器 REC:寄存帧接收期间的错误数目。

Page 31: 控制器局域网- CAN 总线

31

CAN总线节点状态转换图

Page 32: 控制器局域网- CAN 总线

32

CAN的高层协议• CAN的高层协议(也可理解为应用层协议)是一种在现有的底层协议(物理层和数据链路层)之上实现的协议。高层协议是在 CAN 规范的基础上发展起来的应用层。许多系统(像汽车工业)中,可以特别制定一个合适的应用层,但对于许多的行业来说,这种方法是不经济的。一些组织已经研究并开放了应用层标准,以使系统的综合应用变得十分容易。

• 已定义的 CAN高层协议CAL 协议、 CANOpen 协议( CiA )DeviceNet 协议( ODVA ) SDS 协议( Honeywell )CANKingdom 协议( Kvaser )