一种基于DDS服务封装的分布式仿真方法和系统与流程

文档序号:21028750发布日期:2020-06-09 20:04阅读:526来源:国知局
一种基于DDS服务封装的分布式仿真方法和系统与流程

本申请涉及建模仿真领域,特别涉及一种基于dds服务封装的分布式仿真方法和系统。



背景技术:

仿真科学与技术是以建模与仿真理论为基础,建立并利用模型,以计算机系统、物理效应设备及仿真器为工具,对研究对象进行分析、设计、运行和评估的一门综合性、交叉性学科。目前仿真技术已成功应用于工业、农业、商业、教育、军事、交通、社会、经济、医学、生命、生活服务等众多领域,并在航空、航天、信息、生物、材料、能源、先进制造等高新技术领域中成为系统论证、设计、实验、分析、维护、辅助决策及人员培训的重要手段与工具,成为认识和改造客观世界的重要方法。

随着internet技术的广泛应用与计算机技术的飞速发展,各种仿真系统的体系结构呈现出以网络为中心的趋势,这对通信的实时性、动态灵活性提出了更高的要求,同时要求分布式系统的各参与者之间采用一种具有松散耦合特性和通信服务质量保障策略支持的灵活通信模型和交互机制。



技术实现要素:

本申请提供了一种基于dds服务封装的分布式仿真方法和系统。

根据本申请实施例的第一个方面,提供了一种基于dds服务封装的分布式仿真方法,该方法的步骤包括:

仿真成员根据交互数据结构与封装有数据分发服务dds的动态库进行数据交互;

基于预设的时间管理算法,进行仿真成员和动态库之间的分布式仿真实验。

在一种优选地实施例中,仿真成员的每一个交互数据结构实例属于一种主题,dds通信引擎通过识别该结构中的主题名实现仿真过程中数据包的转发;

其中,数据分发服务中的接口定义语言idl文件中包含两个区域:

按照成员需求生成用户数据结构区,用以反应成员需要传递的数据组成;

为每一个数据结构生成一种接口数据结构,该接口数据结构包含的字段有:数据包id、数据发送时间、数据发送人、数据主题名和包含特定用户数据结构的key-value对,应以仿真过程中通过传递接口数据结构实现主题、时间、成员和数据的交互。

在一种优选地实施例中,所述封装有数据分发服务的动态库的构建步骤包括:

将dds核心服务、接口管理服务、对象管理服务和时间管理服务进行封装,形成动态库;其中,动态库接口包括:服务启动start()、数据发布transfer()、请求推进advance()和服务关闭end();动态库接口与仿真成员侧的函数:成员初始化init()、数据接收set()、成员推进finish()和成员结束end()相对应。

在一种优选地实施例中,所述仿真成员与动态库交互的步骤包括:

仿真成员向服务启动接口发送回调函数句柄,dds初始化数据通过动态库回调init()方法发送到仿真成员;

仿真运行过程中,dds总线数据通过回调set()方法发送到仿真成员,通过回调finish()方法推进成员模型;

仿真成员通过调用transfer()方法将数据发布到dds总线,通过调用advance()方法请求时间推进。

在一种优选地实施例中,所述基于预设的时间管理算法,进行仿真成员和动态库之间的分布式仿真实验的步骤包括:

在仿真引擎接收到所有成员的步进请求时,进行推进自检;

在检查dds域中没有残余信息时,依次进行全局时间的推进和动态库与dds仿真引擎间的时序统一;

向各动态库发送步进允许,以使各成员不会受到滞后数据;或者,

正常时戳数据在仿真成员发布后会立刻写入订阅者动态库的数据集中,而超前数据被写入动态库中的备用数据集中;

当dds仿真引擎发布步进允许时,数据集数据被发送到成员内部,动态库中的备用数据集数据被写入到数据集中,等待下一个步长发出。

根据本申请实施例的第二个方面,提供了一种基于dds服务封装的分布式仿真系统,该系统包括:仿真成员、动态库和dds仿真引擎;

仿真成员根据交互数据结构与封装有数据分发服务dds的动态库进行数据交互;

dds仿真引擎基于预设的时间管理算法,进行仿真成员和动态库之间的分布式仿真实验。

在一种优选地实施例中,仿真成员的每一个交互数据结构实例属于一种主题,dds通信引擎通过识别该结构中的主题名实现仿真过程中数据包的转发;

其中,数据分发服务中的接口定义语言idl文件中包含两个区域:

按照成员需求生成用户数据结构区,用以反应成员需要传递的数据组成;

