首页/文章/ 详情

GCAir与第三方软件联合仿真实现

2年前浏览6710

一、摘  要


现代复杂机械产品,无论是机器人、地面车辆、航空航天飞行器还是海洋船舰,乃至工程机械,均在向智能化方向发展。智能化的机械系统一般包含电子控制、液压与电气驱动、机械机构等组成部分,由电子控制系统通过电液驱动执行环节完成作业,这些组成部分集成在一起,使其动力学特性极为复杂。

这些系统由于各自的学科特点不同,其建模和仿真分析所采用的方法也不同,并且具有各自不同的数值求解方法。要分析智能化机械产品复杂的动力学性能,必须能够将电子控制、液压与电气、机械机构等不同部分的仿真模型集成到一起,从而分析它们之间的交互作用。

所以联合仿真是异构系统集成仿真必需的一步,GCAir基于FMI标准,可以配置导出FMU,此FMU可以被第三方仿真软件导入,通过TCP通讯实现GCAir与第三方仿真软件之间联合仿真。

图1.GCAir与第三方软件联合仿真原理      

二、案 例 介 绍


2.1GCAir与Simulink联合仿真

GCAir通过TCP模块与Simulink实现数据传送与接收,把GCAir中的正弦波、时间数据传输到Matlab/Simulink中,并在Simulink中显示,观察GCAir仿真时间与Simulink时间的关系;同时把Simulink中的常数值传输到GCAir中来,并显示。

2.1.1GCAir中建立仿真模型

在GCAir中新建工程,并创建子系统,在创建的子系统中使用TCP模块与Var模块。TCP模块可以设置传输的通道数及输入输出接口,此处设定两个输出与两个输入接口,如下图所示。

图2.TCP模块生成FMU      
设定好输入与输出接口后,在右上角把TCP改为Cosim,并单击FMI图标,即可生成TCP模块的FMU。在选择保存路径时,最好选择与GCAir工程下同一路径,如果保存到其他位置,请记住,这个FMU接下来会用到。      
使用Var模块,设定传输的正弦函数与GCAir的仿真时间SIMTIME,如下图所示。      

图3.Var模块设置输出数据      
TCP模块生成FMU与Var模块建好后,在子系统先进行连接,如下图所示。      

图4.联合仿真测试GCAir仿真模型      
2.1.2Simulink中建立测试模型      

GCAir的准备工作已经做好了,接下来进入到Simulink中建立工程,并搭建联合仿真测试所需的模型。在Simulink模型库→Simulink_Extras中找到FMU_Import模块,FMU_Import是导入用来GCAir中TCP模块所生成的FMU。

图5.Simulink导入FMU

Simulink中使用FMU _Import模块导入FMU后,并搭建测试所需的模型,如下图所示。

图6.联合仿真测试中Simulink仿真模型

2.1.3联合仿真测试及结果

在Simulink求解器中,选择定步长求解0.01s,如下图所示。此处需要注意,GCAir与Simulink联合仿真时,两者的仿真步长一定为正数倍的关系,否则会联合仿真失败。

图7.设置Simulink求解器步长

仿真结果如下图所示:

图8.联合仿真结果

2.2GCAir与FMPy联合仿真

基于FMPy开源库和GCAir导出联合仿真FMU功能,实现在python环境中调用的GCAir仿真平台的功能,并在仿真过程中实现数据交互。

2.2.1FMPy介绍

FMPy是python语言的扩展库,用来对FMU(Functional Mock-up Units)进行仿真。目前FMPy支持:

1)FMI1.0和FMI2.0标准

2)支持Co-Simulation 和Model Exchange模型求解

3)可以在Windows、Linux和macOS系统下运行

4)具备有和用户交互界面

5)编译C代码FMU并生成CMake项目以进行调试


2.2.2安装FMPy

1)使用conda安装:conda install -c conda -forge fmpy

2)使用pip安装:python -m pip install fmpy[complete]


2.2.3示例工程介绍

六自由度模型为GCAir平台自带示例工程,该示例工程通过GCAir系统建模工具,将导弹各部件的仿真模型进行封装,建立了六自由度导弹的模型库,而后在系统页面中进行了比例导引控制回路仿真系统集成,然后进行仿真。该工程中包含了能够参数化配置的机动目标、导引头、六自由度弹体、弹载计算机以及简化的舵机模型。该示例的目标是在不同初始条件及杀伤半径的情况下,对末段追踪的脱靶量控制效果以及杀伤概率进行分析评估。

图9.模型架构图

本示例在原工程的基础上,改造Target(机动目标)子系统,使得机动目标的位置、速度由python环境输入,同时将导弹的位置、速度输出到python环境中,方便用户判断是否命中。

图10.TCP配置如下

点击上图右上角的fmu 图标将tcp导出成FMU,以便被FMPy调用

图11.fmu_slave

图12.外部连线设置

在仿真的过程中FMPy通过SetReal函数将目标的位置、速度传入到GCAir功能中;同时通过GetReal函数拿到导弹的位置;然后对目标位置和导弹位置做出判断,如果导弹接近目标半径10米以内,表示命中目标,仿真停止。

图13.仿真数据交互控制

仿真结果如下图所示:

图14.目标及导弹坐标变化曲线

图15.导弹命中目标仿真停止      

三、应 用 场 景


GCAir导出FMU_slave扩展了GCAir平台的应用场景:

可以方便在Simulink、SimulationX中做控制模型、子系统模型的快速开发,与GCAir进行联合调试。

在机器学习方面:数据驱动与模型驱动必须融合,才能各自发挥其优势,基于数据的可以发掘潜在的规律,而模型将已有的知识形成控制,两者互补,学习到的新规律可以被融入到机理模型,而机理模型又能够为学习奠定基础。在GCAir中建立机理模型,通过Python环境的搭建智能算法,借助FMPy可以与GCAir工程进行实时的数据交互,通过不断的仿真对智能算法进行训练。

航空航天电子python海洋Simulink化机SimulationX控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-09-29
最近编辑:2年前
世冠科技
国内领先的系统仿真工业软件和数...
获赞 25粉丝 17文章 142课程 1
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