一种分布式仿真同步方法及系统转让专利

申请号 : CN202211594808.8

文献号 : CN115642980B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 袁志明张琦张秀广张涛吕宜生王飞跃林鹏王振一王荣笙

申请人 : 中国铁道科学研究院集团有限公司通信信号研究所中国铁道科学研究院集团有限公司北京华铁信息技术有限公司北京锐驰国铁智能运输系统工程技术有限公司

摘要 :

本发明公开了一种分布式仿真同步方法及系统,所述方法包括下列步骤:S1.初始化仿真节点;S2.设置时间基准和仿真开始时间;S3.设定仿真的倍速步长;S4.模拟步长仿真;S5.输出仿真结果。本发明通过在实际系统和仿真系统之间增加虚拟时钟,用于校准各仿真子节点的系统时钟和同步仿真开始时间,解决时钟漂移、网络延迟和消息丢包的问题;通过在仿真系统的主节点中设置主控制器,用于向各仿真子节点发送系统时钟同步和仿真开始时间的校准命令,动态调整倍速仿真的时间步长,检查消息队列的完整性、机密性和可用性。

权利要求 :

1.一种分布式仿真同步方法,其特征在于,所述方法包括下列步骤:S1.初始化仿真节点,按照实际系统的基本功能和业务逻辑定义分布式仿真系统的主节点和仿真子节点; 所述主节点中设置主控制器,用于向各仿真子节点发送系统时钟同步和仿真开始时间校准的命令;在仿真系统与实际系统之间设置虚拟时钟,用于校准各仿真子节点的系统时钟和同步仿真开始时间;

S2.设置时间基准和仿真开始时间,主节点的主控制器发送时间同步校准命令,虚拟时钟校准各仿真子节点的系统时钟,并同步仿真的开始时刻,包括:S21.同步各仿真子节点的系统时钟,具体包括:

步骤S211.仿真子节点向主节点发送NTP请求报文,其中包含报文离开仿真子节点的时间戳为 ;

步骤S212.令仿真子节点的请求报文到达主节点的时间点为 ,主节点的NTP服务器处理完报文信息后,令应答报文返回至仿真子节点的时间点为 ;

步骤S213.令仿真子节点收到返回报文的时间点为 ;

步骤S214.计算仿真子节点与主节点之间的偏移时间差步骤S215.各仿真子节点按照所述偏移时间差校准同步自身的系统时钟;

S22.同步各仿真子节点的仿真开始时间;

S3.设定仿真的倍速步长,主控制器动态调整仿真的倍速步长,主节点通过问询机制向各仿真子节点发送仿真命令信息;S4.模拟步长仿真,根据倍速仿真的时间步长更新实际系统和仿真系统的真实时间点;S5.输出仿真结果,仿真系统结果输出反馈至实际系统中,辅助用户决策。

2.根据权利要求1所述的一种分布式仿真同步方法,其特征在于,所述步骤S1包括:S11.拆解实际系统的基本功能和业务逻辑;

S12.根据功能业务划分分布式仿真系统的主节点和仿真子节点;S13.根据实际系统的基本功能和业务逻辑,描述主节点和仿真子节点的信息交互流程。

3.根据权利要求1所述的一种分布式仿真同步方法,其特征在于,所述步骤S3包括:S31.动态调整倍速仿真的时间步长;

S32.主节点与仿真子节点之间传递仿真命令消息。

4.根据权利要求3所述的一种分布式仿真同步方法,其特征在于,所述步骤S32包括:S321.主节点向仿真子节点发送仿真命令信息的问询指令,若仿真子节点已收到命令则发出回应信息;否则,若仿真子节点未收到问询命令,则反馈协商值,主节点重新发送问询指令;若仿真子节点仍无法收到问询指令,则直接开启下一个仿真周期;

S322.若主节点发送的问询命令已超过问询时间的阈值,则发出报警信息,退出当前仿真返回至主程序的进程;

S323.仿真子节点回应主节点的仿真命令信息后,主节点确认仿真开始,并执行当前倍速仿真的时间步长内的模拟仿真。

5.根据权利要求1所述的一种分布式仿真同步方法,其特征在于,所述步骤S4包括:步骤S41.计算实际系统和仿真系统的真实时间点;

步骤S42.模拟实际系统的仿真。

6.根据权利要求1所述的一种分布式仿真同步方法,其特征在于,所述步骤S5包括:主节点的主控制器检测仿真时间范围内所有消息队列的完整性、机密性和可用性,仿真系统输出最终的仿真结果并反馈至实际系统中。

