文档库 最新最全的文档下载
当前位置:文档库 › 软件设计论文:基于VxWorks的航空发动机控制系统软件设计

软件设计论文:基于VxWorks的航空发动机控制系统软件设计

软件设计论文:

基于VxWorks的航空发动机控制系统软件设计

摘要: 在深入研究发动机控制系统软件设计要求的基础上,应用VxWorks操作系统给出了航空发动机数字电子控制器的多任务环境的设计方法、设计了数字电子控制系统的应用软件。该应用软件采用C++语言设计,根据数字电子控制系统的要求及控制目标,依照高内聚、低耦合的软件设计原则,对各种任务进行了分类并模块化开发,完成了软件设计工作。该软件满足某型航空发动机的控制功能、性能及可靠性要求。

关键词: 航空发动机;数字电子控制器;VxWorks操作系统0引言

VxWorks作为一个具有高性能、可裁减的嵌入式实时操作系统,与其他操作系统Linux、Unix等比较,具有高性能的微内核结构。这种高性能的微内核结构保证了VxWorks 能够胜任航空发动机控制和飞行控制等关键的复杂的设计任务。

本文最终目的是要构建一个在VxWorks操作系统支持下适用于某型航空发动机的控制应用软件。该软件包括数据采集、控制计算、任务调度、控制输出、数据存储及余度管理等功能。

1系统概述

1.1 VxWorks操作系统概述

VxWorks是专门为实时嵌入式系统而开发的操作系统,提供了高效的实时多任务调度、中断管理,实时的系统资源以及实时的任务间通信等功能支持,并为应用于各种CPU 平台提供了统一的编程接口和一致的运行特性,为程序开发提供了方便[1]。

VxWorks操作功能强大而且比较复杂。图1所示为VxWorks操作系统的基本结构图,包括了进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分。

控制系统软件采用VxWorks的集成开发环境Tor-nadoⅡ开发,采用C++程序语言设计,TornadoⅡ开发系统配套了近两千个API接口函数,可提供完善的源代码编辑、编译链接、源代码级调试等诸多调试工具,可以充分发挥VxWorks系统的功能。

1.2发动机控制系统软件开发平台

发动机控制系统的软件开发平台采用了Power-PC860芯片、64位SDRAM(32 Mb)、64 Mb User Flash存储器、8位SYSTEM Flash(存储器容量为2 Mb)、4个32位定时器、1个看门狗、2个RS422串行通信端口、1路10 M/100 M以太网端口和1个5 V/33 MHz PCI总线接口。

平台采用双通道设计,分别由3个模块组成:信号调理模块、数据处理模块和电源管理模块。信号调理模块实现系统输入输出信号的调理以及转换,包括A/D和D/A转换,频率信号和开关量的输入输出,RS422接口以及余度管理;数据处理模块实现数据处理、控制计算等;电源模块实现电源滤波、转换和监控功能。系统的结构如图2所示[2]。

2软件总体设计与功能划分

2.1总体设计方案

航空发动机控制系统软件包括实时多任务操作系统、底层功能软件和应用软件3大部分,系统总体结构如图3所示。

VxWorks操作系统主要负责任务调度、电子控制器的硬件接口操作及与底层功能软件的连接,负责驱动、协调、管理电子控制器的硬件资源,其功能涉及模拟量、频率量和开关量等输入信号的采集,时间与任务调度管理,各种信号输出、总线管理、I/O设备及中断控制等。

底层功能软件负责基于VxWorks操作系统API函数集,提供与硬件环境的基本接口,为顶层应用软件访问硬件驱动程序和数据通信提供支持。

数控系统应用软件是数控系统软件的核心,通过对各种

类型信号的数据采集、滤波处理,控制规律、逻辑和控制算法的运算处理,获得并给出控制输出,系统还具有应急处理、故障诊断等任务。各应用软件模块将在实时多任务操作系统的调度、管理下,以不同的优先级完成各项任务。

控制系统还设有系统参数配置功能,提供应用软件运行时在线参数配置更新,负责端口定义、控制参数调整与调度、数采通道定义、数据存储格式,用户权限设定等参数配置,实现对计算机操作系统和硬件的访问和控制。

2.2功能结构划分

软件系统的功能结构设计如图4所示。

数控系统软件从功能角度划分为系统模块、发动机控制

运算模块和辅助模块3个主要部分。

3关键技术

3.1控制系统多任务调度策略

嵌入式实时多任务软件的设计包括任务的划分及任务优先级的设置、任务间通信机制的选择和中断处理程序的编写等关键技术。

任务的合理划分和优先级的合理设置,对系统的功能和性能至关重要。合理的任务划分,不但会增强系统的稳定性和健壮性,而且可以简化软件设计的复杂性,为任务的及时执行奠定基础。实时多任务软件的开发一般要遵循H.Gomma原则,即I/O依赖性、时间关键性、周期性执行功能等。

在H.Gomma原则的基础上对本控制系统的任务进行划分,控制软件的任务可划分为数采任务、发动机控制任务、辅助单元任务等3大类。

(1)数采任务:负责发动机系统的工作状态参数采集。

(2)发动机控制任务:完成发动机的起动控制、稳态燃油流量控制、过渡态燃油流量控制、压气机导叶角度控制、喷口喉道面积控制、工作参数控制、停车控制等全部功能。发动机控制任务属于互斥任务,要根据相关状态参数调用相应的功能。

(3)辅助单元任务:完成数控系统状态监控、故障检测及系统重构等任务,保证数控系统的高可靠性。

该应用软件选择了二进制信号量、共享数据区两种方式互相结合作为任务间的通信机制,二进制信号量能满足任务间的同步和互斥,而且开销小、速度快,能保证信号处理函数和主体任务同步的顺利执行。任务的优先级是根据任务实时性要求和计算量大小来确定的。任务的调度方式在VxWorks中分为时间片轮询和基于优先级的抢占方式。本系统采用了两种方式相结合的方法[4-5]。

