1引言
CAN(Controller Area Network,控制器局域网)总线一种有效支持分布式控制或实时控制的串行通信网络,是现场总线的一种。CAN总线具有通信速率高、开放性好、纠错能力强和系统成本低等优点,现已在机械工业、机器、医疗器械等各种领域中得到了广泛的应用。
然而由于受到CAN收发器的限制,在一个CAN总线网络中最多只能有110个CAN节点www.cechina.cn,最大只能达到10 km的通信距离,所以当所需CAN总线网络规模超出以上限制时就必须进行CAN总线网络的扩展。目前一般的扩展方式是加入CAN总线中继器。CAN中继器的主要任务是在两个CAN网段之间实现数据的转发,他具有过滤通信量控制工程网版权所有,扩大通信距离,增加节点的最大数目,允许各个网段使用不同的通信速率,提高可靠性,改善网络性能等优点,是CAN组网的关键设备之一。在稍大型的CAN总线网络中经常会用到中继器。
通常CAN中继器都是基于两片独立的CAN控制器实现的。样的CAN中继器虽然可以扩大通信距离、增加节点的最大数目,但是由于他的数据存储转发要通过CPU的内部缓存中转,使得CPU与CAN控制器之间的数据交互过多,从而造成通信系统的时延增加,实时性能变差,CPU的负担变重。同时当网络负担较重时,还会因为CPU的内部缓存容量有限,造成帧丢失现象,使系统可靠性变差。然而,实时性和可靠性对通信系统而言是非常重要的。
针对上述中继器在实时性和可靠性上的缺点CONTROL ENGINEERING China版权所有,我们采用独立双CAN控制器作为两路CAN接口的控制器来设计CAN中继器。利用独立双CAN控制器的内置FIFO和网关的特性,使两个CAN节点共享双CAN模块的资源,允许在两个单独的CAN节点之间直接通过FIFO进行数据交换,而不使用CPU内部缓存中转,这样减少了CPU与控制器之间的数据交互,优化了CAN总线的传输,大幅度减少了CPU的负荷,改善了整个系统的实时性和可靠性。
2 独立双CAN控制器简介
独立双CAN控制器包括两个全CAN功能节点。但他并不是这两个CAN节点简单的组合控制工程网版权所有,而是这两者既可以独立使用,又可以通过双CAN控制器的网关功能,设计出可以大幅度减轻CPU负担的中继器的设备。除此之外,双CAN控制器还具有节电功能、更多的中断功能和增强的滤波功能等,他与微控制器的信息交换通道也有串行和并行两种选择。
图1给出了独立双CAN控制器的结构框图。他由CAN节点A/B、报文对象缓冲器、双CAN控制模块、端口控制、总线接口、中断控制等模块构成。
端口控制模块实现CAN节点A/B收发数据;总线接口模块用于接收来自CPU的片选、时钟、地址、读写信号等信息,实现与CPU的信息交互;中断控制模块负责整理中断源信息,向CPU发出中断信号;双CAN控制模块是一个全局控制接口www.cechina.cn,他包括初始化逻辑、全局控制和状态逻辑以及中断请求接收器;报文缓冲单元包含报文缓冲区、FIFO缓冲区管理、网关控制逻辑以及一个基于中断请求发生单元的报文。CAN节点A/B分别又包括位流处理器、位定时控制单元、错误处理逻辑、中断请求产生单元和节点控制逻辑。其中CAN节点A/B、报文对象缓冲器、双CAN控制模块等模块构成了独立双CAN控制器的核心。图2给出了这几个核心模块的详细结构。
3 基于独立双CAN控制器的中继器设计
独立的双CAN控制器支持在两个单独CAN总线之间的信息自动传输,他的网关功能是通过两个单独的CAN节点共享的CAN报文对象存储器来实现的,使报文转发不用CPU的干预。通过对报文配置寄存器中的报文对象CAN节点选择位的设置,使每一个存储在报文存储器中的报文对象关系到节点A或节点B。两个节点之间的信息交换可以通过联结两个报文对象(正常网关模式)或通过共享一个共同的报文对象(共享网关模式)来实现。本文中以共享网关模式来设计一个CAN中继器。
所设计的中继器可以实现CAN节点A将与他相连的数据源所连续发送的数据帧通过CAN节点B自动发送到目标方的CAN总线上,反之亦然。
3.1 CAN中继器的硬件设计
CAN中继器主要由微控制器和两路CAN控制器接口组成。现在这个中继器的微控制器(CPU)由89C52来充当,他负责整个中继器的监控任务。两路CAN控制器接口使用独立双CAN控制器82C900、光电耦合电路和CAN总线驱动器82C250组成。两路CAN接口的CAN总线驱动器都采用带隔离的DC/DC模块单独供电。这样不仅实现了两路CAN接口之间的电器隔离,也实现了CAN中继器与总线之间的隔离。采取隔离措施,可以使故障局限在某一网段内,而不至于影响其他网段,既便于维护又保证了系统的安全。图3给出了CAN中继器的硬件结构。