4.3.2 CAN总线

4.3.2 CAN总线

4.3.2.1 CAN总线简述

CAN总线是由德国BOSCH公司开发的针对汽车工业产品的总线,最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。CAN总线是一种多主控的总线系统,其总线网络中的消息是广播式的,即在同一时刻网络上所有节点侦测的数据是一致的,它是一种基于消息广播模式的串行通信总线。CAN总线具有很多优点,如传输速度最高到1 Mbit/s、通信距离最远到10 km、无损位仲裁机制、多主控结构等。

与其他计算机网络相比,CAN总线采用了很多新的技术及独特的总线设计,具有突出的高性能、高可靠性、高实时性、运行灵活性及错误检测能力,已经在工业、航天等各个领域得到了非常广泛的应用。

1)CAN总线应用特点

(1)目前的现场总线中唯一具有国际标准(ISO 11898)。

(2)多主控工作方式。每一个消息都被赋予了唯一的一个标识符(IDentifier,ID),ID表示了这个消息的优先级,通信网络上的所有节点在总线空闲的时候都能够主动向其余节点发送信息,最先访问总线的节点能够获得总线使用权,且不分主从,因此,这种工作方式使得通信方式非常灵活,提升了数据通信的稳定可靠。

(3)网络的各个节点都能够依据ID划分成不同等级的优先级别,用来满足以及协调不同的通信网络实时性要求。

(4)选用非破坏性总线仲裁技术。如果有两个及以上数量的节点同一时间在通信通道中发出数据时,优先级比较低的节点就会自动停止发送,让出总线使用权给优先级更高的节点。也就是说,优先级最高的节点能够不受其余的节点影响,而继续在总线上发出数据,减少了总线遇到冲突时的仲裁时间。该方式非常有效地降低了在通信网络中如果负载加重的情形下,就有可能会出现网络瘫痪的概率。

(5)能够通过报文的滤波方式,来实现一点对一点、一点对多点,以及在全局范围内进行广播等方式接收和传递消息。

(6)通信距离能够达到10 km(速率5 kbit/s以下),通信速率在40 m距离以内能够达到1 Mbit/s。

(7)网络中实际最多能够达到110个节点(主要取决于总线驱动电路)。

(8)采用短帧结构,数据传输时间和重新发送时间短,从而保证了数据通信的实时性,并且受到干扰的概率较低。

(9)错误检测与重发机制。每帧信息都有CRC校验及其他检错措施,其本质是以牺牲消息传输时间来保证消息的正确性,从而确保了数据通信的正确可靠。

(10)采用故障界定机制。网络上的节点能够在自己本身出现非常严重的错误情形下,仍然具有自动关闭节点对外输出的功能,以确保这个出现错误的节点对通信总线中的其余节点不再有影响,保证其余节点仍然可以正常地接收、发送消息。

(11)低成本。价格低廉,且用户接口比较简单,便于编程。

2)CAN总线与1553B总线的性能对比分析

与1553B总线相比,CAN总线增加了一点对多点的通信方式,网络结构变化为多主结构,传输距离达10 km。采用CSMA/CD仲裁机制,无须轮询,总线利用率高。两者都具备容错检错机制。就两类总线的最关键性能进行分析和比较如下。

(1)可靠性。

①硬件结构。1553B总线的工作方式为单主机,总线网络的结构能够支持多余度。BC端对于故障比较敏感,可采用冗余备份BC端来提高系统可靠性。而CAN总线为多主机工作模式,对构成多机冗余备份更为灵活方便。

②容错机制。1553B总线采用差错控制措施,而CAN总线选用CRC差错检验法进行检验,且能够提供错误处理功能,确保数据传输系统的可靠。

(2)实时性。

①控制方式。1553B总线选用主从控制模式,避免负载比较重时会导致总线内传输冲突,消息在网络中的传输响应时间是确定的。但是CAN总线选用的方式为多主控制方式,最先向总线传送消息的节点能够获得总线控制权,且不分主从。

②传输速率。1553B总线的数据传输速率为1 Mbit/s,在网络中传送一条消息的响应时间最多需要752μs。但是CAN总线最大的数据传输速率虽然同样需要1 Mbit/s,但是优先级最高的消息最快可在134μs内传输。

针对工具平面信息流传输系统,目前国外卫星的网络传输系统大部分都选用1553B总线。国内卫星中网络传输数据的系统使用,除了1553B总线还有RS-485总线,而这两类总线的通信方式在结构上总结起来都属于主从方式。

1553B总线采用的是屏蔽双绞线的通信介质以及变压器耦合的结构,功耗较大,成本和重量略高,也不适用于卫星。而RS-485总线仅仅规定了物理层的协议,链路层协议则没有规定,用户根据需要对链路层协议进行自定义,为此软件开发成本就会增加,会浪费卫星上非常宝贵的资源,也并不适用于卫星上的通信网络。

相比较而言,CAN总线具有极高的环境可靠性,但使用CAN总线的用户需要对应用层自定义。CAN总线又有较高的位速率、高抗电磁干扰性及很好的容错性,且星上软硬件的开销要求都较小。当数据传输的距离最远达到10 km时,CAN总线的数据传输仍然能够达到5 kbit/s的高速率。

