首页> 中国专利> Windows操作系统环境下的飞行模拟系统

Windows操作系统环境下的飞行模拟系统

摘要

本发明公开了一种Windows操作系统环境下的飞行模拟系统,包括:组件化节点部分,其用于为飞行模拟器中各节点程序提供统一的管理和注册方式;内存数据库部分,其用于为组件化节点部分内数据提供一种快速索引、查找方式;通信部分,其为内存数据库部分提供统一的读写数据接口,用于为内存数据库部分屏蔽底层通信细节的复杂性,提供统一的抽象,提高飞机模拟系统部署环境的灵活性。本发明解决模拟器节点间数据管理、共享的问题,满足飞行模拟器在各种使用场景下的需求,实现了代码的可重用、可移植。

著录项

  • 公开/公告号CN106775867A

    专利类型发明专利

  • 公开/公告日2017-05-31

    原文格式PDF

  • 申请/专利权人 西北工业大学;

    申请/专利号CN201611156344.7

  • 申请日2016-12-14

  • 分类号G06F9/445(20060101);G06F9/54(20060101);G06F17/30(20060101);

  • 代理机构44202 广州三环专利代理有限公司;

  • 代理人郭永丽

  • 地址 710072 陕西省西安市友谊西路127号

  • 入库时间 2023-06-19 02:23:20

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-11-11

    专利权的转移 IPC(主分类):G06F 9/445 专利号:ZL2016111563447 登记生效日:20221031 变更事项:专利权人 变更前权利人:西北工业大学 变更后权利人:智盈未来(西安)信息技术有限公司 变更事项:地址 变更前权利人:710072 陕西省西安市友谊西路127号 变更后权利人:710065 陕西省西安市高新区茶张路号1幢1单元11805室

    专利申请权、专利权的转移

  • 2020-01-17

    授权

    授权

  • 2017-06-23

    实质审查的生效 IPC(主分类):G06F9/445 申请日:20161214

    实质审查的生效

  • 2017-05-31

    公开

    公开

说明书

技术领域

本发明涉及飞行模拟技术领域,更具体地说,本发明涉及一种在Windows操作系统下的飞行模拟系统。

背景技术

随着数字计算机的出现和发展,自20世纪80年代起,数字技术逐渐被应用到飞行模拟器的开发研究中,目前数字式飞行模拟器已成为国内外众多知名飞行模拟器研究机构和生产厂商的主要研究对象。

国外从事飞行模拟器研制的公司主要有:加拿大的CAE公司和Mechtrontix公司,英国的Thales公司、美国的Flight Safety公司和Frasca公司以及法国Thomson公司等。国外众多的大学和科研机构也纷纷开展了高逼真度飞行模拟器的研究工作,著名的有荷兰Delft大学的Simona研究所、荷兰NLR航空实验室和加拿大多伦多大学等,这些研究机构为飞行模拟器提供了从仿真软件体系结构、运动系统设计到模拟座舱设计等多方面具有前瞻性和基础性的研究工作。

与国外相比,我国飞行模拟器的研究工作起步较晚,研究技术尚不成熟。仅有极少数公司能够从事飞行模拟器的研制工作,如北京航空模拟器公司和北京蓝天航空模拟器公司等。1993年北京航空模拟器公司联合北京航空航天大学研制成功的运七-100飞机飞行模拟器,它是国内首台采用数字计算机技术研制而成的飞行模拟器,其性能已达到了国外80年代末先进水平,对国内飞行模拟器的发展具有里程碑意义。2003年北京蓝天航空模拟器公司研制成功的新舟-60飞机飞行模拟器,它是国内首台获得民航总局C级认证的飞行模拟器,代表了国产飞行模拟器的最高水平。新舟-60飞行模拟器的主仿真计算机系统是基于VME总线的X86单板计算机构建出的并行多处理器,采用共享内存机制、Vxworks嵌入式实时操作系统和信号灯机制等完成了对并行执行仿真任务的时钟控制、数据流控制和接口控制。同时它还具备完善的航电设备模拟系统,视景系统和运动系统等。对飞行模拟器开展研究的国内大学和科研机构主要有北京航空航天大学、西北工业大学、哈尔滨工业大学、空军军训器材研究所和空军哈尔滨仿真技术研究所等,其中比较有代表性的飞行模拟器是空军哈尔滨仿真技术研究所研制成功的Y12-M飞机飞行模拟器和伊尔-76飞机飞行模拟器。

