数字孪生实现方案(针对研究对象具备复杂逻辑 需要外部数学模型或仿真平台[simulink等])
方案实现整体框图
一.方案1 直接将simulink仿真内嵌入网页前端 由前端将指令数据读取后传入后端 实现整个流程
参考资料【Matlab开发Web App服务器】
- https://www.zhihu.com/question/38003831/answer/103977807
- https://zhuanlan.zhihu.com/p/86838817
- https://www.mathworks.com/help/compiler/web-apps.html
- https://www.it1352.com/1603610.html
- [1]Development of Web Applications Based on MATLAB
- [2]基于Web和MATLAB Builder JA技术的远程计算与仿真系统研究
- https://wenku.baidu.com/view/cd01128c6cdb6f1aff00bed5b9f3f90f76c64d80.html
- http://www.xjishu.com/zhuanli/54/201910334498.html
- https://blog.csdn.net/TICPSH/article/details/115895334
1.1实现依据及整体思路
- 从2018a开始Matlab提供了Web Apps功能,它能够将电脑设为服务器,把App程序发布到局域网,可以通过浏览器访问,可以以此方式将simulink仿真模型导入到网页前端,进而进行数据交互。
1.2实现具体细节
1.2.1使用App Designer创建交互式的应用程序
- 下载安装包
- 安装
- 解压MATLABWebAppServer.zip
- 启动服务
- 启动/停止服务
- 打开web apps的主页
- 打开服务器log文件夹
- 启动SSL,使用HTTPS
- …
1.2.2使用Web App Compiler打包
- 打开App
- 在Configure and Run页面点击Stop
- 在Service Registration页面点击Unregister
- …
1.2.3基于MATLAB Web App Server托管
- 在App Designer中使用Web app Compiler进行打包,生成ctf文件
- 将ctf文件拷贝到Web App Server的apps文件夹;
- 从web apps主页启动app,查看效果。
- …
1.3方案评估
-
此方式是将simulink的GUI展示界面通过url直接上传,现有的实现实例大多是GUI展示,如下图所示,模型中的数据能否单独实时引出,以供数字孪生的逻辑自
洽,目前还未实际测试,但可作为备选方案,此种方式若能成功实践,可以直接将simulink模型搬运到前后端,实现逻辑与动画的交互。
二.方案2 在simulink内部编写python函数 将仿真数据抛出
参考资料
- https://blog.csdn.net/chengzhe412/article/details/78555445
2.1实现依据及整体思路
- Python的应用越来越广泛,在深度学习,机器学习,数据挖掘等方面有很大的优势,并且python是开源的有强大的第三方库,这是python的最大优势。但是MATLAB在科学计算方面优化的非常极致,特别是SIMULINK的模块化编程方式非常方便,在实际的应用中经常会需要SIMULINK和python之间频繁的数据交换和调用,从 MATLAB2014b 开始,MATLAB支持直接调用Python。
2.2实现具体细节
2.2.1 首先将matlab链接到python引擎
2.2.2 在MATLAB中调用python函数,按照py.文件名.函数名(参数)的格式进行函数调用
2.2.3 再实时仿真的环境中应用python函数,采用S-Function的方式进行调用py语句。采用S-function的方式不需要外部编译的方式,提高仿真效率
2.2.4数据抛出以后实时读取,然后由后端传递给前端,即可完成数字孪生逻辑与动画的交互
2.3 方案评估
- 此种方式是先将数据从simulink中导出,然后后端读取,以后端中转的方式实现从数学模型到前端模型的数据交互,理论上是可行的,但实时性可能未必能达到项目需求,需要后续实践评估。
三.方案3 直接通过Python调用MATLAB的内部引擎函数搭建模型 无需simulink
- 参考资料
- https://www.jianshu.com/p/02fd2ef6f174
- https://cn.mathworks.com/help/matlab/matlab-engine-for-python.html
3.1.实现依据及整体思路
- 用于 Python 的 MATLAB 引擎 API 可提供一个包,供 Python 将 MATLAB 作为计算引擎来调用。该引擎支持参考实现 (CPython)。MATLAB 支持版本 2.7、3.6、3.7 和 3.8。
3.2.实现具体细节
- 在python中调用MATLAB引擎进行绘图
3.3.方案评估
- 如果python中能够调用的MATLAB引擎函数足够齐全,理论上是可以在python中(java也同理)搭建一个DEH仿真系统,此种方式实现效果最后,但参考资源比较少,能否实现需要实践检验
3.3.方案评估
- 如果python中能够调用的MATLAB引擎函数足够齐全,理论上是可以在python中(java也同理)搭建一个DEH仿真系统,此种方式实现效果最后,但参考资源比较少,能否实现需要实践检验
四.个人项目实现初步效果
贴图 有时间逐步复盘教程