CAN总线应用基础

CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

     CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986年德国电气商博世公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898及ISO11519 进行了标准化,在欧洲已是汽车网络的标准协议。

 

CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。

表示“隐形”和“显性”逻辑的能力是CAN总线仲裁方法的基本先决条件,及所有的节点都为“隐形”逻辑时,总线截止才处于“隐性”状态;只要有一个节点发送了”显性“逻辑,总线就呈现为显性状态。使用电气介质时,高电平为”隐性“状态,低电平为”显性“状态。使用光学介质时,“暗”表示”隐性“状态,“亮”表示显性“状态。见下图:

CAN总线应用基础(一)

    ISO/DIS11898对线缆的直流电压参数,终端电阻和波特率有一些推荐值。与传输线缆长度相关的电缆直流参数如下图所示:

CAN总线应用基础(一)

       选择双绞线电缆时要注意以下几个方面:

      1,线长。如果工业现场通信的线缆长度较长(>0.3m),建议使用带屏蔽的双绞线。

     2,波特率。取决于传输线的延迟时间,CAN总线的通信距离可能会随着波特率降低而增加。

     3、外界干扰。在工业使用现场必须考虑外界干扰,例如其他电气负荷引起的电磁干扰,尤其是大功率电机运行或其他设备开关时引起供电线路上电压变化的场合。

      4,特征阻抗。所采用的传输线的特征阻抗约为120Ω。由于CAN总线接头的使用使CAN总线的特性阻抗可能发生变化,所以,不能过高估计所使用电缆的特性阻抗。

      5,有效电阻。所使用电缆的电阻必须足够小,以避免因线路压降过大影响位于总线末端的接收器件。为了确定接收端的线路压降,避免信号反射,在总线两端需要连接终端电阻。

     终端电阻是为了消除在通信电缆中的信号反射,导致信号反射有两种原因:阻抗不连续和阻抗不匹配。

         阻抗不连续:信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这 个地方就会引起反射。这种信号反射的原理,与光从一种媒质进入另一种媒质 要引起反射是相似的。消除这种反射的方法,就必须在电缆的末端跨接一个与 电缆的特性阻抗同样大小的终端电阻,使电缆的阻抗连续。由于信号在电缆上 的传输是双向的,因此,在通讯电缆的另一端可跨接一个同样大小的终端电阻。

      引起信号反射的另个原因是数据收发器与传输电缆之间的阻抗不匹配。这种原因引起的反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱。要减弱反射信号对通讯线路的影响,通常采用噪声抑制和加偏置电阻的方法。在实际应用中,对于比较小的反射信号,为简单方便,经常采用加偏置电阻的方法。

    如下图,列举了日本电线CANC系列电缆:

CAN总线应用基础(一)

使用双绞线时需注意到几个问题:

1、双绞线采用抗干扰的差分信号传输方式。

2、如果使用非屏蔽双绞线作为物料层,只需要有2根线缆作为差分信号线传输;如果使用带屏蔽双绞线作为物理层,除需要2根线缆作为差分信号

线连接以外,还需要注意在同一网段中的屏蔽层单点接地(即把整个电路系统中的一个结构点看作接地参考点,所有对地连接都接到这一点上,并设置一个安全接地螺 栓)问题。

3、CAN网络的两端必须有两个范围为118-130Ω的终端电阻。

4、支线必须尽量短。

5、确保不要在干扰源附近布置CAN总线,如果因环境限制必须这样做,就应该使用双层屏蔽电缆。

6、使用适当的电缆类型,必须确定电缆的电压衰减。

 

CAN-bus通信帧共分为数据帧、远程帧、错误帧、过载帧和帧间隔 五种类型

  数据帧(Data Frame)
结构上由7个段组成:帧起始、仲裁域、控制域、数据域(数据域的长度可以为0)、CRC域、应答域、帧结束,其中根据仲裁段ID码长度的不同,分为标准帧(CAN2.0A)和扩展帧(CAN2.0B)

