一种分布式并行实时仿真调度实现方法与流程

文档序号:17761753发布日期:2019-05-24 21:45阅读:344来源:国知局
一种分布式并行实时仿真调度实现方法与流程

本发明属于仿真技术领域,具体涉及一种分布式并行实时仿真调度实现方法。



背景技术:

传统的分布式仿真调度属于硬实时调度,其仿真进度严格与物理时钟一致,容易造成仿真模型超时,导致仿真失败;且在该调度中心,能够存储的分布式模型接口交互数据有限,远远达不到现代仿真系统大数据量的要求;随着分布式仿真系统向多用户并发仿真发展,保障仿真系统的安全运行也变得尤为重要。



技术实现要素:

本发明的目的是设计一种用于分布式并行实时仿真的仿真调度,特别提供一种分布式并行实时仿真调度实现方法。

本发明采取的技术方案是:一种分布式并行实时仿真调度实现方法,其特征在于,所述方法是:定义一条仿真软总线,仿真软总线是运行在n台仿真计算机中的一条虚拟总线;仿真软总线将n台仿真计算机连接到了同一条虚拟总线上;仿真软总线上有n个仿真任务,每个仿真任务中分为控制流、时钟流和数据流三种通信数据,其中控制流完成仿真引擎对仿真模型的状态调度任务;时钟流负责时钟数据的传输,完成仿真引擎对仿真模型的时钟同步任务;数据流完成仿真模型之间数据交互的任务;仿真时钟和仿真数据都通过点对点的方式在仿真软总线上互连,每条数据连接在仿真软总线内部通过dds端口进行区分;仿真软总线上有n个域,三种通信数据按照其从属的仿真任务被划分到了不同的域中;在仿真任务内部,三种通信数据按照模型状态调度、模型时钟同步、模型数据交互功能使用数据域内的不同分区进行通信,即控制流使用控制分区,时钟流使用时钟分区,数据流使用数据分区;三个分区在数据域的内部是分开的,相互之间隔离;所述数据域包含同一个仿真任务内所有的通信数据集合。

本发明所述的仿真任务由至少一个仿真调度引擎、至少一个仿真模型和仿真软总线组成,仿真人员将仿真任务中的仿真模型按个数平均分配部署或是按仿真模型消耗计算资源的大小按需分配部署到n台仿真计算机中,使得每台仿真计算机中都至少运行一个仿真模型,所述的计算资源指仿真模型占用cpu的百分比和内存占用空间的大小。

本发明所述的仿真任务中使用的每台仿真计算机有多个仿真模型和一个仿真调度引擎;在同一个仿真任务中,如果使用多台仿真计算机,就相应有个仿真调度引擎,当多个仿真调度引擎存在时,只有其中一个能够处理激活状态,其余皆为冗余备份仿真调度引擎;处于激活状态的仿真调度引擎对所有仿真计算机中部署的仿真模型进行状态调度和时钟调度,冗余备份仿真调度引擎只收集仿真模型的状态信息和时钟信息。

本发明所述的仿真调度引擎由仿真自适应模块、仿真通信管理模块、仿真时钟调度模块、仿真模型管理模块和仿真适配器模块组成;其中,定义仿真通信管理模块根据仿真任务状态对所有包括就绪、运行、暂停和停止的仿真模型状态进行仿真调度;定义仿真时钟调度模块根据分布式仿真系统中仿真模型运行的快慢自动调整时钟的供给速度,以期整个仿真时长与物理时钟时长一致;定义仿真模型管理模块将仿真模型的仿真状态信息和仿真时钟信息收集存储在仿真调度内,以提供给仿真调度进行软实时仿真和状态调度时使用;定义仿真自适应模块支持在仿真网络中存在多个仿真调度,仿真自适应模块时刻处于运行状态;不同仿真计算机上的仿真调度引擎通过其仿真自适应模块和自适应算法决策出哪一个仿真调度引擎为激活状态,不同仿真调度引擎的仿真自适应模块通过仿真软总线直接通信;仿真自适应模块收集cpu负载信息,并在一定时间内对cpu负载作一个平均值;定义仿真适配器模块支持将分布式并行软实时系统接入到硬实时系统中,该仿真适配器模块记录硬实时器的时钟,再根据软实时系统的仿真情况将仿真时钟送给分布式仿真模型。

