通信网络
CAN是控制器区域网络(controller area network)的缩写,由德国博世公司(BOSCH)于1986年开发,是一种多主节点、消息广播系统,规定最大传输速率为每秒1兆比特。与USB或以太网等传统网络不同,CAN不会在总线中心主节点的监督下,从节点A到节点B点对点地发送大块数据。在CAN网络中,许多短消息(如温度或转速)被广播到整个网络,这保证了系统中每个节点获得数据的一致性。
当总线空闲时,连接到总线的单元可以发送消息,即系统为多主站类型。当多个单元同时开始发送消息时,它们的优先级由位于数据帧中的消息标识符解析。一旦,一个特定的单元赢得了总线竞争,消息由该单元发送。其他优先级低的单元可以在总线进入空闲状态时发送它们的消息。
它是传感器、执行器和智能设备之间非常简单、高度可靠和优先级通信协议。基于载波感知多址冲突检测(CSMA-CD)技术,将生产-消费技术应用于物理介质的访问。
下面,我们介绍CAN的基础知识,如消息格式、消息标识符和位仲裁,阐述CAN通信方案的一个主要优点。
CAN通信协议ISO-11898: 2003描述了信息如何在网络上的设备之间传递,并符合开放系统互连(OSI)模型,不过其模型只有三层,即只取OSI底层的物理层、数据链路层和顶层的应用层。
其信号传输介质可以是双绞线、同轴电缆或光导纤维。CAN可提供高达1Mbps的数据传输速率(此时通信距离最长为40m),直接传输距离最远可达10km(速率5Kbps以下)。CAN总线通信接口集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等。CAN协议的一个最大特点是废除了传统的站地址编码,而对通信数据块进行编码。采用这种方法可使网络内的节点个数在理论上不受限制,但在实际应用中,节点数目受网络硬件的电气特性所限制。例如,当使用Philips PCA82C250作为CAN收发器时,同一网络中允许挂接110个节点。数据块的标识码可由11位或29位二进制数组成,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。
CAN通信协议是一种载波侦听、多址接入、基于消息优先级的冲突检测和仲裁(CSMA/CD+AMP)协议。CSMA意味着总线上的每个节点在尝试发送消息之前必须等待一段规定的不活动时间。CD+AMP意味着冲突通过按位仲裁解决,基于消息标识符字段中每个消息的预编程优先级。优先级较高的标识符总是获得总线访问权。也就是说,标识符中最后一个逻辑高位会继续传输,因为它的优先级最高。由于总线上的每个节点都参与“在被写入时”写入每个比特,因此仲裁节点知道它是否将逻辑高位位放置在总线上。
ISO-11898:2003标准使用了标准的11位标识符,规定了从125 kbps到1 Mbps的信号速率。该标准后来被修改为“扩展”的29位标识符。标准11位标识符字段可提供2048个不同的消息标识符,而扩展29位标识符可提供5.37亿个标识符。
3.1 标准CAN
上图位段的含义是:
3.2 扩展CAN
如上图所示,扩展CAN消息与标准消息相同,只是增加了以下内容:
4.1 仲裁
如下图所示,CAN总线具有两种逻辑状态:显性或隐形。在隐形状态下,VCANH和VCANL被固定于平均电压电平,电平差近似于零;显性状态以大于阈值的差分电压表示。在显性位期间,显性状态改变隐形状态并发送。
总线访问是事件驱动的,是随机发生的。如果两个节点试图同时占用总线,则使用非破坏性的逐位仲裁实现访问。非破坏性意味着赢得仲裁的节点只是继续处理消息,消息不会被另一个节点破坏或损坏。
在标识符中为消息分配优先级是CAN的一个特性,这使得它特别适合在实时控制环境中使用。二进制消息标识符编号越低,其优先级越高。完全由0组成的标识符是网络上优先级最高的消息,因为它占用的总线支配时间最长。因此,如果两个节点同时开始传输,一个节点发送最后一个标识符位为0(显性),而其他节点发送标识符位为1(隐性),则该节点保留对CAN总线的控制权,继续完成其消息。
下图,显示了由CAN控制器自动处理的CAN仲裁过程。由于每个节点都在持续监控自己的传输,当节点B的隐性比特被节点C的高优先级的显性比特覆盖时,节点B会检测到总线状态与它传输的比特不匹配。因此,节点B停止传输,而节点C继续传输它的消息。节点C释放总线后,节点B会再次尝试传输消息。这个功能是ISO 11898物理信号层的一部分,它完全包含在CAN控制器中,对CAN用户完全透明。
消息优先级的分配取决于系统设计人员,但行业团体对某些消息的重要性达成一致。例如,电机驱动的制造商可以指定消息0010是来自CAN网络上的电机的绕组电流反馈信号,0011是转速表速度。因为0010具有最低的二进制标识符,在总线上,与当前值相关的消息总是比与转速计读数相关的消息具有更高的优先级。
在DeviceNet的情况下,来自许多制造商的设备(如接近开关和温度传感器)可以合并到同一系统中。由于DeviceNet传感器生成的消息已经由开放DeviceNet 供应商协会 (ODVA)预定义,因此无论实际制造商是谁,某种消息总是与特定类型的传感器相关,如温度。
4.2 消息类型
可以在CAN总线上传输的四种不同的消息类型或帧是,数据帧、远程帧、错误帧和过载帧。
4.2.1 数据帧
数据帧是最常见的消息类型,由仲裁字段、数据字段、CRC字段和确认字段组成。仲裁字段包含一个11位的标识符和RTR位,后者在数据帧中占主导地位。扩展CAN包含29位的标识符和RTR位。接下来是数据字段,它包含0到8字节的数据,以及CRC字段,它包含用于错误检测的16位校验和。最后是确认段。
4.2.2 远程帧
远程帧的预期目的是从另一个节点请求数据传输。远程帧与数据帧类似,有两个重要区别。首先,这种类型的消息被仲裁字段中的隐性RTR位标记为远程帧,其次,没有数据。
4.2.3 错误帧
错误帧是违反CAN消息格式规则的特殊消息。当一个节点检测到消息中的错误时,它将被传输,并导致网络中的所有其他节点也发送一个错误帧。然后,原来的发送器自动重新传输消息。在CAN控制器中,一个复杂的错误计数器系统可以确保节点不会因重复传输错误帧而阻塞总线。
4.2.4 过载帧
为了完整起见,这里提到了过载帧。在格式方面,它与错误帧类似,并且它是由一个过于繁忙的节点传输的。它主要用于提供消息之间的额外延迟。
4.3 有效帧
当接收到消息的结束EOF段的最后一位隐性,则认为该消息是无错误的。EOF段中的有显性位,则发送节点重复一次传输。
4.4 错误检查和故障限制
CAN的健壮性部分归功于它丰富的错误检查程序。CAN协议包含五种错误检查方法:三种在消息级,两种在位级。如果消息未能通过这些错误检测方法中的任何一种,则不接受该消息,并从接收节点生成错误帧。这迫使发送节点重新发送消息,直到正确接收到它。但是,如果一个故障节点通过不断重复错误而使总线挂起,它的传输能力将在达到错误限制后被控制器删除。
消息级别的错误检查由CRC和ACK槽执行。16位的CRC包含了用于错误检测的上述应用程序数据的校验和,其中有15位的校验和和1位的定界符。ACK段有两个比特位,由确认位和确认分隔符位组成。
同样在消息级别还有形式检查。此检查在消息中查找必须总是隐性位的段。如果检测到显性位,则产生错误。检查的位是SOF、EOF、ACK分隔符和CRC分隔符位。
在位级,传输的每个位都由消息的发送方监视。如果一个数据位(不是仲裁位)被写入总线,而监测到它的反相位,则会产生一个错误。唯一的例外是用于仲裁的消息标识符段,以及需要由显性位覆盖隐性位的确认槽。
错误检测的最后一种方法是位填充规则,即在相同逻辑层的六个连续比特相同,则产生错误。
CAN总线的数据链路和物理信号层,通常对系统操作者是透明的,包含在任何实现CAN协议的控制器中。然后通过CAN总线收发器实现与物理介质的连接,形成如下图所示的系统节点。
总线的两条信号线CANH和CANL在静态隐性状态下被动偏置到≉2.5 V。总线上的显性状态在CANH和CANL之间形成典型的2v差分信号。
信号是差分的,可以得到其健壮的抗噪性和容错性。平衡差分信号降低了噪声耦合,并允许双绞线上的高信号速率。平衡是指流过每条信号线的电流相等但方向相反,从而产生场抵消效应,这是低噪声释放的关键。采用平衡差动接收机和双绞线布线提高了CAN总线的共模抑制能力和抗噪能力。
全部0条评论
快来发表一下你的评论吧 !