孟祥龙 吴胜昔 顾幸生 张舒然
(华东理工大学信息学院1,上海 200237;沈阳市节能技术研究所2,辽宁 沈阳 110004)
容错型控制系统是化工、石油、电力及冶金等流程工业的核心安全部件之一,它主要应用于安全联锁和紧急停机等系统[1]。容错型控制系统是典型的嵌入式系统,其设备接口驱动是嵌入式系统开发中关键的组成部分,属于底层核心开发,直接决定了系统的应用层功能[2]。通过开发基于ARM 和RTOS平台的设备接口驱动程序,不仅简化了硬件设计,而且在软件上也易于实现更多功能。
本文以开发具有容错功能的控制器为目标,基于PC104的嵌入式板卡8900,利用WinCE系统平台开发控制器主板的驱动程序。经过对容错型控制器进行结构分析,研究了数据处理单元DPU(data process unit)的系统设备接口的驱动原理,设计了基于8900系列的WinCE设备驱动方法并开发了相应的驱动程序,最后对结果进行了测试。
本文设计的三重模件冗余TMR(triple modular redundant)结构的容错控制器[3],其结构如图1所示。
图1 三重容错控制器结构图Fig.1 Structure of the triple fault-tolerant controller
图1中,TBC(Tribus control module)为三重同步执行模块;DPU为数据处理单元。
三重容错控制器从输入模件经主处理器到输出模件完全实行三重冗余,每个I/O模件内有3个独立的分电路。输入模件的每个分电路读入过程数据,并将此信息送到各个主处理器。3个主处理器可利用其专有的高速三总线(Tribus)进行相互间通信,每扫描1次,3个主处理器通过三总线与其相邻的2个处理器进行通信,从而达到同步。同时三总线可对其数字输入数据进行表决,对输出数据进行比较,并把模拟输入数据复制后送到每个处理器,主处理器执行各种控制算法,并计算出输出值送到各输出模件。除了表决输入数据外,三重化总线还表决输出数据,输出数据的表决是在输出模件中完成的,这样可使其尽量与实际情况靠近,并对三总线表决与驱动现场的最终输出之间可能发生的任何错误进行检测和补偿。
三重容错控制器的3个相同的DPU模块并联在主板上,它们与TBC模块通过三总线连接在主板上。多级并联控制器三重模块冗余TMR结构是基于高性能的主板,研发面向实时嵌入环境的多机时钟同步和存储器一致性模型及运行支撑平台[4]。在快速工业以太网模式下,采用三重指令同步执行TISE(triple instruction synchronous execution)方法的同步运算规则。主处理单元之间Tribus可以实现I/O映射机制,软逻辑实现同步执行控制、数据通信和时钟同步算法,以及表决冗余逻辑算法[5]。三重化总线模块的结构如图2所示。
图2 三重化总线模块结构图Fig.2 Structure of the triple bus module
由图2可知,输入信号被隔成三路进入具有容错冗余的控制器模块结构。该结构中的多重线路上的模块在空间上处于各自相对独立的位置,每个模块具有独立的通信通道,分别有各自的主处理单元。在每个扫描周期内,3个主处理单元间通过三重化冗余总线进行相互之间的同步通信,各主处理器同步进行数据计算,并对数据进行比较,表决出有效的数据,从而确保故障容差;同时,提供故障消除,在事故状态下不中断控制回路。
本论文以开发三重容错控制器为目标,设计了基于WinCE的设备接口驱动。DPU由EPC8900 PC104工控嵌入式主板构成。该主板是一种带2路CAN接口的嵌入式通用工控主板,在工业通信网络中应用广泛。在软件方面,操作系统定制了微软公司针对嵌入式市场开发的Windows CE 5.0,其通过EVC(embedded visual C++)进行应用程序的开发与调试。系统结构如图3所示。
图3 系统结构图Fig.3 Structure of the system
在图3所示的系统结构中,电源PW、三重化总线控制TBC和3个DPU模块都插接在主板上。底板主要完成DPU与标准设备信号的通信,并实现三重容错的控制,虚线框部分即为三重容错控制器。
底板上设计有基于TCP/IP工业以太网标准的扩展总线EX Bus(expand bus),其与通用的标准I/O模块连接;底板上有为每个模块安装的PCI插槽。主板的电源设计为军用电源,性能高,安全可靠。三重容错控制器与外部扩展的部分联合起来即为三重容错控制系统。系统中的信号源有:A/D、D/A、I/O、脉宽调制PWM(pulse width modulation)、定时器控制T/C(timer/control)和热敏电阻Pt/Rt。信号源是指能够产生标准DCS信息的设备或装置。通过这些标准设备的接口,设计出DPU与主板通信的接口程序。
底板上的DPU由EPC8900 PC104拼接而成,主要完成信息的接收和发送、信息的处理以及数据缓冲和容错控制功能,它是底板上的实时内核部分。
EPC8900工控机主板通过自带接口安装PC104模块,构成DPU的硬件部分。为使安装好的PC104扩展模块可用[6],还需为其开发驱动程序。图4所示为EPC8900 PC104的拼接示意图,从而构成DPU的硬件模块。
图4 PC104拼接示意图Fig.4 Schematic diagram of PC104 splicing
图5所示为DPU的组装示意图,经EPC8900和PC104拼接后,再插入控制器主板,则3组这样的机构就组成了控制器的3个DPU模块。
图5 DPU组装示意图Fig.5 Assembling of DPU
DPU由基于XScale处理器PXA270的PC104嵌入式工控机主板构成,操作系统是经过定制的Windows CE 5.0[7]。为了使安装的扩展总线 PC104 能够调用API并实现数据处理的功能,基于Windows CE 5.0开发稳定的驱动程序也是控制器设计当中非常重要的一项工作。为了实现三重容错控制,具体开发了PC104流接口驱动程序。
实现PC104流驱动程序大体需要经过以下步骤。首先,选择代表设备的文件名前缀;其次,实现驱动的各个标准接口函数;接着,建立.DEF文件;最后,在注册表中为驱动程序建立表项[8]。
根据实际应用情况,设备的文件名前缀选择MDV;实现驱动的各个接口函数为 MDV_Init、MDV_Deinit、MDV_Open、MDV_Close、MDV_IOControl、MDV_PowerUp、MDV_PowerDown、MDV_Read、MDV_Write 和MDV_Seek;当应用程序调用devicecontrol函数时,系统会自动映射到MDV_IOControl例程,并更改def文件中的内容,标志DLL导出的函数;最后,在project.reg注册表文件中添加注册表项,将虚拟设备的Prefix和Index值写入HKEY_LOCAL_MACHINEDriversBuiltIn键下,这样系统在启动时会自检注册表,从而自动激活。
本驱动实现了I/O端口字的读写操作以及基于PC104总线的 PM511P的 A/D模块转换。由于对PM511P数据采集板主要进行I/O操作[9],所以,MDV_IOControl显得尤为重要。
在编写程序时,采用了EPC8900 PC104的SDK。
设备驱动程序通过调用上面的驱动函数来实现PM511P的A/D信号采集功能。具体过程如下:先初始化PM511P状态,之后通过写base端口输入通道号;然后读base端口启动A/D;最后在base+2端口处读取结果,并将其转换成电压值。其中,所有的I/O读写操作均调用上面的驱动程序来实现。
设备驱动的部分程序如下。
本文研究制定了三重容错控制器的结构设计方案,分析了三重容错控制系统的研究目标、结构设计、数据处理单元DPU的逻辑结构以及三重同步执行模块的平台结构。同时,基于EPC8900 PC104的DPU模块的硬件设计,对DPU模块PC104驱动程序进行了开发,最后完成了对PC104流驱动程序的开发与测试。
[1]李洪波,车明.完全自校验四余度容错系统设计[J].微处理机,2008,29(3):165 -167.
[2]涂刚,张波,阳富明.嵌入式操作系统移植技术研究[J].计算机应用研究,2007,24(2):83 -85.
[3]Ezhilchelvan P D,Brasileiro F V,Speirs N A.A timeout-based message ordering protocol for a lightweight software implementation of TMR systems[J].IEEE Transactions on Parallel and Distrikuted Systems,2004,15(1):53 -65.
[4]Ezhilchelvan P,Helary J,Raynal M.Building responsive TMR-based servers in presence of timing constraints[J].IEEE International Symposium,2005,11(5):30 -35.
[5]Kwak S W,Kim B K.Task-scheduling strategies for reliable TMR controllers using task grouping and assignment[J].IEEE Transactions on Reliability,2000,49(4):355 -362.
[6]PC104嵌入式协会.PC104总线[EB/OL].[2009-08-24].http:∥wenku.baidu.com/view/eb3283c69ec3d5bbfdoa7432.html.
[7]张冬泉,谭南林,苏树强.Windows CE实用开发技术[M].2版.北京:电子工业出版社,2009.
[8]傅曦.Windows CE嵌入式开发入门——基于Xscale架构[M].北京:人民邮电出版社,2006.
[9]李常伟,高连才,杨立睿.自整角机角位移信号采集方法研究[J].自动化仪表,2009,30(11):67-68.