首页 / 专利库 / 版权及相关权 / 表演者 / 通用分布式机载设备健康管理仿真平台及其实现方法

通用分布式机载设备健康管理仿真平台及其实现方法

阅读:934发布:2020-12-05

专利汇可以提供通用分布式机载设备健康管理仿真平台及其实现方法专利检索,专利查询,专利分析的服务。并且本 发明 公开一种通用分布式机载设备健康管理仿真平台及其实现方法,所述的仿真平台采用中介者模式,主要包括仿真管理器、仿真成员 驱动器 和仿真成员三个部分;所述的仿真管理器负责管理各个仿真成员的信息、数据的接收和发送,以及数据解析工作;仿真成员驱动器用于加载运行各种仿真成员,并实现仿真成员与仿真管理器之间的信息交互;仿真成员用于执行各种数据解算,完成健康管理技术的功能。本发明的仿真平台是基于.net架构实现的,一方面实现了仿真成员对象与 算法 模型的开发同仿真成员间交互设计的分离,另一方面使仿真成员的信息交互及模型驱动的 软件 代码高度复用,不但减少了工作量,而且降低了开发工作的复杂程度。,下面是通用分布式机载设备健康管理仿真平台及其实现方法专利的具体信息内容。

1.通用分布式机载设备健康管理仿真平台,其特征在于:所述的仿真平台采用中介者模式,主要包括仿真管理器、仿真成员驱动器和仿真成员三个部分;所述的仿真管理器负责管理各个仿真成员的信息、数据的接收和发送,以及数据解析工作;仿真成员驱动器用于加载运行各种仿真成员,并实现仿真成员与仿真管理器之间的信息交互;仿真成员用于执行各种数据解算,完成健康管理技术的功能;各个仿真成员通过仿真成员驱动器将数据发送给仿真管理器,仿真管理器根据各仿真成员之间的数据源关系转发给以该仿真成员为数据源的其他仿真成员。
2.根据权利要求1所述的通用分布式机载设备健康管理仿真平台,其特征在于:所述的仿真管理器包括仿真管理窗体模、仿真控制模块、成员信息管理模块和通信服务器模块,其中的仿真管理窗体模块属于表示层,提供了用户操作界面,用户可通过该用户操作界面控制仿真管理器的启动与关闭以及设置相关参数;仿真控制模块属于仿真逻辑层,起到了中介者的作用,负责运行仿真的主体逻辑;技术实现层包括成员信息管理模块和通信服务器模块;成员信息管理模块内部包含一个仿真成员信息表,该仿真成员信息表负责维护当前与仿真管理器连接的各个仿真成员的基本信息以及仿真成员间的互操作关系。
3.根据权利要求2所述的通用分布式机载设备健康管理仿真平台,其特征在于:所述的仿真成员信息表包含的成员信息实现为:仿真成员信息表维护两部分信息,一部分是每个仿真成员的自身信息,另一部分是仿真成员之间的关系信息,这些信息都存储在键值对集合的结构体中;所述的仿真成员的自身信息包括节点类型、当前仿真时间和输入变量三个属性,所述的仿真成员之间的关系信息包含所属子联邦名称和数据提供者名称这两个关系属性,所有仿真成员信息的集合被封装到成员信息管理模块中,外部只能通过五个接口函数对仿真成员信息表进行有限的操作,所述的接口函数包括:添加新的仿真成员函数、更新指定仿真成员的仿真时间函数、设置仿真成员的所属子联邦函数、查询所有仿真成员函数和设置仿真成员的数据提供者函数。
4.根据权利要求1所述的通用分布式机载设备健康管理仿真平台,其特征在于:所述的仿真成员驱动器主要包括仿真驱动窗体模块、仿真中转模块、通用模型驱动模块、定时器模块和通信客户端模块,其中仿真驱动窗体模块属于表示层,仿真中转模块属于仿真逻辑层,通用模型驱动模块、定时器模块和通信客户端模块属于技术实现层;所述的仿真驱动窗体模块提供仿真成员的公共操作界面;
仿真中转模块负责处理所驱动的仿真成员的仿真逻辑;
定时器模块的作用是每隔一段时间触发一次定时事件来推进仿真,该定时事件与仿真表演者的相关回调函数相关联;定时器模块的行为包括启动定时、终止定时和设置定时间隔;
通信客户端模块与仿真管理器中的通信服务器模块一起,构成客户/服务器的通信架构,从而实现了仿真成员驱动器和仿真管理器间的通信;通信客户端模块的行为包括向通信服务器模块发起连接,发送仿真交互信息给通信服务器模块,同时还需要设置一个事件,在接收到来自通信服务器模块的交互信息时触发该事件,从而将交互信息提交给仿真中转模块进行处理;
通用模型驱动模块是连接仿真成员驱动器和仿真成员实体的桥梁,定义了动态链接库模型驱动器和Matlab模型驱动类,其中动态链接库模型驱动器用来驱动C语言或其他高级语言开发的动态链接库形式的模型,Matlab模型驱动器类用来驱动Matlab开发的M文件或Simulink文件形式的模型。
5.根据权利要求2或4所述的通用分布式机载设备健康管理仿真平台,其特征在于:
所述的仿真管理器中的通信服务器模块和仿真成员驱动器中的通信客户端模块实现为:把Socket服务器和客户端均设计为.net控件类,依靠.net架构下控件的固有的Invoke方法实现通信线程管理和线程之间的信息交互。
6.根据权利要求4所述的通用分布式机载设备健康管理仿真平台,其特征在于:所述的通用模型驱动模块实现为:开发仿真代理过渡程序集,它是一个在.net架构下由C++/CLI编写开发的动态库,在该动态库中包含一个名称固定的仿真代理基类,该类拥有一些固定的方法实现仿真行为,在这个仿真代理过渡程序集中引用模型的动态库文件,将模型的行为包容到仿真代理类中,结合.net反射机制,实现仿真驱动器动态加载各种托管和非托管的动态链接库模型;所述的固定的方法主要是指变量的读写,或者仿真的预备、推进和停止。
7.根据权利要求1所述的通用分布式机载设备健康管理仿真平台,其特征在于:所述的仿真成员包括对象模型或者算法模型文件、模型描述文件和成员窗体模块三个部分,对象模型或者算法模型文件实现健康管理系统的具体功能,算法模型文件是M模型文件或Simulink模型文件,或者动态链接库模型文件;模型描述文件用于描述对象模型或者算法模型文件的信息,包括对象模型或者算法模型文件名称和路径、模型的输入输出变量及其类型信息,用于仿真成员驱动器动态加载仿真模型;成员窗体模块用于显示仿真成员仿真解算的结果信息。
8.根据权利要求7所述的通用分布式机载设备健康管理仿真平台,其特征在于:所述的模型描述文件实现为:采用XML格式描述健康管理对象模型和算法模型,所要描述的信息包括数据信息和控制信息两部分;数据信息指的是该仿真成员仿真解算的接口信息,包括输入数据和输出数据两部分,控制信息指的是该仿真成员具有的状态,和相应状态下执行的行为;对于一般的XML模型描述文件,需要建立的数据表包括基本信息表、输入变量表、输出变量表、仿真预备指令表、仿真初始化指令表、仿真结束指令表、故障表以及故障关联变量表。
9.根据权利要求7所述的通用分布式机载设备健康管理仿真平台,其特征在于:所述的成员窗体模块实现为:采用.net反射技术,设计一个窗体模块基类,在窗体模块基类中包含虚方法,用于与仿真模型的信息交互,作为所有显示界面的基类;所有的成员窗体模块都作为该窗体模块基类的派生类,分别编写在不同的程序集中,并根据自身特点重写虚方法;仿真成员驱动器根据仿真成员信息从程序集中获取成员窗体模块的类型信息并实例化,反射加载到仿真驱动窗体模块的容器中。
10.权利要求1所述的仿真平台的仿真方法,其特征在于:
第一步:在局域网内的任意一台PC机上运行仿真管理器,在仿真管理窗体模块中选择通讯方式为Socket,然后启动Socket服务器,在整个过程中,仿真管理窗体模块显示各个仿真成员的工作状态信息;
第二步:启动客户端程序,在局域网内的任意一台PC机上运行仿真成员驱动器,首先配置仿真成员i的信息,第一项选择仿真色,独立节点、实体节点或者仿真联邦节点;第二项选择推进方式,数据源推进还是时钟推进;第三项选择加载XML模型描述文件和仿真成员窗体;第四项设置仿真成员名称、通讯方式Socket,以及服务器所在PC机的IP地址;
对于加载的模型为对象模型的仿真成员,还需要设置仿真解算周期、仿真时间步长和实际定时步长;
第三步:仿真预备:第一项,XML模型描述文件和仿真成员窗体加载进来后,连接服务器,若不成功,根据返回的失败信息寻找失败的原因,更改后重新连接;第二项进行仿真设置,对于目标对象联邦中的仿真成员,推进方式为时钟推进,该类仿真成员可以在仿真过程中设置模型故障;其他联邦中的仿真成员,推进方式都是数据源推进,首先进行仿真设置,查询已联入的仿真成员,选择自己的上一层联邦中的仿真成员作为自己的数据源;第三项仿真联邦节点仿真预备,仿真成员驱动器根据加载的XML模型描述文件运行模型文件,完成状态参数的初始化,以及模型的装载;
第四步:执行仿真任务:当所有要参与联合仿真的仿真成员i都完成第二步和第三步的仿真配置工作之后,各仿真成员都启动仿真,在仿真推进时,目标对象联邦中的仿真成员以时钟推进方式产生对象模型数据,其它联邦中的仿真成员接收自己数据源的输入数据,触发进行一次仿真解算,任务完成后输出仿真解算的结果,一次仿真过程结束;
第五步:仿真任务完成时,各仿真成员节点停止仿真,卸载模型,并释放一些相关的资源。