7.一种用于实现如权利要求1‑6中任一项所述分布式仿真同步方法的分布式仿真同步系统,包括实际系统和仿真系统,所述仿真系统包括主节点和仿真节点,所述主节点中设置主控制器,其特征在于,所述主控制器,用于向各仿真子节点发送系统时钟同步和仿真开始时间校准的命令;在仿真系统与实际系统之间设置虚拟时钟,用于校准各仿真子节点的系统时钟和同步仿真开始时间;所述分布式仿真同步系统包括:初始化模块,用于初始化仿真节点,按照实际系统的基本功能和业务逻辑定义分布式仿真系统的主节点和仿真子节点;设置模块,用于设置时间基准和仿真开始时间,主节点的主控制器发送时间同步校准命令,虚拟时钟校准各仿真子节点的系统时钟,并同步仿真的开始时刻;设定模块,用于设定仿真的倍速步长,主控制器动态调整仿真的倍速步长,主节点通过问询机制向各仿真子节点发送仿真命令信息;仿真模块,用于模拟步长仿真,根据倍速仿真的时间步长更新实际系统和仿真系统的真实时间点;输出模块,用于输出仿真结果,仿真系统结果输出反馈至实际系统中,辅助用户决策。

说明书 :

一种分布式仿真同步方法及系统

技术领域

[0001] 本发明属于计算机仿真技术领域,具体涉及一种分布式仿真同步方法及系统。

背景技术

[0002] 分布式仿真按照实际系统的基本功能和业务逻辑构建仿真系统的主节点和仿真子节点,目前分布式系统主要采用常速仿真的方式,即仿真系统各节点的仿真时间与真实时钟的时间需要时刻保持一致。故亟需开展能够支撑业务逻辑同步和时序关系校准的快速分布式仿真方法及系统的研究。现有技术CN114297833A公开了一种面向分布式仿真的时间同步方法,从时间同步的设计角度,将分布式仿真系统的仿真节点分为时间同步的控制节点和响应节点,控制节点负责完成时间同步脉冲的产生和分发,响应节点负责接收控制节点的时间同步脉冲;所有分布式仿真节点基于时间同步脉冲统一推进仿真时间,对虚拟时钟源的时钟即仿真时间进行时间同步,使各仿真实体的数据时间戳在仿真时间上步调保持一致。现有技术CN114866178A了一种基于步长的分布式仿真系统时间同步方法,包括:确定不同仿真节点之间的同步步长;确定在每台计算机上的各仿真节点之间的本地时间同步步长t;确定分布式仿真系统时间同步步长T;要求T是t的整数倍;在每台计算机上,各个仿真节点按照本地时间同步步长t进行同步运行,每个仿真节点在运行至本地同步基准线;当所有仿真节点第n次到达本地同步基准线,且满足条件n*t=T时,向网络中其他计算机发送该机已经运行至下一个分布式同步基准线的信号,并检查是否已经接收到所有其他计算机已经运行至下一个分布式同步基准线的信号。
[0003] 但是上述现有技术CN114297833A并未考虑分布式系统中,各子个体在一个步长之内的时间推进速度,各子个体内部在一个步长之内的时间推进速度不同,会导致个体间数据通讯时序的混乱,而且在同步脉冲丢失的情况下,采用插值补偿的方法并不能完全避免步长不一致的情况发生,也会导致仿真步长的不一致,并会累积误差,最终造成整个分布式系统的时序混乱。现有技术CN114866178A同样存在未考虑各子个体步长内部时钟推进速度一致性的问题,也无法有效解决在一个步长内的各子个体间数据时序的问题,且也无法有效支持倍速仿真。
[0004] 上述现有技术在采用传统的常速仿真方式下,仿真系统各节点需要等待真实时钟的时间向前推移,由此产生较多的时间冗余空费,仿真效率极其低下;部分可支持快速仿真的分布式系统,并未考虑各仿真子节点之间的数据交互和业务逻辑同步问题,易出现业务紊乱和时序错误的问题。如何克服上述缺陷,解决步长内部时钟推进速度一致性和子个体间数据时序通信的问题,实现能够支撑业务逻辑同步和时序关系校准的快速分布式仿真方法及系统,成为本技术领域亟待解决的课题。

发明内容

