我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 936|回复: 0

基于MB90F543微控制器的双CAN冗余设计 - 通信/网络 - 电子工程

[复制链接]

该用户从未签到

1万

主题

1292

回帖

2万

积分

管理员

积分
29577

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2013-3-30 00:31:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

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

<strong>1系统硬件组成</strong>

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


<ignore_js_op>





2010-3-22 20:32:06 上传
<strong>下载附件</strong> (3.64 KB)




</ignore_js_op>

图1系统结构框图

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

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

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

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

CAN驱动电路如图2 所示。


<ignore_js_op>





2010-3-22 20:32:06 上传
<strong>下载附件</strong> (7.49 KB)




</ignore_js_op>

图2CAN驱动电路

<strong>2系统软件设计</strong>

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所示。


<ignore_js_op>





2010-3-22 20:32:06 上传
<strong>下载附件</strong> (11.62 KB)




</ignore_js_op>

图3主节点通信流程图

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

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

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可以不需立即去读某个信息缓冲器的信息,而不必担心缓冲器信息被重写和丢失。

<strong>4结论</strong>

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

<strong>参考文献</strong>

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)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

公告:服务器刚移机,
大家请不要下载东西。
会下载失败


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表