为每一个数据结构生成一种接口数据结构,该接口数据结构包含的字段有:数据包id、数据发送时间、数据发送人、数据主题名和包含特定用户数据结构的key-value对,应以仿真过程中通过传递接口数据结构实现主题、时间、成员和数据的交互。

在一种优选地实施例中,所述仿真成员内部署有回调函数,所述回调函数包括:成员初始化init()、数据接收set()、成员推进finish()和成员结束end()。

在一种优选地实施例中,所述动态库中封装有dds核心服务、接口管理服务、对象管理服务和时间管理服务;

所述动态库接口包括:服务启动start()、数据发布transfer()、请求推进advance()和服务关闭end();

所述动态库接口与仿真成员内部署的回调函数相对应。

在一种优选地实施例中,所述时间管理算法的具体执行步骤包括:

在仿真引擎接收到所有成员的步进请求时,进行推进自检;

在检查dds域中没有残余信息时,依次进行全局时间的推进和动态库与dds仿真引擎间的时序统一;

向各动态库发送步进允许,以使各成员不会受到滞后数据;或者,

正常时戳数据在仿真成员发布后会立刻写入订阅者动态库的数据集中,而超前数据被写入动态库中的备用数据集中;

当dds仿真引擎发布步进允许时,数据集数据被发送到成员内部,动态库中的备用数据集数据被写入到数据集中,等待下一个步长发出。

有益效果

本申请所述技术方案具备完善的dds核心服务、接口管理服务、对象管理服务和时间管理服务,能够获得科学、真实的验证过程和验证结果,提升复杂产品研制和生产效率;具备服务封装特性,提升了仿真框架实施的便捷性,保障了核心仿真逻辑的安全性,为仿真框架在多种语言、多种设计工具中的集成提供了便利。

本申请所述技术方案适用性广、互操作性强、可拓展性强,能够运用于绝大多数针对复杂产品功能、性能的仿真验证中。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1示出本方案所述分布式仿真方法的示意图;

图2示出本方案所述基于动态库技术的dds服务封装的示意图;

图3示出本方案所述面向分布式节点的时间管理算法的示意图。

具体实施方式

为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

经过对现有技术的研究和分析,omg实时系统的数据分发服务(dds)提出了以数据为中心的共享模式,该模式仅解决了应用系统的底层通信方案问题和通信质量问题,针对仿真系统,dds并没有一套具备接口管理、对象管理、时间管理和运行方式的分布式仿真标准,未形成能够广泛推广应用的分布式仿真框架模型。因此,本方案将针对仿真成员间接口数据结构不统一的问题,设计一种适用性广、可拓展性强的成员交互接口规范,规定了成员间交互的主题协议。此外,针对常用仿真框架学习门槛高、可拓展性差等问题,本方案设计了基于动态库技术的数据分发服务(dds服务)封装方法和仿真运行方法,提升了仿真框架实施的便捷性,为仿真框架在多种语言、多种设计工具中的集成提供了便利。另外,针对仿真过程中时间管理问题,本方案设计了一种面向分布式节点的时间管理算法,保障了各节点内部时序的统一和各节点之间时间戳的一致。

如图1至图3所示,本方案中提供了一种基于dds服务封装的分布式仿真框架实现方案,该方案具体的实施过程如下:

一、成员交互接口规范

在dds中,用户可使用接口定义语言(idl)在文本文件中创建用户数据类型,由于idl不依赖于编程语言,所以相同文件可用于在多种语言、多种平台中生成代码。dds使用“主题”在发布者和订阅者之间提供基本连接点,节点之间通过主题的主题名匹配建立通信连接,实现数据传递。

基于dds以上特性,本发明规定了一种适用于仿真成员交互的数据结构,每一个该数据结构实例属于一种主题,dds通信引擎通过识别该结构中的主题名实现仿真过程中数据包的转发。idl文件中包含两个区域,首先按照成员需求生成“用户数据结构区”,反应了成员需要传递的数据组成,其次为每一个数据结构生成一种“接口数据结构”,包含的字段有数据包id、数据发送时间、数据发送人、数据主题名和包含特定用户数据结构的key-value对,仿真过程中通过传递接口数据结构实现主题、时间、成员和数据的交互。

二、基于动态库技术的dds服务封装方法

将dds核心服务、接口管理服务、对象管理服务和时间管理服务进行封装,形成基于c/c++的动态库,动态库接口包括服务启动start()、数据发布transfer()、请求推进advance()和服务关闭end(),在仿真成员侧声明四个回调函数:成员初始化init()、数据接收set()、成员推进finish()和成员结束end()。