说明书全文

通用分布式机载设备健康管理仿真平台及其实现方法

技术领域

[0001] 本发明涉及飞机健康管理技术,尤其涉及一种通用分布式机载设备健康管理仿真平台及其实现方法。

背景技术

[0002] 现代的飞机是由导航系统、控制系统、动系统、通信系统等多个子系统组成的复杂工程系统,其中的一些子系统本身也属于复杂工程系统。在复杂工程系统上应用综合健康管理技术可以提高系统安全性和任务可靠性。机载设备健康管理系统的研发难度大、费用高昂,其发展路线为:首先采用数字仿真验证的方式,再将研究成果逐步应用到实际系统中。目前飞机健康管理技术正处在仿真验证阶段,而飞机组成复杂,系统繁多,若为每一个子系统单独开发一套健康管理仿真验证系统,既不经济,也很耗时。因此,为了让健康管理技术人员把更多的资金和精力投入到健康管理技术研发上,开发一个可用于各种机载设备健康管理系统仿真验证的通用分布式平台是非常有意义的。
[0003] 健康管理系统体系结构研究方面,美国波音公司、史密斯航天公司、华盛顿大学联合开发了集成健康管理系统项目管理、评估、开发到验证的系列软件工具,并依据国际标准OSA/CBM建立了七个层次的健康管理的分层体系结构,分别为:数据采集层、数据处理层、状态监测层、健康评估层、预测诊断层、决策支持层和表示层,见参考文献[1]:Keller K,BaldwinA,Ofsthun S,et al.Health management engineering environment and open integration platform[J].IEEE Aerospace Conference,March 2007)。
[0004] 分布式仿真技术方面,HLA/RTI系统为不同的分布仿真提供一个体系架构、一个仿真框架和一组用来交换数据的接口。高层体系结构HLA是一套构建分布式仿真系统的IEEE标准,运行支持环境RTI(Run-Time Infrastructure)是一个按照HLA接口规范开发的服务程序。但是,实现一个完全遵守HLA规范的分布式仿真平台是一项非常复杂的工作,有时候很困难也没有必要这样做,只需借鉴HLA的一些理念即可。
[0005] 目前,国内飞机健康管理技术的研究处在起步阶段,这方面的研究还很少,尚没有任何一家公司、单位或个人开发出用于飞机健康管理系统的通用分布式仿真验证平台。

发明内容

