航空发动机动态链接库模型建模技术研究
2012-07-02俞明帅黄金泉
俞明帅,黄金泉
(南京航空航天大学能源与动力学院,南京 210016)
航空发动机动态链接库模型建模技术研究
俞明帅,黄金泉
(南京航空航天大学能源与动力学院,南京 210016)
俞明帅(1988),男,在读硕士研究生,主要研究方向为航空发动机建模。
针对目前航空发动机组态建模软件不能输出用户所搭建模型的局限性,设计了与组态建模软件相匹配的通用发动机动态链接库模型框架,并将用户在组态建模软件上录入的模型信息输出为1个配置文件,加载该动态链接库模型和配置文件进行发动机仿真,仿真结果与采用组态建模软件所得到的结果一致。通过该方法实现了输出组态建模软件中模型的功能,输出的模型可用于发动机数控系统的设计等工作中。
动态链接库;航空发动机;建模技术
0 引言
由于具有可重用性、继承性等优点,面向对象建模技术逐渐成为航空发动机仿真领域的主流技术[1-3]。21世纪后,航空发动机建模的最新发展趋势是通过图形界面组态的方式,而非编程的方式,选择、配置、装配和使用那些封装好的、可替换的功能模块,来快速灵活地搭建结构合理的发动机模型进行仿真[4-5]。文献[5]设计的航空发动机组态建模软件,可以通过图形界面操作的形式方便地进行多种类型发动机的建模及仿真,但不能将用户所搭建的模型输出。
本文基于文献[5]设计的航空发动机组态建模软件,研究了输出组态模型的方法,即采用配置文件来定制通用发动机动态链接库(Dynamic Link Library,DLL)模型,设计了通用发动机DLL模型的框架结构和组态建模软件生成配置文件的方法。通过算例的仿真结果可以看出,同时加载通用发动机DLL模型与配置文件进行仿真,可以得到与组态建模软件一致的结果,从而实现了输出组态模型的功能。
1 组态建模软件
从使用角度看,航空发动机组态建模软件可以分为前台模型组态环境与后台模型运行环境2部分。在前台模型组态环境中,用户通过拖放部件图标库并连线的方式组建发动机模型,在部件属性页上录入设计点参数、部件特性、算法选择,以及将用户搭建的模型连同参数设置存储为1个项目文件,以便于下次直接载入。在后台模型运行环境中,软件对用户组建的发动机模型进行编译,判断其类型,并将其装入内存,进行稳态与动态工作点求解。从开发角度看,组态建模软件分为以下4个模块:部件模型库、图形界面系统、运行管理系统和数据库系统。软件采用基于COM技术的开发方法为典型的航空发动机部件设计了组件模型,包含部件算法与规范的接口函数,构成了部件库。软件的图形界面系统负责处理用户与软件之间的交互操作。运行管理模块主要来求解模型的稳态与动态工作点。数据库系统则分为实时数据库与历史数据库,分别处理模型运行时产生的实时数据与过期数据。目前的组态建模软件主要用于航空发动机建模研究,为扩展软件的功能,使组态模型能够支持发动机数控系统的设计等工作,有必要研究输出组态建模软件模型的方法。
2 组态建模软件输出模型方法
现有的组态建模软件是在VC++6.0语言编译环境下,基于微软的MFC类库开发出来的应用程序,自身并不具备生成DLL文件的能力。为了解决这个问题,可以采用2种方法:(1)直接生成DLL文件,需要研究VC等IDE编程环境生成动态链接库的机理,因此对编程人员要求极高,费时费力;(2)采用配置文件来配置通用发动机DLL模型,需要开发与组态建模软件相匹配的通用发动机DLL模型,通过配置文件将二者联系起来,此方法可行。
2.1 采用配置文件定制通用发动机DLL模型
分析具有一定通用性航空发动机模型的特点,将发动机的输入参数如设计点参数、部件特性等独立出来,针对具有相同结构、不同型号的发动机建模,只需设定不同的输入参数值。通用性对于组态建模软件显得更为重要,因为不仅要考虑具有相同结构、不同型号的发动机建模,而且要考虑不同结构的发动机建模。同样地,通用发动机动态链接库模型要实现多种类型发动机的建模,则其发动机结构类型、设计点参数和部件特性等参数在被配置文件指定之前,都必须是未知的。
用户使用组态建模软件建立某型发动机模型,其实质是通过在程序界面拖放部件图标并连线的方式,指定发动机结构类型,然后通过各部件的属性页窗口,来指定部件的设计点参数与特性,以及某些算法选择,只要模型结构合理,且设计点与部件特性等参数正确,就可以进行模型仿真。因此,建模人员与组态建模软件所交互的主要内容也就是发动机的结构类型、设计点参数、部件特性以及算法选择等参数,如果要实现将用户所搭建的模型输出,在本质上其实是输出这些参数,也就是模型配置文件。有了模型配置文件,再配合通用发动机模型算法,就可以得到与组态建模软件一致的结果。组态建模软件、配置文件与通用发动机DLL模型框架的关系如图1所示。
图1 组态建模软件、配置文件、通用发动机DLL模型的关系
2.2 通用发动机DLL模型框架
由于本文所设计的通用发动机模型是1个动态链接库文件,没有界面操作,因此在程序结构上没有组态建模软件的复杂。采用经典的面向对象编程方法,将典型的发动机部件模型与发动机模型设计为相应的类,从而通用发动机动态链接库模型框架主要由部件模型类库、发动机模型类库、辅助功能类库以及接口函数组成,其结构如图2所示。
图2 通用发动机DLL模型框架结构
部件模型类库是整个DLL模型框架的基础,框架中不同形式发动机模型所包含的部件均来自部件模型类库。与组态建模软件的部件模型库相对应,通用发动机DLL模型部件类库也具有9个典型部件类,即进气道类、风扇类、压气机类、燃烧室类、涡轮类、外涵道类、混合室类、加力燃烧室类和尾喷管类。各部件类具有相似的成员函数LoadDesign()和Run(),其功能分别是读取模型配置文件中属于该部件的设计点参数、部件特性、算法选择等,然后计算设计点修正系数与根据进口参数进行1次部件运算,这里要求Run()函数所包含的部件算法要与组态建模软件中的部件算法相同,以保证计算结果一致。
发动机模型类库是整个DLL模型框架的核心,库中的具体发动机模型负责组织其各部件的沿程运算,并求解稳态与动态工作点。发动机模型类库是专为通用发动机DLL模型框架设计的,组态建模软件中并没有相对应的发动机模型库。虽然组态建模软件可以支持多种类型发动机的建模,但是其内部并不存在某种具体结构的发动机模型,而是要根据用户在软件界面上拖放的部件类型、个数以及连接顺序来确定发动机类型,因此,组态建模软件有1套与前台图形组态系统相配套的判断机制。由于所设计的通用发动机DLL模型不需要程序界面,因此考虑将组态建模软件能够支持的所有类型的发动机模型算法固化为发动机模型类库,配置文件指定了发动机类型后,直接生成发动机模型类库中的某种具体发动机对象,省去了一系列判断操作,以简化代码。
对于发动机类库中的所有发动机模型,为其设计了类似的成员函数Initial()、Simulate()、SetGuessVector()、SteadyNR()与DynamicNR(),其作用分别是利用模型配置文件来进行发动机参数初始化、沿流程进行1次发动机所有部件仿真运算、设置N-R迭代法初猜值、求解稳态点、求解动态点。其中,Initial()函数实际上是按流程依次调用各部件的LoadDesign()函数来实现读取配置文件数据的功能,Simulate()函数功能则通过依次调用各部件的Run()函数来实现。对于不同形式的发动机模型,则根据其所包含的部件以及共同工作方程的不同,为其成员函数设计了不同的实现方法。
同时,为了更大程度上利用面向对象编程支持代码重用与易于扩展的优点,对于具有相似结构的发动机,将其模型类设计成派生与继承的关系。如对于双轴涡扇混排发动机模型,其加力类型发动机模型与之最大的区别在于多了1个加力燃烧室部件,从而发动机沿程计算函数Simulate()中也多了加力燃烧室的部件计算,除此之外其他函数的实现方法完全相同,因此定义双轴涡扇混排加力发动机模型为双轴涡扇混排发动机模型的派生类,在派生类中只需重写Simulate()的函数实现方法,其他的函数继承父类即可,而不必重新编写。此外,为了保持仿真结果的一致性,当为组态建模软件增加了某型发动机的建模能力后,在发动机模型类库中应该同步增加相应的发动机类。
除了部件类库与发动机类库之外,DLL模型框架还使用了一系列辅助功能类[6],如调用CVarMap类中的InterpolateMap()函数可实现部件特性数据的线性插值功能,CGasState类封装了几乎所有常见的热力学参数的计算方法,如根据温度、油气比等参数可以方便计算焓、熵值,或者进行参数反向计算,CMethod类则将牛顿·拉夫森迭代算法设计成NewtonRaphson()函数。
通用发动机DLL模型由于具有封装性的特点,只能通过接口函数提供服务。由于所设计的发动机模型主要提供稳态、动态仿真的功能,因此为其设计了相应的接口函数:Engine_SteadyRun()与Engine_DynamicRun(),这里的接口参数除了输入、输出数组地址之外,还有配置文件所在的路径,以便读取配置文件。
2.3 模型配置文件的生成方法
模型配置文件实际上是用户在使用组态建模软件进行发动机建模时所录入的模型信息,但这些信息并非只被软件的某个专门模块所接收,而是分散地录入到软件的不同功能模块。如软件部件库中的具体部件对象接收了建模人员录入的设计点、部件特性、算法选择等参数,以完成部件参数的初始化;而软件的运行管理模块则接收了模型运行的其他信息如迭代算法初猜值文件数据等,以进行仿真运算。由于组态建模软件的各模块之间具有很强的独立性,相互之间的通讯只通过接口函数来实现,如果通过传递接口参数的方式,将分散于各模块之间的信息组织起来,势必造成接口函数的参数非常长,而且增加了各模块之间的耦合,不利于软件维护。
针对上述问题,本文采用分布式输出的方式,即各功能模块只输出其接收的模型信息,来避免各模块发生耦合,实现原理如图3所示。具体作法如下:由于最终将配置文件输出到存储介质的操作是由软件运行管理模块中的SaveConfigureInfo()函数来实现,因此,首先在该函数中申请足够大的内存空间,定义指针pElmNow指向其起始地址,然后将运行管理模块接收的信息输出到这片内存中,假设其占用N个数组元素,则这时将当前指针pElmNow移动到数组中N的位置;接下来要依次输出各部件接收的设计点等信息,由于组态软件中所开发的各部件模型是COM组件,因此可为其设计专用于输出配置文件信息的接口函数ISaveConfigureInfo(),该函数需要传入前述内存当前指针pElmNow,在该接口函数内部,各部件将其设计点等信息从pElmNow所指定的地址输出到内存中,输出完毕后,则向后移动内存当前指针pElmNow,使其始终指向未被改变的内存地址;从而,运行管理模块的SaveConfigureInfo()函数在输出了模型环境信息之后,就可以沿发动机各部件的连接顺序,依次调用各部件ISaveConfigureInfo()接口以实现将配置信息输出到内存中,最后再输出到存储介质,即为最终的模型配置文件。
图3 组态建模软件输出配置文件原理
采用这样的方法输出模型信息的优点在于,组态建模软件的某一功能模块不必关心其他模块要输出的内容及大小,维护了软件各模块之间的独立性。
3 仿真算例
为了检验所设计的模型配置文件与通用发动机DLL模型的可用性,本文在组态建模软件中建立了某型单轴涡喷发动机的数学模型,并将模型信息输出为1个配置文件。然后编写应用程序加载通用发动机DLL模型与配置文件,调用接口函数来进行多点稳态、动态仿真,仿真结果如图4所示。从图4中可见,通过加载DLL模型和配置文件所得到的结果与采用组态建模软件所得到的一致,说明该设计方法有效。
图4 DLL模型与组态建模仿真结果
4 结束语
本文采用前述方法,设计了与组态建模软件相匹配、具有一定扩展性、方便调用的通用发动机DLL模型框架,并且根据组态建模软件的内部结构特点,给出了分布式输出模型配置文件的方法。经过仿真算例验证,编写应用程序加载该通用发动机DLL模型与配置文件进行仿真,其仿真结果与采用组态建模软件得到的结果一致。通过该方法可以实现输出组态建模软件中模型的功能,输出的发动机DLL模型可以支持数控系统的设计等工作,扩展了组态建模软件的用途。
[1]Reed J A,Afjeh A A.An extensible object-oriented framework fordistributedcomputationalsimulationofgasturbine propulsion systems[R].AIAA-98-3565.
[2]周文祥,黄金泉,窦建平,等.面向对象的涡扇发动机及控制系统仿真平台[J].航空动力学报,2007,22(1):119-125.
[3]夏飞,黄金泉,周文祥.基于MATLAB/SIMULINK的航空发动机建模与仿真研究[J].航空动力学报,2007,22(12):2134-2138.
[4]姚祖明.基于构件的航空发动机建模技术研究[D].南京:南京航空航天大学,2007.
[5]陶金伟,黄金泉,周文祥.航空发动机组态建模技术研究[J].航空动力学报,2010,25(10):2372-2378.
[6]窦建平,黄金泉.基于UML的航空发动机仿真建模研究[J].航空动力学报,2005,20(4):684-688.
[7]陶金伟,黄金泉.航空发动机部件级组件化模型研究[J].航空发动机,2009,35(6):18-21.
Study of Dynamic Link Library(DLL)Modeling Technology for Aeroengine
YU Ming-shuai,HUANG Jin-quan
(College of Energy and Power Engineering,Nanjing University of Aeronautics and Astronautics,Nanjing 210016,China)
Aiming at limitation that model cannot be output by aeroengine configuration modeling software,the dynamic link library modeling frame of general aeroengine was designed,which matched with configuration modeling software.The modeling information
by the software from user was output as a configuration file.DLL model and configuration file model were loaded for aeroengine simulation.The simulation results conformance to that obtained with configuration modeling software.The function of output configuration modeling software is received by this way,which can be used in the engine digital control system.
dynamic link library;aeroengine;modeling technology
2011-10-25