传统的飞行模拟器依赖单个计算机对模拟系统中节点进行调度和运算,而单机性能难以大幅提高,因此传统基于单机的飞行模拟系统性能受限于单机性能。同时单机的系统故障会导致整个整个模拟系统的运行异常,因此基于单机的飞行模拟系统健壮性较差。

现有基于分布式的飞行模拟器通常节点间通信采用对整块共享内存进行分段存储的方式,每个节点的内存块映射到整个共享内存中的一段,没有对数据进行有效管理,存在数据索引困难、查找速度慢的问题。此外现有飞行模拟器分布式通信主要依赖GE公司的VMIC反射内存卡,GE公司反射内存卡在Windows操作系统下不开放源代码,因此存在安全性上的问题。若需要搭建基于VMIC反射内存卡的星形网络,还需搭配专用交换机,组网成本较高。另外分布式程序开发与调试较单机困难。现有飞行模拟器各节点模型无统一的抽象模型,造成了代码冗余、不规范的问题,不利于软件开发和后期维护。

发明内容

本发明的一个目的是解决上述至少一个问题或缺陷,并提供后面将说明的至少一个优点。

本发明还有一个目的是提供一种Windows操作系统环境下的飞行模拟系统,其通过内存数据库解决模拟器节点间数据管理、共享的问题。通过在通信部分提供基于以太网的分布式共享内存、VMIC反射内存卡共享内存和本地共享内存三种运行方式,解决飞行模拟器在各种使用场景下的需求。通过采用节点模型组件化的方式,以XML格式为配置文件,定义了标准的接口规范和体系结构标准,实现了代码的可重用、可移植。

为了实现根据本发明的这些目的和其它优点,提供了一种Windows操作系统环境下的飞行模拟系统,包括:

组件化节点部分,其用于为飞行模拟器中各节点程序提供统一的管理和注册方式;

内存数据库部分,其用于为所述组件化节点部分内数据提供一种快速索引、查找方式;以及

通信部分,其为所述内存数据库部分提供统一的读写数据接口,用于为所述内存数据库部分屏蔽底层通信细节的复杂性,提供统一的抽象,提高飞机模拟系统部署环境的灵活性;

其中,所述组件化节点部分以XML格式为配置文件,定义了标准的Model基类接口和体系结构标准,实现了代码的可重用、可移植;所述内存数据库部分采用B+树的数据结构建立表索引,变量索引及映射索引;所述通信部分采用三种运行方式,解决飞行模拟器在各种使用场景下的需求。

优选的是,其中,所述组件化节点部分包括:组件标准接口模块、组件注册模块和组件管理模块,所述组件标准接口模块为节点提供标准的接口;所述组件注册模块负责对组件完成注册相关操作;所述组件管理模块用链表的方式对所有节点实现统一的管理。

优选的是,其中,内存数据库部分包括:数据操作模块、映射操作模块和索引树模块,所述数据操作模块为节点提供内存数据库的访问接口;所述内存映射操作模块为节点提供读取映射数据的接口,映射用于将节点产生实际数据和所述内存数据库实际存放数据进行转换;所述索引树模块用于存放所述内存数据库的实际数据。

优选的是,其中,所述通信部分包括:反射内存操作模块、本地共享内存模块和分布式共享内存模块,所述反射内存操作模块采用基于VMIC反射内存卡,为飞行模拟器提供高性能分布式通信支撑;所述本地共享内存模块可以让人员方便对模拟系统在单机上进行调试、开发;所述分布式共享内存模块采用基于以太网的共享内存方案,为飞行模拟系统提供分布式数据共享支撑,保证网络中各节点可以进行快速的数据交换。

优选的是,其中,所述索引树模块包括三个用于索引的B+树和五个用于存放临时数据的链表。