本发明所述的一种分布式并行实时仿真调度实现方法,其特征在于,所述的仿真自适应模块通过以下步骤来决策出哪个仿真调度引擎处理激活状态:

第一步:仿真自适应模块向其它仿真调度引擎广播自己仿真计算机的cpu负载和ip地址信息。

第二步:其它仿真自适应模块接收到广播的cpu负载和ip地址信息后,与自身的cpu负载和ip地址进行比较,判定自身是否为cpu负载最小的那个引擎;cpu负载最小的仿真自适应模块会进行激活状态,而其它自适应模块会进行未激活状态;处理激活状态的自适应模块会激活该仿真调度引擎的仿真通信管理模块和仿真时钟调度模块。

第三步:处于激活状态仿真调度引擎的自适应模块会持续广播cpu负载信息,而处于未激活状态仿真调度引擎的自适应模块会停止广播cpu负载信息。

本发明所述的仿真时钟调度模块按照每个仿真模型的周期发送时钟脉冲给仿真模型,若出现仿真模型的仿真解算超时,此时仿真时钟调度模块会等待仿真模型解算完毕才会发送下一周期的时钟脉冲;在这种情况下,模型仿真解算时长会大于物理时长,但是仿真解算并不会失败,此种仿真称为软实时仿真,其时钟脉冲总体为非均匀脉冲;对于仿真模型解算都在本周期内完成的仿真称为硬实时仿真,其时钟脉冲为均匀的脉冲;当一个系统中同时存在软实时仿真和硬实时仿真时,通过实时仿真适配器模块来调节时钟脉冲的衔接。

本发明所述的当仿真适配器模块接入到系统中时,仿真适配器模块先接收硬实时仿真的硬时钟脉冲,并实时记录该脉冲的周期数及频率;仿真适配器模块将接收到的硬时钟脉冲依次发送给仿真时钟调度模块,每次发送时钟脉冲时,先由仿真时钟调度模块将仿真脉冲发送给仿真软总线上的所有仿真模型,同时仿真时钟调度模块记录每个仿真模型仿真结束时的仿真时间;当所有仿真模型该周期仿真结束后,立即给仿真适配器模块一个时钟反馈信号;仿真适配器模块收到时钟反馈信号后,再决定何时向仿真时钟调度模块发送下一个时钟脉冲。

本发明所述的当仿真适配器模块发送时钟脉冲和收到时钟反馈信号的间隔小于硬时钟脉冲周期的情况下,仿真适配器模块会在下一次收到硬时钟脉冲的时刻立即发送时钟脉冲给仿真时钟调度模块;当仿真适配器模块发送时钟脉冲和收到时钟反馈信号的间隔大于等于硬时钟脉冲周期的情况下,仿真适配器模块会立即发送时钟脉冲给仿真时钟调度模块,并记录下延时收到时钟反馈信号的时钟误差rt以及总的时钟误差t。

本发明所述的总的时钟误差t在随后的时钟周期内被消除,消除方法为:当后来的时钟周期出现“发送时钟脉冲和收到时钟反馈信号的间隔小于硬时钟脉冲周期”的情况下,立即发送时钟脉冲,并记录该时刻与下一次实际接收到硬时钟脉冲的时刻rt,并从总的时钟误差t中减去rt,直到总的时钟误差t减到0为止。

本发明所述的仿真模型调用仿真软总线提供的输入接口和输出接口直接读写仿真软总线来实现仿真模型间的数据传输;输入接口指仿真软总线提供的读数据api函数;输出接口指仿真软总线提供的写数据api函数;每个仿真模型的输入接口和输出接口都与仿真软总线上的一条数据流连接,每条连接用数据流内的一个主题描述,在仿真的每个周期直接调用仿真模型的输入接口和输出接口,从仿真软总线上对应的数据流读取和写入数据,实现仿真模型之间数据单向传输。