CAN总线应用基础(二)

        帧起始和帧结束,帧起始和帧结束用于界定一个数据帧,无论是标准数据帧或扩展数据帧都包含着两个段。帧起始(SOF)表示数据帧的起始,由一个单独的“显性”位组成,一个CAN节点只在总线空闲时才允许开始发送报文。所有的节点必须同步于首先开始发送的那个节点的帧起始前沿(及总线值从隐形变为显性时产生的跳变沿)。帧结束由7个隐性位组成,每个数据帧和远程帧都由帧结束界定。

CAN总线应用基础(二)

        仲裁域,仲裁域表示数据帧的优先级。标准帧与扩展帧的仲裁域不同。在标准帧格式中,仲裁域由11位标识符(ID)和远程发送请求位(RTR)组成。在扩展域格式中,仲裁域由29位标识符(ID)、SRR位、标识符扩展位(IDE)、远程发送请求位(RTR)组成。扩展帧标识符由11位的基本ID和18位的扩展ID组成。

CAN总线应用基础(二)

 

标识符(ID):先发送标识符ID的高位,后发送低位。CAN-bus并没有规定节点的优先级,但是通过仲裁规则,规定了数据帧的优先级。

远程发送请求位(RTR):表示该报文为数据帧或者远程帧。当为显性时,表示为数据帧;为隐性时,表示为远程帧。

代替远程请求位(SRR):SRR位是一个隐性位。在扩展帧中11位标识符的下一位是SRR位,而在标准帧中11位的下一位是RTR位,因此SRR位称作代替远程请求位。当标准帧发送与扩展帧发送相互冲突,并且扩展帧的基本标识符与标准帧的标识符相同时,标准帧优先级高于扩展帧。

标识符扩展位(IDE):表示该报文为标准格式或者扩展格式。为显性时,表示为标准格式;为隐性时,表示为扩展格式。

控制域:控制域表示数据帧中数据域的字节长度。由保留位和数据长度码共6位组成,如图所示。标准格式和扩展格式的控制域结构相同但位置不同。

CAN总线应用基础(二)

 

        数据域,一个数据帧传输的数据量为0~8个字节,这种短帧结构使得CAN-bus实时性很高,非常适合汽车和工控应用场合。传输时高位在前,即MSB先传输。

CRC域,包含15位的CRC序列和随后1位的CRC界定符。CRC界定符:一个单独的隐性位。CRC序列:计算CRC序列时起始值为0,一次计算帧起始、仲裁域、控制域、数据域。

 

CAN总线应用基础(二)

 

        应答域,长度为2位,包括应答位和应答界定符。发送器发出两个隐性位。当接收器正确的接收到有效的报文,该接收器就会在应答位期间发送显性位(及发送应答)来通知发送器。应答位:所有接收到匹配CRC序列的节点会在应答位期间,用一显性位写在发送器和隐性位置上来作为回应。

CAN总线应用基础(二)

 

远程帧

远程帧的功能:作为某数据接收节点,可以通过发送远程帧启动某资源节点发送数据。

远程帧包含:帧起始、仲裁域、CRC域、应答域和帧结束。与数据帧相比,远程帧结构上无数据段,由6个段组成,同理分为标准格式和扩展格式,且RTR位为1(隐性电平)。

 

CAN总线应用基础(三)

远程帧和数据帧对比:

CAN总线应用基础(三)

错误帧

尽管CAN-bus是可靠性很高的总线,但依然可能出现错误;CAN-bus的错误类型共有5种。

CAN总线应用基础(三)

当出现5种错误类型之一时,发送或接收节点将发送错误帧。错误帧由错误标识和错误界定符组成,结构如下,其中错误标识分为主动错误标识和被动错误标识。

CAN总线应用基础(三)

为防止自身由于某些原因导致无法正常接收的节点一直发送错误帧,干扰其他节点通讯,CAN-bus规定了节点的3种状态及其行为。

CAN总线应用基础(三)

过载帧

