Menu

索为获得中国创新挑战赛暨中关村新兴领域专题赛优秀奖

发布时间:2022-03-18

冬去春来,万物复苏。第六届中国创新挑战赛暨中关村第五届新兴领域专题赛完美收官,索为公司的参赛项目“分布式仿真环境-模型总线”解决方案荣获大赛优秀奖。

1.png.jpg

本次大赛由科技部火炬中心、北京市科委、中关村管委会、国防科技工业局信息中心主办,旨在通过专题赛,完善军民科技对接服务平台,开展专家辅导、融资合作、成果转化、政策解读等服务,推进有效需求与科技成果直接对接,努力探索形成军民协同工作机制,进一步释放“民间高手”创新潜能,为军队挖掘亟需的前沿创新技术,为地方培育更多优秀军民融合企业和优秀创新团队,更好服务经济建设和国防建设融合发展。

2.png.jpg

索为参赛项目:分布式仿真环境-模型总线

Ø  解决方案简介

在大规模复杂系统的研究中不可避免地涉及到跨工具、跨领域、跨尺度的集成仿真问题,传统的单一领域或学科的仿真技术仍面临新的挑战,如求解大规模模型能力不足、无法高效求解跨尺度问题以及无法进行异构模型集成等。本方案开发了一套能够“白盒”集成异构模型的分布式集成仿真架构,该分布式架构由服务器和客户端两部分组成:服务器负责整个仿真过程的全部客户端的同步、仿真计算推进、数据交互,客户端负责将每个模型内部需要交互的数据提取出来并传输到服务器端,服务器通过给每个客户端分配端口来交互数据,所有空闲的计算机端口都可以用来进行分布式仿真数据的交互。

Ø  应用价值

1.         适用于大规模复杂系统多仿真工具统一调度与并行求解,有效地解决了不同仿真工具(含商业和自研)之间的连接接口问题;

2.         通过分布式架构并行求解,能显著提高仿真效率,并且操作便捷。

Ø  关键技术

本方案的最终目的是构建一个模型同步求解且高效交互、分发数据的中转枢纽,进而实现大规模复杂系统集成仿真。在大规模复杂系统领域,可将被集成的模型分为四类,如下图所示:

3_副本.png

被集成模型的主要类型

针对这四大类,本方案分别给出了四种模型集成方法:

1.         异构模型的集成与联合仿真

目前国内对于异构模型的集成仿真没有合适的解决方案。国外机构和公司在处理多源异构模型集成仿真时普遍采用针对集成仿真所涉及的特定版本的仿真软件(商业或开源)进行二次开发,编制出与其定义的数据服务所匹配的控件,进而完成多源异构模型的集成仿真。

本方案提出一种新的集成仿真方法。具体技术路径为:利用C++为底层开发语言,结合TCP/IP通信、多线程和时钟同步算法等技术,搭建一个基于通用fmu接口文件的多源异构模型集成仿真架构,通过“同步时钟算法”实现仿真模型的数据同步交互,架构中的服务器端采用并行通信以进一步提升求解效率。该集成仿真架构由服务器和客户端两部分组成,服务器负责整个仿真过程的全部客户端的同步、仿真计算推进、数据交互,客户端则负责将每个模型内部需要交互的数据提取出来并传输到服务器端。

4_副本.png

多源异构模型集成仿真架构

2.         代码形式模型的集成与联合仿真

在集成仿真过程中,有时不可避免地需要集成一些特殊的模型,如C/C++源代码、*.dll文件、Python函数等。本方案采用了基于动态链接库的多种代码集成技术,构建了一个*.dll格式的代码集成中间件,通过与服务器端协同,基于异构模型求解器并联时钟同步技术可实现整个分布式网络下的同步求解。另一方面,中间件作为桥接枢纽,可以向不同类型的代码程序分发与交互通信数据,能够最大限度地保证系统健壮性,使所有的代码程序都调用同一个中间件,系统更加稳定可靠,同时避免了重复开发中出问题的概率和大量针对不同代码程序开展的二次开发工作,节省周期和成本。

5_副本.png

统一形式的异构代码集成工作原理

本方案还提供了C/C++集成与开发专有环境,将“通用中间件”内置,实现了自动调用,无需手动操作,这样能够提供更加便捷的使用体验,使用者可以轻松地导入C/C++代码(或外部库)和*.dll文件。此外,用户也可以自定义一些数值计算方法放在本地作为库函数使用,通过该专有环境可以更加便捷地接入分布式联合仿真网络。C/C++集成与开发专有环境会直接生成一个空白的集成与开发环境,语法完全兼容C/C++,后台调用MinGW开源编译器。

3.         变维度异构模型集成与联合仿真