仿真开始时,成员首先向服务启动接口发送回调函数句柄,dds初始化数据通过动态库回调init()方法发送到仿真成员;仿真运行过程中,dds总线数据通过回调set()方法发送到仿真成员,通过回调finish()方法推进成员模型;仿真成员通过调用transfer()方法将数据发布到dds总线,通过调用advance()方法请求时间推进。

三、面向分布式节点的时间管理算法

分布式节点时间管理体现在各节点仿真成员接收和发送主题包的时刻、时序准确性,本发明时间管理算法总体采用保守时间步进算法,基于仿真引擎与仿真成员间的请求-推进机制。该原生方法仿真成员至多只会收到一个步长的“滞后”或“超前”数据。

仿真运行时,当仿真引擎接收到所有成员的步进请求后,首先会进行推进自检,检查dds域中是否有残余信息,而后进行全局时间的推进,而后进行动态库与引擎间的时序统一,最后向各动态库发送步进允许,确保各成员不会收到“滞后”数据;正常时戳数据在仿真成员发布后会立刻写入订阅者动态库的“数据集”中,而“超前”数据被写入“备用数据集”中,当仿真引擎发布步进允许时,数据集数据首先被发送到成员内部,备用数据集数据被写入到数据集中,等待下一个步长发出。以上两种方法确保了仿真成员不会接受到“滞后”和“超前”数据,并保障了数据不会丢失。

下面通过实例对本方案作进一步说明。

本实施例提供了一种基于dds服务封装的分布式仿真框架实现方法,该方法完善了dds应用于仿真领域的技术架构。该方法的具体实施步骤为:

第一步构建符合dds规范的接口描述语言(idl)文件

首先进行用户自定义数据结构的声明,声明结束后,按照规则生成idl文件,文件中包含了用户数据类型和对应的接口数据类型。编译该文件生成c/c++语言类,将这些类加入到动态库工程中。

第二步动态库文件生成、声明成员接口

直接在vc环境中编译动态库工程,生成动态库文件。动态库文件执行需要加入配置文件,在配置文件中声明该动态库所代理的成员名称、需要订阅的数据主题和能够发布的数据主题。

第三步编写仿真成员工程并加载服务化动态库

根据自身需求编写仿真成员工程,在工程内实现该成员所含模型的业务逻辑。另外需要在仿真成员工程中提供成员初始化init()、数据接收set()、成员推进finish()和成员结束end()四个回调函数,在函数内实现收到初始化、订阅数据和推进允许时的处理过程。加载动态库工程并获取服务启动start()、数据发布transfer()、请求推进advance()和服务关闭end()接口句柄。

第四步运行分布式仿真

启动位于各分布式节点的仿真成员工程,启动后各仿真成员通过start()接口将回调函数句柄发到所绑定的“端动态库”中,完成本地服务的启动和节点注册;仿真引擎接收到所有成员注册信息后,通过dds向各端动态库发送初始化消息,端动态库通过回调init()完成仿真成员初始化,初始化结束后,仿真成员通过advance()接口请求推进;仿真运行过程中,每个步长内仿真成员生成的实时数据通过transfer()接口发送到dds,并立即转发到订阅该数据的端动态库数据集(或备用数据集)中,仿真成员执行完该步长后,通过advance()接口请求推进;仿真引擎收到所有成员的请求推进后,进行推进自检,而后发送步进允许;端动态库接收步进允许后,将数据集数据通过set()回调到仿真成员中,结束后通过回调finish()触发成员新一个步长内的计算;当仿真成员主动退出联邦运行时,调用end()接口实现成员注销;当仿真联邦主动结束运行时,首先通知各端动态库回调end()方法对仿真成员进行销毁。

本发明基于omg组织的dds服务提出了一种分布式仿真框架实现方法,完善了dds应用于仿真领域的技术架构。

在dds集成开发语言(idl)基础上,设计了成员交互接口规范,该规范能够满足绝大多数分布式仿真交互需求,能够保证底层通信的统一性和灵活性,便于管理、拓展。

在dds核心服务基础上,编写了接口管理服务、对象管理服务和时间管理服务,并将这些仿真服务进行封装形成动态链接库,减少了仿真成员侧的代码开发量,实现了仿真服务与业务逻辑的解耦和,提升了框架运行的安全性和可拓展性,如动态库文件实现远程云端部署、或直接加载到建模仿真工具中注入和获取工具内部模型数据等。

本方案所述时间管理算法能够确保仿真运行过程中仿真成员收到时刻、时序准确的数据包,保障仿真验证过程和仿真结果的准确性。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上仅为本发明的实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均包含在申请待批的本发明的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1