4.3.2.2 CAN总线特性

1)总线结构

CAN总线的拓扑结构应尽可能接近总线型结构,如图4-8所示,通过公共通信介质将各节点连接,公共通信介质两端连接终端匹配电阻,以避免电缆反射波,各节点通过支线连接到公共通信介质上。为了提高总线使用的可靠性,总线长度和支线长度应尽量短,在使用特定接口芯片情况下,应根据器件的电气性质调整结构参数。

图4-8 CAN总线网络拓扑

针对不同的通信速率、总线长度、支线长度及节点距离,都给出了建议值,见表4- 2。

表4-2 CAN总线网络拓扑结构建议值

位速率小于1 Mbit/s时,总线长度可以加长。通过改变位速率和节点内部电容值,可以改变支线长度l、节点间距d和网络拓扑解耦股。位速率与最大有效通信距离的大致对应关系详见表4-3,具体数据应在系统中测定,在设计时应留有一定余量。

表4-3 CAN总线最大有效通信距离

总线上的总线值可以有“显性”和“隐性”,这两种的逻辑值是互补的。当“显性”位和“隐性”位同一时刻在总线通道上发送或接收数据时,位相与的结果值则呈现为“显性”。而在CAN总线定义中,逻辑“0”被称作“显性”位,逻辑“1”被称作“隐性”位。总线上的位电平表示如图4- 9所示。

图4-9 总线上的位电平表示

2)总线协议

CAN协议按照ISO/OSI的参考模型,其通信网络被划分为两层协议:物理层协议(physical layer)和数据链路层协议(data link layer)。

物理层是对信号的实际传送方式进行定义,实现位编码/解码、位定时和位同步等。

数据链路层可划分为逻辑链路控制子层(logic link control,LLC)和媒体访问控制子层(mediumAccess control,MAC)。数据链路层最重要的功能是能够在不可靠的物理链路上实现可靠的数据传输。LLC和MAC两个子层根据服务和功能被描述为目标层和传送层。目标层的功能主要是确认哪些信息发送,判断传送层是否接收到信息,以及为应用层提供接口;传送层则侧重于帧组织、总线仲裁、检错、错误报告以及错误处理。

CAN总线的ISO/OSI参考模型的层结构如图4-10所示。

作为一种多主站总线式的串行通信网络,CAN总线能够有效支持分布式实时控制,基于以下几条基本规则进行通信协调:

(1)总线访问。CAN是共享媒体总线,网络上的节点只有监测到总线空闲时,才可以向其他节点发送信息。如果网络上存在3个及以上的隐性位时,这时的网络状态就称作总线空闲。

图4-10 CAN总线的ISO/OSI参考模型的层结构

(2)仲裁。通信的网络通道中,如果存在两个或两个以上的节点同一时间进行发出信息时,就会产生总线冲突。CAN总线对于这类情况是按照对应标识符进行仲裁的,每个消息都被赋予唯一的标识符,代表消息的优先级,优先级最高的节点则可获得总线访问权进行发送消息,剩余节点依次按照该方式继续发送消息直至全部消息发送完毕。

(3)编码/解码。CAN总线数据帧在传输时采用位填充技术,即在数据帧编码时添加冗余位。数据编码时,在5个连续相同状态电平后插入一个与之相反状态的电平;解码过程则通过删除冗余电平,保证了数据的透明传输。

(4)出错标注。CAN控制器会根据出错条件发送一个出错标识,通常包括位错误、填充错误、形式错误或应答错误这几类。

(5)超载标注。对于数据帧或远程帧的延迟发送,CAN控制器通常会通过重发超载帧来达到目的。

4.3.2.3 CAN总线设计

1)接口电路的组成

CAN总线接口电路一般由微处理器、CAN协议控制芯片、CAN总线接口芯片等组成(若使用集成CAN协议控制功能的微处理器,则可省略CAN协议控制芯片)。CAN总线拓扑结构如图4-11所示。由微处理器、CAN协议控制芯片等组成的接口电路,其CAN程序是针对独立的CAN控制器,程序可移植性好,但占用了微处理器的IO资源,电路较为复杂。由集成CAN协议控制功能的微处理器等组成的接口电路,其CAN程序针对特定的微处理器,程序不可移植,但硬件电路比较简单。

图4-11 CAN总线拓扑结构

2)CAN协议控制芯片的选择

常用的CAN协议控制芯片有SJA1000、PCA82C200等,在宇航领域使用较多的是SJA1000芯片,该芯片是一款新型的独立CAN协议控制芯片,可以在BasicCAN和PeliCAN两种模式下工作,分别对应CAN通信协议的2.0A和2.0B版本。目前国产化元器件同样有可以替代的产品。

3)CAN总线接口芯片的选择

CAN总线接口芯片提供CAN总线控制器与物理总线之间的接口,具有对CAN总线的差分发送和接收功能,是影响系统网络性能的重要器件。常用的CAN总线接口芯片有PCA82C250/251、TJA1040、TJA1050等,目前同样有国产化的产品替代芯片。