[0006] 为了解决现有技术中存在的问题,本发明的主要目的在于提供一种在.net架构下实现通用分布式机载设备健康管理系统仿真平台的方法。本发明方法实现的仿真平台可用于各种机载设备的健康管理系统分布式仿真验证,同时仿真系统中各个仿真成员可以灵活加载各种由Matlab开发的M模型文件或者Simulink文件和各种高级语言开发的动态链接库模型文件。
[0007] 所述的仿真平台采用中介者模式,主要包括仿真管理器、仿真成员驱动器和仿真成员三个部分;所述的仿真管理器负责管理各个仿真成员的信息、数据的接收和发送,以及数据解析工作;仿真成员驱动器用于加载运行各种仿真成员,并实现仿真成员与仿真管理器之间的信息交互;仿真成员用于执行各种数据解算,完成健康管理技术的功能;各个仿真成员通过仿真成员驱动器将数据发送给仿真管理器,仿真管理器根据各仿真成员之间的数据源关系转发给以该仿真成员为数据源的其他仿真成员。
[0008] 所述的仿真管理器包括仿真管理窗体模、仿真控制模块、成员信息管理模块和通信服务器模块,其中的仿真管理窗体模块属于表示层,提供了用户操作界面,用户可通过该用户操作界面控制仿真管理器的启动与关闭以及设置相关参数;仿真控制模块属于仿真逻辑层,起到了中介者的作用,负责运行仿真的主体逻辑;技术实现层包括成员信息管理模块和通信服务器模块;成员信息管理模块内部包含一个仿真成员信息表,该仿真成员信息表负责维护当前与仿真管理器连接的各个仿真成员的基本信息以及仿真成员间的互操作关系。
[0009] 所述的仿真成员驱动器主要包括仿真驱动窗体模块、仿真中转模块、通用模型驱动模块、定时器模块和通信客户端模块,其中仿真驱动窗体模块属于表示层,仿真中转模块属于仿真逻辑层,通用模型驱动模块、定时器模块和通信客户端模块属于技术实现层;所述的仿真驱动窗体模块提供仿真成员的公共操作界面;
[0010] 仿真中转模块负责处理所驱动的仿真成员的仿真逻辑;
[0011] 定时器模块的作用是每隔一段时间触发一次定时事件来推进仿真,该定时事件与仿真表演者的相关回调函数相关联;定时器模块的行为包括启动定时、终止定时和设置定时间隔;
[0012] 通信客户端模块与仿真管理器中的通信服务器模块一起,构成客户/服务器的通信架构,从而实现了仿真成员驱动器和仿真管理器间的通信;通信客户端模块的行为包括向通信服务器模块发起连接,发送仿真交互信息给通信服务器模块,同时还需要设置一个事件,在接收到来自通信服务器模块的交互信息时触发该事件,从而将交互信息提交给仿真表演者进行处理;
[0013] 通用模型驱动模块是连接仿真成员驱动器和仿真成员实体的桥梁,定义了动态链接库模型驱动器类和Matlab模型驱动器类,其中动态链接库模型驱动器类用来驱动动态链接库形式的模型,Matlab模型驱动器类用来驱动M文件或Simulink文件形式的模型[0014] 所述的仿真成员包括对象模型或者算法模型文件、模型描述文件和成员窗体模块三个部分,对象模型或者算法模型文件实现健康管理系统的具体功能,算法模型文件是M模型文件或Simulink模型文件,或者动态链接库模型文件;模型描述文件用于描述对象模型或者算法模型文件的信息,包括对象模型或者算法模型文件名称和路径、模型的输入输出变量及其类型信息,用于仿真成员驱动器加载仿真模型;成员窗体模块用于显示仿真成员仿真解算的结果信息。
[0015] 本发明的优点在于:
[0016] (1)所述的仿真平台是基于.net架构实现的,架构中现有的组件和特有的机制,例如Socket组件、反射机制、串行化支持等;同时,架构支持完全面向对象设计和跨语言开发,这些都大大降低了平台开发的难度。
[0017] (2)本发明平台采用中介者模式,把平台划分为健康管理仿真管理器、仿真成员驱动器和仿真成员三部分。仿真成员驱动器一方面提供了与仿真管理器交互的统一接口,另一方面提供了动态加载各种类型仿真成员的统一接口。在简化仿真成员交互关系的同时,保证仿真平台具有很好的通用性。在不修改仿真平台软件代码的情况下,可以在仿真平台上动态加载运行各种机载设备多种格式的对象模型和健康管理算法模型,从而仿真验证各种不同机载设备的健康管理系统。
[0018] (3)在该通用仿真平台的支持下,开发人员可以更加专注于具体应用中仿真成员的对象模型或者算法模型的设计,而不必关心如何使这些仿真成员正确交互。这样一方面实现了仿真成员对象与算法模型的开发同仿真成员间交互设计的分离,另一方面使仿真成员的信息交互及模型驱动的软件代码高度复用,不但减少了工作量,而且降低了开发工作的复杂程度。附图说明
[0019] 图1为本发明提供的机载设备健康管理仿真平台运行结构图;
[0020] 图2为机载设备健康管理仿真平台推进方式分类图;
[0021] 图3为机载设备健康管理仿真平台仿真节点分类图;
[0022] 图4为仿真管理器和仿真成员驱动器分层结构图;
[0023] 图5为仿真管理器的结构图;
[0024] 图5a为仿真管理器与仿真成员之间信息及其操作函数;
[0025] 图6为仿真成员驱动器结构图;
[0026] 图7为仿真成员结构图;
[0027] 图8为仿真成员窗体模块实现图;
[0028] 图9为仿真管理器和仿真成员驱动器之间仿真交互逻辑图;
[0029] 图10为仿真管理器和仿真成员驱动器之间通信实现图;
[0030] 图11为仿真成员驱动器模型驱动模块实现图;
[0031] 图12为机载设备健康管理仿真平台仿真操作流程图

具体实施方式

