CN100370420C - 燃气涡轮发动机设计软件集成方法 - Google Patents
燃气涡轮发动机设计软件集成方法 Download PDFInfo
- Publication number
- CN100370420C CN100370420C CNB2006100462218A CN200610046221A CN100370420C CN 100370420 C CN100370420 C CN 100370420C CN B2006100462218 A CNB2006100462218 A CN B2006100462218A CN 200610046221 A CN200610046221 A CN 200610046221A CN 100370420 C CN100370420 C CN 100370420C
- Authority
- CN
- China
- Prior art keywords
- file
- design
- enter step
- software
- interface function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
一种燃气涡轮发动机设计软件集成方法,包括网络架构、业务处理和数据管理系统三部分,网络架构由服务器和客户机组成;业务处理通过软件注册组件、运行控制组件、输入组件、输出组件、设计代理组件和数据访问组件实现;数据管理系统采用Microsoft SQL Server和Oracle;其集成过程包括三个步骤:一,专业设计软件注册;二,专业设计软件的运行控制;三,专业设计软件输入输出设计参数映射和关联。本发明提供的系统集成方法,通过友好的用户界面和多种图形显示方式,实时控制输入输出数据,从而提高燃气涡轮发动机的设计质量和效率,达到快速完成设计任务的目的。
Description
技术领域
本发明属于系统集成技术领域,特别涉及一种燃气涡轮发动机设计软件集成方法。
背景技术
燃气涡轮发动机是航空飞行器的核心动力装置,并且改型后可以用于船舶、大型车辆和发电等其它领域。燃气涡轮设计制造技术具有十分重要的军事和经济意义。燃气涡轮发动机设计是典型的多学科综合优化问题,技术难度非常高。燃气涡轮发动机的基本工作原理是:压缩机做功产生高压气体,高压气体与燃气混合后在燃烧室内燃烧,喷出高温高压气体带动涡轮旋转做功。燃气涡轮发动机优化设计的目标就是在满足各类约束条件下,提高推力、输出功率和热交换效率等。
燃气涡轮发动机设计过程包括总体设计、热力学设计、空气动力学设计和结构设计等阶段。设计工程采用多种工程设计软件反复计算大量的热力学、流体力学和几何结构参数,处理大量的输入输出数据,并以二维和三维方式显示重要数据。每个设计软件都是独立的计算程序,有些程序是设计单位自行开发的,有些程序是专业软件公司开发的,软件异构性非常大。而且,这些计算软件都是采用面向过程的程序设计方法来实现的,没有用户交互界面,设计人员需要记忆大量的命令语句。每位设计工程师都独立管理和运行相关的工程设计系统,重复工作量大;项目设计团队不能实现集中的权限控制和协同。
现有的燃气涡轮发动机设计方法存在以下缺陷:
1)燃气涡轮发动机设计系统远远落后于信息技术的发展步伐,在软件体系结构和系统通信等方面存在较大缺陷。各设计工程师在自己的计算机上分别安装所需要的设计软件,没有在设计团队内实现设计软件的共享。
2)工程师在设计过程中,需在不同的软件之间频繁切换,造成设计工作效率低和错误率高。
3)燃气涡轮发动机的设计过程中,输入输出数据全部以文本形式存在,数据评价完全取决于设计人员的经验和直觉,不能保证综合优化性能指标。燃气涡轮发动机的设计计算过程和设计数据主要都是人工管理,无法管理大量的设计数据。
发明内容
针对现有燃气涡轮发动机设计中存在的问题,本发明提供一种燃气涡轮发动机设计软件集成方法。
本发明的基本原理是:
1)采用基于组件的软件系统架构,集成异构的工程计算软件,采用请求-服务模式,使设计团队共享设计软件,充分利用各专业设计系统。
2)将涡轮气动设计过程中“孤立”的计算软件有机地集成在一起,监控和管理所有设计系统的操作运行状态,协调控制设计计算过程,实现相关专业设计系统之间的数据映射和转换,自动关联多个设计系统之间的输入和输出参数。设计工程师勿需在不同设计系统之间进行频繁切换,从而提高数据安全性、一致性和准确性。
3)采用图形化用户界面,支持工程师准备输入参数和评估输出参数,跟踪及控制设计数据流程;采用多种形式的参数曲线和表格,使得设计工程师可以准确地了解参数的含义、当前取值以及相互影响。
本发明方法包括:网络架构、业务处理和数据管理系统。
一、网络架构
网络架构由服务器和客户机组成,图1从体系架构的角度给出了表示层、应用层和数据层的相互关系。本发明的集成方法是在局域网(LAN)中实现的,提供B/S(浏览器和服务器)与C/S(客户端和服务器)两种体系架构。既可以通过客户端程序(胖客户端)进行专业计算和数据浏览,也可以通过Web浏览器(瘦客户端)进行专业计算和数据浏览。
二、业务处理
根据燃气涡轮发动机设计软件集成的特点,业务处理通过六个组件完成,分别是软件注册组件、运行控制组件、输入组件、输出组件、设计代理组件和数据访问组件。注册组件和运行控制组件直接响应用户对象的操作,输入组件、输出组件、设计代理组件和数据访问组件都通过运行控制组件间接响应用户对象的操作,其中输入组件、输出组件包容于运行控制组件中;设计代理组件和数据访问组件集成后台的计算软件、数据库及XML文件。在实现过程中,代理组件各实例存在于对象池中。图2从组件调用的角度给出了用户对象、业务处理以及数据管理系统的关系。用户对象调用注册组件进行专业设计软件注册,将专业设计软件的注册信息映射至XML部署文件中,为专业软件的运行提供调用信息。运行控制组件实例被创建后,通过对应的输入组件实例形成结构化的计算参数,供用户界面显示,输入数据完整后,运行控制组件实例在对象池中激活并调用代理组件实例以启动专业设计软件,计算完成后,通过输入组件提供的功能形成结构化输入参数,并通过数据访问组件映射至数据库中,然后通过输出组件提供的功能得到结构化输出参数,调用数据防问组件将输出数据映射至数据库中。
以下详细描述本发明业务处理使用的注册组件、输入组件、输出组件、设计代理组件、数据访问组件和运行控制组件。
(1)注册组件
注册组件提供专业计算软件注册功能,该组件包括专业设计软件添加接口函数、专业设计软件修改接口函数、专业设计软件卸载接口函数和专业设计软件注销接口函数。以上四个接口函数调用流程全都相同,如图3所示,步骤如下:
步骤一、添加(修改、卸载、注销)新软件;
步骤二、初始化COM环境;
步骤三、创建远程服务器注册组件;
步骤四、本地连接远程连接点;
步骤五、将添加(修改、卸载、注销)信息作为输入参数传给Add(Modify、Delete、Destroy)接口函数;
步骤六、判断添加(修改、卸载、注销)信息是否有效,是则进入步骤七,否则进入步骤一;
步骤七、加载msxml3.dll;
步骤八、创建IXMLDOMDocument2Ptr类对象和创建IXMLDOMNodePtr类对象;
步骤九、调用msxml3.dll的写XML接口函数;
步骤十、将添加(修改、卸载、注销)信息映射至XML文件;
步骤十一、本地断开连接点;
步骤十二、释放COM环境。
注册组件在服务器端以进程外服务程序的形式启动,用户通过界面输入软件的注册信息,客户端初始化本地COM环境,通过CoInitializeEx创建远程服务器注册组件实例,将本地的接收器实例和服务器注册组件对象的连接点连接,连接成功后,调用注册组件接口函数处理用户提供的软件基本信息。由于注册组件是对XML文件进行操作,因此需要加载MSXML.DLL的动态链接库,MSXML.DLL是一个COM对象库,是Windows98及其以后操作系统中自带的动态链接库,该DLL封装了对XML部署文件解析时需要的所有对象,本发明中对XML部署文件的解析都是通过MSXML.DLL提供的接口进行操作的,下面对其各个接口进行详细说明:
1.DOMDocument
DOMDocument对象是XML DOM的基础,可以利用它的属性和方法来浏览、查询和修改XML部署文件的内容和结构。DOMDocument表示了树的顶层节点,它实现了DOM文档的所有的基本方法,并且提供了额外的成员函数来支持XSL和XSLT。它创建了一个文档对象,所有其它的对象都可以从这个文档对象中得到和创建。
2.IXMLDOMNode
2.IXMLDOMNode
DOMNode是文档对象模型(DOM)中的基本对象,元素、属性、注释、过程指令和其它的文档组件都可以认为是IXMLDOMNode。
3.IXMLDOMNodeList
IXMLDOMNodeList是一个节点(Node)对象的集合,节点的增加、删除和变化都可以在集合中反映出来,通过″for...next″结构来遍历所有的节点。
4.IXMLDOMParseError
IXMLDOMParseError接口用来返回在解析过程中所出现的详细信息,包括错误号、行号、字符位置和文本描述。
注册组件的接口IEnrol如下:
#include″CtrlStructDefin.h″//包含控制参数数据结构T_ENROL_INFO
[ object,
uuid(7C8027EA-A4ED-467c-B17E-1B51CE74AF57),
helpstring(″IEnrol Interface″),
pointer_default(unique) ]
interface IEnrol:IUnknown {
HRESULT Add([in]struct T_ENROL_InFO*enrolinfo); //注册新专业设计软件
HRESULT Modify([in]struct T_ENROL_INFO*enrolinfo);//修改专业设计软件
HRESULT Delete([in]long*iID); //卸载专业设计软件
HRESULT Destroy([in]long*iID); //注销专业设计软件
};
接口函数中结构体T_ENROL_INFO存储注册软件的基本信息,定义如下:
typedef struct T_ENROL_INFO{
long iID; //软件序列ID
unsigned char *name; //软件注册名称
unsigned char *ver; //软件版本编号
unsigned char *domain; //软件所属领域
unsigned char *package; //软件包名称
unsigned char *runtype; //软件运行类型(本地/服务器)
unsigned char *runpath; //软件安装路径
unsigned char *cmdparams; //软件运行命令行参数
unsigned char *updatetime;//软件更新时间
}tag_ENROL_INFO_TYPE;
注册组件运行过程中以MSXML2为命名空间,以避免变量定义命名冲突。注册程序结束前要断开本地接收器实例和服务器注册组件连接点之间的连接,并释放COM环境。
(2)输入组件
输入组件把用户对象提供的数据转换为计算使用的结构化文件,或者把结构化文件解析为离散数据,供用户以界面方式审查。该组件除提供初始化函数外,还提供入参文件解析和入参文件形成两个接口函数。
由于输入组件经常调用,因此以进程内组件的方式实现。该组件的接口函数调用流程如图4所示,步骤如下:
步骤一、调用开始;
步骤二、判断该组件的接口是否有效,是则进入步骤七,否则进入步骤三;
步骤三、判断该组件类型,如果是设计代理组件则进入步骤十,否则进入步骤四;
步骤四、初始化组件实例;
步骤五、判断组件实例创建是否成功,是则进入步骤六,否则进入步骤九;
步骤六、组件实例工作环境初始化;
步骤七、输入组件接口函数调用;
步骤八、组件实例实现接口函数的业务处理,并返回处理结果,进入步骤十一;
步骤九、初始化失败告警,进入步骤十一;
步骤十、组件实例异常告警;
步骤十一、调用结束。
以下为输入组件的接口声明:
#include″DataStructDefine.h″//专业数据结构T_DATA定义头文件
#include″CtrlStructDefine.h″//包含控制参数数据结构T_PARA_INFO
[ object,
uuid(DA403724-2941-4bfb-ADA8-5F1A94E31D8F),
helpstring{″I_InPut Interface″),
pointer_default(unique) ]
interface I_InPut:IUnknown
{
HRESULT P_InitContext([in]LPCTSTR FilePath);//指定文件所在绝对目录
HRESULT File_2_Struct([in]struct T_PARA_INFO tPara,[out]struct T_DATA*tData);/文件解析
HRESULT Struct_2_File([in]struct T_PARA_INFO tPara,[in]struct T_DATA*tData);//文件形成
};
其中结构体T_PARA_INFO的定义如下:
typedef struct T_PARA_INFO{//参数控制信息
long iProID; //项目号
long iPackID; //软件ID
long iVerID; //软件版本ID
long iInOrOut, //输入参数还是输出参数
long iFileID; //输出(输出)文件ID
long iExtend; //扩展备用字段
}tag_T_PARA_INFO_TYPE;
三个接口函数介绍如下:
初始化函数(InitContext):指定输入文件所在的绝对路径,供文件读写使用;
入参文件解析(File_2_Struct):根据已知输入参数文件结构信息,把输入文件解析为对应的结构类型数据,供用户对象以界面方式显示,为数据访问组件提供入参数据以实现输入参数存储,其实现流程如图5(a)所示,图中入参文件类型数随着需要解析的已注册的输入文件类型数变化,“其它”表示不支持该类文件解析,步骤如下:
步骤一、调用开始;
步骤二、判断输入参数是否有效,是则进入步骤三,否则进入步骤九;
步骤三、输入参数文件类型获取,存在该类型文件解析,则进入步骤四,否则进入步骤九;
步骤四、根据输入参数文件类型判断对应文件是否存在,如果存在则进入步骤五,否则进入步骤九;
步骤五、根据该类型输入参数文件结构信息,解析对应文件,完成后进入步骤六;
步骤六、解析操作结果判定,解析成功,进入步骤七,否则进入步骤九;
步骤七、解析结果赋值;
步骤八、返回S_OK,直接进入步骤十;
步骤九、返回S_FALSE,;
步骤十、调用结束。
入参文件形成(Struct_2_File):把用户对象通过用户界面(或者调用数据访问组件)得到的输入数据保存为输入文件,供计算使用,其实现流程如图5(b)所示,图中入参文件类型数随着需要解析的已注册的输入文件类型数变化,“其它”表示不支持该类文件形成,步骤如下:
步骤一、调用开始;
步骤二、判断入参结构数据是否有效,是则进入步骤三,否则进入步骤八;
步骤三、待生成文件类型获取,存在该类型则进入步骤四,否则进入步骤八;
步骤四、根据文件类型以写文件方式打开对应的输入文件,打开成功进入步骤五,否则,进入步骤八;
步骤五、根据该类型输入参数的结构信息,生成输入文件;
步骤六、写文件操作结果判定,写成功则进入步骤七,否则进入步骤八;
步骤七、返回S_OK,直接进入步骤九;
步骤八、返回S_FALSE;
步骤九、调用结束。
(3)输出组件
该组件完成输出参数解析工作,把计算结果文件转换为离散的结构化数据,供用户通过界面方式审查,为调用数据访问组件提供数据。该组件除提供初始化函数外,还提供出参文件解析接口函数。
由于输出组件经常调用,因此以进程内组件的方式实现。该组件接口函数调用流程与输入组件接口函数调用流程相同,如图4所示。
以下为输出组件的接口声明:
#include″DataStructDefine.h″//专业数据结构T_DATA定义头文件
#include″CtrlStructDefine.h″//包含控制参数数据结构T_PARA_INFO
[ object,
uuid(0726DBB3-7A92-4162-9FCC-34C74A786C5D),
helpstring(″I_OutPut Interface″),
pointer_default(unique)]
interface I_OutPut:IUnknown
{
HRESULT P_InitContext([in]LPCTSTR FilePath);//指定文件所在绝对工作目录
HRESULT File_2_Struct([in]struct T_PARA_INFO tCal,[out]struct T_DATA*tData);/文件解析
};
以下介绍这两个接口函数:
初始化函数(InitContext):指定输出文件所在的绝对路径,供文件读取使用;
出参文件解析(File_2_Struct):根据输出参数文件结构信息,把输出文件解析为对应的结构类型数据,供用户对象以界面方式显示,为数据访问组件提供出参数据以实现输出参数存储,其实现流程如图6所示,图中出参文件类型数随着需要解析的已注册的输出文件类型数变化,图中“其它”表示不支持该类文件解析,步骤如下:
步骤一、调用开始;
步骤二、判断输出参数是否有效,是则进入步骤三,否则进入步骤九;
步骤三、输出参数文件类型获取,存在该类型文件,进入步骤四,否则进入步骤九;
步骤四、根据输出参数文件类型判断对应文件是否存在,是则进入步骤五,否则进入步骤九;
步骤五、根据该类型输出参数文件结构信息,解析对应文件;
步骤六、解析操作结果判定,解析成功,进入步骤七,否则进入步骤九;
步骤七、输入文件解析结果赋值,;
步骤八、返回S_OK,直接进入步骤十;
步骤九、返回S_FALSE;
步骤十、调用结束。
(4)设计代理组件
该组件为专业设计软件的运行提供运行环境初始化、入参完备性检查、入参文件传送、专业软件运行、计算状态获取、运行进程终止、出参文件获取等功能。
因为该组件采用本地和服务器两种运行方式调用各专业设计软件,所以为了保证客户端稳定性,以进程外方式实现该组件。调用该组件各接口函数时,如果组件接口指针无效则直接告警退出,有效则直接调用对应的接口函数,如图4所示。
以下介绍各个接口函数;
运行环境初始化(CalInit):根据使用者ID、专业设计软件包ID、专业设计软件ID、运行类型四个参数创建软件运行路径,并记录该次计算的信息。
入参完备性检查(InputCheck):根据注册组件给出的当前专业设计软件入参文件需求,从名称上检查输入文件是否完备,执行流程如图7(a)所示,步骤如下:
步骤一、调用开始;
步骤二、根据注册信息获取入参文件列表;
步骤三、判断入参文件是否都存在,是则进去步骤四,否则进入步骤五;
步骤四、返回TRUE,进入步骤六;
步骤五、返回FALSE;
步骤六、调用结束。
入参文件传送(InputTransfer):根据注册组件给出的专业设计软件运行类型,把各输入文件拷贝到本地或者服务器计算目录下,执行流程如图7(b)所示,步骤如下:
步骤一、调用开始;
步骤二、根据注册信息获取入参文件列表;
步骤三、如果是本地运行,则执行步骤四,否则执行步骤五;
步骤四、把各输入文件复制到本地计算目录下,进入步骤七;
步骤五、生成在服务器的计算路径的相对路径;
步骤六、把列表中的所有文件FTP到服务器指定的计算路径下;
步骤七、调用结束。
专业软件运行(ExeCall):根据注册组件给出的专业设计软件信息,创建计算进程,执行流程如图7(c)所示,步骤如下:
步骤一、调用开始;
步骤二、根据注册信息构建专业软件执行参数;
步骤三、根据注册信息构建专业软件执行路经;
步骤四、根据注册信息获取专业软件;
步骤五、在执行路径下以CreatProcess创建专业软件进程;
步骤六、根据注册信息获取专业软件;
步骤七、返回进程句柄;
步骤八、调用结束。
运行进程终止(ExeTerminate):当专业软件运行进入不收敛状态时(用户根据经验可判定是否不收敛),用户通过调用该接口函数终止该进程,执行流程如图7(d)所示,步骤如下:
步骤一、调用开始;
步骤二、根据参数获取专业软件运行时的进程句柄;
步骤三、判断所获取的句柄是否有效,是则进入步骤四,否则进入步骤七;
步骤四、WaitForSingleObject以间隔0获取进程状态;
步骤五、判断是否为WAIT_OBJECT_0状态,是则进入步骤七,否则进入步骤六;
步骤六、返回“运行”状态,进入步骤八;
步骤七、返回“结束”状态;
步骤八、调用结束。
计算状态获取(GetExeState):获取指定计算进程的状态,执行流程如图7(e)所示,步骤如下:
步骤一、调用开始;
步骤二、根据参数获取专业软件运行时的进程句柄;
步骤三、判断所获取的句柄是否有效,是则进入步骤四,否则进入步骤五;
步骤四、TerminateProcess强行终结运行的进程:
步骤五、调用结束。
出参文件获(OutputGet):运算结束后,调用该函数,把运算结果从服务器(或本地)计算路径传送到本地工作路径下,执行流程如图7(f)所示,步骤如下:
步骤一、调用开始;
步骤二、根据注册信息获取出参文件列表;
步骤三、如果是本地运行,则执行步骤四,否则执行步骤五;
步骤四、从计算路径拷贝输出文件列表中所有输出文件到工作路径,进入步骤七;
步骤五、根据注册信息生成服务器计算路径;
步骤六、在服务器计算路径下把出参文件FTP到本地工作路径;
步骤七、调用结束。
以下为设计代理组件的接口声明:
#include″CtrlStructDefine.h″//包含控制参数据结构T_CAL_NFO
[ object,
uuid(DA403724-2941-4bfb-ADA8-5F1A94E31D8F),
helpstring(“I_Calculate Interface″),
pointe_default(unique)]
interface I_Calculate:IUnknown {
HRESULT CalInit(([in]struct T_CAL_INFO tCal); //计算初始化
HRESULT InputCheck(([in]struct T_CAL_INFO tCal t); //入参文件完备性检查
HRESULT InputTransfer((in]struct T_CAL_INFO tCal); //入参文件传送
HRESULT ExeCall(([in]struct T_CAL_INFO tCal); //专业计算执行
HRESULT GetExeState(([in]struct T_CAL_INFO tCal); //专业计算状态获取
HRESULT ExeTerminate(([in]struct T_CAL_INFO tCal); //专业计算停止
HRESULT OutputGet([in]struct T_CAL_INFO tCal); //出参文件获取};
其中结构体T_CAL_INFO的定义如下:
typedef struct T_CAL_INFO { //计算执行信息
long iUserID; //用户ID
long iPackID; //软件包ID
long iExeID; //专业软件ID
long iVerID; //软件版本ID
long iCalDate; //计算日期
long iExtend; //扩展备用字段
}tag_T_CAL_INFO_TYPE;
(5)数据访问组件
数据访问组件除了组件初始化之外,还完成输入参数结构数据存储与读取,输出参数结构数据存储与读取,专业计算软件参数存储与读取操。
该组件经常被用户调用,为了保证响应速度,该组件以进程内组件方式实现。该组件的接口函数调用流程与输入组件接口函数调用流程相同,如图4所示。
以下介绍各个接口函数:
数据访问组件初始化(DB_Init):以ADO方式与对应数据库建立连接;
计算控制参数存储(Cal_2_DB):存储用户ID、专业计算软件等相关控制参数,并返回该次形成数据记录序号,供存储出参入参数据使用,以建立数据库中各表之间的关联;
计算控制参数读取(DB_2_Cal):获取用户ID、专业计算软件等相关控制参数;
输入参数存储(InPut_2_DB):把结构化的输入参数存储到数据库:
输入参数读取(DB_2_InPut):从数据库读取结构化的输入参数;
输出参数存储(OutPut_2_DB):存储结构化的输出参数;
输出参数读取(DB_2_OutPut):从数据库读取结构化的输出参数,其执行顺序为输出参数存储的逆操作;
上述各接口函数的执行流程相同,如图8所示,执行步骤如下:
步骤一、调用开始;
步骤二、入参判断,正常则进入步骤三,否则进入步骤六;
步骤三、判断数据存储方式,根据存储方式选择SQL Server、Oracle、Access处理逻辑,如果不是以上三种则进入步骤六;
步骤四、根据存储方式判定以ADO方式访问SQL Server、Oracle、Access数据库;
步骤五、返回操作结果,进入步骤七;
步骤六、入参异常告警;
步骤七、调用结束。
以下为数据访问组件的接口声明:
#include″DataStructDefine.h″//专业数据结构T_DATA定义头文件
#include″CtrlStructDefine.h″//包含控制参数数据结构T_PARA_INFO,T_CAL_INFO等定义
[ object,
uuid(87DEC00C-2544-4EEE-9D00-BB02B043355A),
helpstring(″I_DataBase Interface″),
pointer_default(unique)]
interfaceI_DatsBase:Iunknown{
HRESULT DB_Init([in]long iUserID,[in]LPCTSTR lpAccessPath,[in]LPCTSTR ISrvName,[in]LPCTSTR PWD);
HRESULT Cal_2_DB([in]struct T_CAL_INFO*CalInfo,[out]long*iIndex);
HRESULT DB_2_Cal([in]long iIndex,[in]struct T_PARA_INFO*tparaInout,[out]struct T_CAL_INFO*CalInfo);
HRESULT InOut_2_DB([in]struct T_PARA_INFO*tparaInout,[in]struct T_DATA*tData,[in]long iCalIndex);
HRESULT DB_2_InOut([in]long iCalIndex,[in]struct T_PARA_INFO*tparalnout,[out]lstruct T_DATA*tData);
};
(6)运行控制组件
该组件包容输入组件、输出组件,并根据计算需求完成对输入组件、设计代理组件、输出组件、数据访问组件的综合调用,自动完成用户的设计计算操作,用户满意输出结果则把相关数据直接存储到数据库中。
由于该组件经常被用户调用,为了保证响应速度,以进程内方式实现运行控制组件。该组件接口函数调用流程与输入组件接口函数调用流程相同,如图4所示。
以下介绍各个接口函数:
运行控制初始化(CtrlInit):根据用户需求调用数据访问组件以ADO方式与相应的数据库建立连接;
运行控制发起(Ctrl_Start):根据设计计算流程,综合调用输入组件、设计代理组件、输出组件、数据访问组件,实现数据计算及存储的自动化,执行流程如图9(a)所示,步骤如下:
步骤一、调用开始;
步骤二、判断运行控制组件接口是否有效,是则进入步骤三,否则进入步骤十一;
步骤三、判断对象池资源是否空余,是则进入步骤四,否则进入步骤五;
步骤四、获取空闲设计代理组件实例,进入步骤六;
步骤五、用CoCreatrInstanceEx创建设计代理组件实例;
步骤六、设计代理组件实例进行入参完备性判断;
步骤七、判断入参是否完备,是则进入步骤八,否则进入步骤十;
步骤八、设计代理组件实例进行入参文件传送;
步骤九、设计代理组件实例进行专业软件调用,进入步骤十二;
步骤十、入参不完备警告,进入步骤十二;
步骤十一、运行控制无效告警;
步骤十二、调用结束。
运行控制终止(CtrlExe_Stop):当用户发现某设计计算不收敛时,通过该接口调用设计代理组件的运行进程终止接口函数,终止对应的计算进程,执行流程如图9(b)所示,步骤如下:
步骤一、调用开始;
步骤二、判断运行控制组件接口是否有效,是则执行步骤三,否则执行步骤八;
步骤三、在对象池内查找设计代理组件实例;
步骤四、验证该组件实例是否存在,是则执行步骤五,否则执行步骤七;
步骤五、获取实例运行控制接口;
步骤六、组件实例停止指定设计进程,进入步骤九;
步骤七、操作对象无效告警,进入步骤九;
步骤八、运行控制无效告警;
步骤九、调用结束。
参数文件解析(File_2_Struct);调用输入、输出组件分别把输入、输出文件转换为离散结构化数据,为用户界面方式显示提供数据,执行流程如图9(c)所示,步骤如下:
步骤一、调用开始;
步骤二、判断运行控制组件接口是否有效,是则执行步骤三,否则执行步骤十三;
步骤三、判断输入参数是否被解析,是则进入步骤四,否则进入步骤八;
步骤四、输入组件实例有效性判断;
步骤五、输入组件实例是否存在,是则进入步骤七,否则进入步骤六;
步骤六、创建输入组件实例;
步骤七、组件实例解析,指定输入文件,进入步骤十二;
步骤八、输出组件实例有效性判断;
步骤九、输出组件实例是否存在,是则进入步骤十一,否则进入步骤十;
步骤十、创建输出组件实例;
步骤十一、组件实例解析,指定输出文件;
步骤十二、解析结果返回,进入步骤十四;
步骤十三、运行控制组件实例异常警告;
步骤十四、调用结束;
参数文件形成(Struct_2_File):调用输入组件把用户对象通过用户界面得到的输入数据转存为输入文件,供计算使用,执行流程如图9(d)所示,步骤如下:
步骤一、调用开始;
步骤二、判断运行控制组件接口是否有效,是则进入步骤三,否则进入步骤七;
步骤三、输入组件实例有效性判断;
步骤四、判断输入组件实例是否存在,是则进入步骤六,否则进入步骤五;
步骤五、创建输入组件实例;
步骤六、组件实例形成指定输入文件,进入步骤八;
步骤七、运行控制组件实例异常警告;
步骤八、调用结束;
运行控制组件是业务处理的核心,图10给出了一个完整的设计计算过程中该组件各接口函数调用及接口函数执行综合处理流程,流程中各具体步骤如下:
步骤一、调用开始;
步骤二、判断运行控制组件接口是否有效,如果无效,则进入步骤三;否则进入步骤五;
步骤三、通过CoCreateInstance创建运行控制组件实例,获取接口指针;
步骤四、创建输入组件实例、输出组件实例、设计代理组件实例和数据访问实例并初始化;
步骤五、对象池中设计代理组件实例节余判断,无空闲设计代理组件实例则转入步骤二十一,有空闲设计代理组件则转入步骤六;
步骤六、在对象池中获取空闲设计代理组件实例,调用其初始化接口函数初始化本次计算环境,并登记本次计算;
步骤七、调用输入参数组件实例把用户界面的数据形成输入文件;
步骤八、调用设计代理组件实例的入参完备性检查接口函数检测入参数据文件完备性,完备则进入步骤九,否则进入步骤七;
步骤九、调用设计代理组件实例的入参文件传送接口函数把入参文件发送到服务器;
步骤十、传送结果判断,传送成功则进入步骤十一,否则进入步骤二十;
步骤十一、调用设计代理组件实例的专业软件运行接口函数开始计算,创建计算进程;
步骤十二、设置计算定时器;
步骤十三、 定时器时间到则调用设计代理组件实例的计算状态获取接口函数,获取计算状态;
步骤十四、判断计算状态,如果状态为“完成”则结束该定时器,并进入步骤十五,否则进入步骤十二;
步骤十五、调用设计代理组件实例的出参文件获取接口函数得到计算结果文件;
步骤十六、调用输出组件实例解析输出文件,设计人员通过用户界面浏览计算结果是否可行,是则进入步骤十七,否则通过用户界面更改输入参数,进入步骤七;
步骤十七、调用输入组件实例解析入参文件,调用数据访问组件实例把解析结果保存到数据库中;
步骤十八、调用数据访问组件实例把计算运行信息保存到数据库中;
步骤十九、调用输出组件实例解析出参文件,调用数据访问组件实例把解析结果保存到数据库中,直接进入步骤二十二;
步骤二十、故障告警,直接进入步骤二十二;
步骤二十一、设计代理组件实例资源缺乏告警;
步骤二十二、对象池信息清理;
步骤二十三、调用结束。
客户端初始化时,把该组件的接口指针设置为无效。调用环境被清空(客户端退出或者运行控制组件结束)时,通过该组件的接口指针执行Release操作,终止组件的生命周期。
以下为运行控制组件的接口声明:
#include″CtrlStructDefine.h″//包含控制参数数据结构T_CAL_INFO等定义
[object,
uuid(5D65826A-3E6E-4B0F-8DB0-2195F584B4FE),
helpstring(″I_CalCtrl Interface″),
pointer_default(unique)]
interface I_CalCtrl:Iunknown {
HRESULT Ctrl_Start([in]struct T_CAL_INFO*CalInfo);//计算开始
HRESULT CtrlExe_Stop([in]struct T_CAL_INFO*CalInfo);//计算停止
HRESULT File_2_Struct([in]struct T_PARA_INFO tCal,[out]struct T_DATA*tData);//参效文件解析
HRESULT Struct_2_File([in]struct T_PARA_INFO tCal,[in]struct T_DATA*tData);//参数文件形成
HRESULT Ctrl_Init([in]long iUserID,[in]LPCTSTR lpAccessPath,[in]LPCTSTR ISrvName,[in]LPCTSTR PWD);};
三、数据管理系统
本发明的数据库采用Microsoft SQL Server、Oracle两种数据库管理系统,后面描述的具体实施项目中将以Microsoft SQL Server为例进行描述。图11为数据库关系图,描述了数据库中各个表之间的关联关系,每一个注册的专业设计软件在注册软件信息表中形成一条记录,而对于该专业设计软件,软件运行参数表中有若干条参数文件信息记录与之对应。每个参数文件对应一个参数信息表,该表以“tb_”后面加上参数文件的显示名称的形式命名,参数信息表中除主键字段和计算标识字段外,其余字段分别对应参数文件的离散的结构化数据。因此,注册软件信息表(表名为tb_programs)和软件运行参数表(表名为tb_parms)之间、软件运行参数表和软件参数文件信息表(表名为tb_filename)之间都存在着“一对多”的关系。各数据表描述如下:
(1)注册软件信息表(tb_programs):
说明:该表用来存储本发明中注册设计软件信息
序号 | 字段名 | 中文名称 | 数据类型 | 长度 | 主键 | 说明 |
1 | I_ID | 序号ID | int | 4 | 是 | 顺序编号,唯一表示每条记录 |
2 | C_Name | 软件名称 | varchar | 40 | 否 | 用来在用户界面中显示的软件名称 |
3 | C_Ver | 软件版本 | varchar | 20 | 否 | 软件注册时提供的版本号 |
4 | C_Domain | 专业领域 | varchar | 46 | 否 | 注册软件所属的专业领域 |
5 | C_Package | 软件包名称 | varchar | 30 | 否 | 注册软件所属的上一级软件包名称 |
6 | I_Runtype | 运行类型 | int | 4 | 否 | 软件的运行类型,0表示在服务器上运行,1表示在本地机上运行 |
7 | C_Runpath | 安装路径 | varchar | 260 | 否 | 软件注册时录入者提供的完整软件 |
序号 | 字段名 | 中文名称 | 数据类型 | 长度 | 主键 | 说明 |
安装路径,包括可执行的EXE文件 | ||||||
8 | C_Cmdparams | 命令行参数 | varchar | 80 | 否 | 在软件运行时需提供的命令行参数 |
9 | C_Time | 更新时间 | datetime | 8 | 否 | 注册软件的更新时间 |
(2)软件运行参数表(tb_params):
说明:该表保存专业设计软件注册的输入和输出参数信息
序号 | 字段名 | 中文名称 | 数据类型 | 长度 | 主键 | 说明 |
1 | C_ProgID | 注册软件ID | int | 4 | 是 | 为tb_programs表中的I_ID字段值 |
2 | C_Shownme | 显示名称 | varchar | 40 | 是 | 参数文件的用户界面显示名称 |
3 | C_Filename | 真实名称 | varchar | 40 | 否 | 参数文件的物理真实名称 |
4 | B_Format | 文件格式 | bit | 1 | 否 | 表示参数文件格式,0表示文本,1表示二进制 |
5 | I_Iotype | 文件io类型 | int | 4 | 否 | 文件io类型,0表示输入,1表示输出,2表示输入和输出 |
(3)软件参数文件信息表(tb_filename)
说明:tb_filename表示的是一类表,该类表的个数由计算软件的数目决定。参数文件显示名称决定表名中的filename部分,该显示名称与软件运行参数表(tb_params)中的显示名称(showname)字段值对应,为每一个文本形式的参数文件建立一个参数文件表,并且在项目实施的需求分析阶段将每个文件中具体的参数信息定义为字段。在软件参数文件信息表中除记录惟一标识字段I_ID和计算编号字段I_ComputeNo外,其余字段全部由参数文件中的参数信息构成。下面以某气动设计软件的输入为例给出表结构。
序号 | 字段名 | 中文名称 | 数据类型 | 长度 | 主键 | 说明 |
1 | I_ID | 序号ID | int | 4 | 是 | 顺序编号,唯一表示每条记录 |
2 | I_ComputeNo | 计算编号 | int | 4 | 否 | 每次计算都将在已有编号的最大值基础上增1,可有重复记录 |
3 | F_Gene | 收敛因子 | float | 8 | 否 | 无 |
4 | F_Oil | 油气比 | float | 8 | 否 | 无 |
5 | F_Flux | 流量 | float | 8 | 否 | 无 |
6 | F_Betta1 | 进口角 | float | 8 | 否 | 无 |
7 | F_Betta2 | 出口角 | float | 8 | 否 | 无 |
8 | F_Exponent | 比热比 | float | 8 | 否 | 无 |
9 | F_CalAccGod | 计算精度 | float | 8 | 否 | 无 |
10 | I_kn | 流线数 | int | 4 | 否 | 无 |
11 | I_M | 级数 | int | 4 | 否 | 无 |
12 | I_Jm | 计算站数 | int | 4 | 否 | 无 |
13 | I_ThdNum | 流线数 | int | 4 | 否 | 无 |
14 | I_KnNo | 中间流线号 | int | 4 | 否 | 无 |
上表中的具体参数为某气动设计软件的输入文件解析的结果。未进行系统集成前该气动设计软件的输入源文件为如下:
1.3256 0.00031 0.024220 56.74
25.15300 10.21000 0.98630
11 4 11 6 6
用户直接浏览参数文件中的内容将无法明确每个参数的具体含义,而通过参数信息表就能够得到明确的参数含义,这里参数文件的内容与参数信息表的表格式与具体参数文件一一对应。
本发明方法的集成过程包括以下三个步骤:
步骤一、专业设计软件注册和系统配置;
步骤二、专业设计软件的运行控制;
步骤三、专业设计软件输入输出设计参数映射和关联。
首先,软件注册采用组件技术在服务器上封装注册和配置专业设计软件系统,通过XML部署文件管理专业设计软件的运行配置参数,包括其原始安装路径、版本、命令行参数和输入输出文件参数。
其次,本发明的业务处理核心是运行控制组件,该组件包容了输入组件和输出组件,并调用设计代理组件、数据访问组件响应用户操作。当客户请求运行某一设计软件时,运行控制组件按照软件注册信息通过输入组件实例生成输入文件,然后检测对象池中是否有空闲的设计代理组件实例,如果有则激活一个实例来启动对应的设计软件,并通过该实例管理设计软件的进程、内存和运行状态。每个设计代理组件实例管理一个专业设计软件。系统运行控制组件实例与每个运行的设计代理实例交互,从而管理集成设计环境中全部专业设计软件的运行。在某一个设计软件运行结束后,设计代理组件实例结束相应的执行任务,此时将该设计代理组件实例重新置为空闲,对象池恢复到初始状态。
第三,本发明利用参数映射方法,将输入输出参数文件和结构化参数建立对应关系,从而使文件、用户界面及关系数据库关联起来。计算过程中,运行控制组件实例通过输入组件实例完成输入参数的映射、检验和转换,然后调用设计代理组件实例创建专业计算进程,并监控该进程的状态。计算进程结束后,获取计算结果,并通过输出组件实例解析结果数据,供用户界面显示;如果用户满意该计算结果,则在输入参数和输出参数解析的基础上,调用数据访问组件完成输入、输出参数的存储。
本发明是以燃气涡轮发动机的设计工作为依托,设计过程中使用的工程软件为本集成方法的主要研究对象。由于这些工程软件多数都是通过DOS环境的编程方式实现的,如FORTRAN等,因此其输入和输出参数都是以文件的形式独立存在的,本发明提供一套集成各个专业计算软件的系统集成方法,统一管理计算软件、计算过程和输入输出数据,以提高设计工作效率和设计质量。
在本发明提供的集成方法基础上,建立一个提高团队协作能力的开放型的产品设计集成开发环境,将设计过程中使用的各“孤立”计算软件有机地集成在一起,跟踪计算过程,管理计算数据,整合分散的信息资源,完成整个设计任务,通过本发明提供的友好用户界面和多种图形显示方式,实时控制输入输出数据,从而提高燃气涡轮发动机的设计质量和效率,达到快速完成设计任务的目的。
附图说明
图1为本发明集成方法的网络分配结构示意图;
图2为本发明集成方法的组件构成示意图;
图3为本发明业务处理中注册组件接口调用流程图;
图4为本发明业务处理中输入组件、输出组件、设计代理组件、数据访问组件和运行控制组件共用的接口函数调用流程图;
图5(a)为本发明输入组件中入参文件解析接口函数执行流程图;
(b)为本发明输入组件中入参文件形成接口函数执行流程图;
图6为本发明输出组件中出参文件解析接口函数执行流程图;
图7(a)为本发明设计代理组件中入参完备性检查接口函数执行流程图;
(b)为本发明设计代理组件中入参文件传送接口函数执行流程图;
(c)为本发明设计代理组件中专业软件运行接口函数执行流程图;
(d)为本发明设计代理组件中设计状态获取接口函数执行流程图;
(e)为本发明设计代理组件中运行进程终止接口函数执行流程图;
(f)为本发明设计代理组件中出参文件获取接口函数执行流程图;
图8为本发明数据访问组件各接口函数共用的执行流程图;
图9(a)为本发明运行控制组件中运行控制发起接口函数执行流程图;
(b)为本发明运行控制组件中运行控制终止接口函数执行流程图;
(c)为本发明运行控制组件中参数文件解析接口函数执行流程图;
(d)为本发明运行控制组件中参数文件形成接口函数执行流程图;
图10为本发明完整的设计计算过程中运行控制组件各接口函数调用及接口函数执行综合处理流程图;
图11为本发明方法中数据库基本表关系图;
图12为本发明专业软件设计输入网格界面;
图13(a)为某气动设计中流场结果导叶进口温度与半径关系曲线图;
(b)为某气动设计中流场结果导叶进口压力与半径关系曲线图;
(c)为某气动设计中流场结果中导叶进口马赫数与半径关系曲线图;
图14为本发明专业设计软件输出文本显示图;
图15为本发明专业设计软件输入输出界面图;
图16为本发明用户界面与业务层组件交互顺序图;
图17为本发明计算流程中所有组件调用流程图;
图18为本发明专业软件注册界面;
图19为某气动设计软件入参文件解析流程图;
图20为某气动设计软件入参文件形成流程图;
图21为某气动设计软件出参文件解析流程图;
图22为某气动设计软件入参数文件存储流程图;
图23为某气动设计软件出参数文件存储流程图;
图24为本发明方法中数据层XML文件与数据库表对照图;
图25为本发明方法中软件注册数据流图,
图中①为注册信息,②为注册软件接口,③为XML文件节点信息,④为软件运行信息,⑤为注册成功信息。23
具体实施方式
在本发明的应用中,使用者以用户界面或者Web浏览器的形式,通过本地的服务代理,借助网络通讯连接到服务器,组件将使用者请求的响应结果返回到本地的用户界面或者Web浏览器中,同时将计算数据保存到数据库中。
下面结合附图对本发明作进一步说明。
一、网络架构
如图1所示,网络架构由服务器和客户机组成,本发明在应用中的总体设计,从体系架构的角度给出了表示层、应用层和数据层的相互关系。在集成过程中,本地客户机负责发送和接收数据,采用两种表示方式,一种是客户端程序(胖客户端)形式,另一种为WEB浏览器(瘦客户端)形式。本发明的网络架设于LAN中。用户可以通过建立于本发明的集成方法之上的用户界面进行有效的数据读取和输入。图12~图15给出了在应用本发明的集成方法实施项目中,使用者的用户界面显示范例:其中图12为在专业设计软件计算前进行输入数据录入的用户界面,在用户输入数据后,调用后台的运行控制组件实例,在运行控制组件实例的执行程序结束后,计算结果以网格形式显示;图13为以图形方式显示的计算结果数据;图14为以文本方式显示的计算结果数据;图15为输入和输出数据集成在同一用户界面中。
项目实施过程中所有的计算用户界面均应用在表示层,本发明通过友好的集成界面进行数据录入和提取,在图文并茂的输入输出界面中,用户界面中的一切数据信息(包括文本数据、网格数据和图形数据)都将通过本发明中的输入组件和数据访问组件映射到数据库中,并在运行结束后,通过输出组件和数据访问组件从数据库中映射到用户界面中进行显示。
二、业务处理
根据燃气涡轮发动机设计软件集成的特点,业务处理总体上可以分为六个组件,分别是软件注册组件、运行控制组件、输入组件、输出组件、设计代理组件和数据访问组件。图16为实施项目中用户界面与业务层组件(注册组件除外)交互顺序图,软件注册为系统集成应用的前提条件,在应用的最开始进行软件注册,在集成系统使用的过程中如果没有对特殊软件的修改和新增,将不使用注册组件,因此图16中没有给出注册组件的调用实例,而是从业务计算的角度,以时间为执行顺序、用户界面为入口和出口,给出组件调用全过程。
图16描述的整个组件调用过程为:用户通过用户界面输入计算参数后,创建运行控制组件实例;根据用户输入的请求,运行控制组件实例创建数据访问组件实例来从数据库中提取结构化数据;输入数据完备后,运行控制组件实例在对象池中激活一个设计代理组件实例运行设计软件,计算完成后,获取计算结果并通过用户界面显示给用户,用户认为数据满意后,通过运行控制组件实例调用输入组件实例和输出组件实例解析输入输出文件,并通过数据访问组件实例把解析得到的结构化输入和输出数据存储到数据库中;此时运行控制组件将设计代理组件实例置为空闲;整个软件计算过程完毕后,运行控制组件对象将给用户界面发送消息;用户接收到结束运行的消息后将通过数据访问组件对象进行结果数据的显示。图17为一个完整的计算流程中所有组件调用流程图,其中虚线部分为业务处理相关组件调用流程。
图18为用户注册软件的用户界面,该用户界面提供了软件运行控制所必需的具体参数信息,通过用户界面浏览用户已在集成系统中注册的专业设计软件。在用户添加某一专业设计软件信息后,点击“添加新软件”按钮即可调用注册组件实例,传递给接口函数的软件参数即为界面中所显示的数据信息。
某气动设计软件入参文件解析流程,如图19所示,其执行步骤如下:
步骤一、调用开始;
步骤二、读文件打开成功,进入步骤三,否则进入步骤十五;
步骤三、读方案号、收敛因子、油气比、流量、流线数、级数和计算站数参数值;
步骤四、判断计算站数是否有效,是则进入步骤五,否则进入步骤十三;
步骤五、读第二转子计算站号、中间流线序号、判断初始流线数、物性开关、冷气开关;
步骤六、判断初始流线数、物性开关、冷气开关是否有效;
步骤七、判断物性开关是否打开,是则进入步骤八,否则进入步骤九;
步骤八、读比热比;
步骤九、判断冷气开关是否打开,是则进入步骤十,否则进入步骤十一;
步骤十、读气体常数;
步骤十一、读根部、尖部二次流损失比值、高度值,初始半径位置,各叶片出口环量、速度损失系数初值、喉道前冷气量,喉道后冷气量;
步骤十二、从文件中读取的参数值赋值至结构体,进入步骤十四;
步骤十三、数据异常告警;
步骤十四、关闭文件,进入步骤十六;
步骤十五、文件操作异常告警;
步骤十六、调用结束。
某气动设计软件入参数文件形成流程,如图20所示,其执行步骤如下:
步骤一、调用开始;
步骤二、写文件打开成功,进入步骤三,否则进入步骤十四;
步骤三、写方案号、收敛因子、油气比、流量、流线数、级数和计算站数参数值;
步骤四、判断计算站数是否有效,是则进入步骤五,否则进入步骤十二;
步骤五、写第二转子计算站号、中间流线序号、初始流线数、物性开关、冷气开关;
步骤六、判断初始流线数、物性开关、冷气开关是否有效;
步骤七、判断物性开关是否打开,是则进入步骤八,否则进入步骤九;
步骤八、写比热比;
步骤九、判断冷气开关是否打开,是则进入步骤十,否则进入步骤十一;
步骤十、写气体常数;
步骤十一、写根部、尖部二次流损失比值、高度值,初始半径位置,各叶片出口环量、速度损失系数初值、喉道前冷气量,喉道后冷气量,进入步骤十三;
步骤十二、数据异常告警;
步骤十三、关闭文件,进入步骤十五;
步骤十四、文件打开操作异常告警;
步骤十五、调用结束。
某气动设计软件出参文件解析流程,如图21所示,其执行步骤如下:
步骤一、调用开始;
步骤二、读文件打开成功判断,成功则进入步骤三,否则进入步骤十四;
步骤三、获取计算站数,初始流线数;
步骤四、判断计算站数、初始流线数是否有效,是则进入步骤五,否则进入步骤十二;
步骤五、判断涡轮进口数据是否存在,是则进入步骤六,否则进入步骤七;
步骤六、读涡轮进口数据;
步骤七、判断导叶出口数据是否存在,是则进入步骤八,否则进入步骤九;
步骤八、读导叶出口数据,进入步骤十;
步骤九、读动叶出口数据;
步骤十、判断文件解析是否结束,是则进入步骤十一,否则进入步骤七;
步骤十一、输出文件解析结果赋值,进入步骤十三;
步骤十二、输出文件数据异常告警;
步骤十三、输出文件关闭,进入步骤十五;
步骤十四、文件打开操作异常告警;
步骤十五、调用结束。
某气动设计软件入参数文件存储流程,如图22所示,其执行步骤如下:
步骤一、调用开始;
步骤二、入参数据表打开成功,进入步骤三,否则进入步骤十四;
步骤三、写方案号、收敛因子、油气比、流量、流线数、级数和计算站数参数值;
步骤四、判断计算站数是否有效,是则进入步骤五,否则进入步骤十二;
步骤五、写第二转子计算站号、中间流线序号、初始流线数、物性开关、冷气开关;
步骤六、判断初始流线数、物性开关、冷气开关是否有效;
步骤七、判断物性开关是否打开,是则进入步骤八,否则进入步骤九;
步骤八、写比热比;
步骤九、判断冷气开关是否打开,是则进入步骤十,否则进入步骤十一;
步骤十、写气体常数;
步骤十一、写根部、尖部二次流损失比值、高度值,初始半径位置,各叶片出口环量、速度损失系数初值、喉道前冷气量,喉道后冷气量,进入步骤 十三;
步骤十二、数据异常告警;
步骤十三、关闭入参数据表,进入步骤十五;
步骤十四、数据库操作异常告警;
步骤十五、调用结束。
某气动设计软件出参文件存储流程,如图23所示,其执行步骤如下:
步骤一、调用开始;
步骤二、出参数据表打开成功,则进入步骤三,否则执行步骤十三;
步骤三、计算站数、初始流线数有效性判断,有效则进入步骤四,否则进入步骤十二;
步骤四、判断涡轮进口数据是否存在,是则进入步骤五,否则进入步骤六;
步骤五、写涡轮进口数据;
步骤六、判断导叶出口数据是否存在,是则进入步骤七,否则进入步骤八;
步骤七、写导叶出口数据,进入步骤九;
步骤八、写动叶出口数据;
步骤九、判断全部数据是否全部处理,是则进入步骤十,否则进入步骤六;
步骤十、更新数据库,进入步骤十二;
步骤十一、数据异常告警;
步骤十二、关闭出参数据表,进入步骤十四;
步骤十三、数据库异常告警;
步骤十四、调用结束。
三、数据管理系统
数据存储采用开放性关系型数据库和XML部署文件。本发明的集成专业设计软件注册后其所有的运行及安装信息都将被映射到XML部署文件中,因此在集成应用中XML部署文件是不可缺少的。图24为项目实施过程中数据层XML部署文件与数据库表对照图,以本发明的系统集成方法为依托的项目实施过程中,通常采用XML数据格式文件与数据库相结合。
第一,设计软件注册和系统配置方法,采用组件技术在服务器计算机上封装注册和配置专业设计软件系统。注册组件为设计软件建立一个XML部署文件,该XML部署文件记录和管理专业设计软件的运行配置参数,包括其原始安装路径、版本、命令行参数、输入输出参数。
本发明以软件注册信息的数据流为依托,对软件注册的全过程进行详细说明,如图25所示,即为软件注册数据流图。集成软件的前提是必须将软件加载到整个集成应用中,因此首先需要通过软件注册的方式进行软件信息补充。在本发明中,此功能通过组件实现,用户在注册软件时需要添加必要的软件属性信息,该属性包括软件名称、软件版本、专业领域、软件包名称、运行类型、安装路径、命令行参数和参数文件描述,当此类信息完整后,网络架构将信息传送到业务处理部分的注册组件,创建软件注册组件实例,从而在XML部署文件中形成相应节点的属性和子元素。
下面将XML部署文件示例显示如下:
<?xml verion=″1.0″encoding=″GB2312″?>
<SpecProg ver=″1″>
<program id=″1″name=″××计算软件″
ver=″1.0″
domain=″××领域″
package=″××软件包″
runtype=″server″
runpath=″d:\××.exe″
cmdparams=″××参数″
updatetime=″2005-09-10 13:24:30″>
<file type=″in″show=″××输入文件″format=″文本″name=″tin.dat″/>
<file type=″out″show=″××输出文件″format=″二进制″name=″tout.dat″/>
</program>
</SpecProg>
在XML部署文件中输入、输出文件信息以子元素形式存在,其余的软件注册信息以节点属性的形式表示。
在专业软件注册中的所有XML部署文件操作都是通过软件注册组件来完成的。专业软件注册完毕后,集成应用的服务器重新启动,启动过程中读取和映射XML部署文件的内容,使得应用层接收到运行软件请求后直接将最新的注册信息加载进来。
对于专业软件的重新注册、卸载等应用,本发明在XML部署文件和软件注册信息数据库中进行同步更新。客户程序进入到集成系统后,将新增的XML信息下载到客户端,进行注册信息的更新操作,保证在设计过程中,使用者应用的为最新的配置软件。软件注册组件提供注册接口,该接口包括软件注册、软件修改、软件注销和软件删除四个接口函数。
第二,在软件注册后,服务器已配置了集成软件的相关信息,用户可以开始进行运行集成软件的操作。
本发明是对涡轮发动机的专业设计软件的集成应用,运行控制操作将在运行控制组件中完成。在启动某注册软件时,专业设计软件的启动方式包括集成应用的客户端程序和WEB浏览器两种方式。
本发明建立了一个对象池来确保多个设计代理实例同时存在,以保证集成系统不会无限制地耗费系统资源。在专业设计软件的计算参数存储完毕后,运行控制组件对对象池中的设计代理组件实例进行操作。首先检测对象池中是否有空闲的设计代理组件实例,如果有则激活该实例,并将软件的运行信息传给该设计代理组件实例,设计代理组件实例将根据输入参数进行具体专业设计软件进程的启动运行,在对该新进程进行句柄判断时,如果该专业设计软件进程已结束,在对象池中重新将该设计代理组件对象置为空闲。
一个设计计算流程地生命周期结束后,运行控制对象通过输出组件和数据访问组件,把结果数据存入数据库服务器,数据存储完毕后返回结果给运行控制组件相应接口,该接口此时将运行结束的信息传递给本地代理软件。
作为用户将在本地运行结束的前提下通过数据访问组件将用户界面需要的数据提取处理,最后进行结果数据的用户界面显示。
第三,本发明利用参数映射方法将输入输出文件的参数与结构化用户界面和关系数据(数据库)关联。在专业设计软件启动后,运行代理对象请求一个参数输入组件来完成输入数据映射、显示、检验和转换等处理。输出组件将计算结果存储至数据库中,并将专业设计计算结果通过数据映射给用户界面和数据库。
本发明中的基本数据表结构及其关系如图11所示,软件参数文件信息表的结构待定,其结构要视具体的实施项目中需要集成的专业设计软件而定,根据具体软件将分解为参数1、参数2直至参数n。注册软件信息表和软件运行参数表之间是“一对多”的关系,每一个注册软件可以对应着一个或者多个输入和输出参数文件,而每个参数文件对应着一个软件参数文件信息表,该表以“tb_参数文件显示名称”为命名规则,这样就形成了一个多表关系界面。
Claims (7)
1.一种燃气涡轮发动机设计软件集成方法,其特征在于,该方法的集成环境包括网络架构、业务处理和数据管理系统:网络架构由服务器和客户机组成;业务处理通过软件注册组件、运行控制组件、输入组件、输出组件、设计代理组件和数据访问组件实现,注册组件和运行控制组件直接响应用户对象的操作,输入组件、输出组件、设计代理组件和数据访问组件都通过运行控制组件间接响应用户对象的操作,其中输入组件、输出组件包容于运行控制组件中,设计代理组件和数据访问组件集成后台的计算软件、数据库及XML文件;数据管理系统采用Microsoft SQL Server和Oracle该方法的集成过程包括以下三个步骤:
步骤一、专业设计软件注册;
步骤二、专业设计软件的运行控制;
步骤三、专业设计软件输入输出设计参数映射和关联;
其具体运行过程是用户对象首先调用注册组件进行专业设计软件的注册,再将专业设计软件的注册信息映射至XML部署文件;进行设计计算时,通过输入组件准备输入数据,输入数据完备后,通过运行控制组件实例在对象池中激活并调用设计代理组件实例以启动专业设计软件进程,得到满意的计算结果后,运行控制组件实例把输入组件实例解析得到的格式化输入数据通过数据访问组件实例映射至数据库中,把输出组件实例解析得到的格式化输出数据通过数据访问组件实例映射至数据库中。
2.根据权利要求1所述的燃气涡轮发动机设计软件集成方法,其特征在于所述注册组件除进行专业设计软件添加外还实现专业设计软件的修改、卸载和注销管理,该组件提供专业设计软件添加接口函数、专业设计软件修改接口函数、专业设计软件卸载接口函数和专业设计软件注销接口函数,这些接口函数的调用流程相同,包括以下步骤:
步骤一、添加或修改或卸载或注销新软件;
步骤二、初始化COM环境;
步骤三、创建远程服务器注册组件;
步骤四、本地连接远程连接点;
步骤五、将添加信息作为输入参数传给Add接口函数或将修改信息作为输入参数
传给Modify接口函数或将卸载信息作为输入参数传给Delete接口函数
或将注销信息作为输入参数传给Destroy接口函数;
步骤六、判断添加或修改或卸载或注销信息是否有效,是则进入步骤七,否则进入步骤一;
步骤七、加载msxml3.dll;
步骤八、创建IXMLDOMDocument2Ptr类对象和创建IXMLDOMNodePtr类对象;
步骤九、调用msxml3.dll的写XML接口函数;
步骤十、将添加或修改或卸载或注销信息映射至XML文件;
步骤十一、本地断开连接点;
步骤十二、释放COM环境。
3.根据权利要求1所述的燃气涡轮发动机设计软件集成方法,其特征在于业务处理实现过程中的运行控制组件、输入组件、输出组件、数据访问组件四个组件以进程内组件方式实现,设计代理组件以进程外组件方式实现,这些组件采用统一的接口函数调用流程,该流程包括以下步骤:
步骤一、调用开始;
步骤二、判断该组件的接口是否有效,是则进入步骤七,否则进入步骤三;
步骤三、判断该组件类型,如果是设计代理组件则进入步骤十,否则进入步骤四;
步骤四、初始化组件实例;
步骤五、判断组件实例创建是否成功,是则进入步骤六,否则进入步骤九;
步骤六、组件实例工作环境初始化;
步骤七、输入组件接口函数调用;
步骤八、组件实例实现接口函数的业务处理,并返回处理结果,进入步骤十一;
步骤九、初始化失败告警,进入步骤十一;
步骤十、组件实例异常告警;
步骤十一、调用结束。
4.根据权利要求1所述的燃气涡轮发动机设计软件集成方法,其特征在于所述输入组件除了提供组件初始化接口函数外,还提供入参文件解析接口函数,该接口函数按以下步骤执行:
步骤一、调用开始;
步骤二、判断输入参数是否有效,是则进入步骤三,否则进入步骤九;
步骤三、输入参数文件类型获取,存在该类型文件解析,则进入步骤四,否则进入步骤九;
步骤四、根据输入参数文件类型判断对应文件是否存在,如果存在则进入步骤五,否则进入步骤九;
步骤五、根据该类型输入参数文件格式信息,解析对应文件,完成后进入步骤六;
步骤六、解析操作结果判定,解析成功,进入步骤七,否则进入步骤九;
步骤七、解析结果赋值,进入步骤八;
步骤八、返回S_OK,直接进入步骤十;
步骤九、返回S_FALSE;
步骤十、调用结束。
5.根据权利要求1所述的燃气涡轮发动机设计软件集成方法,其特征在于所述输入组件除了提供组件初始化接口函数外,还提供入参文件形成接口函数,该接口函数按以下步骤执行:
步骤一、调用开始;
步骤二、判断入参结构数据是否有效,是则进入步骤三,否则进入步骤八;
步骤三、待生成文件类型获取,存在该类型则进入步骤四,否则进入步骤八;
步骤四、根据文件类型以写文件格式打开对应的输入文件,打开成功进入步骤五,否则,进入步骤八;
步骤五、根据该类型输入参数文件格式信息,构写文件;
步骤六、写文件操作结果判定,写成功则进入步骤七,否则进入步骤八;
步骤七、返回S_OK,直接进入步骤九;
步骤八、返回S_FALSE;
步骤九、调用结束。
6.根据权利要求1所述的燃气涡轮发动机设计软件集成方法,其特征在于所述输出组件除了提供组件初始化接口函数外,还提供出参文件解析接口函数,其中出参文件解析接口函数按以下步骤执行:
步骤一、调用开始;
步骤二、判断输出参数是否有效,是则进入步骤三,否则进入步骤九;
步骤三、输出参数文件类型获取,存在该类型文件,进入步骤四,否则进入步骤九;
步骤四、根据输出参数文件类型判断对应文件是否存在,是则进入步骤五,否则进入步骤九;
步骤五、根据该类型输出参数文件格式信息,解析对应文件;
步骤六、解析操作结果判定,解析成功,进入步骤七,否则进入步骤九;
步骤七、输入文件解析结果赋值,
步骤八、返回S_OK,直接进入步骤十;
步骤九、返回S_FALSE;
步骤十、调用结束。
7.根据权利要求1所述的燃气涡轮发动机设计软件集成方法,其特征在于所述运行控制组件包容输入组件、输出组件,提供运行控制初始化接口函数、运行控制发起接口函数、运行控制终止接口函数、参数文件解析接口函数和参数文件形成接口函数;一个完整的设计计算过程中该组件各接口调用及接口执行流程综合处理如下:
步骤一、调用开始;
步骤二、判断运行控制组件接口是否有效,如果无效,则进入步骤三;否则进入
步骤五;
步骤三、通过CoCreatelnstance创建运行控制组件实例,获取接口指针;
步骤四、创建输入组件实例、输出组件实例、设计代理组件实例和数据访问实例并初始化;
步骤五、对象池中设计代理组件实例节余判断,无空闲设计代理组件实例则转入步骤二十一,有空闲设计代理组件则转入步骤六;
步骤六、在对象池中获取空闲设计代理组件实例,调用其初始化接口函数初始化本次计算环境,并登记本次计算;
步骤七、调用输入参数组件实例把用户界面的数据形成输入文件;
步骤八、调用设计代理组件实例的入参完备性检查接口函数检测入参数据文件完备性,完备则进入步骤九,否则进入步骤七;
步骤九、调用设计代理组件实例的入参文件传送接口函数把入参文件发送到服务器;
步骤十、传送结果判断,传送成功则进入步骤十一,否则进入步骤二十;
步骤十一、调用设计代理组件实例的专业软件运行接口函数开始计算,创建计算进程;
步骤十二、设置计算定时器;
步骤十三、定时器时间到则调用设计代理组件实例的计算状态获取接口函数,获取计算状态;
步骤十四、判断计算状态,如果状态为“完成”则结束该定时器,并进入步骤十五,否则进入步骤十二;
步骤十五、调用设计代理组件实例的出参文件获取接口函数得到计算结果文件;
步骤十六、调用输出组件实例解析输出文件,设计人员通过用户界面浏览计算结果是否可行,是则进入步骤十七,否则通过用户界面更改输入参数,进入步骤七;
步骤十七、调用输入组件实例解析入参文件,调用数据访问组件实例把解析结果保存到数据库中;
步骤十八、调用数据访问组件实例把计算运行信息保存到数据库中;
步骤十九、调用输出组件实例解析出参文件,调用数据访问组件实例把解析结果保存到数据库中,直接进入步骤二十一;
步骤二十、故障告警;
步骤二十一、对象池信息清理,进入步骤二十三;
步骤二十二、设计代理组件实例资源缺乏告警,进入步骤二十一;
步骤二十三、调用结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100462218A CN100370420C (zh) | 2006-03-31 | 2006-03-31 | 燃气涡轮发动机设计软件集成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100462218A CN100370420C (zh) | 2006-03-31 | 2006-03-31 | 燃气涡轮发动机设计软件集成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1825280A CN1825280A (zh) | 2006-08-30 |
CN100370420C true CN100370420C (zh) | 2008-02-20 |
Family
ID=36935966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100462218A Expired - Fee Related CN100370420C (zh) | 2006-03-31 | 2006-03-31 | 燃气涡轮发动机设计软件集成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100370420C (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100388289C (zh) * | 2006-09-14 | 2008-05-14 | 东北大学 | 面向复杂装备多学科设计软件集成的参数映射方法 |
CN105487850A (zh) * | 2015-06-19 | 2016-04-13 | 哈尔滨安天科技股份有限公司 | 一种基于组件工厂的全自动模块集成系统及方法 |
CN109871028B (zh) * | 2019-01-29 | 2021-08-10 | 华南理工大学 | 一种基于数据服务的无人机控制系统 |
CN110705084B (zh) * | 2019-09-26 | 2023-05-05 | 内蒙动力机械研究所 | 一种复合材料壳体的快速设计软件系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030105887A1 (en) * | 2001-12-03 | 2003-06-05 | Cox Burke David | Method and system for integration of software applications |
US20040015824A1 (en) * | 2001-01-23 | 2004-01-22 | Felkey Mark A. | Method and system for providing software integration for a telecommunications services on-line procurement system |
-
2006
- 2006-03-31 CN CNB2006100462218A patent/CN100370420C/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015824A1 (en) * | 2001-01-23 | 2004-01-22 | Felkey Mark A. | Method and system for providing software integration for a telecommunications services on-line procurement system |
US20030105887A1 (en) * | 2001-12-03 | 2003-06-05 | Cox Burke David | Method and system for integration of software applications |
Non-Patent Citations (4)
Title |
---|
基于COM的自动发电控制系统软件集成技术. 卢本捷,魏守平,路志宏,余波.计算机工程,第29卷第19期. 2003 * |
基于软构件的CAD软件集成方法和实例. 张毅,郭钢,徐宗俊,万海.机械工艺师. 2000 * |
燃气轮机系统仿真集成概念及其分布对象实现. 谢志武,苏明,翁史烈.航空动力学报,第15卷第3期. 2000 * |
航空发动机Engine CAD微机集成系统的开发与研究. 郭淑芬,陈军,王洪刚.航空动力学报,第15卷第1期. 2000 * |
Also Published As
Publication number | Publication date |
---|---|
CN1825280A (zh) | 2006-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7167864B1 (en) | Multimedia inspection database system (MIDaS) for dynamic run-time data evaluation | |
US20040143810A1 (en) | System and method for developing and processing building system control solutions | |
Bazjanac et al. | IFC HVAC interface to EnergyPlus-A case of expanded interoperability for energy simulation | |
CN100370420C (zh) | 燃气涡轮发动机设计软件集成方法 | |
Eastman | Recent developments in representation in the science of design | |
Reed et al. | Improving the aircraft design process using Web-based modeling and simulation | |
Riaz et al. | Set-based approach to passenger aircraft family design | |
Wang et al. | Unified design approach for systems engineering by integrating model‐based systems design with axiomatic design | |
Walker | Requirements of an object-oriented design method | |
CN116578614A (zh) | 一种管道设备的数据管理方法、系统、介质及设备 | |
CN115758789A (zh) | 一种复杂实时嵌入式系统的软件架构设计与架构传递方法 | |
Kao et al. | Business-to-business virtual collaboration of aircraft engine combustor design | |
CN115168998A (zh) | 一种基于Modelica语言的液体火箭发动机动态特性仿真方法 | |
Das et al. | Massively parallel in-database predictions using pmml | |
Welle et al. | CAD-centric attribution methodology for multidisciplinary optimization environments: enabling parametric attribution for efficient design space formulation and evaluation | |
Seeley et al. | Multidisciplinary analysis and optimization of combustion sub-system using a network-centric approach | |
Maw et al. | Efficient approach to database integration for an aerospace vehicle design and certification framework | |
Lee et al. | Data exchange for machine shop simulation | |
Zhou et al. | Study on meta-modeling method for performance analysis of digital power plant | |
Andres et al. | EDS—collaborating for a high performance parallel relational database | |
Moreland et al. | Leveraging production visualization tools in situ | |
Lu et al. | An investigation of model-based design framework for aero-engine control systems | |
Bogdanov et al. | Problems of development of complex multilayered applications in distributed environment | |
Edwards-lwe | A Client/Server Implementation of the Design Process Using PDES/STEP “Level 3” Data Sharing Architecture | |
Chen et al. | Model-Driven Optimization for the Conceptual Design of Aeroengine Turbine Flow Path |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080220 Termination date: 20140331 |