优选的是,其中,所述反射内存操作模块包括用户态接口单元和内核态驱动单元,所述用户态接口单元为内存数据库提供访问反射内存操作模块的接口,并将数据发送给所述内核态驱动单元,所述内核态驱动单元接收由所述用户态单元传入的数据并将其写入板卡自身内存;所述本地共享内存模块由内存管理单元构成,所述内存管理单元负责将同一块物理内存映射到各节点的虚拟内存地址空间内,实现了节点间数据共享;所述分布式共享内存模块包括:接口单元、协议处理单元和通信单元,所述接口单元向内存数据库部分提供读写数据的接口,协议处理单元调用所述通信单元将数据包组播到网络上各节点,所述通信单元同时负责接受所接受的数据包并交给协议处理单元进行解包,解析出数据包种信息后交给接口单元将数据写入节点本地内存。

优选的是,其中,VMIC反射内存卡网络拓扑结构采用环形网络或星形网络拓扑结构。

优选的是,其中,三个用于索引的B+树为索引变量表的变量表树、索引变量的变量树与索引映射的映射树;五个用于存放临时数据的链表为节点信息链表、空闲块链表、变量表链表、映射表链表和主机链表。

优选的是,其中,所述分布式共享内存模块的网络结构采用星型拓扑结构。

本发明至少包括以下有益效果:

1、利用提供采用以B+树为数据结构的内存数据库,为节点内数据提供一种快速索引、查找方式;

2、通过三种通信方式,提高飞行模拟系统应用范围灵活性:以太网的分布式共享内存可以提供一种在对实时性要求不高场景下低成本分布式通信方式,VMIC反射内存卡可以提供一种低延时、高带宽的通信方式,本地共享内存可以让人员方便对模拟系统在单机上进行调试、开发;

3、利用采用组件化思想的节点模型,为各节点程序提供统一的管理、注册方式,降低了程序的开发难度并提高了程序的可扩展性。

本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。

附图说明

图1为本发明的一个实施例中Windows操作系统环境下的飞行模拟系统的结构示意图;

图2说明的是Windows操作系统环境下的飞行模拟系统中组件化节点部分组件化实现流程图;

图3为数据操作模块结构示意图;

图4说明的映射操作模块结构示意图;

图5说明的是索引树模块结构示意图;

图6说明的是本地共享内存模块结构示意图;

图7说明的是反射内存操作模块结构示意图;

图8说明的是分布式共享内存模块结构示意图;

图9说明的是组件标准接口模块结构示意图;

图10说明的是组件注册模块结构示意图;

图11说明的是组件管理模块结构示意图。

具体实施方式

下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。

图1示出了根据本发明的一种实现形式,示出了Windows操作系统环境下的飞行模拟系统。其中包括:

组件化节点部分,其用于为飞行模拟器中各节点程序提供统一的管理和注册方式;

内存数据库部分,其用于为所述组件化节点部分内数据提供一种快速索引、查找方式;以及

通信部分,其为所述内存数据库部分提供统一的读写数据接口,用于为所述内存数据库部分屏蔽底层通信细节的复杂性,提供统一的抽象,提高飞机模拟系统部署环境的灵活性;

其中,所述组件化节点部分以XML格式为配置文件,定义了标准的Model基类接口和体系结构标准,实现了代码的可重用、可移植;所述内存数据库部分采用B+树的数据结构建立表索引,变量索引及映射索引;所述通信部分采用三种运行方式,解决飞行模拟器在各种使用场景下的需求。

所述组件化节点部分包括:组件标准接口模块、组件注册模块和组件管理模块,所述组件标准接口模块为节点提供标准的接口;所述组件注册模块负责对组件完成注册相关操作;所述组件管理模块用链表的方式对所有节点实现统一的管理。

所述内存数据库部分包括:数据操作模块、映射操作模块和索引树模块,所述数据操作模块为节点提供内存数据库的访问接口;所述内存映射操作模块为节点提供读取映射数据的接口,映射用于将节点产生实际数据和所述内存数据库实际存放数据进行转换;所述索引树模块用于存放所述内存数据库的实际数据。

所述通信部分包括:反射内存操作模块、本地共享内存模块和分布式共享内存模块,所述反射内存操作模块采用基于VMIC反射内存卡,为飞行模拟器提供高性能分布式通信支撑;所述本地共享内存模块可以让人员方便对模拟系统在单机上进行调试、开发;所述分布式共享内存模块采用基于以太网的共享内存方案,为飞行模拟系统提供分布式数据共享支撑,保证网络中各节点可以进行快速的数据交换。

