CAN数据总线(CANBUS)第5讲CAN通信技术概述CAN(ControllerAreaNetwork)即控制器局域网络。由于其高性能、高可靠性、及独特的设计,CAN越来越受到人们的重视。国外已有许多大公司的产品采用了这一技术。CAN最初是由德国的BOSCH公司为汽车监测、控制系统而设计的。现代汽车越来越多地采用电子装置控制,如发动机的定时、注油控制,加速、刹车控制(ASC)及复杂的抗锁定刹车系统(ABS)等。由于这些控制需检测及交换大量数据,采用硬接信号线的方式不但烦琐、昂贵,而且难以解决问题,采用CAN总线上述问题便得到很好地解决。CAN总线特点CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。CAN总线特点如下:(1)可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活。(2)网络上的节点(信息)可分成不同的优先级,可以满足不同的实时要求。(3)采用非破坏性位仲裁总线结构机制,当两个节点同时向网络上传送信息时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据。(4)可以点对点、一点对多点(成组)及全局广播几种传送方式接收数据。(5)直接通信距离最远可达10km(速率5Kbps以下)。(6)通信速率最高可达1MB/s(此时距离最长40m)。(7)节点数实际可达110个。(8)采用短帧结构,每一帧的有效字节数为8个。(9)每帧信息都有CRC校验及其他检错措施,数据出错率极低。(10)通信介质可采用双绞线,同轴电缆和光导纤维,一般采用廉价的双绞线即可,无特殊要求。(11)节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上的其他操作不受影响。Canbus的发展历史大众公司首次在97年PASSAT的舒适系统上采用了传送速率为62.5Kbit/m的Canbus。98年在PASSAT和GOLF的驱动系统上增加了Canbus,传送速率为500Kbit/m。2000年,大众公司在PASSAT和GOLF采用了带有网关的第二代Canbus。2001年,大众公司提高了Canbus的设计标准,将舒适系统Canbus提高到100Kbit/m,驱动系统提高到500Kbit/m。2002年,大众集团在新PQ24平台上使用带有车载网络控制单元的第三代Canbus。2003年,大众集团在新PQ35平台上使用五重结构的Canbus系统,并且出现了单线的LIN-BUS。◆基于CAN的应用层协议应用较通用的有两种:DeviceNet(适合于工厂底层自动化)和CANopen(适合于机械控制的嵌入式应用)。◆任何组织或个人都可以从DeviceNet供货商协会(ODVA)获得DeviceNet规范。购买者将得到无限制的、真正免费的开发DeviceNet产品的授权。◆DeviceNet自2002年被确立为中国国家标准以来,已在冶金、电力、水处理、乳品饮料、烟草、水泥、石化、矿山等各个行业得到成功应用,其低成本和高可靠性已经得到广泛认同。基于CAN总线的汽车电器网络结构发动机ECU自动变速器ECUABS/TCSECU安全气囊ECU电控悬架ECU巡航控制ECU动力转向ECU电机控制ECU电池管理ECU灯光控制ECU刮雨洗涤控制ECU电动座椅ECU门锁防盗ECU电动车窗ECU后视镜喇叭ECU气候控制ECU警告信号ECU仪表显示ECU整车控制器ECU(网关)整车控制器ECU(网关)高速总线低速总线故障诊断ECUCAN-BUS系统组成:CAN收发器:安装在控制器内部,同时兼具接受和发送的功能,将控制器传来的数据化为电信号并将其送入数据传输线。数据传输终端:是一个电阻,防止数据在线端被反射,以回声的形式返回,影响数据的传输。数据传输线:双向数据线,由高低双绞线组成。Canbus上的控制器中发送信息的线路通过一个开路集电极和总线相连。Canbus的收发器使用一个电路进行控制,这样也就是说控制单元在某一时间段只能进行发送或接受一项功能。逻辑“1”:所有控制器的开关断开;总线电平为5Vor3.5V;Canbus未通讯。逻辑“0”:某一控制器闭合;总线电平为0伏;Canbus进行通讯。Canbus的收发器Canbus采用双绞线自身校验的结构,既可以防止电磁干扰对传输信息的影响,也可以防止本身对外界的干扰。系统中采用高低电平两根数据线,控制器输出的信号同时向两根通讯线发送,高低电平互为镜像。并且每一个控制器都增加了终端电阻,已减少数据传送时的过调效应。基本构造+1V-1V外界的干扰同时作用于两根导线产生的电磁波辐射相互抵消~0V数据传输线数据传输终端数据传输终端CAN收发器CAN收发器原则上CAN总线用一条导线就足以满足功能要求了,但该总线系统上还是配备了第二条导线。在这个第二条导线上,信号是按相反顺序传送的,这样可有效抑制外部干扰。CAN导线的特点各个CAN系统的所有控制单元都并联在CAN数据总线上。CAN数据总线的两条导线分别叫CAN-High和CAN-Low线。两条扭绞在一起的导线称为双绞线。双绞线,CAN-High和CAN-Low线(CAN驱动数据总线)控制单元之间的数据交换就是通过这两条导线来完成的,这些数据可能是发动机转速、油箱油面高度及车速等。为了清楚起见CAN导线分别用单颜色来表示CAN-High线总是黄色,CAN-Low-线总是绿色CAN总线数据交换基本原理不同的数据传递(以CAN驱动数据总线为例)1、提高数据传递的可靠性为了提高数据传递的可靠性,CAN数据总线系统的两条导线(双绞线)分别用于不同的数据传送,这两条线分别称为CAN-High线和CAN-Low线。2、在显性状态和隐性状态之间进行转换时CAN导线上的电压变化在静止状态时,这两条导线上作用有相同预先设定值,该值称为静电平。对于CAN驱动数据总线来说,这个值大约为2.5V。静电平也称为隐性状态,因为连接的所有控制单元均可修改它。123基本术语CAN的报文及结构同步CAN协议规范CAN协议规范CAN协议规范CAN为串行通讯协议,能有效地支持具有很高安全等级的分布实时控制。CAN的应用范围很广,从高速的网络到低价位的多路接线都可以使用CAN。在汽车电子行业里,使用CAN连接发动机控制单元、传感器、防刹车系统、等等,其传输速度可达1Mbit/s。同时,可以将CAN安装在卡车本体的电子控制系统里,诸如车灯组、电气车窗等等,用以代替接线配线装置。技术规范的目的是为了在任何两个CAN仪器之间建立兼容性。可是,兼容性有不同的方面,比如电气特性和数据转换的解释。为了达到设计透明度以及实现灵活性,根据ISO/OSI参考模型,CAN2.0规范细分为以下不同的层次:数据链路层和物理层(如图所示)。CAN协议规范位编码/解码位定时同步驱动器接收器特性逻辑链路子层LLC接收滤波超载通知恢复管理介质访问控制子层MAC数据包装/解包帧编码介质访问管理错误监测出错标定应答串并转换数据链路层物理层故障界定总线故障管理监控器图CAN协议分层结构和功能CAN协议规范在以前版本的CAN规范中,数据链路层的LLC子层和MAC子层的服务及功能分别被解释为“对象层”和“传输层”。逻辑链路控制子层(LLC)的作用范围如下:•为远程数据请求以及数据传输提供服务。•确定由实际要使用的LLC子层接收哪一个报文。•为恢复管理和过载通知提供手段。MAC子层的作用主要是传送规则,也就是控制帧结构、执行仲裁、错误检测、出错标定、故障界定。位定时的一些普通功能也可以看作是MAC子层的一部分。物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输。CAN具有以下的属性:•报文的优先权•保证延迟时间•设置灵活•时间同步的多点接收•系统内数据的连贯性•多主机•错误检测和错误标定•只要总线一处于空闲,就自动将破坏的报文重新传输•将节点的暂时性错误和永久性错误区分开来,并且可以自动关闭由OSI参考模型分层CAN结构的错误的节点。CAN协议规范依据ISO/OSI参考模型的层结构具有以下功能:•物理层定义信号是如何实际地传输的,因此涉及到位时间、位编码、同步的解释。技术规范没有定义物理层的驱动器/接收器特性,以便允许根据它们的应用,对发送媒体和信号电平进行优化。•MAC子层是CAN协议的核心。它把接收到的报文提供给LLC子层,并接收来自LLC子层的报文。MAC子层负责报文分帧、仲裁、应答、错误检测和标定。MAC子层也被称作故障界定的管理实体监管。此故障界定为自检机制,以便把永久故障和短时扰动区别开来。•LLC子层涉及报文滤波、过载通知、以及恢复管理。CAN协议规范1基本术语1.报文总线上的报文以不同的固定报文格式发送,但长度受限。当总线空闲时任何连接的单元都可以开始发送新的报文。2.信息路由在CAN系统中,一个CAN节点不使用有关系统结构的任何信息(如站地址)。包含一些重要概念:系统灵活性——节点可在不要求所有节点及其应用层改变任何软件或硬件的情况下,被接于CAN网络。成组——由于采用了报文滤波,所有节点均可接收报文,并同时被相同的报文激活。数据相容性——在CAN网络内,可以确保报文同时被所有节点或者没有节点接收,因此,系统的数据相容性是借助于成组和出错处理达到的。1基本术语3.位速率不同的系统,CAN的速度不同。在一个给定的系统里,位速率是唯一的,并且是固定的。4.优先权在总线访问期间,识别符定义一个静态的报文优先权。5.远程数据请求通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。数据帧和相应的远程帧是由相同的识别符命名的。1基本术语6.仲裁只要总线空闲,任何单元都可以开始发送报文。具有较高优先权报文的单元可以获得总线访问权。如果2个或2个以上的单元同时开始传送报文,那么就会有总线访问冲突。仲裁的机制确保了报文和时间均不损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一“隐性”电平而监视的是一“显性”电平(见总线值),那么单元就失去了仲裁,必须退出发送状态。1基本术语7.错误检测要进行检测错误,必须采取以下措施:•监视(发送器对发送位的电平与被监控的总线电平进行比较)•循环冗余检查•位填充•报文格式检查1基本术语8.故障界定CAN节点能够把永久故障和短暂扰动区别开来。故障的节点会被关闭。9.总线值总线有二个互补的逻辑值:“显性”或“隐性”。“显性”位和“隐性”位同时传送时,总线的结果值为“显性”。比如,在总线的“写与”执行时,逻辑0代表“显性”等级,逻辑1代表“隐性”等级。10.应答所有的接收器检查报文的连贯性。对于连贯的报文,接收器应答,对于不连贯的报文,接收器作出标志。2CAN的报文及结构CAN信息包格式说明:CAN信息包分为两部分:信息部分和数据部分。头两个字节为信息部分,其前十一位为标识符,标识符中的前八位用作接收判断,应包含本信息包的目的站地址。然后是一位RTR位(应设为0),最后是四位的DLC(数据长度位,即所发数据的实际长度,单位:字节)。其余八个字节是数据部分,存有实际要发的数据。详见下图:2CAN的报文及结构12345670标识符(高八位)标识符DLC数据数据数据数据数据数据数据数据字节1字节2字节3字节4字节5字节6字节7字节8字节9字节10RTR2CAN的报文及结构在进行数据传送时,发出报文的单元称为该报文的发送器。该单元在总线空闲或丢失仲裁前恒为发送器。如果一个单元不是报文发送器,并且总线不处于空闲状态,则该单元为接收器。对于报文发送器和接收器,报文的实际有效时刻是不同的。对于发送器而言,如果直到帧结束末尾一直末出错,则对于发送器报文有效。如果报文受损,将允许按照优先权顺序自动重发送。为了能同其他报文进行总线访问竞争,总线一旦空闲,重发送立即开始。对于接收