电路设计_CAN总线基础知识

CAN总线的基本概念

    CAN是控制器局域网络(Controller Area Network, CAN)的简称,是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986年德国电气商博世公司开发出面向汽车的CAN 通信协议。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。
    CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

CAN总线的特点

1)多主控制  
    当总线空闲时,连接到总线上的所有单元都可以启动发送信息,这就是所谓的多主控制的概念。  
    先占有总线的设备获得在总线上进行发送信息的资格。这就是所谓的CSMA/CR(Carrier Sense MultipleAccess/Collosion Avoidance)方法。 如果多个设备同时开始发送信息,那么发送最高优先级ID消息的设备获得发送资格。  
2)信息的发送  
    在CAN协议中,所有发送的信息要满足预先定义的格式。当总线没有被占用的时候,连接在总线上的任何设备都能起动新信息的传输,如果两个或更多个设备在同时刻启动信息的传输,通过ID来决定优先级。ID并不是指明信息发送的目的地,而是指示信息的优先级。如果2个或者更多的设备在同一时刻启动信息的传输,在总线上按照信息所包含的ID的每一位来竞争,赢得竞争的设备(也就是具有最高优先级的信息)能够继续发送,而失败者则立刻停止发送并进入接收操作。因为总线上同一时刻只可能有一个发送者,而其它均处于接收状态,所以,并不需要在底层协议中定义地址的概念。  
3)系统的灵活性  
    连接到总线上的单元并没有类似地址这样的标识,所以,添加或去除一个设备,无需改变软件和硬件,或其它设备的应用层软件。  
4)通信速度  
    可以设置任何通讯速度,以适应网络规模。  
    对一个网络,所有单元必须有相同的通讯速度,如果不同,就会产生错误,并妨碍网络通讯,然而,不同网络间可以有不同的通讯速度。 通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M)。
5)远程数据请求  
    可以通过发送“遥控帧”,请求其他单元发送数据。  
6)错误检测、错误通知、错误恢复功能  
    所有单元均可以检测出错误(错误检测功能)。  
    检测到错误的单元立刻同时通知其它所有的单元(错误通知功能)。如果一个单元发送信息时检测到一个错误,它会强制终止信息传输,并通知其它所有设备发生了错误,然后它会重传直到信息正常传输出去(错误恢复功能)。  
7)错误隔离  
    在CAN总线上有两种类型的错误:暂时性的错误(总线上的数据由于受到噪声的影响而暂时出错);持续性的错误(由于设备内部出错(如驱动器坏了、连接有问题等)而导致的)。CAN能够区别这两种类型,一方面降低常出错单元的通讯优先级以阻止对其它正常设备的影响,另一方面,如果是一种持续性的错误,将这个设备从总线上隔离开。  
8)连接  
    CAN总线允许多个设备同时连接到总线上且在逻辑上没有数目上的限制。然而由于延迟和负载能力的限制,实际可连接得设备还是有限制的,可以通过降低通讯速度来增加连接的设备个数。相反,如果连接的设备少,通讯的速度可以增加。

CAN总线标准规范

    CAN协议已经由ISO标准化,有2个版本,如ISO11898和ISO11519-2,它们之间在数据链路层没什么不同,但是在物理层有些区别。  
1)关于ISO11898:这个标准用于高速CAN通讯。开始的时候,数据链路层和物理层都在标准ISO11898中规定,后来被拆分为ISO11898-1(仅涉及数据链路层)和ISO11898-2(仅涉及物理层)。
2)关于ISO11519:这个标准用于低速(最高125kbps)CAN通讯。

CAN总线协议