内存数据库部分为节点内数据提供一种快速索引、查找方式;通信部分为内存数据库屏蔽掉底层通信细节的复杂性,提供统一的抽象,提高模拟系统部署环境的灵活性;组件化的节点部分为各节点程序提供统一的管理、注册方式,降低了程序的开发难度并提高了程序的可扩展性。

在其中一种实施例中,内存数据库为各节点间数据交换提供支撑,将数据进行统一管理,对上层节点屏蔽了底层操作细节。

内存数据库通过通信部分屏蔽了底层通信网络的复杂性,支持本地和分布式的数据交互。在单机式的应用场景下,采用本地共享内存机制。在分布式的应用场景下,采用分布式共享内存或者VMIC反射内存卡进行通信。

在实现内存数据库时,以表方式将数据统一存储,与此同时为了加快数据的读写速度,采用B+树建立表索引,变量索引及映射索引。为了保证数据存取的一致性,在本地缓存与内存数据库进行数据交互时,采取同步机制,保证整个内存数据库数据的全局一致性。

内存数据库部分由数据操作模块、映射操作模块和索引树模块构成,数据操作模块为上层节点模型提供数据读写接口,映射操作模块为程序提供读取映射关系的接口,索引树模块存放内存数据库实际的数据。

在其中一种实施例中,通信部分为内存数据库提供统一的读写数据接口,屏蔽掉底层复杂的通信模型。通信部分由基于以太网的分布式共享内存模块、依据反射内存卡的反射内存操作模块和本地共享内存模块构成。

分布式共享内存模块采用一种基于以太网的共享内存方案,被用来为飞行模拟系统提供分布式数据共享支撑,在组播技术和共享内存技术的支持下,保证网络中各节点可以进行快速的数据交换,为用户提供简单的内存读写接口,降低了对相关技术人员的要求,同时还具有低成本的特点,可以进行大型分布式仿真系统部署。

分布式共享内存模块包括:接口单元、协议处理单元和通信单元。接口单元向内存数据库部分提供读写数据的接口。内存管理单元写入操作由两个部分组成:将数据写入本地内存和调用协议处理单元对所写入的数据进行打包,然后协议处理单元调用通信单元将数据包组播到网络上各节点。通信单元同时负责接受所接受的数据包并交给协议处理单元进行解包,解析出数据包种信息后交给接口单元将数据写入节点本地内存。

分布式共享内存模块网络结构采用星型拓扑结构。网络中每个节点开辟具有相同大小的内存块,当网络中任意节点根据其地址偏移量所对应的内存块数据进行了更新,经过修改的内存块立即通过组播将本机所对应内存块数据映射到其他节点的共享内存区相同偏移地址的内存块上。即每个节点将数据写入本地内存的同时也写入其他所有节点的相同地址,用户对本地内存的读写也相当于对全局内存进行读写,而全局内存对所有节点都是可见且共享的,从而在节点间实现了全局数据共享。通过这种方式,所有节点都能够透明并确定地传送数据块到其他节点,同时根据组播的工作方式,所有节点数据的更新时间与网络上实际链接的节点数量无关。

反射内存操作模块是基于VMIC反射内存卡的共享内存模块,VMIC共享内存是一种基于反射内存卡的快速实时网络,可以为飞行模拟器提供高性能分布式通信支撑。网络中各节点反射内存卡间通过光纤进行互联,数据的发送与接收直接通过板卡上硬件完成,从而具有了高带宽、低延时的特性。

反射内存操作模块包括:用户态接口单元和内核态驱动单元。用户态接口单元为内存数据库部分提供访问共享内存的接口,并将数据发送给内核态驱动单元。内核态驱动单元接收由用户态接口单元传入数据并将其写入板卡自身内存。

VMIC反射内存卡网络拓扑结构采用环形网络或星形网络。每块板卡拥有独立的板载内存,其通过DMA的方式映射到本机内存地址上。当驱动单元通过读写内存的方式对板载内存进行修改后,板卡立刻将该数据及其地址广播出去,其他节点上板卡收到数据后立刻对板卡上相同地址的数据进行修改,从而实现了各节点间的全局数据共享。当VMIC反射内存卡采用星形拓扑结构时,数据刷新时间与节点数量无关。

