基于MB90F543微控制器的双CAN冗余设计

发布时间:2010-3-22 20:33    发布者:蹦蹦
关键词: CAN , 控制器 , 冗余 , 设计
虽然CAN协议本身具有较强的检错纠错能力,但在工业控制现场,插头连接的不牢固、传输介质的损坏或总线驱动器的损坏等都会破坏CAN的可靠通信。在要求高可靠性的应用系统中,这些故障如不能自动检测到并采取相应措施克服,将使系统部分甚至完全失去通信能力。解决这一问题的有效途径是采用冗余通信控制。从而保证通信系统主要功能正常运行,以此提高系统的可靠性。

1  系统硬件组成

MB90F543是Fujitsu公司推出的一款带2个CAN控制器的16位微控制器。系统使用两套总线(CAN0、CAN1),每一套包含独立的总线电缆、总线驱动器和总线控制器,可以实现物理介质、物理层、数据链路层及应用层的全面冗余。两套总线采用热备份方式运行:一个CAN控制器作为系统上电后默认的CAN(可称为主CAN);另一个为系统的备用CAN(称之为从CAN),作为主CAN的冗余。系统正常工作时,主CAN总线(CAN0)投入运行。当主CAN总线发生故障时,从CAN总线(CAN1)投入运行。如上电检测到主CAN总线故障,则从CAN总线自动投入运行。这样在一套总线发生故障时,另一套总线自动继续工作,保证整个系统的通信功能正常运行,大大提高了系统的可靠性,实现了CAN总线的全面冗余设计。另外,也可以根据需要,由软件设定采取冗余方式或非冗余方式。对于非冗余方式只采用主CAN总线运行。本系统的结构方案如图1所示。

1.gif
图1  系统结构框图

RT为总线终端匹配电阻,用于抑制信号发射干扰,RT =100Ω或120Ω。网络采用屏蔽双绞线作为通信介质。

CAN控制器集成了CAN协议的物理层和数据链路层功能,可完成对数据通信的成帧处理,包括位填充、数据块编码、CRC校验和优先级判别等工作。

CAN控制器具有以下主要特点:
  ◇ 符合CAN2.0A和CAN2.0B协议;
  ◇ 支持数据帧和远程帧的发送和接收;
  ◇ 16个收发信息缓冲器,支持11位或29位标识符,支持多级信息缓冲器结构;
  ◇ 支持满位比较、满位屏蔽和位屏蔽验收三种验收标 识选择方式;
  ◇ 两个验收标识寄存器支持标准帧或扩展帧格式;
  ◇ 波特率从10Kbps~1Mbps可编程。

总线驱动器采用PCA82C250作为CAN控制器与物理总线间的接口,以提升总线的差动发送和接收能力。

CAN驱动电路如图2 所示。

2.gif
图2  CAN驱动电路

2  系统软件设计

2.1  实现双CAN冗余控制功能

在双CAN冗余系统中,较之硬件结构而言,软件设计相对复杂得多。一般的CAN总线通信程序必须包括 CAN初始化程序、CAN发送程序和CAN接收程序三个基本部分。在本冗余系统软件设计中,上面三部分作为三个最基本的模块,供系统其它软件模块调用。

MB90F543可以处理256种中断源,与CAN控制器相关的硬件中断有四个:CAN0 RX(CAN0 接收完全中断)、CAN0 TX /NS(CAN0 发送完全/节点状态改变中断)、CAN1 RX(CAN1 接收完全中断)、CAN1 TX /NS(CAN1 发送完全/节点状态改变中断)。在本软件设计中,采用查询发送,中断接收。节点状态改变中断子程序,用于对节点状态改变的处理。这是因为在CAN2.0协议中规定节点处于下面三种状态之一:错误激活态、忽略错误态、脱离总线态。在MB90500系列中还多规定了一种警告态,它表明发送/接收错误计数器的值超过96。节点状态改变会引起相应中断。

由于系统采用双CAN冗余热备份方式运行,所以两个CAN控制器必须都处于热备份状态。系统中所有节点的两个CAN控制器经初始化后都随时准备接收信息,但有且只有一个CAN控制器在发送信息。换言之,在一个时间点上,系统中有且仅有一路 CAN通道在工作,另一路处于监听状态(正常工作时),或故障状态(发生故障时)。

双CAN冗余控制系统较之单CAN控制系统在软件设计上的复杂之处,关键在于CAN系统故障检测及CAN系统自动切换。由于采用两套完全独立的传输介质、总线驱动器和总线控制器,因此它们能分别独立检测到自己通道的故障,比如CANH与CANL短路,CANH或CANL断开、CANH与地短路、CANL与电源短路、总线驱动器损坏等。实际调试中发现, 如果CANH、CANL断开或只有一个发送器在总线上,均会造成发送/接收错误计数器不断增加到128,使节点处于忽略错误态;而CANH与CANL短路、CANH与地短路或CANL与电源短路均会造成发送/接收错误计数器不断增加到256,使节点处于总线脱离态。所以,通过节点状态改变中断子程序中调用CAN冗余模块,可以达到实现上述故障自动检测及CAN系统自动切换的目的。CAN0节点状态改变中断子程序如下:
__interrupt void NodeStateTransmitInt0(void)
  {
    if (CSR0_NT) /*节点状态改变*/
      {
        CSR0_NT = 0; /*中断标志复位*/
        if ( (CSR0_NS = =2 ) (CSR0_NS = =3 ) ) /*断路或短路引起*/
          {
             NoWaitFlg = 1; /*一个互斥标志*/
            Bus0Error( ) ; /* Bus0Error( )停止CAN0, 启动冗余CAN1子程序*/
          }
      }
ICR00 =3; /*改变中断优先级,使定时器0中断优先*/
ICR03 =2;
}

