资源描述
第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的分层结构,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个位组成,数据帧,CRC场应答场帧结束:每个数据帧和远程帧均由7个隐位组成标志序列界定,远程帧,通过发送远程帧,作为某数据接收器的站可以初始化通过其资源节点传送不同的数据。远程帧也有标准格式和扩展格式,而且都由帧起始、仲裁场、控制场、CRC场、应答场、帧结尾等6个不同的位场组成,远程帧,与数据帧相反,远程帧的RTR位是“隐性”的。它没有数据场,数据长度代码的数值是不受制约的(可以标注为容许范围里0.8的任何数值)。此数值是相应于数据帧的数据长度代码。RTR位的极性表示了所发送的帧是一数据帧(RTR位“显性”)还是一远程帧(RTR“隐性”)。,错误帧,错误帧由两个不同的场组成。第一个场用是不同站提供的错误标志(ERRORFLAG)的叠加。第二个场是错误界定符。检测到任何一个节点出错,即于下一位开始发送错误帧,通知发送端停止发送。,超载帧,过载帧包括两个位场:过载标志和过载界定符,当某接收因内部原因要求缓发下一个数据帧或远程帧时,向总线发出超载帧。,位定时与位同步,CAN总线的数据传输速率最高可达1Mbit/s,通常用石英晶振作为时钟发生器,可以独立进行位定时的参数设置,这样即使网络中节点之间的时钟周期不一样仍可获得相同的位速率。但网络中晶振的频率不是绝对稳定的,温度、电压以及器件的异常都会导致微小的差别,但只要将其稳定在振荡器容差范围之内,总线上的节点会通过重同步进行弥补。,基本概念,标称位速率理想的发送器在没有重新同步的情况下每秒发送的位数量正常位时间CAN总线的一个位时间可以分成四个部分:同步段,传播时间段,相位段缓冲1和相位段缓冲2,基本概念,同步段同步段用于同步总线上的各个节点,在此段内期望有一个跳变沿出现。如果跳变沿出现在同步段之外,那么沿与同步段之间的长度叫做沿相位误差。采样点位于相位缓冲段1的末尾和相位缓冲段2开始处。传播时间段传播时间段用于补偿总线上信号传播时间和电子控制设备内部的延迟时间。因此,要实现与位流发送节点的同步,接收节点必须移相。,基本概念,采样点采样点是读总线电平并解释各位的值的一个时间点。采集点位于相位缓冲段1(PHASE_SEG1)之后信息处理时间信息处理时间是一个以采样点作为起始的时间段。采集点用于计算后续位的位电平,基本概念,时间份额时间份额是派生于振荡器周期的固定时间单元。存在有一个可编程的预比例因子,其整体数值范围为132的整数,以最小时间份额为起点,时间份额的长度为:时间份额(TIMEQUANTUM)m*最小时间份额(MINIMUMTIMEQUANTUM)(m为预比例因子),基本概念,位时间的参数,时间段的长度,基本概念,硬同步硬同步只在总线空闲时通过一个下降沿(帧起始)来完成,此时不管有没有相位误差,所有节点的位时间重新开始。强迫引起硬同步的跳变沿位于重新开始的位时间的同步段之内。重同步在消息帧的随后位中,每当有从“隐性位”到“显性位”的跳变,并且该跳变落在了同步段之外,就会引起一次重同步。重同步机制可以根据跳变沿增长或者缩短位时间以调整采样点的位置,保证正确采样。,同步规则,1.在一个位时间里只允许一个同步。2.仅当采集点之前探测到的值与紧跟沿之后的总线值不相符合时,才把沿用作于同步。3.总线空闲期间,有一“隐性”转变到“显性”的沿,无论何时,硬同步都会被执行。4.如果仅仅是将“隐性”转化为“显性”的沿用作于重新同步使用,则其他符合规则1和规则2的所有从“隐性”转化为“显性”的沿可以用作为重新同步。有一例外情况,即,当发送一显性位的节点不执行重新同步而导致一“隐性”转化为“显性”沿,此沿具有正的相位误差,不能作为重新同步使用。,相位缓冲段和同步,同步跳转宽度规定了重同步发生时采样点在相位缓冲段内移动的距离。相位缓冲段和同步跳转宽度用来补偿振荡器容差,发生重同步时相位缓冲段会被加长或缩短。当总线发生从隐性到显性跳变时,会产生同步,其作用是控制沿与采样点之间的距离。总线节点在每个时间份额都会采样总线,并与前一次采样值进行比较,如果前一次采样值是隐性而当前的采样值是显性,那么总线节点就会发生一次同步。如果跳变沿出现在同步段的前面,沿相位错误就是负的,反之就是正的。在帧起始时,总线会进行一次硬同步。硬同步后,位时间由每个位定时逻辑单元在同步段之后重新启动,强迫引起硬同步的边沿处于重新启动位时间的同步段内。,CAN的位仲裁技术,要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时,要求快速地进行总线分配。CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。,CAN的位仲裁技术,只要总线空闲,任何单元都可以开始发送报文。如果2个或2个以上的单元同时开始传送报文,那么就会有总线访问冲突。通过使用识别符的位形式仲裁可以解决这个冲突。仲裁的机制确保信息和时间均不会损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一“隐性”电平而监控视到一“显性”电平(见总线值),那么该单元就失去了仲裁,必须退出发送状态。,CAN的位仲裁技术,所有标识符都有相同的两位01,直到第3位进行比较时,站1的报文被丢掉,因为它的第3位为高,而其它两个站的报文第3位为低。站2和站3报文的4、5、6位相同,直到第7位时,站3的报文才被丢失。,CAN的位仲裁技术,缺点由于CAN总线采用的是固定优先级,当所有的节点都随机的向总线发送数据时,具有低优先级的节点是比具有高优先级的节点具有较大的发送失败几率。每次具有较低优先级的节点都会在总线竞争中失败,从而导致它一个数据都发不出去,或者发送的数据有较大的延时,CAN报文滤波技术,用途在CAN总线中,存在多种传送和接收数据的方式,比如点对点、一点对多点及全局广播等几种方式。这几种方式的选择和转换就是通过CAN总线中的报文滤波技术实现的,无需专门的调度,CAN报文滤波技术,原理在验收滤波器的帮助下,CAN控制器允许RXFIFO只接收同识别码和验收滤波器中预设值相一致的信息。只有当接收信息中的识别位和滤波器中预定义的值相等时,CAN控制器才允许将已接收的信息存入到RXFIFO,单滤波技术,单滤波是指只有一个由4个验收码寄存器和4个验收屏蔽寄存器组成的验收滤波器总线上的信息只有通过了它的验收滤波才予以接收无论是单滤波还是双滤波ACR和AMR都是配合在一起工作,所有AMR为0的位,ACR和CAN信息帧的对应位必须相同才算验收通过。所有AMR为1的位ACR对应位的验收滤波功能则予以屏蔽CAN信息帧的相关位与验收结果无关,双滤波技术,双滤波比单滤波要复杂一些,4个ACR和4个AMR在双滤波方式下共构成两个滤波器接收的信息帧通过任意一个滤波器即可予以接收,错误检测,位错误站单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误(BITERROR)。但是在仲裁场(ARBITRATIONFIELD)的填充位流期间或ACK间隙(ACKSLOT)发送一“隐性”位的情况是例外的此时,当监视到一“显性”位时,不会发出位错误(BITERROR)。当发送器发送一个被动错误标志但检测到“显性”位时,也不视为位错误,错误检测,填充错误如果在使用位填充法进行编码的信息中,出现了第6个连续相同的位电平时,将检测到一个填充错误。CRC错误CRC序列包括发送器的CRC计算结果。接收器计算CRC的方法与发送器相同。如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误(CRCERROR),错误检测,形式错误当一个固定形式的位场含有1个或多个非法位,则检测到一个形式错误应答错误只要在ACK间隙(ACKSLOT)期间所监视的位不为“显性”,则发送器会检测到一个应答错误,错误标定,检测到错误条件的站通过发送错误标志指示错误。对于“错误主动”的节点,错误信息为“主动错误标志”,对于“错误被动”的节点,错误信息为“被动错误标志”。站检测到无论是位错误、填充错误、形式错误,还是应答错误,这个站会在下一位时发出错误标志信息。只要检测到的错误的条件是CRC错误,错误标志的发送开始于ACK界定符之后的位(其他的错误条件除外)。,故障界定,错误激活状态可以正常地参与总线通讯并在错误被检测到时发出主动错误标志错误认可状态不允许发送主动错误标志。参与总线通讯而且在错误被检测到时只发出被动错误标志。而且,发送以后,仍为错误认可状态。在预设下一个发送之前处于等待状态。总线关闭状态不允许在总线上有任何的影响(比如,关闭输出驱动器)。,错误处理,1.当接收器检测到一个错误,接收错误计数就加1。2.当错误标志发送以后,接收器检测到的第一个位为“显性”时,接收错误计数值加8。3.当发送器发送一错误标志时,发送错误计数器值加8。,错误处理,4.发送主动错误标志或过载标志时,如果发送器检测到位错误,则发送错误计数器值加8。5.当发送主动错误标志或过载标志时,如果接受器检测到位错误(位错误),则接收错误计数器值加8。6.在发送主动错误标志、被动错误标志或过载标志以后,任何节点最多容许7个连续的“显性”位。以下的情况,每一发送器将它们的发送错误计数值加8,及每一接收器的接收错误计数值加8,错误处理,7.报文成功传送后(得到应答及直到帧末尾结束没有错误),发送错误计数器值减1,除非已经是0。8.如果接收错误计数值介于1和127之间,在成功地接收到报文后(直到ACK间隙接收没有错误,及成功地发送了应答位),接收错误计数器值减1。如果接收错误计数器值是0,则它保持0,如果大于127,则它会设一值介于119到127之间。,错误处理,9.当发送错误计数器值等于或超过128时,或当接收错误计数器值等于或超过128时,节点为“错误被动”。让节点成为“错误被动”的错误条件致使节点发出主动错误标志。10.当发送错误计数器值大于或等于256时,节点为“总线关闭”。,错误处理,11.当发送错误计数器值和接收错误计数器值都小于或等于127时,“错误被动”的节点重新变为“错误主动”12.在总线监视到128次出现11个连续“隐性”位之后,“总线关闭”的节点可以变成“错误主动”(不再是“总线关闭”),它的错误计数值也被设置为0。,
展开阅读全文