本地共享内存为飞行模拟器提供单机环境下的通信支撑,此时各节点以进程的形式进行模拟,因为其接口定义与各种分布式内存操作接口一致,所以可以让模拟系统的分布式开发在单机下运行。

本地共享内存由内存管理单元构成,其负责将同一块物理内存映射到各节点的虚拟内存地址空间内,当某一个节点对该物理内存进行修改,其他节点地址空间内相应页面同样收到修改,从而实现了节点间数据共享。

在其中一种实施例中,组件化节点部分中的节点模型采用了标准、统一的模型接口,从而实现了组件模型注册、管理,并能够驱动各个组建模型运行;通过底层虚拟总线的支撑,可完成各个模型之间的通信,由于该虚拟总线基于内存数据库且拥有粗粒度锁机制,因此各个组件模型彼此通信时具有较高的实时性和数据的一致性。

为了使用户自定义的组件模型能够被模拟系统加载、运行,需要用户自定义的组件模型遵守一定的接口规范。组件化整体实现流程如图2所示。

组件模型定义了标准的接口规范,即Model基类。在Model类中,定义了所有组建模型必须遵从的接口标准,所有用户自定义的组件模型必须继承该Model类,并按照自身需求实现Model基类中定义的虚方法,完成组件的实现。

组件化节点部分由组件标准接口模块、组件注册模块和组件管理模块构成,组件标准接口模块为节点提供标准的接口,组件注册模块负责对组件完成注册相关操作,组件管理模块用链表的方式对所有节点实现统一的管理。

在其中一种实施例中,内存数据库部分为各节点间数据交换提供支撑,将数据进行统一管理,对上层节点屏蔽了底层操作细节,其由数据操作模块、映射操作模块和索引树模块构成。

数据操作模块为节点提供内存数据库部分的访问接口。

如图3,在使用内存数据库部分时,首先需要加载内存数据库,读取配置文件,根据配置信息初始化通信层,然后初始化共享内存,将空闲块链表、变量表链表、映射链表和主机链表设置为空。之后将B+树载入共享内存:获取B+树在当前地址空间中的偏移量和B+树的大小。之后根据配置文件,获取配置文件中的主机信息并将其插入主机链表。之后创建变量表根据配置文件初始化变量表链表和映射表链表。此时,配置文件中所有的信息都已经加载到内存数据库的内存之中,然后通过遍历链表的方式分别将内存中的信息插入变量树、变量表树和映射树。遍历MMDB的变量表树,根据当前的指向的变量表在变量树中查找变量,将其从内存数据库中拷贝到当前节点的内存空间中。遍历完变量表树后开始遍历映射树,根据映射树中的数据解析映射关系,用于实际数据和内存数据库中数据之间的转换。此时,可以开始内存数据库读写操作。

对通过数据操作模块进行读写操作时,首先应用程序需要通知模块其在上一步获取的映射名和实际的数据。然后调用数据操作模块中的读写操作,将数据放入节点的读写缓存,等待模块进行同步,完成数据从本地内存到内存数据库内存的拷贝。

当数据操作模块开始同步时,首先进入临界区,然后遍历节点的输入输出缓存,将缓存中存储的数据按照其映射中解析的地址写入内存数据库内存中,完成数据同步,使节点本地缓存和内存数据库中数据一致。

如图4所示,内存映射操作模块为节点提供读取映射数据的接口,映射用于将节点产生实际数据和内存数据库实际存放数据进行转换。节点首先将要使用的映射名传给映射模块用于注册该映射,映射操作模块以该映射名为查询条件,在映射树中进行查询,如果可以查询到该映射关系,则将该节点相应数据位设置为该映射,完成注册。

索引树模块结构如图5所示:

索引树模块负责存放内存数据库部分的实际数据,其中包含有三个用于索引的B+树和五个用于存放临时数据的链表。链表如下:

1)节点信息链表,在分布式通信模式下,记录每个节点的锁信息;

2)空闲块链表,存放未使用的空闲块;

3)变量表链表,存放通过配置文件解析到的表内容;

4)映射表链表,存放通过配置文件解析到的映射关系;

5)主机链表,存放通过配置文件解析到的主机信息。

为了快速查询变量表,变量和映射信息,建立B+树来进行索引,加快查询速度。B+树如下:

1)变量表树,索引变量表

