CAN (Controller Area Network) BUS

     CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。CAN属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之目前许多RS-485基于R线构建的分布式控制系统而言, 基于CAN总线的分布式控制系统在以下方面具有明显的优越性:


 

  首先,CAN控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且CAN协议废除了站地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些特点使得CAN总线构成的网络各节点之间的数据通信实时性强,并且容易构成冗余结构,提高系统的可靠性和系统的灵活性。而利用RS-485只能构成主从式结构系统,通信方式也只能以主站轮询的方式进行,系统的实时性、可靠性较差;


 

  其次,CAN总线通过CAN收发器接口芯片82C250的两个输出端CANH和CANL与物理总线相连,而CANH端的状态只能是高电平或悬浮状态,CANL端只能是低电平或悬浮状态。这就保证不会出现象在RS-485网络中,当系统有错误,出现多节点同时向总线发送数据时,导致总线呈现短路,从而损坏某些节点的现象。而且CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象在网络中,因个别节点出现问题,使得总线处于“死锁”状态。而且,CAN具有的完善的通信协议可由CAN控制器芯片及其接口芯片来实现,从而大大降低系统开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS-485所无法比拟的。


 

  另外,与其它现场总线比较而言,CAN总线是具有通信速率高、容易实现、且性价比高等诸多特点的一种已形成国际标准的现场总线。这些也是目前CAN总线应用于众多领域,具有强劲的市场竞争力的重要原因。


 

  CAN 即控制器局域网络,属于工业现场总线的范畴。与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良好的性能及独特的设计,CAN总线越来越受到人们的重视。它在汽车领域上的应用是最广泛的,世界上一些著名的汽车制造厂商,如BENZ(奔驰)、BMW(宝马)、PORSCHE(保时捷)、ROLLS-ROYCE(劳斯莱斯)和JAGUAR(美洲豹)等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。同时,由于CAN总线本身的特点,其应用范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN已经形成国际标准,并已被公认为几种最有前途的现场总线之一。其典型的应用协议有: SAE J1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA 2000等。

 

 

  2. CAN总线技术介绍


 

  2.1 位仲裁


 

  要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时,要求快速地进行总线分配。实时处理通过网络交换的紧急数据有较大的不同。一个快速变化的物理量,如汽车引擎负载,将比类似汽车引擎温度这样相对变化较慢的物理量更频繁地传送数据并要求更短的延时。


 

  CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。如图2所示,当几个站同时发送报文时,站1的报文标识符为011111;站2的报文标识符为0100110;站3的报文标识符为0100111。所有标识符都有相同的两位01,直到第3位进行比较时,站1的报文被丢掉,因为它的第3位为高,而其它两个站的报文第3位为低。站2和站3报文的4、5、6位相同,直到第7位时,站3的报文才被丢失。注意,总线中的信号持续跟踪最后获得总线读取权的站的报文。在此例中,站2的报文被跟踪。这种非破坏性位仲裁方法的优点在于,在网络最终确定哪一个站的报文被传送以前,报文的起始部分已经在网络上传送了。所有未获得总线读取权的站都成为具有最高优先权报文的接收站,并且不会在总线再次空闲前发送报文。


 

  CAN具有较高的效率是因为总线仅仅被那些请求总线悬而未决的站利用,这些请求是根据报文在整个系统中的重要性按顺序处理的。这种方法在网络负载较重时有很多优点,因为总线读取的优先级已被按顺序放在每个报文中了,这可以保证在实时系统中较低的个体隐伏时间。


 

  对于主站的可靠性,由于CAN协议执行非集中化总线控制,所有主要通信,包括总线读取 (许可)控制,在系统中分几次完成。这是实现有较高可靠性的通信系统的唯一方法。


 

  2.2 CAN与其它通信方案的比较


 

  在实践中,有两种重要的总线分配方法:按时间表分配和按需要分配。在第一种方法中 ,不管每个节点是否申请总线,都对每个节点按最大期间分配。由此,总线可被分配给每个站并且是唯一的站,而不论其是立即进行总线存取或在一特定时间进行总线存取。这将保证在总线存取时有明确的总线分配。在第二种方法中,总线按传送数据的基本要求分配给一个站 ,总线系统按站希望的传送分配(如:Ethernet CSMA/CD)。因此,当多个站同时请求总线存取时,总线将终止所有站的请求,这时将不会有任何一个站获得总线分配。为了分配总线,多于一个总线存取是必要的。


 

  CAN实现总线分配的方法,可保证当不同的站申请总线存取时,明确地进行总线分配。这种位仲裁的方法可以解决当两个站同时发送数据时产生的碰撞问题。不同于Ethernet网络的消息仲裁,CAN的非破坏性解决总线存取冲突的方法,确保在不传送有用消息时总线不被占用。甚至当总线在重负载情况下,以消息内容为优先的总线存取也被证明是一种有效的系统。虽然总线的传输能力不足,所有未解决的传输请求都按重要性顺序来处理。在CSMA/CD这样的网络中,如Ethernet,系统往往由于过载而崩溃,而这种情况在CAN中不会发生。


 

  2.3 CAN的报文格式


 

  在总线中传送的报文,每帧由7部分组成。CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位 (RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位 (ro),为将来扩展使用。它的最后四个字节用来指明数据场中数据的长度(DLC)。数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。


 

  2.4 数据错误检测


 

  不同于其它总线,CAN协议不能使用应答信息。事实上,它可以将发生的任何错误用信号发出。CAN协议可使用五种检查错误的方法,其中前三种为基于报文内容检查。

  2.4.1 循环冗余检查(CRC)

  在一帧报文中加入冗余检查位可保证报文正确。接收站通过CRC可判断报文是否有错。

  2.4.2 帧检查

  这种方法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。

  2.4.3.应答错误

  如前所述,被接收到的帧由接收站通过明确的应答来确认。如果发送站未收到应答,那么表明接收站发现帧中有错误,也就是说,ACK场已损坏或网络中的报文无站接收。CAN协议也可通过位检查的方法探测错误。

  2.4.4 总线检测

  有时,CAN中的一个节点可监测自己发出的信号。因此,发送报文的站可以观测总线电平并探测发送位和接收位的差异。

  2.4.5 位填充

  一帧报文中的每一位都由不归零码表示,可保证位编码的最大效率。然而,如果在一帧报文中有太多相同电平的位,就有可能失去同步。为保证同步,同步沿用位填充产生在五个连续相等位后,发送站自动插入一个与之互补的补码位;接收时,这个填充位被自动丢掉。例如,五个连续的低电平位后,CAN自动插入一个高电平位。CAN通过这种编码规则检查错误,如果在一帧报文中有6个相同位,CAN就知道发生了错误。

 

  如果至少有一个站通过以上方法探测到一个或多个错误,它将发送出错标志终止当前的发送。这可以阻止其它站接收错误的报文,并保证网络上报文的一致性。当大量发送数据被终止后,发送站会自动地重新发送数据。作为规则,在探测到错误后23个位周期内重新开始发送。在特殊场合,系统的恢复时间为31个位周期。但这种方法存在一个问题,即一个发生错误的站将导致所有数据被终止,其中也包括正确的数据。因此,如果不采取自监测措施,总线系统应采用模块化设计。为此,CAN协议提供一种将偶然错误从永久错误和局部站失败中区别出来的办法。这种方法可以通过对出错站统计评估来确定一个站本身的错误并进入一种不会对其它站产生不良影响的运行方法来实现,即站可以通过关闭自己来阻止正常数据因被错误地当成不正确的数据而被终止。

1 CAN总线电平逻辑

CAN中的总线数值为2种互补逻辑数之一:“显性”或“隐性”。“显性”(Dominant)数值表示逻辑“0”,而“隐性”(Recessive)数值表示逻辑“1”。总线位原理图如图1所示。“显性”和“隐性”位同时发送时,最后总线数值为“显性”,在“隐性”状态下,VCAN-H和VCAN-L被固定于平均电压电平,Vdiff近似为0。
在总线空闲或“隐性”位期间,发送“隐性”状态。“显性”状态以大于最小阈值的差分电压表示。如图2所示。在“显性”位期间,“显性”状态改写“隐性”状态并发送。

   

2 CAN总线的通信协议

  CAN系统中,数据在节点间接收和发送是以4种不同类型的帧出现和控制的,其中:数据帧将数据由发送器传至接收器;远程帧由节点发送,以请求发送具有相同标识的数据帧;出错帧可由任何节点发送,以检测总线错误,而超载帧用于提供先前和后续数据帧或远程帧之间的附加延时。另外,数据帧和远程帧以帧间空间同先前帧隔开。
  (1)数据帧
   一个数据帧由7个不同位场构成,他们是:帧起始(SOF-Start Of Frame)、仲裁场控制场(2 b保留位+DLC场)、数据场、CRC场、ACK场帧结束(EOF-End Of Frame)。如图3所示。

  帧起始(SOF)标志数据帧和远程帧的起始,他由单个“显性”位构成。只有当总线空闲状态时,才允许节点开始发送,所有节点必须同步于首先开始发送节点帧起始引起的上升沿。
  仲裁场由11 b标识符(ID)和RTR(Remote26Transmission Request)位构成。11 bID可形成2 048种信息目标(CAN2.0A标准),而且ID值越小,信息优先级越高。在数据帧中,RTR位数值为“0”,表明数据帧优先于远程帧。
  控制场由6 b构成,包括2 b用于未来DLC扩展的保留位。接收器接收“0”和“1”位作为所有组合中的保留位。在定义保留位功能前,发送器只送“0”位。 
  数据场由数据帧内被发送数据组成,他包括0~8 B,每个字节包括8 b。
  CRC场包括15 b CRC序列和1 b CRC界定符。用于帧校验的CRC序列由特别适用于位数小于127 b帧的循环冗余码校验(BCH码)驱动。为实现CRC计算,被除的多项式被定义为这样一个多项式,其系数由帧起始、仲裁场、控制场、数据场(如果存在)和15 b最低系数为0组成的解除填充的位流给定。此多项式被下列生成多项式:
                                  
除(系数按模-2计算)该多项式相除的余数即为发至总线的CRC序列。
  ACK场为2 b:ACK隙和ACK界定符。发送节点的ACK场中,送出2个“隐性”位。在ACK隙内,所有接收到匹配CRC序列的节点,以“显性”位改写发送器的“隐性”位,因此,ACK隙被2个“隐性”位(ACK界定符和CRC界定符)所包围。
  帧结束:每个数据帧和远程帧均由7个“隐性”位构成的标志序列界定。
   (2)远程帧
  激活数据接收器的节点可以通过发送一个远程帧启动源节点发送各自的数据。一个远程帧由6个不同位场构成:帧起始(SOF)、仲裁场、控制场(2 b保留位+DLC场)、CRC场、ACK场和帧结束(EOF)。如图4所示。
                         

 

  除远程帧中RTR位为“1”外,其余位场与数据帧的相应位场相同。
   (3)出错帧
  出错帧由出错标志和出错界定符2个场组成。错误帧监测CAN控制器的出错状态及出错类型,做为检测出错条件的信号。
   (4)超载帧
  超载帧由超载标志和超载界定符组成。当接收器线路在接收下一个帧前需要更多的时间处理当前数 据,亦即接收器未准备好,或在间歇场期间检测出显性位时将发送超载帧。
   CAN总线基于以下5条基本规则进行组织:  
  ①总线访问 CAN控制器只能在总线空闲状态期间开始发送。所有CAN控制器同步于帧起始的前沿(硬同步)。
  ②仲裁 若有2个或更多的CAN控制器同时发送,总线访问冲突通过仲裁场发送期间位仲裁处理方法予以解决。仲裁期间,每个进行发送的CAN控制器都将发送位电平与监控总线电平进行比较。任何发送一个隐性位而监视到一个显性位电平的CAN控制器立即变为总线上较高优先权报文的接收器,而不致破坏总线上的任何信息。每段报文中的标识符和RTR隐含地定义了该报主席的总线访问优先权。
  ③编码/解码 帧起始、仲裁场、控制场、数据场和CRC序列使用位填充技术进行编码。其余的位场和帧具有固定的形式,不使用位填充方法进行编码和解码。报文中的位流按照NRZ(Non Return to Zero)方法进行编码,亦即位周期期间位电平维持恒定,或者隐性电平,或者显性电平。
  ④出错标注 当检测到位错误时、填充出错、形式错误或应答错误时,检测出错条件的CAN控制器将发送一个出错标志。出错标志将破坏位填充或损坏固定形式的位场。位填充法则的破坏将影响检测出错条件的任何CAN控制器。这些器件也将发送出错标志。  
  ⑤超载标注 一些CAN控制器发送一个或多个超载帧以延迟下一个数据帧或远程帧的发送。


      1. CAN总线有如下基本特点:

  ◎ 废除传统的站地址编码,代之以对通信数据块进行编码,可以多主方式工作;
  ◎ 采用非破坏性仲裁技术,当两个节点同时向网络上传送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响继续传输数据,有效避免了总线冲突;
  ◎ 采用短帧结构,每一帧的有效字节数为8个,数据传输时间短,受干扰的概率低,重新发送的时间短;
  ◎ 每帧数据都有CRC校验及其他检错措施,保证了数据传输的高可靠性,适于在高干扰环境下使用;
  ◎ 节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上其他操作不受影响;
  ◎ 可以点对点,一对多及广播集中方式传送和接受数据。

     ◎  CAN直接通讯距离最远可达10 km(传输率为5kb/s),通讯速率最高可达1 Mb/s(传输距离为40m),CAN总线上结点可达110个。通讯介质采用双绞线、同轴电缆或光导纤维。
  ◎ CAN总线用户接口简单,编程方便,很容易构成用户系统。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值