[0005] 为克服上述现有技术的不足,本发明提供了一种分布式仿真同步方法及系统,具体采用如下技术方案:
[0006] 一种分布式仿真同步方法,包括下列步骤:
[0007] S1.初始化仿真节点,按照实际系统的基本功能和业务逻辑定义分布式仿真系统的主节点和仿真子节点;
[0008] S2.设置时间基准和仿真开始时间,主节点的主控制器发送时间同步校准命令,虚拟时钟校准各仿真子节点的系统时钟,并同步仿真的开始时刻;
[0009] S3.设定仿真的倍速步长,主控制器动态调整仿真的倍速步长,主节点通过问询机制向各仿真子节点发送仿真命令信息;
[0010] S4.模拟步长仿真,根据倍速仿真的时间步长更新实际系统和仿真系统的真实时间点;
[0011] S5.输出仿真结果,仿真系统结果输出反馈至实际系统中,辅助用户决策。
[0012] 进一步,所述主节点中设置主控制器,用于向各仿真子节点发送系统时钟同步和仿真开始时间校准的命令;在仿真系统与实际系统之间设置虚拟时钟,用于校准各仿真子节点的系统时钟和同步仿真开始时间。
[0013] 进一步,所述步骤S1包括:
[0014] S11.拆解实际系统的基本功能和业务逻辑;
[0015] S12.根据功能业务划分分布式仿真系统的主节点和仿真子节点;
[0016] S13.根据实际系统的基本功能和业务逻辑,描述主节点和仿真子节点的信息交互流程。
[0017] 进一步,所述步骤S2包括:
[0018] S21.同步各仿真子节点的系统时钟,具体包括:
[0019] 步骤S211.仿真子节点向主节点发送NTP请求报文,其中包含报文离开仿真子节点的时间戳为 ;
[0020] 步骤S212.令仿真子节点的请求报文到达主节点的时间点为 ,主节点的NTP服务器处理完报文信息后,令应答报文返回至仿真子节点的时间点为 ;
[0021] 步骤S213.令仿真子节点收到返回报文的时间点为 ;
[0022] 步骤S214.计算仿真子节点与主节点之间的偏移时间差
[0023]
[0024] 步骤S215.各仿真子节点按照所述偏移时间差校准同步自身的系统时钟;
[0025] S22.同步各仿真子节点的仿真开始时间。
[0026] 进一步,所述步骤S3包括:
[0027] S31.动态调整倍速仿真的时间步长。
[0028] S32.主节点与仿真子节点之间传递仿真命令消息。
[0029] 进一步,所述步骤S32包括:
[0030] S321.主节点向仿真子节点发送仿真命令信息的问询指令,若仿真子节点已收到命令则发出回应信息;否则,若仿真子节点未收到问询命令,则反馈协商值,主节点重新发送问询指令;若仿真子节点仍无法收到问询指令,则直接开启下一个仿真周期;
[0031] S322.若主节点发送的问询命令已超过问询时间的阈值,则发出报警信息,退出当前仿真返回至主程序的进程;
[0032] S323.仿真子节点回应主节点的仿真命令信息后,主节点确认仿真开始,并执行当前倍速仿真的时间步长内的模拟仿真。
[0033] 进一步,所述步骤S4包括:
[0034] 步骤S41.计算实际系统和仿真系统的真实时间点;
[0035] 步骤S42.模拟实际系统的仿真。
[0036] 进一步,所述步骤S5包括:主节点的主控制器检测仿真时间范围内所有消息队列的完整性、机密性和可用性,仿真系统输出最终的仿真结果并反馈至实际系统中。
[0037] 本发明还涉及一种分布式仿真同步系统,包括实际系统和仿真系统,所述仿真系统包括主节点和仿真节点,所述主节点中设置主控制器,所述分布式仿真同步系统包括:
[0038] 初始化模块,用于初始化仿真节点,按照实际系统的基本功能和业务逻辑定义分布式仿真系统的主节点和仿真子节点;
[0039] 设置模块,用于设置时间基准和仿真开始时间,主节点的主控制器发送时间同步校准命令,虚拟时钟校准各仿真子节点的系统时钟,并同步仿真的开始时刻;
[0040] 设定模块,用于设定仿真的倍速步长,主控制器动态调整仿真的倍速步长,主节点通过问询机制向各仿真子节点发送仿真命令信息;
[0041] 仿真模块,用于模拟步长仿真,根据倍速仿真的时间步长更新实际系统和仿真系统的真实时间点;
[0042] 输出模块,用于输出仿真结果,仿真系统结果输出反馈至实际系统中,辅助用户决策。
[0043] 进一步,所述主控制器,用于向各仿真子节点发送系统时钟同步和仿真开始时间校准的命令;在仿真系统与实际系统之间设置虚拟时钟,用于校准各仿真子节点的系统时钟和同步仿真开始时间。
[0044] 本发明提出了一种不受计算机操作系统时钟影响的分布式仿真方法及系统,实现与实际系统业务逻辑一致和推进时间同步的倍速仿真,在实际系统和仿真系统之间增加虚拟时钟,用于校准各仿真子节点的系统时钟和同步仿真开始时间,解决时钟漂移、网络延迟和消息丢包的问题。本发明在仿真系统的主节点中设置主控制器,用于向各仿真子节点发送系统时钟同步和仿真开始时间的校准命令,动态调整倍速仿真的时间步长,检查消息队列的完整性、机密性和可用性。