2)变量树,索引变量

3)映射树,索引映射。

同时B+树内存中包含一张空闲块链表,以供B+树内存创建B+树时使用。

在其中一种实施例中,MMDB数据库分为本地共享内存(LSM)、基于以太网的分布式共享内存(DSM)和基于反射内存网(VMIC)的分布式共享内存三种方式的内存数据模式,本地共享内存主要以共享内存的方式实现对本地存储数据操作,基于以太网的分布式内存和VMIC共享内存主要实现对数据的分布式操作。

通过本地共享内存在不同进程间共享数据的原理是将同一块物理页面映射到多个进程的虚拟地址空间内,这样当某个进程修改该段地址内容的时候其他进程对应的地址空间也会收到内容,从而实现了进程间的数据共享。

本地共享内存模块结构如图6所示:

本地共享内存模块的接口如下:

LoadLSM加载本地共享内存CopyToLSM将数据拷贝到本地共享内存CopyFromLSM将本地共享内存的数据拷贝出来

在使用本地共享内存时,首先需要使用LoadLSM函数初始化本地共享内存,将CopyToSM和CopyFromSM函数指针指向CopyToLSM和CopyFromLSM,然后使用CreateFileMapping函数申请一块内存地址并返回句柄,然后使用MapViewOfFile函数将该段内存地址映射到调用进程的内存空间中,之后将SystemManager初始化为0,从而完成本地共享内存初始化。CopyToLSM和CopyFromLSM由memcpy函数实现,用于将一段数据拷贝到内存数据库部分的地址空间内。

基于VMIC反射内存卡的反射内存操作模块

每块VMIC板卡拥有独立的板载内存,其通过DMA的方式映射到本机内存地址上。当驱动模块通过读写内存的方式对板载内存进行修改后,板卡立刻将该数据及其地址广播出去,其他节点上板卡收到数据后立刻对板卡上相同地址的数据进行修改,从而实现了各节点间的全局数据共享。

基于VMIC反射内存卡的反射内存操作模块的结构如图7所示:

基于VMIC反射内存卡的反射内存操作模块的接口如下:

LoadVMIC加载反射内存网共享内存CopyToVMIC将数据拷贝到反射内存网中CopyFromVMIC将反射内存网的数据拷贝出来

在使用基于VMIC反射内存卡的反射内存操作模块时,首先需要使用LoadVMIC函数初始化本地共享内存模块,将CopyToSM和CopyFromSM函数指针指向CopyToVMIC和CopyFromVMIC,然后使用反射内存卡厂商提供的RFM2gOpen打开内存卡设备,之后获取板载内存大小,并将该内存映射到节点的地址空间内。之后获取该节点的ID,如果该节点为Master,则将SystemManager初始化为0,打开反射内存卡中断,完成基于VMIC反射内存网的反射内存的初始化。

CopyToVMIC和CopyFromVMIC由RFM2gWrite和RFM2gRead封装,负责将数据拷贝到反射内存卡板载内存。

基于VMIC反射内存卡的反射内存操作模块由用户态接口单元和内核态驱动单元构成,用户态接口单元负责和上层内存数据库进行交互并将数据传给驱动部分,内核态驱动单元接收到数据后传给VMIC反射内存卡硬件。

基于以太网的分布式共享内存模块

网络中每个节点开辟具有相同大小的内存块,当网络中任意节点根据其地址偏移量所对应的内存块数据进行了更新,经过修改的内存块立即通过组播将本机所对应内存块数据映射到其他节点的共享内存区相同偏移地址的内存块上。即每个节点将数据写入本地内存的同时也写入其他所有节点的相同地址,用户对本地内存的读写也相当于对全局内存进行读写,而全局内存对所有节点都是可见且共享的,从而在节点间实现了全局数据共享。

基于以太网分布式共享内存模块的结构如图8所示:

基于以太网的分布式共享内存模块的接口及实现:

LoadDSM加载分布式共享内存CopyToDSM将数据拷贝到共享内存中CopyFromDSM将分享内存的数据拷贝出来