本发明的优点及有益效果是:

(1)将仿真数据流从仿真调度中脱离并以点对点的形式进行,降低了分布式仿真系统的风险。

(2)通过增加仿真调度备份保障了分布式并行仿真系统的正确运行。

(3)通过仿真调度实现了软实时仿真系统与硬实时仿真系统的对接。

(4)通过仿真软总线设计,实现了多用户建立的多仿真任务的并发执行。

附图说明

图1为本发明实现的多用户并发仿真原理示意图;

图2为本发明的仿真软总线设计原理示意图;

图3为本发明仿真任务中使用的每台仿真计算机设计原理示意图;

图4为图3中自适应模块的自适应算法原理示意图;

图5为图3中仿真时钟调度模块和仿真适配器模块设计原理示意图;

图6为图5中仿真适配器模块仿真时钟误差消除原理示意图;

图7为图3中仿真模型的数据点对点传输方式示意图;

图8为本发明的一个应用实施例的多电系统负载仿真平台设计原理示意图。

具体实施方式

以下结合附图和实施例对本发明作进一步说明:

分布式仿真软总线基于数据分发服务(dds)开发,数据分发服务是国际对象管理组织(omg)在高级体系结构(hla)及公共对象请求代理体系结构(corba)等标准技术的基础上制定的新一代分布式实时通信中间件。

如图1所示,数据域是指由同一个仿真任务的控制流、时钟流和数据流所构成的域。在仿真软总线上通信的数据按照其从属的仿真任务被划分到了不同的域中,分布式仿真软总线上有n个仿真任务(仿真任务1、仿真任务2、…、仿真任务n),每个仿真任务中的通信数据如控制流、时钟流和数据流,都被划分到了仿真软总线上的n个域(域1、域2、…、域n)中。

同一个仿真任务的通信数据(控制流、时钟流和数据流)只能归属于同一个域,并且域之间是隔离的,因此不同仿真任务占用仿真软总线的不同区域,相互之间不影响,通过分布式仿真软总线数据域的设计,实现了多用户并发仿真。

如图2所示,分布式仿真软总线内的1个数据域包含同1个仿真任务内所有的通信数据集合。在仿真任务内部,通信数据按照其功能(模型状态调度、模型时钟同步、模型数据交互)被划分成了控制流、时钟流和数据流。三种数据流使用数据域内的不同分区进行通信,控制流使用控制分区,时钟流使用时钟分区,以及数据流使用数据分区。三个分区在数据域的内部也是分开的,相互之间隔离。

如图3所示,仿真任务由仿真调度引擎(至少1个)、仿真模型(至少1个)和仿真软总线组成。该仿真任务使用了仿真计算机1、…、仿真计算机n,且每台仿真计算机中有多个仿真模型和一个仿真调度引擎。仿真软总线是运行在多台仿真计算机(可以是1台仿真计算机,也可以是任意多台仿真计算机)中的一条虚拟总线。分布式仿真软总线将这n台仿真计算机连接到了同一条虚拟总线上。

仿真人员可将仿真任务中的仿真模型按个数平均分配部署或是按仿真模型消耗计算资源的大小按需分配部署到多台仿真计算机中,使得每台仿真计算机中都至少运行一个仿真模型。计算资源指仿真模型占用cpu的百分比和内存占用空间的大小。

仿真调度引擎由仿真自适应模块、仿真通信管理模块、仿真时钟调度模块、仿真模型管理模块和仿真适配器模块组成。仿真任务中使用的每台物理仿真计算机都会部署一个仿真调度引擎。在同一个仿真任务中,有多少台物理仿真计算机就有多少个仿真调度引擎,当多个仿真调度引擎存在时,只有其中一个能够处理激活状态,其余皆为冗余备份引擎。处于激活状态的仿真引擎可对所有仿真计算机中部署的仿真模型进行状态调度和时钟调度,未激活的仿真引擎只能收集仿真模型的状态信息和时钟信息。