过载帧有两个域组成:过载标志和过载帧界定符。

CAN总线应用基础(三)

当某一接收节点没有做好接收下一帧数据的准备时,将发送过载帧以通知发送节点。由于存在多个节点同时过载且过载帧发送有时间差问题,可能出现过载标志叠加后超过6个的现象。

CAN总线应用基础(三)

帧间隔

数据帧和远程帧通过帧间间隔与总线上存在的其他帧区分开(数据帧,远程帧,出错帧,超载帧)。所不同的是,出错帧和超载帧之间,没有帧间间隔,多个超载帧之间也没有帧间间隔。

CAN总线应用基础(三)

CAN报文仲裁机制

报文的优先级,是通过对 ID 的仲裁来确定的。我们知道如果总线上同时出现显性电平和隐性电平,总线的状态会被置为显性电平, CAN 正是利用这个特性进行仲裁。

1、对于CAN来说,0为显性,1为隐性。所以当对不同的ID号来进行仲裁时,ID号越小,优先级越高。如下两张图,表示了仲裁的过程和仲裁的结果。

 

CAN总线应用基础(四)

CAN总线应用基础(四)

2、数据帧和远程帧的优先级:具有相同标识符ID的数据帧和远程帧在总线上竞争时,仲裁域的最后一位RTR为显性位0的数据帧具有优先权,可继续发送。(需要注意的是,RTR并不是为了做优先级仲裁而存在的,他的实际含义是,远程传输请求位,它是用于区分数据帧和遥控帧的,当它为显性电平时表示数据帧,隐性电平时表示远程帧。)数据帧和远程帧的仲裁过程如下:

CAN总线应用基础(四)

3、对于标准数据帧和扩展数据帧的仲裁,由于图中黄色所示,标准帧中的RTR=0为显性,扩展中对应的代替远程请求位为SRR=1为隐性,所以标准帧的优先级更高。

CAN总线应用基础(四)

CAN报文接收滤波简介

CAN总线应用基础(四)

报文校验简介

校验报文是否有效的时间点,发送器与接收器各不相同。发送器:如果知道帧的末尾位均没有错误,则此报文对于发送器有效。如果报文破损,则报文会根据优先权自动重发。为了能够和其他信息竞争总线, 重新传输必须在总线空闲时启动。接收器:如果直到最后,所有的位(除了帧末尾位)均没有错误,则报文对于接收器有效。

“不归零”编码与位填充

CAN总线报文里面的位流根据“不归零”NRZ的方法来编码。这就是说,在整个位时间里,位电平不是“显性”就是“隐性”。

在 CAN 总线中,为了确保足够的转换以保持同步,在相同极性的 5 个连续位之后使用位填充。CAN2.0规范规定,数据帧或远程帧中的位字段SOF,仲裁域,控制域,数据域和CRC序列都需要通过比特填充的方法编码。每当发送器在要发送的位流中检测到五个连续相同识别值的位,则自动在位流中插入一个相反的补码位,这种方法被称为位填充。

数据帧或远程帧的剩余位字段CRC界定符ACK段和帧结束是固定的格式,不需要填充。ERROR FRAME 和 OVERLOAD FRAME 也是固定格式,不通过位填充方法编码。

比如原始位流:111111111111011111101111110,位填充后总线位流为:1111101111101101111101011111010

本文来自系统应用工程师,本文观点不代表iHydrostatics静液压立场。

(3)
上一篇 2019年7月7日 13:48
下一篇 2019年7月7日 14:09

发表回复

登录后才能评论

评论列表(1条)

  • back2049
    back2049 2019年8月14日 14:50

    能否扩展讲讲远程帧及CANopen协议,国内现在主要是CANopen通讯为主

微信客服

微信专属客服 · 静静

一对一为您答疑解惑

qrcode (1)

立即扫码联系我吧

邮件咨询

邮件咨询

业务合作、咨询服务、建议投稿

admin@ihydrostatics.com

分享本页
返回顶部