附图说明

[0045] 图1为本发明一种分布式仿真同步方法的流程示意图。
[0046] 图2为本发明一种分布式仿真系统的结构示意图
[0047] 图3为本发明NTP协议同步各仿真子节点的系统时钟示意图。
[0048] 图4为本发明各仿真子节点的仿真持续时间与缓冲时间的关系示意图。
[0049] 图5为本发明主节点与仿真子节点之间仿真命令信息的交互过程示意图。
[0050] 图6为本发明实际系统和仿真系统下真实时间点的对应关系示意图。

具体实施方式

[0051] 下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。
[0052] 除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
[0053] 如附图1所示,本发明的分布式仿真同步方法包括下列步骤:
[0054] 步骤S1.初始化仿真节点。按照实际系统的基本功能和业务逻辑定义分布式仿真系统的主节点和仿真子节点。
[0055] 步骤S2.设置时间基准和仿真开始时间。主节点的主控制器发送时间同步校准命令,虚拟时钟校准各仿真子节点的系统时钟,并同步仿真的开始时刻。
[0056] 步骤S3.设定仿真的倍速步长。主控制器动态调整仿真的倍速步长,主节点通过问询机制向各仿真子节点发送仿真命令信息。
[0057] 步骤S4.模拟步长仿真。根据倍速仿真的时间步长更新实际系统和仿真系统的真实时间点。
[0058] 步骤S5.输出仿真结果。仿真系统结果输出反馈至实际系统中,辅助用户决策。
[0059] 所述步骤S1的具体实现方法如下。
[0060] S11.拆解实际系统的基本功能和业务逻辑。
[0061] 以铁路调度指挥系统为例,其基本功能是针对全线的列车运行计划进行实时调整,业务逻辑为收发管辖范围内的列车运行状态信息(包括加速度、速度、位置、时刻等),实现中心行车调度台和车站自律机内列车运行计划的协同调整。
[0062] S12.根据功能业务划分分布式仿真系统的主节点和仿真子节点。
[0063] 例如上述调度指挥系统的中心行车调度台定义为主节点,用于监督和调整全线的列车运行计划;车站自律机定义为仿真子节点,用于接收、执行和反馈主节点所发送的列车运行计划。
[0064] S13.根据实际系统的基本功能和业务逻辑,描述主节点和仿真子节点的信息交互流程。
[0065] 令主节点为 ,各仿真子节点分别为 ,其中 表示仿真子节点总数。如图2所示,以1个主节点和4个仿真子节点的分布式交互仿真系统为例,定义节点映射矩阵 ,即
[0066]
[0067] 其中, 表示节点 与节点 之间是否存在信息传递关系(其中)。若存在,则 ,否则 。由于节点无法与自身传递和交
互信息,显然 。
[0068] 对于所述步骤S2,以附图2所示的分布式交互仿真系统为例,在仿真系统的主节点中设置主控制器,用于向各仿真子节点发送系统时钟同步和仿真开始时间校准的命令。在仿真系统与实际系统之间设置虚拟时钟,用于校准各仿真子节点的系统时钟和同步仿真开始时间,解决时钟漂移、网络延迟和消息丢包的问题。步骤S2的具体实现方法如下。
[0069] 步骤S21.同步各仿真子节点的系统时钟。
[0070] 由于主节点与各仿真子节点采用的是异步执行机制,各节点的系统时间并不一致,传递消息容易产生顺序混乱的问题。故本发明采用传统的网络时间协议NTP(Network Time Protocol),用于同步各仿真子节点的系统时钟,如附图3所示,具体方法如下:
[0071] 步骤S211.仿真子节点向主节点发送NTP请求报文,其中包含报文离开仿真子节点的时间戳 ;
[0072] 步骤S212.令仿真子节点的请求报文到达主节点的时间点为 ,主节点的NTP服务器处理完报文信息后,将应答报文返回至仿真子节点的时间点为 ;
[0073] 步骤S213.仿真子节点收到返回报文的时间点为 ;
[0074] 步骤S214.由报文信息传递的时间关系可知,仿真子节点与主节点之间的偏移时间差 的计算公式为
[0075]
[0076] 步骤S215.各仿真子节点按照偏移时间差 校准同步自身的系统时钟。
[0077] 步骤S22.同步各仿真子节点的仿真开始时间。
[0078] 令真实时钟和虚拟时钟的当前时间点分别为 和 ,二者对应的真实时间点分别为 ,其中 , , 和 分别表示真实时钟和虚拟时钟的最终时间点。令仿真开始的时间点为 ,仿真系统中主节点和4个仿真子节点的仿真持续时间分别为 , , , , 。当主节点和4个仿真子节点的仿真全部结束后,下一时刻的仿真才满足开始条件,故定义用于实现各仿真子节点同步的缓冲时间为 。各仿真子节点的仿真持续时间与缓冲时间 的关系如图4所示,缓冲时间 的计算方法如下:
[0079]
[0080] 其次,仿真开始时间 必须大于系统当前的真实时间点 ,以保证下一时间点是从当前的真实时间点 开始,其次需要满足同步缓冲时间 的约束,以确保所有仿真子节点的仿真全部完成,即
[0081]
[0082] 所述步骤S3包括以下两个步骤。
[0083] 步骤S31.动态调整倍速仿真的时间步长。
[0084] 令倍速仿真的时间步长为 ,该参数用于刻画实际系统推移和模拟仿真的时间范围。主节点的主控制器负责动态调整倍速仿真的时间步长 ,使真实时钟的下一时间点 应等于仿真开始时间点 与倍速仿真的时间步长 之和的整数倍,以满足仿真系统与真实系统的时间同步,即
[0085]
[0086] 其中,常数值M和时间步长 根据开发人员的需求进行动态调整。
[0087] 步骤S32.主节点与仿真子节点之间传递仿真命令消息。
[0088] 令相较于实际系统的仿真倍速为 ,结合虚拟时钟时间点 时的仿真开始时间,以及倍速仿真的时间步长为 ,定义仿真命令信息的三元组。以附图2所示的分布式仿真系统为例,参见附图5,所述主节点
与仿真子节点之间仿真命令信息的交互过程具体如下:
[0089] 步骤S321.主节点向仿真子节点发送仿真命令信息的问询指令,若仿真子节点已收到命令则发出回应信息;否则,若仿真子节点未收到问询命令,则反馈协商值,主节点重新发送问询指令。若仿真子节点仍无法收到问询指令,则直接开启下一个仿真周期;
[0090] 步骤S322.若主节点发送的问询命令已超过问询时间的阈值,则发出报警信息,退出当前仿真返回至主程序的进程;
[0091] 步骤S323.仿真子节点回应主节点的仿真命令信息后,主节点确认仿真开始,并执行当前倍速仿真的时间步长 内的模拟仿真。
[0092] 仿真命令信息传递过程中,主节点与各仿真子节点之间通过TCP协议的ACK‑重发机制,解决数据包丢包、重复和时序错乱的问题。
[0093] 所述步骤S4包括下列步骤。
[0094] 步骤S41.计算实际系统和仿真系统的真实时间点。
[0095] 由所述步骤S3得到倍速仿真的时间步长 和设置的仿真倍速 ,首先计算实际系统的下一时间点 ,即
[0096]
[0097] 上式表示真实系统的时间点随着倍速仿真的时间步长 向前推移。
[0098] 实际系统和仿真系统下真实时间点的对应关系如附图6所示,结合上述实际系统的下一时间点计算过程,计算仿真系统的下一时间点 ,即
[0099]
[0100] 其中,真实时钟的时间点 ,虚拟时钟的时间点。
[0101] 步骤S42.模拟实际系统的仿真。
[0102] 考虑所述步骤S1中的节点映射矩阵 、所述步骤S2设置的时间基准和仿真开始时间 、所述步骤S3中倍速仿真的时间步长 、实际系统和仿真系统的真实时间点 和 ,将上述信息封装为消息队列 ,即
[0103]
[0104] 其中,消息队列按照时序关系进行排列。消息队列的主节点与各仿真子节点之间可通过发布/订阅模式进行消息传递,即主节点发布消息队列,通过主题按时序传递至各仿真子节点,确保各仿真子节点之间在每个仿真步长内时序和业务逻辑的正确性。
[0105] 仿真系统遍历仿真时间范围内的各时间点,实现主节点与仿真子节点的倍速模拟仿真。主节点与仿真子节点之间相互传递仿真命令消息,主节点的主控制器负责确保消息队列信息的完整性、数据的无积压和未溢出。
[0106] 所述步骤S5中,主节点的主控制器检测仿真时间范围内所有消息队列的完整性、机密性和可用性,仿真系统输出最终的仿真结果并反馈至实际系统中,辅助用户制定决策指令。
[0107] 如上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。