找回密码
 立即注册
查看: 268|回复: 0

AMESIM与Unity 3D基于文件的交互实现

[复制链接]
发表于 2022-11-15 15:01 | 显示全部楼层 |阅读模式
相关视频,请访问【后厂造】官网查看

摘要:AMESIM系统仿真平台主要在产品研发的各个阶段为用户提供性能预测与优化,支持产品设计决策。该平台支持用户以脚本或API形式开展系统仿真工作,这大大提升了仿真效率,进而节省了研发时间。此外,基于脚本或API还可以将AMESIM与前端关联,实现人机交互功能以及获取更好的展示效果。通过此次培训,用户将对AMESIM基于Python脚本的调用有初步认识,理解AMESIM与Unity 3D结合的基本思路和方法。
1. 前言

数字孪生(Digital Twin):为物理对象建立对应的数字模型,该模型可以通过接收来自物理对象的数据而实时演化,从而与物理对象在全生命周期保持一致。基于数字孪生,我们可以进行分析、预测、诊断、训练等(即仿真),并将仿真结果反馈给物理对象,从而对物理对象进行优化和决策。


相比于对数字孪生的认识,那么更重要的是如何实现数字孪生。一般来说提到数字孪生,第一时间想到的是可视化大屏,炫酷的3D渲染模型,VR/AR等形式的交互功能。确实,前端总是给人印象深刻,类似于Unity3D、UE4等工具被广泛应用于工业中的数字孪生。使用 Unity 能够对模型数据、传感器数据或点云数据进行实时传输和渲染,在添加物理特性和行为逻辑后,不仅可以将简单、抽象的模型和数据处理为照片级的实时渲染效果,还可以在多个平台以 AR/VR/MR 的形式进行交互,实现数字孪生。


如上图所示一个典型的数字孪生工厂的实现都采用传统的数据服务跟前端之间通信实现,以Unity为例大体分为几个步骤:
1. 加工设备安装IOT设备,IOT将获取PLC数据并以JSON的格式实时上传
2. 需要有一个接收服务,可以是写的一个简单的接收数据后端服务,接收IOT上传的数据
3. Unity通过HTTP或者Socket方式从服务端实时获取数据
4. 通过实时获取的数据,在Unity中实时对映射的虚拟设备驱动
5. 如果要反向控制,则反向,由Unity发出命令,服务接收命令,iot获取命令给PLC 从而控制物理设备
数字孪生工厂实现又可以称为“生产孪生”,是把生产过程数字化的典型应用。而全面综合的数字孪生体包含了产品孪生、产线孪生、运维孪生,今天我们要讨论的主题聚焦在产品孪生方面,一个基本的实现过程大体可以归类为以下几个步骤:
1. 根据产品设备实体创建性能数字孪生体,要求其高精度预测产品各方面性能
2. 对性能数字孪生体进行降阶从而达到实时或准实时要求
3. 该降阶模型由仿真工具解算,并将结果以文件、数据流等方式上传到服务器数据库
4. Unity通过HTTP或者Socket方式从服务端实时获取数据
5. 通过实时获取的数据,在Unity中实时对映射的虚拟设备驱动
6. 如果要反向控制,则反向,由Unity发出命令,服务接收命令,驱动仿真工具运行降阶模型并反馈预测结果


本文从应用角度出发:首先,介绍python脚本如何驱动AMEIM软件执行性能数字孪生体的解算并反馈结果文件;然后,讲述Unity 3D调用python脚本驱动AMESIM执行并获取计算结果的基本实现方法。
2. 脚本驱动AMESIM的应用价值与具体实现

