一、CAN总线简介
CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发了的,并最终成为国际标准(ISO11898)。是国际上应用最广泛的现场总线之一。在建立之初,CAN总线就定位于汽车内部的现场总线,具有传输速度快、可靠性高、灵活性强等优点。上世纪90年代CAN总线开始在汽车电子行业内逐步推广,目前已成为汽车电子行业首选的通信协议,并且在医疗设备、工业生产、楼宇设施、交通运输等领域中取得了广泛的应用。
二、CAN总线技术及其规范
2.1性能特点
(1)数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,通信方式灵活,且无需站地址等节点信息;
(2)CAN网络上的节点信息分成不停的优先级,可满足不同的实时要求,高优先级节点信息最快可在134μs内得到传输;
(3)采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,优先级较低的节点会主动退出发送,而高优先级的节点可不受影响的继续发送数据,从而大大节省了总线冲突仲裁时间。尤其是在网络负载很重的情况下也不会出现网络瘫痪的情况;
(3)通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M);
(4)通信的硬件接口简单,通信线少,传输介质可以是双绞线,同轴电缆或光缆。CAN总线适用于大数据量短距离通信或者长距离小数据量,实时性要求比较高,多主多从或者各个节点平等的现场中使用。
(5)采用短帧结构,传输时间短,受干扰概率低,每帧信息都有CRC校验及其他检验措施,数据出错率极低;
(6)节点在严重错误的情况下具有自动关闭输出的功能,以使总线上其他节点的操作不受影响。
(7)CAN总线使用两根信号线上的差分电压传递信号,显性电平可以覆盖隐形电平。
2.2技术规范
2.2.1CAN的分层结构
图1 CAN的分层结构
逻辑链路控制子层(LLC)的功能:为数据传送和远程数据请求提供服务,确认由LLC子层接收的报文实际上已被接收,为恢复管理和通知超载提供信息。在定义目标处理时,存在许多灵活性。
介质访问控制子层(MAC)的功能:主要是传送规则,即控制帧结构、执行仲裁、错误检测、出错标定和故障界定。MAC子层也要确定当开始一次新的传送时,总线是否开放或者是否马上开始接收。位定时特性也是MAC子层的一部分。
2.2.2CAN的报文传送和帧结构
报文传送由以下四种不同的帧类型所表示和控制。
·数据帧:数据帧携带数据从发送器至接收器;
·远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧;
·错误帧:任何单元检测到一总线错误时发出的错误帧;
·超载帧:超载帧用来在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。
数据帧或远程帧通过帧空间与前述的各种帧分开。
2.2.2.1数据帧
数据械是用来传输数据的帧,由7个位场组成:1.帧起始位场、2.仲裁场、3.控制场、4.数据场、5.CRC场、6.应答场、7帧结尾。数据帧的组成如图2所示。
CAN2.0B中存在两种不同的帧格式,其主要区别在于仲裁场的标示符长度。具有11位标示符的帧称为标准帧,包括29位标示符的帧称为扩展帧。标准帧和扩展帧的仲裁场格式如图3所示。
图3 标准帧和扩展帧的仲裁场格式
·帧起始
帧的起始场仅仅包含一个显性位,当CAN总线空闲时,总线保持隐性位,出现一个显性位即表示总线开始数据传输。CAN总线上的节点只能在总线空闲时发送数据,而检测到起始位之后节点就进入接收状态。
·仲裁场
仲裁场由标识符和远程发送请求位(RTR位)组成。RTR位在数据帧中为显性,在远程帧中为隐性。其结构如图4所示。
图4 CAN总线数据帧仲裁场结构
对于CAN2.0B标准,标准格式帧与扩展格式帧的仲裁场标识符格式不同。标准格式里,仲裁场由11位识别符和RTR(RTR=0)位组成。识别符位由ID.28~ID.18组成。而在扩展格式里,仲裁场包括29位识别符、替代远程请求位SRR、标识位IDE、远程发送请求位RTR(RTR=1)。其识别符由ID.28~ID.0组成,其格式包含两个部分:11位(ID.28~ID.18)基本ID、18位(ID.17~ID.0)扩展ID。扩展格式里,基本ID首先发送,其次是SRR位和IDE位。扩展ID的发送位于SRR 位和IDE位之后。
SRR的全称是“替代远程请求位(Substitute Remote Request BIT)”,
SRR是一隐性位。它在扩展格式的标准帧RTR位上被发送,并代替标准帧的RTR 位。因此,如果扩展帧的基本ID和标准帧的识别符相同,标准帧与扩展帧的冲突是通过标准帧优先于扩展帧这一途径得以解决的。
IDE的全称是“识别符扩展位(Identifier Extension Bit)”,对于扩展格式,IDE位属于仲裁场;对于标准格式,IDE位属于控制场。标准格式的IDE 位为“显性”,而扩展格式的IDE位为“隐性”。
·控制场
控制场由6个位组成,包括数据长度码和两个将来作为扩展用的保留位。其结构如图5所示。
图5 CAN总线数据场结构图
标准格式和扩展格式的控制场格式不同。标准格式里的帧包括数据长度代码、IDE位(为显性位)及保留位r0。扩展格式里的帧包括数据长度代码和两个保留位:r1和r0。其保留位必须发送为显性,但是接收器认可“显性”和“隐性”位的任何组合。
·数据场
数据场由数据帧里的发送数据组成。它可以为0~8个字节,每字节包含了8个位,首先发送最高有效位(MSB)。
·CRC场
CRC场由15位CRC序列和1位隐性CRC界定符组成,,其结构如图6所示。
图6 CAN总线CRC场结构图
CRC序列用于检测报文传输错误,CRC校验是由硬件完成的。
·应答场