此外,在CAN总线通信过程中,当某个信息缓冲器的数据发送完成后,发送完成寄存器中相应的位将被置为1。在查询发送过程中,通过判断这一寄存器可以知道该次发送是否完成。但如果发送不成功,则会使系统一直在等待,造成系统死机。所以软件必须在这里设定一个等待时段,超过这一时段则调用CAN冗余系统,停止主CAN通道,启用从CAN通道。

软件设计中还要注意这样一个问题,备用CAN切换完成后,如何恢复原来的通信任务。解决办法是编制一个任务标志列表,备用CAN切换后,读该表即可获取系统原来进行的任务,实现原来通信任务的可靠切换。

2.2  实现总线管理功能

在本系统的软件设计中,除了用于数据发送和接收的实时数据通信程序外,还包括用于对各个节点进行管理的通信管理程序。所有节点分为主节点和从节点。它们的区别在于主节点具有总线管理功能,可以进行在线节点统计,识别离线节点并采取处理措施;而从节点没有这个功能。主节点只设一个,而允许多个从节点。总线管理功能程序供主节点每隔一段时间调用,来判断所有的节点是否都在线:如果所有节点都在线,则认为总线正常;否则识别离线节点,并作相应处理。设计思路是系统主节点定时向总线上所有从节点发送一远程帧,各个从节点收到后,将自己的节点编号放在一数据帧中发送给主节点,主节点根据收到的节点编号来判断是否有节点故障离线。在本系统中,节点编号(模块地址)由模块上的DIP开关设定。主节点通信流程如图3所示。

3.gif
图3  主节点通信流程图

软件调试过程中,虽然各个节点的硬件结构相同,但由于电路板布线和元器件分散性存在着差异,常会致使并非所有从节点能都收到主节点发送的信息,或者主节点并非都能收到所有从节点发送的信息,即存在帧丢失问题。通过软件延时和优化接收中断程序,这一问题已得到很好的解决。

3  开发环境及应用中应注意的几个问题

Softune V3软件工作平台是针对富士通FFMC-8L、FFMC-16L/LX和FR系列微控制器程序开发的集成软件开发环境,包括开发管理、仿真器调试、软仿真和一个集成开发环境。其开发工具包包括Softune Workbench、C compiler、Assembler、Linker、C Checker、C Analyzer。Softune V3同时支持C语言和汇编语言。

MB90F543实际使用过程中,应注意下面几个问题。
①  验收标识选择寄存器(AMSR)的设置。每个信息缓冲器可以选择一种验收标识方式:满位比较、满位屏蔽或位屏蔽验收。满位比较是指节点接收到信息的ID需与该信息缓冲器设定的ID完全一致,信息才能通过验收标识器;满位屏蔽不用对信息的ID进行比较,可以理解为无条件通过验收标识器;位屏蔽验收方式可以指定需比较的ID位和需屏蔽的ID位,即部分比较验收。实际应用中,这种验收标识方式应用得最多,所以在MB90F543芯片的CAN控制器中,设定了两种这一方式。AMSR的设置为开发人员处理缓冲器信息提供了极大的灵活性。
②  验收标识寄存器(AMR)的设置。在AMSR设置为位屏蔽验收方式后,必须设置AMR,来设定ID哪些位要比较,哪些位要屏蔽。AMR共有四个字节,支持29位ID符。但值得注意的是,对29位ID符,使用的是AM28~AM0;而对11位ID符,使用的是AM28~AM18。因此使用者在设置AMR时必须谨慎,否则会造成接收错误。笔者曾在这里吃过苦头。
③  Fujitsu公司CAN控制器的一个特点是支持使用多级信息缓冲器。在接收频繁发生,或者收到几个不同ID信息帧的情况下,可能CPU没有足够的时间来处理收到的信息,因此可将多个信息缓冲器构成一个多级信息缓冲器,保证信息能够得到及时、有效的处理。通过这种方式,可以1帧发送大于8个字节的信息。这种安排的另一好处是,CPU可以不需立即去读某个信息缓冲器的信息,而不必担心缓冲器信息被重写和丢失。

4  结论

在CAN应用层协议的开发过程中,笔者借鉴了DeviceNet规范的一些机理,如支持多种形式的数据传送(选通、轮询、状态变化等);但受开发周期等诸多因素的限制,设备的诊断功能以及与同类产品之间的互操作性都有待完善和扩展。双CAN冗余通信系统在实验阶段工作稳定,数据传输可靠,冗余切换切实可行,总线管理可靠性良好;可以应用于要求高可靠性的机车控制系统或其它工业控制现场中。

参考文献

   1. 邬宽明 CAN 总线原理与应用系统设计 1996
   2. FUJITSU LIMITED F2MC-16LX 16-BIT MICROCONTROLLER MB90540/545 Series HARDWARE MANUAL 2001
   3. FUJITSU LIMITED F2MC-16LX 16-BIT MICROCONTROLLER MB90500 Series PROGRAMMING MANUAL 1998
   4. Open DeviceNet Vendors Association. DeviceNet Specification 1997

作 者:西南交通大学 莫传孟 林彦凯 冯晓云  
来 源:单片机嵌入式系统应用 2003(11)
本文地址:https://www.eechina.com/thread-9733-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关在线工具

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表