如图5所示为主要任务的调度表,状态监控任务用来对其他任务进行监控操作,优先级最高。数据采集任务定时,通过输入信号接口,读取传感器中的数据并进行信号处理操作。为了保证系统的实时性,数据采集任务具有较高的优先级,随后执行发动机控制计算及控制输出任务。各任务之间采用了抢占式的调度方式。

3.2数据采集模块的设计与实现

本系统根据数采设备自身寄存器的使用特点,采用的是轮询查询的方法。轮询可具体实现的方式一般有:驱动程序任务在系统空闲时进行设备轮询;驱动程序任务周期性进行设备轮询;驱动程序通过看门狗定时器进行设备轮询;驱动程序通过辅助时钟进行设备轮询[6]。

对于VxWorks嵌入式实时系统而言,一般很难找到合适的空闲时间来查询设备状态。同时这种空闲时间的出现也是不可确定的,将会导致轮询设备的任务处于不可预测状态。故本系统建立了一个中优先级的任务,采用周期性轮询设备。数采任务按一定的时间间隔查询设备状态并进行相应处理,然后等待调用延迟并将自身挂起,轮询定时周期定为5 ms。

数据采集输入输出程序流程如图6所示。

一般包含6个主要步骤。

(1)对数采设备进行初始化。初始化的目的是使设备处于某种工作状态,以便数据采集程序访问该设备。

(2)打开数采设备。打开设备操作实际是查询用户指定的设备,并查看用户是否可以打开该设备。

(3)数采设备控制。主要包括量程、增益、通道、缓冲区大小等参数设置。

(4)从设备读取数据。从设备缓冲区读取采样值,并进行采样量-工程量之间的单位换算。换算公式为ycur=ymax-yminxmax-xmin×(xcur-xmin)+ymin(1)其中:ymax和ymin 代表传感器最大、最小量程;xmax和xmin代表采样值最大、最小量程;xcur代表当前采样值,ycur代表当前工程量值。

(5)从设备发送数据。进行工程量-采样量之间的单位换

算并将结果放入设备缓冲区或DMA区发送。换算公式为xcur=xmax-xminymax-ymin×(ycur-ymin)+xmin(2)其中变量定义如上。

(6)关闭数采设备。关闭设备操作就是释放设备资源。任务对设备完成操作后,必须进行关闭设备操作,否则设备总是处于被占用状态,其他任务无法使用。

4代码实现

本系统软件的核心代码如下所示:/*主入口函数,创建6个主要任务

*/STATUS main(V oid){…………taskSpawn("TWatch",130,0x200,1 000,(FUNCPTR)WatchTask,0,0,0,0,0,0,0,0,0,0);taskSpawn("Tdaq",140,0x200,1 000,(FUNCPTR)DAQTask,0,0,0,0,0,0,0,0,0,0);taskSpawn("Tcontr",150,0x200, 1 000,(FUNCPTR)EngContTask,0,0,0,0,0,0,0,0,0,0);taskSpawn("Tdataout",160,0x200, 1 000,(FUNCPTR)DataSaveTask,0,0,0,0,0,0,0,0,0,0);taskSpawn("TComm",170,0x200, 1 000,(FUNCPTR)ComTask,0,0,0,0,0,0,0,0,0);…………} void MonitorTask(void)/*状态监控*/

void DAQTask(void)/*数据采集任务*/

void AirEngContTask(void)/*发动机控制任务*/

void DataSave(void)/*数据存储*/

void ComTask(void)/*通信任务*/…………/*高精度定时器主函数*/

V oid UserTimerMake(SEM_ID userTimer,(FUNCPTR)routine,float fStartT,float fInterT,timer*timerId) 如图7所示为程序运行结果在Windview中的局部图,各任务按照优先级抢占式调度执行。为了保证控制程序的实时性和可靠性,状态监控任务的优先级设置最高,在状态监控任务启动的基础上执行数据采集,每5 ms进行一次采集,随后执行发动机控制、数据存储、与外部通讯任务。程序使用信号量将中断与任务相联系,中断程序只产生信号量,保证了中断服务程序尽快结束,以避免阻塞低优先级的中断。

5结束语

航空发动机数控系统对软件的实时性和可靠性有非常

高的要求,本文对航空发动机控制系统的功能和模块进行了划分与设计,针对控制系统的要求对控制系统的实时多任务进行了优先级的设置。最终提出基于VxWorks嵌入式操作系统的航空发动机控制系统软件总体设计方案。开发出了适用于某型航空发动机控制系统的各单元模块。经验证,该软件满足某型航空发动机的控制功能、性能及可靠性要求,并已经投入使用。

参考文献

[1]RIVER W.VxWorks开发人员指南丛书[M].北京:清华大学出版社,2004.

[2]RIVER W.VxWorks programmer's guide[M].Wind Riv-er Systems Inc,1995.

[3]樊思齐,李华聪,樊丁,等.航空发动机控制(下)[M].西安:西北工业大学出版社,2008.

[4]EV ANS A L,FOLLEN G,NAIMAN C,et al.Numericalpropulsion system simulation's national cycle program[R].AIAA-98-3113,1998.

[5]江传尚,樊丁.小波网络在某型航空发动机故障诊断中的应用[J].航空动力学报,2009(4):182-185.[6]AGRESTI M,CSMPOREALE S M,FORTUNATO B.Anobject-oriented program for the dynamic simulation of

gasturbines[R].ASME 2000-GT-42,2000.

[7]吕伟.基于某硬件平台的航空发动机FADEC系统设计[D].西安:西北工业大学,2010.

相关文档