CAN协议包括OSI参考模型的传输层、数据链路层、物理层。下表显示了CAN协议每个层的定义。
ISO/OSI 基本参考模型 各层定义的主要项目
软件控制
7层:应用层 由实际应用程序提供可利用的服务
6层:表示层 进行数据表现形式的转换
如文字设定、数据压缩、加密等的控制
5层:会话层 为建立会话式的通信,控制数据正确地接收和发送
4层:传输层 控制数据传输的顺序、传送错误的恢复等,保证通信的品质。
如:错误修正、再传输控制
3层:网络层 数据传输的路由选择或中继。
如:单元间的数据交换、地址管理
硬件控制
2层:数据链路层 将物理层收到的信号(位序列)组成有意义的数据,提供传输错误控制等数据传输控制流程。
如:接收信息选择、过载通知、错误恢复信息帧构成、连接控制、数据冲突仲裁、错误控制、出错通知、响应方法、通讯方法等。
1层:物理层 规定了通信时使用的电缆、连接器等的媒介、电气信号的规格等,以实现设备间的信号传送。
如:信号电平、收发器、电缆、连接器等的定义。
位的编码
位的时序
同步方法

CAN总线报文传输

通讯时使用下面5个类型的帧:
* 数据帧  
* 遥控帧  
* 错误帧  
* 过载帧  
* 帧间空隙
    在所有这些帧中,数据帧和遥控帧由用户设置,而其它帧则由CAN硬件设置。
    数据和遥控帧有两种格式:标准和扩展格式。标准格式有11bit的ID,而扩展格式则是29bit的ID。

数据帧

    数据帧由发送单元使用,用来发送信息给接收单元,这是用户操作的基本帧。 数据帧有7个域组成。
1)帧开始(SOF):这个域表示数据帧的开始;  
2)仲裁域:这个域表示一个帧的优先级;  
3)控制域:这个域表示保留位和数据字节数;  
4)数据域:这是数据内容,0-8个字节的数据能被发送;  
5)CRC域:这个域用于检查帧的传输错误;  
6)ACK域:是对帧已经被正常接收的一个证实;  
7)帧结束:指示数据帧结束。

遥控帧

    遥控帧是接收单元请求发送单元发送一个信息,遥控帧有6个域组成。除了没有数据域外其它与数据帧的结构是一样的。
1)帧开始(SOF):这个域表示数据帧的开始;
2)竞争域:这个域表示数据的优先级,具有同样ID的数据帧被请求;  
3)控制域:这个域表示保留位和数据字节数;
4)CRC域:这个域用于检查帧的传输错误;  
5)ACK域:是对帧已经被正常接收的一个证实;  
6)帧结束:指示遥控帧的结束。

错误帧

    这个帧用来通知在传输期间发生了一个错误,错误帧由一个错误标志和一个错误定界符组成,错误帧由CAN的硬件来发送。
1)错误标志:有2种错误标志类型:主动错误和被动错误标志。
    a) 主动错误标志:6个显性位;  
    b) 被动错误标志:6个隐性位。  
2)错误定界符:由8个隐性位组成。

过载帧

    这个帧被接收单元用来通知还没有准备好接收帧。它由一个过载标志和一个过载定界符组成。
1)过载标志:由6个显性位组成,过载标志与错误帧的主动错误标志具有相同的结构。
2)过载定界符:由8个隐性位组成,过载定界符与错误帧的错误定界符具有相同的结构。

帧间空隙

    这个帧用来隔开数据帧和遥控帧。数据和遥控帧可通过插入帧间间隔与前面传输的任何帧(数据帧、遥控帧、错误帧、过载帧)分开。 过载帧和错误帧前不能插入帧间间隔。
1)间隔:由3个隐性位组成。在间隔期间如果检测到显性电平,则必须发送过载帧,然而,如果间隔的第3bit是显性电平,间隔被认为是SOF。
2)总线空闲:是隐性电平,长度没有限制(它可以是0bit长)。当总线处于这种状态的时候,总线被认为是自由空闲的,任何单元都可以启动发送信息。
3)暂停传输(传输暂停期):有8个隐性位组成。只在处于被动错误状态的单元刚发送一个消息后的帧间隔中包含的段。

参考链接

猜你喜欢

转载自blog.csdn.net/cc214042/article/details/69400419