CAN总线技术
- 浏览次数:7895次
- 发布时间:2014/2/18 10:04:00
- 作者:量值溯源
一、概述
CAN(Controller Area Network)即控制器局域网,可以归属于工业现场总线的范畴,通常称为CAN bus,即CAN总线,是目前国际上应用最广泛的开放式现场总线之一。
CAN 最初出现在汽车工业中,80年代由德国Bosch公司最先提出。最初动机是为了解决现代汽车中庞大的电子控制装置之间的通讯,减少不断增加的信号线。
与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性,它在汽车领域上的应用最为广泛,世界上一些著名的汽车制造厂商,如BENZ(奔驰)、BMW(宝马)、volkswagen (大众)等都采用了CAN总线来实现汽车内部控制系统与各检测和执行机构间的数据通信。
二、工作原理
CAN总线标准包括物理层、数据链路层,其中链路层定义了不同的信息类型、总线访问的仲裁规则及故障检测与故障处理的方式。
当CAN 总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。
每组报文开头的11位字符为标识符(CAN2.0A),定义了报文的优先级,这种报文格式称为面向内容的编址方案。
当一个节点要向其它节点发送数据时,该节点的CPU 将要发送的数据和自己的标识符传送给本节点的CAN芯片,并处于准备状态;当它收到总线分配时,转为发送报文状态。
三、特点
CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。
CAN总线特点如下:
(1)多主机方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活。
(2)网络上的节点(信息)可分成不同的优先级,可以满足不同的实时要求。
(3)采用非破坏性位仲裁总线结构机制,当两个节点同时向网络上传送信息时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据。
(4) 可以点对点、一点对多点(成组)及全局广播几种传送方式接收数据。
(5)直接通信距离最远可达6km(速率10Kbps以下)。
(6)通信速率最高可达1MB/s(此时距离最长30m)。
(7)节点数实际可达110个。
(8)采用短帧结构,每一帧的有效字节数为8个。
(9)每帧信息都有CRC校验及其它检错措施,数据出错率极低。
(10)通信介质可采用双绞线,同轴电缆和光导纤维,一般采用廉价的双绞线即可,无特殊要求。
(11)节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上的其他操作不受影响。
四、CAN总线报文及结构
标准帧 11位标识符
扩展帧 29位标识符
帧类型 数据帧、远程帧、错误帧和过载帧
数据帧:数据帧携带数据从发送器至接收器。总线上传输的大多是这个帧。
远程帧:由总线单元发出,请求发送具有同一识别符的数据帧。数据帧(或远程帧)通过帧间空间与其他各帧分开。
错误帧:任何单元一但检测到总线错误就发出错误帧。
过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。
五、数据帧格式
帧起始(SOF)仅由一显位构成。所有站都必须同步于首先发送的那个帧起始前沿;
仲裁场(标准格式)由11位标识符ID28~ ID18、远程发送请求位 RTR(Remote Transmission Request BIT)组成,其中ID高七位不可全为1(隐性);
仲裁场(扩展格式)由29位标识符ID28~ ID0、SRR位、识别符扩展位IDE(Identifier Extension Bit)位、RTR位组成;
SRR是隐性位,它用于替代标准格式的RTR位。
IDE=1(隐性)代表扩展格式。IDE位在扩展格式中位于仲裁场而在标准格式中位于控制场。
六、位仲裁技术
只要总线空闲,任何单元都可以开始发送报文。
要对数据进行实时处理,就必须将数据快速传送,这就要求数据的物理传输通路有较高的速度。在几个站同时需要发送数据时,要求快速地进行总线分配。
如果2 个或2 个以上的单元同时开始传送报文,那么就会有总线访问冲突。通过使用识别符的位形式仲裁可以解决这个冲突。
CAN总线以报文为单位进行数据传送,报文的优先级结合在11位标识符中,具有最低二进制数的标识符有最高的优先级。这种优先级一旦在系统设计时被确立后就不能再被更改。总线读取中的冲突可通过位仲裁解决。
仲裁的机制确保信息和时间均不会损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。
CAN总线采用非归零(NRZ)编码,所有节点以“线与”方式连接至总线。如果存在一个节点向总线传输逻辑0,则总线呈现逻辑0状态,而不管有多少个节点在发送逻辑1。CAN网络的所有节点可能试图同时发送,但其简单的仲裁规则确保仅有一个节点控制总线、并发送信息。低有效输出状态(0)起决定性作用。
仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个单元可以继续发送。如果发送的是一“隐性”电平(逻辑1)而监测到一“显性”电平(逻辑0),那么该单元就失去了仲裁,必须退出发送状态。