微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于WDM的精确定时器及其在冗余技术中的应用

基于WDM的精确定时器及其在冗余技术中的应用

时间:02-13 来源:互联网 点击:

摘 要: 现代军用电子设备和某些控制系统对设备的可靠性要求越来越高。针对此情况利用设备冗余原理, 提出一种基于WDM 的精确定时器实现设备冗余的方法。利用此方法设计了双冗余CAN 总线板卡及其在Windows XP 系统下的驱动程序, 给出了部分驱动实现细节和相关流程。结果表明该方法可成功实现双CAN 接口卡在总线故障情况下的冗余切换,提高了设备可靠性。

0 引 言

高可靠性是现代军用电子设备和某些控制系统的首要需求。冗余技术是计算机系统可靠性设计中常采用的一种技术, 是提高计算机系统可靠性的最有效方法之一。合理的冗余设计将大大提高系统的可靠性, 但同时也增加了系统的复杂度和设计的难度, 应用冗余配置的系统还增加了用户投资。因此, 如何对冗余设计进行合理有效的设计, 是值得深入研究的课题。

1:1 热冗余也就是所谓的双重化, 是其中一种有效的冗余方式, 但它并不是两个部件简单的并联运行,而是需要硬件、软件、通信等协同工作来实现。将互为冗余的两个部件构成一个有机的整体, 通常包括以下多个技术要点: 信息同步技术、故障检测技术、故障仲裁技术和切换技术、热插拔技术和故障隔离技术等。

本文将WDM 的定时器功能应用在冗余技术中,为系统的故障检测和切换技术提供了一种解决方案, 并以双冗余CAN 总线接口板为例测试本设计的可行性。

1 冗余技术

冗余技术有两种方式: 工作冗余和后备冗余。工作冗余是对关键设备以双重或三重的原则来重复配置, 这些设备同时处于工作运行状态, 工作过程中若某一台设备出现故障, 它会自动脱离系统, 但并不影响系统的正常工作。后备冗余方式是使一台设备投入运行, 另一台冗余设备处于热备用状态, 但不投入运行, 在线运行设备一旦出现故障, 后备设备立即投入运行。常用的冗余系统按其结构可分为并联系统、备用系统和表决系统三种。最简单的冗余设计是并联装置, 其他方法还有串并联或并串联混合装置和多数表决装置等。当某部分可靠性要求很高, 但目前的技术水平和方法很难满足时, 冗余技术可能成为惟一较好的设计方法。但是冗余设计往往使系统的体积、重量、费用和复杂度均相应增加。因此, 除了重要的关键设备, 对于一般产品不宜采用冗余技术。

冗余配置虽然增加系统的投资, 但它提高了整个用户系统的平均无故障时间( MTBF) , 缩短了平均故障修复时间( MT TR) 。因此, 在重要场合的控制系统中, 冗余技术的采用可有效提高系统的可靠性。

一个冗余系统要工作通常是硬件与软件的配合完成的。在硬件上需要有几个相同的, 可独立工作的设备。在软件上来说, 就是在实现系统功能的同时, 要有错误检测功能和动态切换功能, 并且要在尽可能短的时间内完成切换动作。下面以双CAN 总线接口卡为例,主要从软件方面详述本后备冗余设计的实现细节。

2 硬件设计

CAN 控制器采用Philips 的SJA1000, 工作于BasicCAN 模式或PeliCAN 模式下, PeliCAN 模式支持CAN 2. 0B 协议, 采用8 位地址/ 数据复用总线接口。

如图1 所示, PCI 总线双CAN 接口卡由2 片SJA1000 提供两路独立的CAN 接口, 每片芯片的8 位地址/ 数据总线和读写控制信号、锁存信号直接与PCI9052 相连。SJA1000 输出信号经过光耦到CAN 收发器PCA82C250, PCA82C250 供电电源为隔离电源,由隔离电源转换模块提供。CAN 总线的复位信号由FPGA 提供, CAN 控制器SJA1000 的中断信号输出到FPGA。


图1 CAN 冗余模块系统结构图。

3 软件设计

3. 1 WDM 模式驱动程序

在Window s XP 操作系统中, 运行于用户模式的应用程序访问硬件资源是通过Win32 API 调用内核模式的驱动程序实现的。这种内核模式的驱动程序就是WDM(Window s Driver Model) 驱动程序, 它是微软在Window s XP 操作系统中提出的新的驱动程序模式, 支持即插即用、电源管理和I/ O 管理等功能。图2 是Window s XP 的系统结构。

如图2 所示设备驱动程序是操作系统的一个组成部分, 它由I/ O 管理器( I/ O Manager ) 管理和调动。

I/ O管理器每收到一个来自用户应用程序的请求就创建一个I/ O 请求包( IRP) 的数据结构, 并将其作为参数传递给驱动程序。驱动程序通过识别IRP 中的物理设备对象( PDO) 来区别是发送给哪一个设备。IRP 结构中存放请求的类型、用户缓冲区的首地址、用户请求数据的长度等信息。驱动程序处理完这个请求后, 在该结构中填入处理结果的有关信息, 调用IoCompleteRequeST 将其返回给I/ O 管理器, 用户应用程序的请求随即返回。访问硬件时, 驱动程序通过调用硬件抽象层的函数实现。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top