为了实现自动化仿真流程,大部分仿真工具都开放了二次开发接口,AMESIM工具亦是如此。AMESIM本身为用户提供了开箱即用的API接口和脚本函数库,粗略上看API功能更加强大,支持从草图、子模型、参数、仿真、优化全模式的自动化流程实现,而脚本的目标是在参数和仿真模型下执行自动化任务,包括设置和获取参数、时域/频域分析、仿真结果后处理,上述功能组合后扩充应用场景如下:
l 自动批处理
l 参数研究:DOE、蒙特卡洛、敏感度分析
l 后处理:2D/3D绘图、动画、信号处理、谱分析
l 定制后处理UI
l 与第三方工具集成,读写自定义格式文件、连接数据库
性能数字孪生体的绝大多数应用场景为改变边界条件并预测性能变量结果,相比于API而言,脚本的应用更适合。当然脚本使用存在一些限制:
l 通过脚本不支持Undo/Redo
l 对模型进行参数设定和仿真,模型必须被展开,需要对ame执行explode命令
l 被运行的模型已经被编译并执行过
l 参数改变不会被模型文件保存
l 对于设计试验研究,控制输入和响应输出必须提前在Simcenter Amesim export setup中定义好
l DEO和优化执行被python调用,VBA和MATLAB不行
l 需要Runtime License


AMESIM支持的脚本语言包括VBA、Python、Matlab。此外,除Visual Basic应用程序之外,所有脚本语言都是独立于平台的。而Python被称为“万能胶水”语言,是二次开发的首选,下面展示一个Python脚本的实现流程。
1. STEP1 :打开AMESIM工具,创建一个阀控缸模型,编译运行后保存


2. STEP2 :AMESIM模型文件同目录下,新建一个“SCRIPT_1.PY”文件,写入下述命令,具体命令解释已备注


3. STEP3 :在cmd下调用python执行脚本,验证代码正确性


4. STEP4 :“SCRIPT_1.PY”基本实现了脚本驱动模型执行并后处理绘图的功能,但变量数据在实行过程中存储于内存中,后处理绘图也是在解算全部完成之后开始的,与实时绘图的预期不符合。故再写一个脚本“SCRIPT_2.PY”,每次调用这个脚本实现变量数据从内存存入TXT文件的功能。


通过上述代码,我们可以实时获取需要的变量参数,存入文件或者数据库都可。整个过程的实现过程十分简单方便,这要得益于AMESIM提供强大的脚本函数库,更多的可用函数可以参考帮助文件。


3. Unity 3D调用python脚本驱动AMESIM

对于一个前端工程师来说,用C#撰写一个脚本调用python是最基本的操作。但本文中仍想要简单描述一下整个过程,因为大多数仿真工程师对接数字孪生工程师过程中需要对可视化部分有基本的认知。
1. STEP1 :打开Unity工具,新建一个项目;
2. STEP2 :创建一个“空对象”组件,命名为“RUNAMESIM”,此时需要撰写一个C#脚本“Loadpython”并挂载,脚本的目的是调用“SCRIPT_1.PY”


3. STEP3 :创建一个“button”组件,命名为“AMESIM_RUN”,按如下设置,实现点击按钮执行“RUNAMESIM”对象挂载的Loadpython.RUN函数功能,最终效果就是后台执行AMESIM解算


4. STEP4 :重复步骤2和步骤3,创建一个“button2”组件,命名为“Update”,按如下设置,实现点击按钮执行手动更新AMESIM变量结果的功能


5. STEP5:插入Xcharts插件中的折线图组件,撰写一个C#脚本“LINE”并挂载,脚本的目的是从TXT读取数据并绘图


6. STEP6:上述步骤完成后可以模拟运行,一起来看下效果:


https://www.zhihu.com/video/1563911018744352768

5. 总结

基于Unity  3D这类软件可以很轻易的打造一个科技感满满且多元化展示的前端,要实现产品孪生真正要回答的核心问题是数字化模型的创建、集成与求解。如AMESIM这类的CAE的工具经过数十年的发展,可以提供高置信度的数模,经过适当的模型降阶后作为产品性能数字孪生体的算法内核。AMESIM的脚本功能使其与Unity 3D集成称为了可能,以Unity 3D平台为核心,调用AMESIM工具预测产品性能,实现产品孪生。此外,这种产品和方法的组合,使得性能数字孪生体的生命周期不仅止于研发端,还得可以沿用到生产和运维阶段,使其成为一个在产品全生命周期中“可执行的数字孪生体”。
资料来源:
n 西门子工业软件官网
n AMESIM帮助文档
n Unity 3D帮助文档

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-4-28 13:45 , Processed in 0.091866 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表