在使用基于以太网的分布式共享内存模块时,首先需要使用LoadDSM函数初始化本地共享内存模块,将CopyToSM和CopyFromSM函数指针指向CopyToDSM和CopyFromDSM。然后为SystemManager申请一块内存空间并设置为0,然后分别为发送和接收线程以组播的方式创建套接字。之后创建发送和接收线程,并开辟一块缓冲区用于暂存收发数据。发送线程负责将缓冲区中经协议处理单元打包的字节流组播到网络中。接收线程负责保持挂起状态等待接收数据,一旦网络中传来数据负责将字节流转交给解包线程,然后立刻继续等待数据。解包线程接收到数据后根据字节流首部的4字节内存可以得知字节流所含的数据包个数。得知数据包数量后开始遍历,按照偏移、数据段大小和数据的格式进行解包,得出实际的数据,并调用接口单元的CopyFromDSM将数据写入节点本地内存。CopyToDSM函数负责接收偏移地址、数据段大小和数据,然后调用协议处理单元将数据转换为网络中可发送的字节流。

接口单元负责将协议处理单元传入的数据写入节点本地内存并将本地节点传出的数据转交给协议处理单元。协议处理单元负责将传输部分传入的字节流进行解包交给接口,并将内存管理部分的数据转换为字节流交给通信部分用于发送,通信部分负责收发打包后的字节流

在其中一种实施例中,组件化节点部分包括:组件标准接口模块、组件注册模块与组件管理模块

组件标准接口模块

为了使用户自定义的组件模型能够被模拟系统加载、驱动运行,需要用户自定义的组件模型遵守一定的接口规范。框架为组件模型定义了标准的接口规范,即Model基类。在Model类中,定义了所有组建模型必须遵从的接口标准,所有用户自定义的组件模型必须继承该Model类,并可选择性的重写Model类中规定的外部接口。

Model组件所定义的可供用户自定义的外部标准接口如图9所示。

Model类其实为模型接口规范,其中定义了Init()、Start()、Step()、Stop、Worker()和Unload()6个外部接口,可供用户选择性实现。

如果开发诸如FMS、DISP、NAV等组件时,仅需该组件类继承Model类,并且选择性实现相关接口即可。模拟器运行平台为用户自定义组件模型提供了开发向导,方便用户自定义开发不同功能、不同类型的组件。为了使用户自定义开发的所有组件都遵循Model定义的接口,从而被系统调度,需要所有组件类都必须继承Model类,且按实际需要重写以上6个用户外部接口。

组件注册模块

如图10所示,当用户自定义组件完成之后,便可以将其以插件的形式被系统所识别、驱动运行。为了使调度框架识别新的插件,需要在配置文件中进行相关配置,根据配置文件中的配置信息,调度框架便可自行完成组件的注册工作。

在配置文件中,与组件注册相关的信息至少应包含:组件类所属插件名称(插件以动态库的形式被加载)、组件类名、实例化组件对象的名称等信息。调度框架读取上述信息后,会加载插件,并且调用该组件类的工厂方法实例化组件对象,完成组件的注册工作。

组件管理模块结构如图11所示:

系统为了能够管理已经加载的插件,需要专门的数据结构对注册的插件进行管理。运行平台会维护一个主机链表,在每个主机节点上,都会根据配置文件中的定义,存储每个将要被载入的模型对象的基本属性。

各个插件配置好之后,系统会根据上述的节点链表中各个节点项中记录的信息,调用插件中模型类的工厂方法生成对应的对象实例。

这里说明的模块数量和处理规模是用来简化本发明的说明的。对本发明的Windows操作系统环境下的飞行模拟系统的应用、修改和变化对本领域的技术人员来说是显而易见的。

如上所述,根据本发明,本方案主要由三个模块组成:内存数据库部分、支持基于以太网的分布式共享内存、基于VMIC反射内存卡的反射内存和本地共享内存的三大功能的通信部分和组件化节点部分。通过内存数据库部分解决模拟器节点间数据管理、共享的问题。通过在通信部分提供基于以太网的分布式共享内存、基于VMIC反射内存卡的反射内存和本地共享内存三种运行方式,解决飞行模拟器在各种使用场景下的需求。通过采用节点模型组件化的方式,以XML格式为配置文件,定义了标准的接口规范和体系结构标准,实现了代码的可重用、可移植。

尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用。它完全可以被适用于各种适合本发明的领域。对于熟悉本领域的人员而言,可容易地实现另外的修改。因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号