如图3所示,仿真计算机1中的仿真调度引擎的仿真时钟调度模块和仿真通信管理模块下的时钟流和控制流为双向箭头,表示该引擎即可以激励也可以收集仿真模型时钟和状态信息,而仿真计算机n中的仿真调度引擎对应模块下的时钟流和控制流为单向箭头,表示该引擎只能收集仿真模型状态信息。

对仿真调度引擎来说,仿真自适应模块都时刻处于运行状态。不同仿真计算机上的仿真调度引擎通过其仿真自适应模块和自适应算法决策出哪一个仿真引擎为激活状态。不同仿真调度引擎的仿真自适应模块通过仿真软总线直接通信。

仿真自适应模块会收集cpu负载信息,并在一定时间内对cpu负载作一个平均值。通过自适应模块设计,实现了仿真任务调度引擎冗余备份。

如图4所示,仿真自适应模块通过三个步骤来决策出哪个仿真调度引擎处理激活状态。第一步,仿真自适应模块向其它仿真调度引擎广播自己计算机的cpu负载和ip地址信息。第二步,其它仿真自适应模块接收到仿真调度引擎的cpu负载和ip地址信息后与自身的cpu负载和ip地址进行比较,判定自身是否为cpu负载最小的那个引擎。cpu负载最小的自适应模块会进行激活状态,而其它自适应模块会进行未激活状态。处理激活状态的仿真自适应模块会激活该仿真调度引擎的仿真通信管理模块和仿真时钟调度模块。第三步,处于激活状态仿真调度引擎的仿真自适应模块会持续广播cpu负载信息,而处于未激活状态仿真调度引擎的仿真自适应模块会停止广播cpu负载信息。

如图5所示,仿真时钟调度模块的主功能是对仿真任务中的所有模型进行仿真时钟调度。仿真调度模块按照每个模型的周期发送时钟脉冲给仿真模型。由于仿真模型的解算受操作系统任务调配的影响,仿真模型在某个仿真周期可能出现仿真解算时间大于仿真步长的现象,即仿真解算超时,此时仿真调度模块会等待仿真模型解算完毕才会发送下一周期的时钟脉冲。在这种情况下,模型仿真解算时长会大于物理时长,但是仿真解算并不会失败,此种仿真称为软实时仿真。分布式并行实时仿真调度实质为一种软实时仿真调度,其时钟脉冲总体为非均匀脉冲。对于严格要求仿真模型解算都在本周期内完成的仿真称为硬实时仿真,其时钟脉冲为均匀的脉冲。

当一个系统中同时存在软实时仿真和硬实时仿真时,需要实时仿真适配器模块来调节时钟脉冲的衔接。通过实时仿真适配器模块的设计,实现了仿真软实时与硬实时的互连。

如图5所示,当仿真适配器模块接入到系统中时,仿真适配器模块会先接收硬实时仿真的硬时钟脉冲,并实时记录该脉冲的周期数及频率。

仿真适配器模块将接收到的硬时钟脉冲依次发送给仿真时钟调度模块,再由仿真时钟调度模块将仿真脉冲发送给仿真软总线上的所有仿真模型,同时仿真时钟调度模块会记录每个仿真模型每周期仿真结束时的仿真时间。当所有仿真模型该周期仿真结束后,立即给仿真适配器模块一个时钟反馈信号,仿真适配器模块收到时钟反馈信号后才会决定何时向仿真时钟调度模块发送下一个时钟脉冲。此时会出现以下两种情况:

a)仿真适配器模块发送脉冲信号和收到时钟反馈信号的间隔小于硬时钟周期;

b)仿真适配器模块发送脉冲信号和收到时钟反馈信号的间隔大于等于硬时钟周期。

