安徽工程大学研究生课程1第5章控制器局域网总线—CAN周鸣争安徽工程大学计算机与信息学院上一页下一页安徽工程大学研究生课程2主要内容1CAN总线的性能特点2CAN2.0技术规范3CAN总线的组网与相关器件4CAN应用节点设计5CAN的高层协议6CAN应用实例—汽车电子上一页下一页安徽工程大学研究生课程31CAN总线的性能特点第5章控制器局域网总线—CAN上一页下一页安徽工程大学研究生课程4CAN总线(ControllerAreaNetwork)是德国Bosch公司从20世纪初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,1993年11月国际标准化组织ISO正式颁布了关于CAN总线的ISO11898标准,目前CAN得到了Motorola、Intel、Philips、Siemens、NEC等公司的支持,已广泛应用在离散控制领域。其主要特点有:CAN总线的性能特点上一页下一页安徽工程大学研究生课程5CAN总线的性能特点(1)CAN为多主方式工作,网络上任意一个节点均可在任意时刻主动地向其它节点发送数据,而不分主从,通信方式灵活,且无需站地址等节点信息。所以可以方便地构成多机备份系统。(2)CAN网络上的节点信息分成不同的优先级,可满足不同的实时要求。(3)CAN采用非破坏性总线仲裁技术,当多个节点同时向总线发送信息时,最高优先级的节点可不受影响的继续传送数据,而低优先级的节点主动退出。节省了总线仲裁的时间。(4)CAN的通信介质可以是双绞线、同轴电缆和光纤。上一页下一页安徽工程大学研究生课程6(5)CAN只需通过报文滤波即可实现点对点、一对多和广播等几种方式传送、接收数据。无需专门的调度。通信距离最远可达10km(5kb/s),最高速率可达1Mb/s(40m)。(6)CAN总线上的节点数主要取决于总线的驱动电路,目前可达110个。报文识别符可达2032个(CAN2.0A),而扩展标准(CAN2.0B)几乎不受限制。(7)采用短帧结构,数据字段长度最多为8B,传送的时间短。受干扰的概率低。(8)每帧中都有CRC校验,保证数据传输的可靠性。(9)节点在错误严重的情况下,具有自动关闭总线的功能。使其它节点不受影响。CAN总线的性能特点上一页下一页安徽工程大学研究生课程72CAN2.0技术规范第5章控制器局域网总线—CAN上一页下一页安徽工程大学研究生课程8CAN2.0技术规范1CAN总线的网络体系结构CAN总线也是建立在ISO参考模型基础上的,不过只采用了其中最关键的两层,即物理层和数据链路层。它将数据链路层又分成LLC(对象层)和MAC(传输层)。因此,它由对象层、传输层和物理层三层组成。上一页下一页安徽工程大学研究生课程9(1)对象层(目标层):其作用是◆查找要发送的报文◆确定要接收的报文◆为应用提供接口(2)传输层:是协议的核心,一般修改是受限制的;其作用是◆帧结构的组装与拆分◆总线冲突仲裁◆差错控制(3)物理层:位信号的传输,同一个网络内,所有节点的物理层必须是相同的。CAN总线的上述的功能均在CAN控制器中完成。CAN2.0技术规范上一页下一页安徽工程大学研究生课程10CAN2.0技术规范2基本概念(1)报文路由一个报文的内容由其标识符命名,标识符不指明报文的目的地,但解释数据的含义,因此网络上所有的节点可以通过报文滤波确定是否应对该数据作出反应。(2)多播由于引入了报文滤波的概念,任何目的的节点都可以接收报文,并同时对此报文作出反应。(3)总线值CAN采用“不归零”方法进行信号编码。总线可以具有两种互补的逻辑值之一:“显性”(0)和“隐性”。显性位和隐性位同时传送时,总线的结果值为显性。上一页下一页安徽工程大学研究生课程11CAN2.0技术规范(4)仲裁只要总线空闲,任何节点都可以开始传送报文。若同时有两个或两个以上的节点开始发送,就会发生冲突。CAN使用标识符的位形式仲裁来解决冲突。其机理为:当具有相同标识符的数据帧和远程帧同时发送时,数据帧优于远程帧。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较,如果电平相同,则这个节点可以继续发送。如果发送的是“隐性”电平而监控到的是“显性”电平,那么该节点就失去了仲裁,必须退出发送状态。上一页下一页安徽工程大学研究生课程12CAN2.0技术规范3报文传输在进行数据传送时,发出报文的单元称为该报文的发送器。该单元在总线空闲或丢失仲裁前恒为发送器。如果一个单元不是报文发送器,并且总线不处于空闲状态,则该单元为接收器。对于发送器而言,如果直到帧结束后一直未出错,则对发送器报文有效。如果报文受损,将允许按照优先权顺序自动重发送。为了能同其他报文进行总线访问竞争,总线一旦空闲,重发送立即开始。对于接收器而言,如果直到帧结束的最后一位未出错,则对于接收器报文有效。上一页下一页安徽工程大学研究生课程13CAN总线基于下列5条基本规则进行报文通信协调:—总线访问—仲裁—编码/解码—出错标注—超载标注4帧结构CAN通信协议规定有4种不同的帧格式,即数据帧、远程帧、错误帧和超载帧。(1)数据帧CAN2.0技术规范上一页下一页安徽工程大学研究生课程14◆作用:携带数据从发送器到接收器◆结构:如下图所示,由7个位场组成。CAN2.0技术规范●帧起始:一个显位(0),表示帧的开始;●仲裁场:由标识符11位和一位远程发送请求位RTR组成,如下图所示上一页下一页安徽工程大学研究生课程15CAN2.0技术规范仲裁场结构其中标识符的最高7位不能全为隐位“1”,RTR位在数据帧中必须为显位“0”,在远程帧中为隐位“1”;●控制场:用于指出数据场的字节数目。由4位数据长度码和2位保留位组成,如下图所示。其中保留位必须为显位,数据字节的允许使用数目为0~8,不能使用其它数值。与长度码对应的关系如下表所示。上一页下一页安徽工程大学研究生课程16CAN2.0技术规范控制场结构数据长度编码d—显性;r—隐性上一页下一页安徽工程大学研究生课程17CAN2.0技术规范●数据场:被发送的0~8个字节的数据,首先发送最高有效位。●CRC场:由15位CRC序列和一位隐性CRC定界符组成。CRC校验包括帧起始、仲裁场、控制场和数据场其多项式为:CRC场结构上一页下一页安徽工程大学研究生课程18CAN2.0技术规范上一页下一页安徽工程大学研究生课程19CAN2.0技术规范●应答ACK场:包含应答间隙和应答定界符2位;如图。发送器在应答场中,发送两个隐性位。一个正确接收到报文的接收器,就会在应答间隙期间向发送器发送一显性的位,以示应答。而应答定界符必须为隐性位。ACK场结构上一页下一页安徽工程大学研究生课程20CAN2.0技术规范●帧结束:表示帧的结束。由7个隐性位组成。(2)远程帧◆作用:请求发送具有同一标识符的数据帧◆组成:RTR位必须为“隐性”的。它没有数据场,数据长度代码的数值是不受制约的。如下图远程帧结构上一页下一页安徽工程大学研究生课程21(3)出错帧◆作用:任何节点检测到一总线错误就立即发出错误帧。◆组成:由两个场组成,第一个场由来自各站的错误标志叠加得到,第二个场为出错定界符。没有帧的起始和结束定界符。格式如下CAN2.0技术规范出错帧结构上一页下一页安徽工程大学研究生课程22●错误标志场有两种错误的标志形式,错误主动标志和错误被动标志。前者由6位连续的显性位构成。后者由6位的隐性位构成,除非被其它节点的显性位覆盖。检测到出错状态的“错误主动”节点,通过发送错误主动标志来指示错误。因为该标志的格式违背了正常帧的规则。这样所有其它的节点将检测到一个出错状态。并开始发送一个错误标志。因此,各节点发送的不同错误标志叠加起来就形成了出错帧的第一个场。实际上总线上监控到的是叠加的“显性”位序列,长度在6—12位之间。CAN2.0技术规范上一页下一页安徽工程大学研究生课程23检测到出错状态的“错误被动”节点通过发送错误被动标志来指示错误。错误被动节点从错误被动标志的开头起,等待6个后续的相同极性的位,当6个相同的位被检测到时,错误被动标志就完成了。●错误定界符错误定界符由8位隐性位构成。传送了错误标志后,每个节点就发送一个隐性位,并一直监控总线直到检测到一个隐性位为止。然后就开始发送剩余的7个隐性位。CAN2.0技术规范上一页下一页安徽工程大学研究生课程24CAN2.0技术规范(4)超载帧◆作用:用以在先行的和后续的数据帧(或远程帧)之间提供附加的延时。◆组成:由超载标志和超载定界符两个场组成。如图所示出错帧结构上一页下一页安徽工程大学研究生课程25有两种超载条件都会导致超载标志的传送:●接收器的内部条件(此接收器对于下一数据帧或远程帧需要有一延时)。●间歇场期间检测到一“显性”位。由过载条件1而引发的过载帧只允许起始于所期望的间歇场的第一个位时间开始。而由过载条件2引发的过载帧应起始于所检测到“显性”位之后的位。●过载标志由6个“显性”的位组成。过载标志的所有形式和主动错误标志的一样。过载标志的形式破坏了间歇场的固定形式。因此,所有其他的站都检测到一过载条件并与此同时发出过载标志。(万一有的节点在间歇的第3个位期间于本地检测到“显性”位,则其他的节点将不能正确地解释过载标志,而是将这6个“显性”位中的第一个位解释为帧的起始。这第6个“显性”的位破坏了产生错误条件的位填充的规则。)CAN2.0技术规范上一页下一页安徽工程大学研究生课程26CAN2.0技术规范●过载界定符过载界定符包括8个“隐性”的位。过载界定符的形式和错误界定符的形式一样。过载标志被传送后,站就一直监视总线直到检测到一个从“显性”位到“隐性”位的发送(过渡形式)。此时,总线上的每一个站完成了过载标志的发送,并开始同时发送7个以上的“隐性”位。(5)帧间空间◆作用:数据帧(或远程帧)与其前面帧的隔离是通过帧间空间实现的,无论其前面的帧为何类型(数据帧、远程帧、错误帧、过载帧)。所不同的是,过载帧与错误帧之前没有帧间空间,多个过载帧之间也不是由帧间空间隔离的。上一页下一页安徽工程大学研究生课程27◆组成●帧间空间包括间歇场、总线空闲的位场。●如果“错误被动”的站已作为前一报文的发送器时,则其帧空间除了间歇、总线空闲外,还包括称作挂起传送的位场。●对于不是“错误被动”的站,或者此站已作为前一报文的接收器,其帧间空间如下图所示:CAN2.0技术规范非“错误被动”的帧间空间结构上一页下一页安徽工程大学研究生课程28●对于已作为前一报文发送器的“错误被动”的站,其帧间空间如下图所示,多了一个暂停发送场(SuspendTransmission)CAN2.0技术规范●间歇场由3个“隐性”的位组成。间歇期间,所有的站均不允许传送数据帧或远程帧,唯一要做的是标示一个过载条件。“错误被动”的帧间空间结构上一页下一页安徽工程大学研究生课程29●总线空闲总线空闲的(时间)长度是任意的。此时总线是开放的。因此任何需要发送信息的站均可访问总线。在发送报文发送期间,暂时被挂起的等待发送报文紧随间隙场从第一位开始发送,此时总线上的“显性”的位可被理解为帧的起始。●暂停发送场暂停发送场是指“错误被动”的站发送报文后,在开始下一报文传送之前或总线空闲之前,它紧随间隙场后发出8个“隐性”位。如果与此同时另一站开始发送报文(由另一站引起),则此站就作为这个报文的接收器。CAN2.0技术规范上一页下一页安徽工程大学研究生课程30CAN2.0技术规范5错误的类型与界定(1)错误类型有以下5种不同的错误类型(这5种错误不会相互排斥)◆位错误:站单元在发送位的同时也对总线进行监视,如果所发送的位值与所监视的位值不相符合,则在此位时间里检测到一个位错误。例外的情况是在仲裁场的填充位流期间或应答间隙发送一“隐性”位而监视到一“显性