随着产品复杂度和系统耦合度的不断增加,单一学科仿真逐渐不能满足工程应用的需要,多学科联合仿真,尤其是低维系统仿真与高维场仿真之间的联合仿真需求越来越迫切。目前变维度集成仿真的方法主要有两种:静态参数混合、动态直接混合。静态参数混合的方法是:通过部件的高维静态仿真,识别出零维或一维模型中的参数,然后开展系统动力学仿真。试验数据的拟合多用到这样的处理方法,从本质上讲,这种方法是一种对场仿真结果数据的简单后处理。动态直接混合的方法是:直接开展低维和高维的混合仿真,两套模型按照通信步长逐帧通信,即“在线耦合”。这种方法从准确度角度看是比较好的,但是由于动态场仿真计算量很大、效率较低,会拖慢整体仿真效率,一般不建议使用。

本方案提出了一种新的变维度联合仿真方法“动态参数混合方法”,综合权衡计算效率和准确度,是一种相对更适合集成仿真的方法。基于“脚本-中间件模式”的模型二次耦合技术,通过脚本文件*.bat或其他形式)进行一次耦合,将场仿真模型接入分布式集成仿真网络,随后通过代码集成中间件进行二次耦合,两次模型耦合都发生在同一时间步,都受到服务端时钟同步算法的控制。

选定适当的输入输出作为给定边界条件,开展一定条件下的部件(或产品)稳态场仿真;随后,通过一定的数据处理方法对稳态场仿真结果进行降阶处理和数据重构,并形成“代理模型”,如果模型本身计算量不大也可以直接用原模型求解;接下来编制场仿真脚本文件(*.bat或其他形式),利用脚本文件运行第一步的场仿真模型并保证结果正确;最后利用代码集成功能调用第三步的脚本文件,约定一个通信步长,每一个通信步调用一次脚本文件(每一帧运行一次稳态场仿真模型的求解),并通过代码集成实现与服务器的数据交互。

6_副本.png

基于“脚本-中间件模式”的模型二次耦合方案

我们以液路系统联合仿真为例,当我们做液路系统动特性分析时,假设其中一个弯头的流场特性对我们设计特别重要,很自然地我们就会想到能不能这个弯头用场仿真算一下,但考虑到计算效率其他部分仍然用系统仿真(集中参数)来处理。

我们用CFX做一个三维的场仿真模型,再用SimulationX做一个简单的液压管路,其中液压模型库采用Modelica搭建。系统仿真模型给流场模型输入流量边界,流场模型反馈一个压力作为输出。Modelica模型与CFX模型在分布式仿真架构中集成仿真如下图:


7_副本.gif

液路系统变维度异构模型集成与联合仿真

4.         离散模型与连续模型联合仿真

本方案支持在SysMLModelica模型之间高效、自动地转换建模信息的实现,并且对需求验证提供支撑。基于SysML的功能逻辑模型在系统仿真过程中作为“状态机”的角色,其发送的信号为各种控制按钮的随机变量信号(01或其他常量),它是一种状态量或者数字量信号,当特定的时刻数据发送一次之后流程就结束了,而在连续系统仿真中,所有变量都是时间的函数。为了将两种系统兼容集成,需要借助离散-连续系统数据转换技术。通过数据转换技术将SysML模型在特定时刻信号发送之后跟随仿真时间连续按照约定的通信步长发送数据,直至下一次信号触发并转换,通过这样的方式将离散信号转换为状态量。


8_副本.png

离散信号和连续状态之间的相互转换方式

Ø  总结

通过介绍以上分布式联合仿真的关键技术,能够为用户获得诸多方面的益处。如:

1.  利用分布式交互技术实现仿真数据交互和同步,进而完成复杂模型的高效运行。可以轻松地处理大规模集成仿真;

2.  受软件接口、建模语言以及商业利益等因素的制约,目前主流的各类仿真软件彼此之间无法做到模型与数据的无障碍交互。分布式联合仿真技术为多源、异构模型的集成仿真提供解决方案;

3.   国内在变维度仿真领域尚无成熟的解决方案,模型总线所给出的基于“脚本-中间件”二次耦合模式的变维度仿真技术方案是目前唯一可以落地的解决方案

4.   实现了对需求仿真工具Modelook和Magicdraw的兼容,可以将需求模型作为指令端与具体的物理模型进行协同仿真,实现了从需求端指令到物理对象的动态特性的交互。在MBSE领域提供了一种从需求到仿真的集成方案。

对比传统的单一仿真工具,分布式集成仿真不仅实现了多源、异构仿真模型的集成,同时能将计算效率提升一个数量级,解决了由于模型过于庞大而跑不动的问题,为数字孪生和性能样机的构建与求解提供了一种全新的解决思路。