对于第一种情况,仿真适配器模块会在下一次收到硬时钟脉冲信号的时刻立即发送脉冲信号给仿真时钟调度模块。

对于第二种情况,仿真适配器模块会立即发送脉冲信号给仿真时钟调度模块,并记录下延时收到时钟反馈信号的时钟误差rt以及总的时钟误差t。在后续的仿真中,每遇到第一种情况时,立即发送脉冲以消除之前仿真带来的时钟误差t,形成仿真追赶脉冲。

总的时钟误差t在随后的时钟周期内被消除,消除方法为:当后来的时钟周期出现“发送时钟脉冲和收到时钟反馈信号的间隔小于硬时钟脉冲周期”的情况下,立即发送时钟脉冲,并记录该时刻与下一次实际接收到硬时钟脉冲的时刻rt,并从总的时钟误差t中减去rt,直到总的时钟误差t减到0为止。

如图6所示,在t3时刻,上一周期软实时仿真出现第二种情况,带来了仿真延误δt,其后的一个周期仿真适配器模块发送脉冲信号和收到时钟反馈信号的间隔都等于硬时钟周期,再接着的周期仿真适配器模块发送脉冲信号和收到时钟反馈信号的间隔小于硬时钟周期,此时,仿真时钟调度模块立即发送脉冲信号,消除t3时刻带来的仿真时钟误差δt。如此,在t10时间内,硬时钟脉冲和软时钟脉冲都各有5个脉冲周期,即实现了仿真软实时与仿真硬实时的完美连接。

对于传统仿真来说,仿真调度引擎负责仿真模型间输入与输出数据的传输。

在本分布式并行实时仿真调度中,仿真调度引擎不再负责模型与模型之间的数据传输,而是采用仿真模型调用仿真软总线提供的输入接口和输出接口直接读写仿真软总线来实现模型间的数据传输。输入接口指仿真软总线提供的读数据api函数。输出接口指仿真软总线提供的写数据api函数。dds主题指数据发分服务定义的同一类型属性的数据集合,此处代表由模型输出和输出组成的一对数据集。每个主题都使用数据分区内不同的虚拟数据传输通道,该虚拟数据传输通道无中心节点转发节点,实为点对点的传输。

如图7所示,该仿真任务包含仿真模型1和仿真模型2两个仿真模型(仿真模型可以是不同仿真软件建立的模型)。仿真模型1与仿真模型2各有两个输入(向上的箭头)和输出(向下的箭头),每个输入和输出都与仿真软总线上的一条数据流连接,形成了四条不同的数据连接。每条连接可用数据流内的一个主题描述,并由该主题提供的接口读写仿真软总线来实现数据传输。如图7所示,上述四条连接可用主题a、b、c和d描述,主题a提供①和⑦读写接口,主题b提供②和⑧读写接口,主题c提供③和⑤读写接口,主题d提供④和⑥读写接口。

在仿真的每个周期,仿真模型1与仿真模型2直接调用模型的输入接口和输出接口从仿真软总线上对应的数据流读取和写入数据,达到仿真模型之间数据传输单向进行,实现了数据点对点的传输方式。

本发明通过定义一条仿真软总线,仿真调度和各仿真模型都与该仿真软总线互联,仿真时钟和仿真数据都通过点对点的方式在仿真软总线上互连,每条数据连接在仿真软总线内部通过dds端口进行区分,使得仿真系统内的各个元素都不存在耦合关系,并且支持仿真调度的冗余设计,大大增加了分布式仿真系统的稳定性。仿真软总线用以太网为介质,增加了分布式仿真系统的数据吞吐量。设计实时适配器,该适配器能够根据软实时仿真系统运行的快慢,适当的疏松或紧密来自硬实时仿真系统的仿真时钟,从而达到与硬实时仿真系统的对接。

该仿真调度从数据和时钟两个角度进行了重新设计,提高了仿真效率,采用仿真软总线方法,降低了系统的耦合性,也方便了实时仿真适配器模块与硬实时的对接。

