第2章CAN现场总线的概念及其相关协议CAN总线的概念CAN特点CAN的分层结构和通信协议CAN报文的帧结构位定时与位同步CAN位仲裁技术CAN的报文滤波技术有关CAN总线的通信错误及其处理CAN总线的概念CAN(ControllerAreaNetwork)即控制器局域网,可以归属于工业现场总线的范畴,是目前国际上应用最广泛的开放式现场总线之一。与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性,它在汽车领域上的应用最为广泛,世界上一些著名的汽车制造厂商,如BENZ(奔驰)、BMW(宝马)、volkswagen(大众)等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。由于CAN总线的特点,其应用范围目前已不仅局限于汽车行业,已经在自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域中得到了广泛应用。CAN总线的概念CAN最初出现在汽车工业中,80年代由德国Bosch公司最先提出。最初动机是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。随着应用领域的增多,CAN的规范从CAN1.2规范(标准格式)发展为兼容CAN1.2规范的CAN2.0规范(CAN2.0A为标准格式,CAN2.0B为扩展格式),目前应用的CAN器件大多符合CAN2.0规范。基本术语报文总线上的报文以不同的固定报文格式发送,但长度受限。当总线空闲时任何连接的单元都可以开始发送新的报文。信息路由:不使用系统结构的任何信息系统灵活性:节点可在不要求所有节点及其应用层改变任何软件和硬件的情况下,被接于CAN网络报文通信:一个报文的内容由其标识符ID命名成组:采用报文滤波,所有节点均接收报文。数据相容性:可以确保报文同时被所有节点或者没有节点接收。基本术语3.位速率不同的系统,CAN的速度不同。在一个给定的系统里,位速率是唯一的,并且是固定的。4.优先权在总线访问期间,识别符定义一个静态的报文优先权。5.远程数据请求通过发送远程帧,需要数据的节点可以请求另一节点发送相应的数据帧。数据帧和相应的远程帧是由相同的识别符命名的。基本术语6.仲裁只要总线空闲,任何单元都可以开始发送报文。具有较高优先权报文的单元可以获得总线访问权。如果2个或2个以上的单元同时开始传送报文,那么就会有总线访问冲突。仲裁的机制确保了报文和时间均不损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一“隐性”电平而监视的是一“显性”电平(见总线值),那么单元就失去了仲裁,必须退出发送状态。基本术语7.错误检测为了获得最安全的数据发送,CAN的每一个节点均采取了强有力的措施以便于错误检测、错误标定及错误自检。要进行检测错误,必须采取以下措施:•监视(发送器对发送位的电平与被监控的总线电平进行比较)•循环冗余检查•位填充•报文格式检查•错误检测的执行基本术语8.故障界定CAN节点能够把永久故障和短暂扰动区别开来。故障的节点会被关闭。9.总线值CAN总线具有两种逻辑状态,隐性和显性。显性表示逻辑”0”,隐性表示逻辑”1”。显性状态下,VCAN-H和VCAN-L两者差分电压大于2V。隐性状态下,VCAN-H和VCAN-L两者电压差为0。“显性”位和“隐性”位同时传送时,总线的结果值为“显性”。比如,在总线的“写与”执行时,逻辑0代表“显性”等级,逻辑1代表“隐性”等级。10.应答所有的接收器检查报文的连贯性。对于连贯的报文,接收器应答,对于不连贯的报文,接收器作出标志。CAN的特点通信方式灵活,为多主方式工作CAN网络上的节点信息分成不同优先级,满足不同实时要求非破坏性的总线仲裁只需通过报文滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据,无需专门的“调度”。直接通信距离最远可达10km(速率5kbps以下);通信速率最高可达1Mbps(此时通信距离最长为40m)。CAN的特点节点数主要取决于总线驱动电路,目前可达110个;报文标识符可达2032种(CAN2.0A),而扩展标准(CAN2.0B)的报文标识符几乎不受限制采用短帧结构。每一帧的有效字节数为8个,传输时间短,受干扰概率低,具有极好的检错效果。每帧信息都有CRC校验及其他检错措施,保证了数据出错率极低CAN的特点通信介质可为双绞线,同轴电缆或光纤,选择灵活。CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,具有较强的抗干扰能力CAN的分层结构数据链路层MAC数据链路层数据链路层数据链路层数据封装/拆装帧编码(填充/解除)LLC接收滤波超载通知恢复管理媒体访问管理串行化/解除串行化物理层PLS位编码/解码位定时同步错误监测出错标定应答PMA驱动器/接收器特性MDI连接器监控器故障界定总线故障管理CAN的分层结构和功能LLC功能:为数据传送和远程数据请求提供服务,确认有LLC子层接收报文实际已被接收和为恢复管理和通知超载提供信息MAC子层的功能:传送规则,亦即控制帧结构,执行仲裁,错误检测,出错标定和故障界定。物理层功能:定义信号怎样进行发送,涉及位定时、位编码和同步描述CAN的通信协议总线访问仲裁编码/解码出错标注超载标注CAN报文的帧结构报文传输由4个不同类型的帧表示和控制:数据帧:数据帧携带数据从发送器至接收器。总线上传输的大多是这个帧。远程帧:由总线单元发出,请求发送具有同一识别符的数据帧。数据帧(或远程帧)通过帧间空间与其他各帧分开。错误帧:任何单元一但检测到总线错误就发出错误帧。过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。数据帧数据帧由7个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结尾。数据场的长度可以为0。CAN2.0A数据帧的组成数据帧⑴帧起始帧起始(SOF)标志数据帧和远程帧的起始,仅由一个“显性”位组成。只在总线空闲时才允许站开始发送。所有站必须同步于首先开始发送报文的站的帧起始前沿。⑵仲裁场仲裁场包括识别符和远程发送请求位(RTR)标准格式数据帧与扩展格式数据帧的仲裁场识别符标准格式识别符的长度为11位,相当于扩展格式的基本ID(BaseID)。这些位按ID-28到ID-18的顺序发送。最低位是ID-18。7个最高位(ID-28-ID-22)必须不能全是“隐性”。扩展格式识别符和标准格式形成对比,数据帧与扩展格式数据帧的仲裁场比较,扩展格式由29位组成。其格式包含两个部分:11位基本ID、18位扩展ID。基本ID包括11位,它按ID-28到ID-18的顺序发送。它相当于标准识别符的格式。基本ID定义扩展帧的基本优先权。扩展ID:扩展ID包括18位。它按ID-17到ID-0顺序发送。标准帧里,识别符其后是RTR位。RTR的全称为“远程发送请求位(RemoteTransmissionRequestBIT)”。识别符SRR是一隐性位。它在扩展格式的标准帧RTR位位置,因此代替标准帧的RTR位。因此,标准帧与扩展帧的冲突是通过标准帧优先于扩展帧这一途径得以解决的,扩展帧的基本ID如同标准帧的识别符。IDE的全称是“识别符扩展位(IdentifierExtensionBit)”标准格式里的IDE位为“显性”,而扩展格式里的IDE位为“隐性”。控制场控制场由6个位组成数据长度代码表数据字节数数据长度代码DLC3DLC2DLC1DLC00dddd1dddr2ddrd3ddrr4drdd5drdr6drrd7drrr8rddd数据帧CRC场应答场帧结束:每个数据帧和远程帧均由7个隐位组成标志序列界定远程帧通过发送远程帧,作为某数据接收器的站可以初始化通过其资源节点传送不同的数据。远程帧也有标准格式和扩展格式,而且都由帧起始、仲裁场、控制场、CRC场、应答场、帧结尾等6个不同的位场组成远程帧与数据帧相反,远程帧的RTR位是“隐性”的。它没有数据场,数据长度代码的数值是不受制约的(可以标注为容许范围里0...8的任何数值)。此数值是相应于数据帧的数据长度代码。RTR位的极性表示了所发送的帧是一数据帧(RTR位“显性”)还是一远程帧(RTR“隐性”)。错误帧错误帧由两个不同的场组成。第一个场用是不同站提供的错误标志(ERRORFLAG)的叠加。第二个场是错误界定符。检测到任何一个节点出错,即于下一位开始发送错误帧,通知发送端停止发送。超载帧过载帧包括两个位场:过载标志和过载界定符,当某接收因内部原因要求缓发下一个数据帧或远程帧时,向总线发出超载帧。位定时与位同步CAN总线的数据传输速率最高可达1Mbit/s,通常用石英晶振作为时钟发生器,可以独立进行位定时的参数设置,这样即使网络中节点之间的时钟周期不一样仍可获得相同的位速率。但网络中晶振的频率不是绝对稳定的,温度、电压以及器件的异常都会导致微小的差别,但只要将其稳定在振荡器容差范围之内,总线上的节点会通过重同步进行弥补。基本概念标称位速率理想的发送器在没有重新同步的情况下每秒发送的位数量正常位时间CAN总线的一个位时间可以分成四个部分:同步段,传播时间段,相位段缓冲1和相位段缓冲2基本概念同步段同步段用于同步总线上的各个节点,在此段内期望有一个跳变沿出现。如果跳变沿出现在同步段之外,那么沿与同步段之间的长度叫做沿相位误差。采样点位于相位缓冲段1的末尾和相位缓冲段2开始处。传播时间段传播时间段用于补偿总线上信号传播时间和电子控制设备内部的延迟时间。因此,要实现与位流发送节点的同步,接收节点必须移相。基本概念采样点采样点是读总线电平并解释各位的值的一个时间点。采集点位于相位缓冲段1(PHASE_SEG1)之后信息处理时间信息处理时间是一个以采样点作为起始的时间段。采集点用于计算后续位的位电平基本概念时间份额时间份额是派生于振荡器周期的固定时间单元。存在有一个可编程的预比例因子,其整体数值范围为1—32的整数,以最小时间份额为起点,时间份额的长度为:时间份额(TIMEQUANTUM)=m*最小时间份额(MINIMUMTIMEQUANTUM)(m为预比例因子)基本概念参数范围说明分频值[1…….32]规定时间份额的长度同步段1tq固定长度,同步总线节点传播时间段[1…….8]tq补偿总线物理延迟时间相位缓冲段1[1…….8]tq重同步时可以暂时延长相位缓冲段2[1…….8]tq重同步时可以暂时缩短同步跳转宽度[1…….4]tq长度小于相位缓冲段位时间的参数时间段的长度基本概念硬同步硬同步只在总线空闲时通过一个下降沿(帧起始)来完成,此时不管有没有相位误差,所有节点的位时间重新开始。强迫引起硬同步的跳变沿位于重新开始的位时间的同步段之内。重同步在消息帧的随后位中,每当有从“隐性位”到“显性位”的跳变,并且该跳变落在了同步段之外,就会引起一次重同步。重同步机制可以根据跳变沿增长或者缩短位时间以调整采样点的位置,保证正确采样。同步规则1.在一个位时间里只允许一个同步。2.仅当采集点之前探测到的值与紧跟沿之后的总线值不相符合时,才把沿用作于同步。3.总线空闲期间,有一“隐性”转变到“显性”的沿,无论何时,硬同步都会被执行。4.如果仅仅是将“隐性”转化为“显性”的沿用作于重新同步使用,则其他符合规则1和规则2的所有从“隐性”转化为“显性”的沿可以用作为重新同步。有一例外情况,即,当发送一显性位的节点不执行重新同步而导致一“隐性”转化为“显性”沿,此沿具有正的相位误差,不能作为重新同步使用。相位缓冲段和同步同步跳转宽度规定了重同步发生时采样点在相位缓冲段内移动的距离。相位缓冲段和同步跳转宽度用来补偿振荡器容差,发生