[0032] 下面结合附图对本发明提供的仿真平台及其实现方法进行详细说明。
[0033] 本发明提供一种通用分布式机载设备健康管理仿真平台,所述仿真平台结构如图1所示,所述的仿真平台的实现采用中介者模式,主要包括机载设备健康管理仿真管理器
1(简称仿真管理器1)、健康管理仿真成员驱动器2(简称仿真成员驱动器2)和健康管理仿真成员(简称仿真成员3)三个部分。所述的仿真管理器1负责管理各个仿真成员3的信息、数据的接收和发送,以及数据解析工作,不需要进行任何的仿真解算;所述的仿真成员驱动器2用于加载运行各种仿真成员3,并实现仿真成员3与仿真管理器1之间的信息交互;所述的仿真成员3用于执行各种数据解算,完成健康管理技术的功能。各个仿真成员3通过各自对应的仿真成员驱动器2将数据发送给仿真管理器1,仿真管理器1根据各仿真成员3之间的数据源关系转发给以该仿真成员3为数据源的其他仿真成员。
[0034] 参照OSA/CBM标准,借鉴HLA的“联邦”概念,一共划分六个联邦,分别为①目标对象联邦、②信号处理联邦、③状态监测联邦、④健康评估联邦、⑤预测诊断联邦和⑥决策支持联邦,序号表示了各层联邦之间的相邻关系。每个联邦内都包含n个仿真成员和一个仿真联邦节点,所有的联邦中的每个联邦成员都作为一个仿真成员,通过仿真成员驱动器,联入到仿真管理器,从而形成一个具有模块化和层次化特点的分布式机载健康管理仿真平台。图1中的箭头表示数据传输关系。在机载设备健康管理仿真平台中,除产生原始数据的①目标对象联邦外,每层联邦的输入数据都来自相邻的下层联邦的输出数据。位于同一联邦内的仿真成员都位于健康管理系统的同一层上,所以它们之间没有数据传输关系,仿真的推进是可以并行进行的。
[0035] 在分布式仿真平台中,各个仿真成员之间往往具有比较复杂的互操作关系,每个仿真成员往往需要了解两个甚至更多的其他仿真成员,这样就形成了比较复杂的关系图。本发明采用中介者模式,可以降低仿真成员间的耦合度。所述的中介者模式包括:
[0036] ①中介者色:中介者角色通过协调各同事角色实现协作行为,为此它要知道并引用各个同事角色。
[0037] ②抽象同事角色:定义中介者对象到同事对象的统一接口,保证每一个同事对象只知道中介者对象,而不知道其余的同事对象。
[0038] ③具体同事角色:每一个同事角色都知道中介者角色,而且与其他的同事角色通信的时候,一定要通过中介者角色协作。
[0039] 中介者模式使用单独的中介者对象简化各个同事对象的复杂交互行为。参照中介者模式的解决方案,本发明中建立机载设备健康管理仿真管理器1来简化仿真成员之间的复杂交互行为。在仿真运行的过程中,每个仿真成员3运行在各自所属的程序中,这些进程都与起中介者作用的仿真管理器1建立通信连接,而仿真成员3之间并不需要相互了解,也不必建立通信连接。仿真管理器1负责管理各个仿真成员3的基本信息,建立和维护仿真成员3间的各种交互关系,依照仿真成员3间的交互关系向仿真成员3发送互操作命令以及接收和分发交互数据。
[0040] 在中介者模式中,抽象同事角色是各个具体同事角色所拥有的共同接口,保证所有的具体同事以相同的形式与中介者进行交互,中介者不必关心具体同事的内部行为。仿真平台中的抽象同事角色为仿真成员驱动器2,它分成两个部分:一部分是与仿真管理器1交互的接口,对所有仿真成员3来说,这部分是相同的;另一部分是运行仿真成员3具体仿真行为,针对每个仿真成员3各不相同。对每个仿真成员3来说,仿真成员驱动器2的这两部分应该运行在同一个进程中,一部分作为程序运行的入口,编辑成可执行程序,另一部分作为这个可执行程序调用的文件,可以是动态链接库或支持这种调用方式的其它形式。由于.net架构下便于开发具有良好通用性的接口,本发明确定的方案是将公共交互接口编辑为可执行程序,将仿真成员3的具体行为编辑成被接口程序调用的动态库文件。
[0041] 在仿真过程中,同时运行着一个仿真管理器1和若干仿真成员驱动器2,每个仿真成员驱动器2都与仿真管理器1建立双向通信联系,不同的仿真成员3分别运行在各个仿真成员驱动器2中。所有仿真成员3和仿真管理器1在通信方面构成了一个以仿真管理器1为中心的星形拓扑结构。通过这样的组织结构,分布仿真的各个仿真成员3可以相互通信,协同运行。另外,每个联邦中的仿真联邦节点也分别通过各自对应的仿真成员驱动器实现与仿真管理器之间的互通信。本发明提供的仿真平台的仿真推进方式一共有两种,如图2所示,分别为时钟推进和数据源推进。机载健康管理系统的仿真作为实际工程系统的模拟,在总体上应采用时钟推进的仿真推进方式。
[0042] 在时钟推进的分布式仿真中,仿真时钟的管理是需要解决的重要问题。本发明根据机载健康管理系统体系结构的特点对仿真时间管理的问题进行简化。在同一个仿真时刻,复杂设备健康管理仿真平台中的上层联邦都需要得到与之相邻的下层联邦输出数据之后才能进行仿真解算,因此仿真的解算必须依照一定的次序进行。当到达某个仿真时刻时,首先由目标对象联邦进行仿真解算,将解算结果传递给信号处理联邦,然后信号处理联邦进行仿真解算,以此类推,最后直至决策支持联邦。虽然在某些时候,决策支持联邦的输出会作为目标对象联邦的输入,但这种情况下受到影响的是下一时刻目标对象联邦的输入,所以不会形成互。根据健康管理系统的这些特点,将目标对象联邦中的仿真联邦节点设置为时钟推进,其他联邦中的仿真联邦节点设置为数据源推进。具体的推进策略如下:
[0043] ①仅在目标对象联邦中设置仿真时钟,并设置一定的仿真时间推进步长ts和实际时间推进步长tr,初始仿真时刻为0。每隔tr时间定时器触发一次定时事件,仿真时间增加ts,并进行一次仿真推进,发布仿真结果和当时的仿真时间给仿真管理器1。
[0044] ②将仿真管理器1转发的目标对象联邦仿真结果作为信号处理联邦的仿真推进触发事件。这样在目标对象联邦完成仿真推进后,信号处理联邦从目标对象联邦的发布信息中读取仿真结果和仿真时间信息,然后立即进行一次仿真推进,同样发布仿真结果和当时的仿真时间。其余各层联邦也采用与信号处理联邦相同的方式推进仿真,将与其相邻的下层联邦发布仿真结果作为自己的仿真推进触发事件。
[0045] ③根据具体的设备健康管理系统实际,如果决策支持联邦的输出会对下一时刻目标对象联邦的输入产生影响,那么就将上一时刻决策支持联邦发布仿真结果也作为目标对象联邦仿真推进触发事件,除第一次仿真推进外,只有在该事件和定时器的定时事件都发生后目标对象联邦才进行仿真推进。
[0046] 所述的每个联邦内部可能有多个仿真成员,同一联邦的仿真成员都位于健康管理系统的同一层上,所以它们之间没有数据传输关系,仿真的推进是可以并行进行的。当联邦开始某次仿真推进时,联邦内部的仿真成员也开始推进仿真,直到所有的内部仿真成员都完成了仿真推进,整个联邦的仿真推进才算完成。
[0047] 本发明中仿真成员的分类实现情况如图3所示。把仿真推进方式从仿真成员的行为中剥离出来,所有仿真成员的仿真行为可以统一起来,即在一定条件下从仿真管理器1获得输入数据,进行仿真推进,完成仿真推进后将结果输出给仿真管理器1。由于不同仿真成员3拥有相似的行为,所以该仿真平台将它们的行为统一起来,为了保证仿真平台有更好的通用性,在更高的层次上把仿真成员3分为两类:一类是驱动运行仿真实体的实体节点,另一类是负责将若干仿真成员3组织到一个联邦中的仿真联邦节点。两种节点在仿真推进时的内部行为是不同的,实体节点进行内部解算,并输出解算结果。而仿真联邦节点需要将数据发送给所有加入到该联邦的仿真成员进行仿真推进。每个仿真成员完成仿真推进后,会将该信息和输出的结果提交给仿真联邦节点,仿真联邦节点在其对应联邦的所有仿真成员都完成仿真推进后再将仿真结果输出,该联邦的一次仿真推进才算完成。另外,如果某个层次对应的联邦内部只有一个仿真成员,那么可以用一个实体节点来代表这个联邦,在运行时也可以省略许多交互逻辑的运行,这个时候称该仿真成员为独立节点。
[0048] 本发明中仿真管理器1和仿真成员驱动器2均采用分层结构,各层次间的信息交互实现方法如图4所示。两者的层次结构相同,各层的具体内容则有所不同。所述的层次结构一共分为三层,自上至下分别为表示层、仿真逻辑层和技术实现层。表示层提供了与操作用户交互的界面,用来接收用户的指令以及显示各种仿真状态信息。仿真逻辑层是连接表示层和技术实现层的桥梁,仿真逻辑层的作用体现在两方面,一是接收来自表示层的用户指令,调用技术实现层执行相关的动作;一是捕获技术实现层的状态变化,将其传达到表示层进行显示。技术实现层由若干独立的模块组成,这些模块有的存储仿真状态和模型数据,有的给出仿真平台所需各种功能的具体实现,这些功能包括网络通信功能、软件定时功能、模型描述文件的读取以及模型程序的装载和驱动功能等。各层次的信息在相邻层之间双向流通,.net架构中的包容引用和委托事件机制可以方便的予以实现。上层对象对下层对象的访问通过包容下层对象的引用来实现,而下层对象对上层对象的访问,则是通过将上层对象的成员方法关联到下层对象中的委托事件来实现的。这样才能保证顶层的操作指令传达到底层,同时底层的状态变化能够通知到顶层。
[0049] 本发明中仿真管理器1的结构实现如图5所示。所述的仿真管理器1包括仿真管理窗体模块101、仿真控制模块102、成员信息管理模块103和通信服务器模块104,其中的仿真管理窗体模块101属于表示层,提供了用户操作界面,用户可通过该用户操作界面控制仿真管理器1的启动与关闭以及设置相关参数。仿真控制模块102属于仿真逻辑层,起到了中介者的作用,负责运行仿真的主体逻辑。在整个仿真系统中,仿真控制模块102接收并解析来自各个仿真成员3的各种交互信息,根据需要向各个仿真成员3发送操作信息。技术实现层包括成员信息管理模块103和通信服务器模块104。成员信息管理模块103内部包含一个仿真成员信息表,该仿真成员信息表负责维护当前与仿真管理器1连接的各个仿真成员3的基本信息以及仿真成员3间的互操作关系。仿真成员信息表的类型为键值对集合,键为仿真成员名称,值为一个自定义的结构体,描述仿真成员3的相关信息。应用程序间的通信是整个仿真平台必须要实现的功能,参照客户/服务器架构,在仿真管理器1上部署通信服务器模块104,在仿真成员驱动器2上部署通信客户端模块205。通信服务器模块104就是起服务器作用的对象。通信服务器模块104需要实现的功能包括侦听并回复新的仿真成员3对仿真管理器1的连接请求,接收已经连接到仿真管理器1的仿真成员3发送的信息,把信息发送给指定的仿真成员3。图5中的Socket服务器是采用Socket技术实现的具体通信服务器。
[0050] 所述的仿真成员信息表中包含的成员信息实现如图5a所示。仿真成员信息表需要维护两部分信息,一部分是每个仿真成员3的自身信息,另一部分是仿真成员3之间的关系信息。这些信息都存储在键值对集合的结构体中。所述的仿真成员3的自身信息包括节点类型、当前仿真时间和输入变量三个属性,其中的节点类型包括实体节点、仿真联邦节点和独立节点三种;当前的仿真时间在仿真成员3发布输出数据时由仿真管理器1获得并显示,用户通过仿真管理器界面监测每个仿真成员3的仿真进度;输入变量的名称是数据发送的依据,仿真管理器1以输入变量的名称为根据,对数据提供者输出的数据进行过滤,只将接收方关心的部分提取出来进行转发,避免了网络资源的浪费。以上三个属性描述仿真成员的自身信息,由于仿真成员名称已经作为键值存在,所以仿真成员名称属性不必再包含在键值对集合的结构体中。所述的仿真成员3之间的关系信息包含所属子联邦名称和数据提供者名称这两个关系属性,所述的两个关系属性的值可以为空,如果不为空则必须为某个已存在的仿真成员的名字。为保证数据的一致性,存储所有仿真成员信息的集合将被封装到成员信息管理模块103中,外部只能通过五个接口函数对仿真成员信息表进行有限的操作,所述的接口函数包括:添加新的仿真成员函数、更新指定仿真成员的仿真时间函数、设置仿真成员的所属子联邦函数、查询所有仿真成员函数和设置仿真成员的数据提供者函数。
[0051] 本发明中的仿真成员驱动器2的结构实现如图6所示。所述的仿真成员驱动器2主要包括仿真驱动窗体模块201、仿真中转模块202、通用模型驱动模块203、定时器模块
204和通信客户端模块205,其中仿真驱动窗体模块201属于表示层,仿真中转模块202属于仿真逻辑层,通用模型驱动模块203、定时器模块204和通信客户端模块205属于技术实现层。所述的仿真驱动窗体模块201提供复杂设备健康管理系统仿真成员的公共操作界面,包含以下功能:
[0052] ①仿真对象的装载:通过向导式的页面引导用户将仿真成员3的对象模型或者算法模型文件301和成员窗体模块303以正确的形式装载到仿真成员驱动器2中;
[0053] ②仿真运行流程的控制:控制仿真的启动、暂停和终止;
[0054] ③仿真交互关系的设置:通过操作面板向仿真管理器1发起连接,设置与其它仿真成员3交互的互操作关系;
[0055] ④健康管理系统的故障注入:根据仿真对象的不同显示可注入的故障种类,每种显示的故障可以选中并注入到仿真模型中;
[0056] ⑤显示仿真信息:在操作面板上显示的信息包括本节点与仿真管理器1的会话内容,当前的仿真时刻以及所装载的仿真成员3的基本信息,同时提供一个用于部署和显示用户窗体的容器。
[0057] 在仿真成员驱动器2的架构中,仿真中转模块202是属于仿真逻辑层对象,它负责处理所驱动的仿真成员3的仿真逻辑。与仿真管理器1中的仿真控制模块102相同,仿真中转模块202在程序内部也起到了中介者的作用。仿真中转模块202具有如下的功能:
[0058] ①获取技术实现层对象提交的仿真交互信息,并按照相关的仿真逻辑进行解析和处理;
[0059] ②接收来自表示层的用户指令,调用技术实现层的功能模块完成对仿真模型的驱动;
[0060] ③通过事件机制将接收到的交互信息及时地提交给表示层的仿真驱动窗体模块201显示。
[0061] 定时器模块204是技术实现层的功能模块之一,它的作用是每隔一段时间触发一次定时事件来推进仿真,该事件与仿真表演者的相关回调函数相关联。定时器模块204的行为包括启动定时、终止定时和设置定时间隔。定时事件只有在定时器模块204启动的情况下才会触发。
[0062] 通信客户端模块205也是隶属于技术实现层的功能模块,它与仿真管理器1中的通信服务器模块104一起,构成客户/服务器的通信架构,从而实现了仿真成员驱动器2和仿真管理器1间的通信。通信客户端模块205的行为包括向通信服务器模块104发起连接,发送仿真交互信息给通信服务器模块104等,同时还需要设置一个事件,在接收到来自通信服务器模块104的交互信息时触发该事件,从而将交互信息提交给仿真中转模块202进行处理。由于只有使用相同种类实现技术的通信服务器和通信客户端之间才能通信,这里也定义了采用Socket技术的具体通信Socket客户端,与仿真管理器1中的Socket服务器相对应。
[0063] 技术实现层的另一个功能模块是通用模型驱动模块203,它是连接仿真成员驱动器2和仿真成员3的桥梁。定义了动态链接库模型驱动器和Matlab模型驱动器。其中动态链接库模型驱动器用来驱动由C语言或其他高级语言开发的动态链接库形式的模型,Matlab模型驱动器用来驱动由Matlab开发的M文件或Simulink文件形式的模型。
[0064] 本发明中各个仿真成员的结构实现如图7所示,它包括对象模型或者算法模型文件301、模型描述文件302和成员窗体模块303三个部分。对象模型或者算法模型文件301实现健康管理系统的具体功能,如产生对象数据、评估健康状态、预测故障等,算法模型文件可以是由Matlab开发的M模型文件或Simulink模型文件,或者由C语言或其他高级语言开发的动态链接库模型文件;模型描述文件302用于描述对象模型或者算法模型文件301的信息,包括对象模型或者算法模型文件名称和路径、模型的输入输出变量及其类型等信息。模型描述文件302的一个重要作用是用于仿真成员驱动器2加载仿真模型。成员窗体模块303用于显示仿真成员3仿真解算的结果信息。
[0065] 所述的仿真成员3包含的成员窗体模块303的实现方法如图8所示。成员窗体模块303专显示对象模型和算法模型的部分输入输出信息,对不同的对象模型和算法模型,其输入输出参数的种类往往不同,所解决的具体问题也各不相同,在这种情况下,也应该使用不同的显示界面,所以成员窗体模块303是动态加载到仿真成员驱动器2上的。由于成员窗体模块303与对象模型和算法模型是分离的,因此必须提供相关的接口将对象模型和算法模型的输入输出数据传送给成员窗体模块303。这里采用了反射技术,设计一个窗体模块基类,在窗体模块基类中包含虚方法,用于与仿真模型的信息交互,可以作为所有显示界面的基类。所有的成员窗体模块303都作为该窗体模块基类的派生类,分别编写在不同的程序集中,并根据自身特点重写虚方法。仿真成员驱动器2根据仿真成员信息从程序集中获取成员窗体模块303的类型信息并实例化,反射加载到仿真驱动窗体模块303的容器中。
[0066] 本发明仿真管理器1与仿真成员驱动器2之间的交互逻辑实现如图9所示。在仿真逻辑层上,交互信息的结构分为命令和参数两部分。二者收到交互信息后先解析命令,然后根据命令调用相关函数处理数据并执行仿真逻辑。仿真交互逻辑分为四个主要部分,分别是仿真成员登记逻辑、仿真成员交互关系设置逻辑、交互数据传输逻辑和仿真成员退出逻辑。
[0067] ①仿真成员登记逻辑:实现的是令某个仿真成员3建立与仿真管理器1的连接关系,从而加入联合仿真的功能。首先,新的仿真成员会向仿真管理器1发送加入联合仿真的请求,包含名称、类型和输入参数三个参数,其中名称和类型,分别为该仿真成员3的名称和仿真节点类型,输入参数为该仿真成员输入变量的名称。仿真管理器端的仿真控制模块102收到该请求后首先判断该仿真成员3的名字是否和已经加入联合仿真的其他仿真成员冲突,如果不存在名称冲突则允许其加入,将该仿真成员3的信息记录到仿真成员信息表中,回复批准加入联合仿真的信息,如果存在冲突则回复拒绝其加入的信息。
[0068] ②仿真成员交互关系设置逻辑:主要表现为数据发送和接收关系以及联邦的所属关系设置。已经加入联合仿真的仿真成员3可以向仿真管理器1发送请求信息,将某个其他的仿真成员3设置为自己的数据源(也叫数据提供者),所述的请求信息包括成员名称和数据源名称,表示发出请求的仿真成员的名称和它指定的数据源的名称。仿真管理器1在收到该请求后首先判断数据源名称对应的仿真成员3是否存在,若存在则调用仿真成员信息表的相关接口函数设置该信息,并回复数据提供者设置成功的信息,否则直接回复设置失败的信息。此外,为了方便设置数据源,每个仿真成员3可以向仿真管理器1查询当前已经登记到仿真管理器1上的其他仿真成员3,这样就可以直接选择已存在的其他仿真成员3作为自己的数据源。
[0069] 仿真成员3加入仿真联邦的过程与设置数据源的过程基本相同,涉及到的仿真逻辑也大致相同。因为信息需要在仿真管理器1、仿真联邦节点和请求加入该联邦的仿真成员3三者之间传输。例如当仿真成员A请求加入联邦B时,仿真成员A向仿真管理器1提出加入联邦B的请求,仿真管理器1将该请求转发给联邦B对应的仿真联邦节点。联邦B批准或拒绝仿真成员A的加入请求也需要通过仿真管理器1进行转发。
[0070] ③交互数据传输逻辑:首先是仿真成员3在每次仿真推进后提交仿真结果的逻辑,提交仿真结果的逻辑参数包括名称和推进时间,名称为提交数据的仿真成员名称,推进时间为本次仿真解算结果对应的仿真时间。除此之外,所有的仿真结果也都按照名字和值的对应关系存储在哈希表中。仿真管理器1接收到仿真结果后,将结果发送给将该仿真成员设置为数据源的其他节点,如果该仿真成员属于某个联邦,数据也将提交给该联邦对应的仿真联邦节点。
[0071] ④仿真成员退出逻辑:为了保证逻辑的完整性,还需要添加仿真成员主动退出联合仿真的逻辑。由仿真成员3向仿真管理器1发出退出请求,所述的退出请求包含一个名称参数,代表退出联合仿真的仿真成员名称。仿真管理器1收到该退出请求后将仿真成员名称对应的信息从仿真成员信息表中删除,还要将把该仿真成员作为数据源的信息清空,并发送数据源退出联合仿真的信息给所有相关的其他仿真成员。
[0072] 本发明仿真管理器1中的通信服务器模块104和仿真成员驱动器2中的通信客户端模块205的实现方法如图10所示。机载设备健康管理仿真平台的运行调度有着严格逻辑次序,所以本发明使用Socket技术进行网络开发,选用的通信协议是面向可靠连接的TCP协议,同时采用同步通信方式和多线程的设计方案。在通信客户端模块205除了主线程外,还要开辟一个接收数据的线程。通信服务器模块104除了主线程之外,还要对每个已连接到服务器的仿真成员(客户)开辟单独的线程以接收它们的通信请求。在Windows系统中,只有在创建窗体界面的主线程中才能对界面及界面上的显示控件进行操作,否则会因句柄映射查找错误而引发异常。.net框架中控件类的Invoke方法提供了很好的解决方案,控件对象调用该Invoke方法,其关联的函数就将在创建该控件对象的线程中执行,本发明就是采用这种方法来唤醒主线程的。因此定义了SocketServerCtrl类和SocketClientCtrl类,前者管理侦听连接的线程,在通信服务器模块104实例化,后者管理接收数据的线程,同时在通信服务器模块104和通信客户端模块205实例化。这两个类都是控件基类的派生类,分别包容了TcpListener对象和TcpClient对象,并且提供了公有的委托成员变量,线程函数也都以这两个类成员函数的形式出现。在线程函数的循环体的处理部分调用Invoke方法使委托变量关联的函数在主线程中调用。这样线程管理,Socket的侦听和发送、接收数据都得到了很好的封装。外部可以像使用其他控件一样方便地使用这两个类。
[0073] 另外,在网络应用程序的开发中,数据必须转化成流的形式才能进行发送。在.net类库中,网络数据的发送和接收可通过网络流对象实现,其支持的数据格式为二进制型的数组,所以需要采用串行化和反串行化的技术,但对象串行化的具体实现本身是十分复杂的工作。.net类库提供了BinaryFormatter类用于方便实现二进制串行化和反串行化。它的优点是速度快,可以串行私有或者受保护的成员,在不同版本的.net中都兼容。
[0074] 本发明中仿真成员驱动器2驱动仿真成员3的实现方法如图11所示。主要包括仿真成员3中模型描述文件302的实现和仿真成员驱动器2中通用模型驱动模块203的实现。
[0075] ①仿真成员模型描述文件302的实现方法。
[0076] 要实现本发明提供的机载健康管理仿真平台的通用性,仿真成员模型必须具备自描述的特性。模型自描述是指仿真模型中包含能够说明自身作用、性能、行为及输入输出接口的信息,并且该信息能够被通用模型驱动模块203读取。本仿真平台支持的模型开发方式有两种,一种是使用Matlab软件进行开发,所生成模型的形式为M模型文件或者Simulink模型文件;一种是使用C语言或其他高级语言开发,生成模型的形式为动态链接库模型文件。Matlab开发的模型是不具备自描述功能的,C或其他高级语言开发的模型在大多数情况下也不具备自描述功能。因此,本发明采用XML描述文件来描述健康管理仿真成员模型信息。在系统运行时,仿真成员驱动器2首先从模型描述文件302中读取仿真成员信息,然后仿真成员驱动器2根据仿真成员信息的内容装载和驱动仿真模型。XML描述文件描述健康管理系统模型的优点为:人为可读性强、方便计算机读写和自描述性好,同时在.net架构中提供了很好的XML支持。对于一般的仿真成员3,它所要描述的信息包括数据信息和控制信息两部分。数据信息指的是该仿真成员3仿真解算的接口信息,包括输入数据和输出数据两部分。控制信息指的是该仿真成员3具有的状态,和相应状态下执行的行为。对于一般的XML模型描述文件302,需要建立的数据表包括基本信息表、输入变量表、输出变量表、仿真预备指令表、仿真初始化指令表、仿真结束指令表、故障表以及故障关联变量表等。
[0077] 基本信息表的属性包括模型文件名称、模型文件路径、模型文件种类以及模型名称等,这些属性的参数类型均为字符串。其中模型文件名称指的是模型所对应的M文件、Simulink模型文件或动态链接库文件的名称,模型文件路径就是以上文件所在的文件目录。通用模型驱动模块203通过这两个信息在系统中查找到模型文件,并将其加载。模型文件种类是十分重要的信息,通用模型驱动模块203根据模型种类的不同为模型选择合适的模型驱动器,当模型种类为M或Simulink模型文件时,通用模型驱动模块203会自动选择Matlab模型驱动器,当模型种类为动态链接库时,通用模型驱动模块203会选择动态链接库模型驱动器。模型名称是一个附加参数,当模型为Matlab模型时,该参数就是Matlab模型名称,通用模型驱动模块203将根据该名称打开模型。当模型为动态链接库模型时,通用模型驱动模块203将根据该参数构造动态库的相关对象。由于每个XML模型描述文件只负责描述一个模型,所以基本信息表中总是有且只有一条记录。
[0078] 输入变量表和输出变量表分别描述模型仿真推进时的输入输出信息。这两个表都包含变量名称、变量类型和交互名称这三个属性。变量名称为变量在仿真成员内部的唯一标识,由对象模型或算法模型的开发人员决定,根据模型种类的不同,其实际意义也有所不同。交互名称是变量在整个分布仿真系统上的唯一标识,由设计仿真系统结构的开发人员决定。在每个仿真模型各自开发的过程中,开发人员可能在不同仿真模型中使用了相同的变量名称。如果将模型内部变量名称也作为变量在整个仿真系统上的唯一标识,那么可能在联调时发现无关的仿真成员输入输出变量名称冲突,这就需要修改仿真模型,降低了开发效率。即使不同仿真模型的开发人员可以提前沟通,也会使开发受到限制,也不能完全避免这类问题的发生,而沟通本身也会影响开发进度。所以需要将变量名称与交互名称区分开。变量类型是十分重要的信息,系统将根据变量类型在仿真交互时为变量赋值,特别对于Matlab模型驱动器来说,它给简单变量赋值和给数组赋值所进行的操作是不一样的。输入变量表和输出变量表中记录的数目根据具体的模型有所不同,有时其中的一个表也可以为空。
[0079] 对于一个特定的仿真成员3来讲,仿真成员3的动作包括仿真预备、仿真推进和仿真停止三种。在仿真预备时,仿真成员3进行一些状态参数的初始化,以及模型的装载等工作。在仿真推进时,仿真成员3接收输入数据,进行一次仿真解算,然后输出解算结果。在仿真停止时,模型将卸载,一些相关的资源将被释放。在仿真预备、仿真推进和仿真停止时仿真对象进行的这些工作分为两种。一种属于对所有同类型的模型都要进行的操作,比如Matlab引擎的启动和关闭,动态链接库的装载,这些操作通过仿真成员驱动器2的通用模型驱动模块203实现;另一种属于特定操作,根据模型的不同,其行为会有所不同,这些操作在模型描述文件302中实现。通用模型驱动模块203通过仿真预备指令表、仿真初始化指令表和仿真结束指令表中存储的指令名称信息驱动模型执行这些特定操作。
[0080] 故障表并不是所有模型都需要的,只有需要设置故障的模型才会有故障表。故障表的属性包括故障名称和描述名称两部分。由于本发明实现机载设备健康管理仿真平台,所以故障也作为平台通用化的一部分,所有的故障都显示在仿真驱动窗体模块201中,用户可以在仿真过程中动态添加故障,而描述名称就是各个仿真驱动窗体模块201中显示的标签信息。
[0081] 故障关联变量表和故障表中的记录是相对应的,对每一个故障,都有一个与它名称相同的故障关联表。故障关联表的属性包括关联变量名称、故障状态下变量值以及健康状态下变量值。当用户设置某个故障时,通用模型驱动模块203会根据故障名称查找到故障关联表,并将故障关联表中所有变量设置为故障状态下的变量值。故障关联变量表中的记录数目通常为1个,但也有可能为多个,因此在设计时没有与故障表合并。
[0082] ②通用模型驱动模块203的实现方法。
[0083] 仿真成员驱动器2通过通用模型驱动模块203设置仿真模型的输入参数、读取仿真模型的输出数据、驱动模型进行解算以及向模型注入故障,因此通用模型驱动模块203需要针对这些功能给出对外的接口方法。为了能够驱动不同种类的仿真模型,对通用模型驱动模块203的设计应用了工厂模式。定义了Matlab模型驱动器类和动态链接库模型驱动器类,Matlab模型驱动器类用来驱动由Matlab开发的M文件或Simulink文件形式的模型,动态链接库模型驱动器类用来驱动由C语言或其他高级语言开发的动态链接库形式的模型。
[0084] Matlab模型驱动器:Matlab是非常优秀的仿真建模工具,在机载健康管理系统的仿真研究阶段,无论是对象模型建模,还是对系统健康状态分析的各种算法大多用Matlab开发,所以有必要在仿真平台上集成Matlab的驱动功能,这样在加载由Matlab开发的对象模型和算法模型时就只需编写模型描述文件302,不必每次都额外编写调用Matlab功能的程序。本发明通过在.net架构下调用Matlab的COM组件的方法实现。
[0085] 动态链接库模型驱动器:本发明采用.net架构下特有的反射机制巧妙的实现动态链接库的灵活加载。反射对于开发人员来说是一个强大的工具,它允许开发人员构建可动态扩展的应用程序。机载设备健康管理仿真平台就可以被认为是一个可动态扩展的应用程序,动态链接库形式的模型可以被看作是应用程序的扩展部分,因此可以使用反射技术实现动态库形式仿真模型的装载和驱动。
[0086] 在.net平台下开发的程序集和模块是具有自描述功能的,编译器在程序集生成的同时会为它们创建相关的类型定义表、字段定义表和方法定义表等。在反射技术的支持下,程序集可以像数据文件一样被加载。同时可以获得程序集的所有类型信息,并进一步获得程序集中各个类的构造函数信息,方法信息和属性信息等,从而对程序集中的对象进行操作。在实际应用中,可能遇到各种模型动态库文件,它们的导出函数各不相同,可能是.net环境下编写的托管动态链接库文件,也可能是不在.net开发环境下编写的非托管动态链接库文件。为了适应这两种情况以确保平台的通用性,本发明所采取的方法是建立一个仿真代理过渡程序集,这是一个在.net架构下由C++/CLI编写开发的动态库,在该动态库中包含一个名称固定的仿真代理基类,该类拥有一些固定的方法实现仿真行为,如变量的读写、仿真的预备、推进和停止等。在这个仿真代理过渡程序集中引用模型的动态库文件,将模型的行为包容到仿真代理类中,仿真成员驱动器2通过反射加载这个仿真代理过渡程序集,从而间接地加载了模型的动态库文件。仿真代理过渡程序集起到统一接口作用,具体包含以下一些入口函数:
[0087] a.Sim_Initialize:通知模型进行仿真预备,该方法没有参数;
[0088] b.Sim_End:通知模型结束仿真,该方法也没有参数;
[0089] c.Sim_Advanced:通知模型进行一次仿真解算;
[0090] d.GetVarValue:获得指定变量的值;
[0091] e.SetVarValue:设置指定变量的值。
[0092] 另外,仿真代理过渡程序集内部构建一个哈希表类型的变量,所有允许外部访问的变量都存储在这个哈希表中,这样GetVarValue和SetVarValue方法的实现就变成了对哈希表中值的读写。同时,C++/CLI是托管环境下的C++,它在传统C++的基础上又包容了托管对象的相关访问语法。如果模型动态库是非托管的,那么用C++/CLI开发的仿真代理过渡程序集就恰好可以作为连接两者的纽带。
[0093] 本发明仿真平台的仿真操作流程图如图12所示。
[0094] 第一步:在局域网内的任意一台PC机上运行仿真管理器1,在仿真管理窗体模块101中选择通讯方式为Socket,然后启动Socket服务器。在整个过程中,仿真管理窗体模块101显示各个仿真成员3的工作状态信息;
[0095] 第二步:启动客户端程序,在局域网内的任意一台PC机上运行仿真成员驱动器2,首先配置仿真成员i的信息,第一项选择仿真角色,独立节点、实体节点或者仿真联邦节点;第二项选择推进方式,数据源推进还是时钟推进;第三项选择加载XML模型描述文件和仿真成员窗体;第四项设置仿真成员名称、通讯方式Socket,以及服务器所在PC机的IP地址。对于加载的模型为对象模型的仿真成员,还需要设置仿真解算周期、仿真时间步长和实际定时步长。
[0096] 第三步:仿真预备:第一项,XML模型描述文件和仿真成员窗体加载进来后,连接服务器,即加入仿真,若不成功,根据返回的失败信息寻找失败的原因,更改后重新连接;第二项进行仿真设置,对于目标对象联邦中的仿真成员,推进方式为时钟推进,该类仿真成员可以在仿真过程中设置模型故障。其他联邦中的仿真成员,推进方式都是数据源推进,首先进行仿真设置,查询已联入的仿真成员,选择自己的上一层联邦中的仿真成员作为自己的数据源(即数据提供者)。第三项仿真联邦节点仿真预备,仿真成员驱动器2根据加载的XML模型描述文件运行模型文件,完成状态参数的初始化,以及模型的装载。
[0097] 第四步:执行仿真任务:当所有要参与联合仿真的仿真成员i都完成第二步和第三步的仿真配置工作之后,各仿真成员都启动仿真,在仿真推进时,目标对象联邦中的仿真成员以时钟推进方式产生对象模型数据,其它联邦中的仿真成员接收自己数据源的输入数据,触发进行一次仿真解算,任务完成后输出仿真解算的结果,一次仿真过程结束。
[0098] 第五步:仿真任务完成时,各仿真成员节点停止仿真,卸载模型,并释放一些相关的资源。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