定义仿真软总线,将软总线内部数据分为三种类型:控制流、时钟流和数据流。控制流完成仿真引擎对仿真模型的状态调度任务;时钟流负责时钟数据的传输,主要完成仿真引擎对仿真模型的时钟同步任务;数据流完成仿真模型之间数据交互的任务。软总线应用国际对象管理组织omg提出的dds数据服务,将不同的仿真任务放在不同的域(domain)内执行,将同一仿真任务的控制流、时钟流和数据流放在不同的分区(participant)内执行,不同域及分区之间互不影响,从而完成并行分布式仿真的功能。

定义仿真通信管理模块,该模块根据仿真任务状态对所有仿真模型状态进行仿真调度(仿真模型状态包括就绪、运行、暂停和停止)。

定义时钟调度模块,根据分布式仿真系统中仿真模型运行的快慢自动调整时钟的供给速度,以期整个仿真时长与物理时钟时长一致。

定义模型管理模块,将仿真模型的仿真状态信息和仿真时钟信息收集存储在仿真调度内,以提供给仿真调度进行软实时仿真时使用。

定义自适应模块,该模块支持在仿真网络中存在多个仿真调度,仿真调度间相互不影响,自适应模块通过自适应算法决策并激活其中一个仿真调度的通信管理模块和时钟调度模块,其余皆为仿真调度的冗余备份。

定义适配器模块,该适配器模块支持将分布式并行软实时系统接入到硬实时系统中,该模块能记录硬实时器的时钟,再根据软实时系统的仿真情况将仿真时钟送给分布式仿真模型。

本分布式并行实时仿真调度设计采用通信管理模块控制分布式并行实时仿真系统整体动作,通过时钟调度模块激励分布式并行实时仿真系统的运行,并实时更新模型仿真时钟、状态等信息到仿真模型管理模块。本设计独特采用仿真自适应模块,使得分布式仿真系统中可以多个调度存在,且在同一时刻仅有一个发挥作用,其余皆为冗余设计,充分保障了分布式并行实时仿真系统的顺利运行。

本设计独特采用实时仿真适配器模块以实现分布式软实时与硬实时的无缝对接,增加了分布式实时仿真系统的适应能力。分布式并行仿真是将一个仿真任务分解为多个子模块及数据交互接口,分派到不同计算节点上进行的仿真。强实时仿真是指仿真模型运行的时间和状态与真实系统运行的时间和状态一致的一类仿真。软实时仿真是指仿真模型运行的时间和状态与真实系统运行的时间和状态总体近似一致的一类仿真。

分布式并行实时仿真调度实现了对分布式仿真系统中仿真模型按各自的模型步长进行统一协同调度,且在仿真调度时,舍弃了对仿真模型接口的存储交互功能,而是采用模型接口点对点传输的方式,克服了传统分布式仿真系统数据通信容量小的缺点。该仿真调度存储仿真模型的仿真信息,实现对仿真调度这一核心进程的冗余备份,增加了分布式仿真系统的适用性。该系统内置实时适配器,可以将仿真软实时系统接入到仿真强实时系统中去,可以实现同一个仿真系统中实现强实时与软实时子系统的并存。

应用案例:该实施例是应用在飞机系统设计中的多电系统负载仿真平台,同时包含分布式并行实时仿真和硬实时仿真。应用不同领域的仿真软件建立多电系统内不同子系统(如环控、液压、燃油、起落架、防除冰、机电综合管理、发动机、飞行动力学等)的模型,并通过协同仿真调度技术将仿真软件建立的模型有效集成,协同仿真及优化设计,并进行动态仿真分析,充分考虑子系统仿真模型之间的数据交联影响,优化各机电子系统设计参数,以实现机电系统全局优化的目标,为机电综合管理系统设计提供依据。

该协同仿真调度平台能够进行软实时仿真,并通过仿真适配器接口模块与机电系统硬实时仿真平台连接,实现半实物仿真验证。

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