玩转Matlab-Simscape(初级)- 07 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(理论部分3)

**

玩转Matlab-Simscape(初级)- 07 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(理论部分3)

**

目录

    • 玩转Matlab-Simscape(初级)- 07 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(理论部分3)
  • 前言
  • 一、 COMSOL Multiphysics with Simulink编程参考
    • 1. 使用*COMSOL API添加Simulink导出节点*
    • 2. 设置“*输入*”参数
    • 3. 设置块参数
    • 4. 设置*输出*参数
    • 5. 设置*研究*
    • 6. 设置*依赖项*
    • 7. 设置*块图像*
  • 二、 命令摘要
  • 总结


前言

学完《玩转Matlab-Simscape(初级)》系列博客的前三节 ,我发现应用Maltab simscape对多体进行仿真时,如果要研究一个刚体系统的动力学的行为,在Matlab Simscape中还是相对好处理的,但如果3D模型再复杂些,研究的结构中个别组件为柔性体(即对一个复杂刚柔耦合系统的控制进行仿真),或者想要了解系统组件中某个特殊位置的状态,在Matlab Simscape中进行分析,现阶段对我来说貌似有些困难,所以,今天我跳转介绍下COMSOL Multiphysics with Simulink。
该部分主要想解决后续可能遇到的复杂3D刚柔耦合控制系统的仿真问题。
本文通篇概述基于Solidworks、Matlab Simulink、COMSOL进行协同仿真的理论基础部分。
欢迎各位小伙伴关注、赞赞、留言和收藏。
(Matlab的这种刚柔耦合控制仿真分析模块我还没学习到,待掌握了解后跟此文方法会做个对比研究。😄)


一、 COMSOL Multiphysics with Simulink编程参考

1. 使用COMSOL API添加Simulink导出节点

  • 要使用COMSOL API向COMSOL模型添加Simulink导出特征节点,在Matlab命令窗中需输入以下命令:
model.externalInterface.create(<simtag>, "SimulinkCosimulation")

其中是用于设置特征节点的标记字符串。

  • 要设置协同仿真文件名,在Matlab命令窗中需输入以下命令:
model.externalInterface(<simtag>).set("filename", <filename>)

其中是定义文件名称的字符串。

  • 导出协同仿真文件类型,在Matlab命令窗中需输入以下命令:
model.externalInterface(<simtag>).run()

2. 设置“输入”参数

对于协同仿真文件中的每个输入,需要指定一个名称和一个初始值。且 “输入”只能从全局参数列表中选择。

  • 要创建一个输入,命令:
model.externalInterface(<simtag>).setIndex("inputname", <name>, idx)

其中 < name > 是定义作为输入使用的参数名称的字符串,idx是定义输入编号的整数。
**注:**不要将几何或网格设置定义为输入的参数。

  • 要设置一个输入的初始值,命令:
model.externalInterface(<simtag>).setIndex("inputvalue", value, idx)

其中value为协同仿真所需输入的初始值。

  • 删除一个输入,命令:
model.externalInterface(<simtag>).remove("inputname", idx)
model.externalInterface(<simtag>).remove("inputunit", idx)
model.externalInterface(<simtag>).remove("inputvalue", idx)

其中idx是要删除的输入的索引

  • 输入的序号对应于Simulink中COMSOL Cosimulation块中输入端口的顺序,要改变输入的顺序,命令:
model.externalInterface(<simtag>).move("inputname", new int [] {idx}, relativeChange)
model.externalInterface(<simtag>).move("inputunit", new int [] {idx}, relativeChange)
model.externalInterface(<simtag>).move("inputvalue", new int [] {idx}, relativeChange)

其中idx是要移动的输入的索引,relativeChange是一个对应于相对位置变化的整数(向上变化为负,向下变化为正)。

3. 设置块参数

对于cosimulation文件中的每个块参数,你需要指定一个名称和一个初始值。注意,块参数只能从全局参数列表中选择。一个参数既可以作为块参数,也可以作为输入

  • 要创建一个块参数,命令:
model.externalInterface(<simtag>).setIndex("blockname", <name>, idx)

其中< name >为字符串,定义用作块参数的参数名称,idx为整数。

  • 要设置块参数的值,命令:
model.externalInterface(<simtag>).setIndex("blockvalue", value, idx)
  • 要删除一个块参数,命令:
model.externalInterface(<simtag>).remove("blockname", idx)
model.externalInterface(<simtag>).remove("blockunit", idx)
model.externalInterface(<simtag>).remove("blockvalue", idx)

其中idx是要删除的块参数的索引。

4. 设置输出参数

要导出用于联合仿真的文件,您需要指定至少一个输出。输出可以用任何具有全局作用域的表达式来定义。

  • 要创建输出,命令:
model.externalInterface(<simtag>).setIndex("outputexpr", <expr>, idx)

其中< expr >是定义输出表达式的字符串,idx是索引位置。

  • 要设置输出名称,命令:
model.externalInterface(<simtag>).setIndex("outputdescr", <descr>, idx)

其中< descr >是一个字符串,它将输出名称设置在位置idx。

  • 要删除一个输出,命令:
model.externalInterface(<simtag>).remove("outputexpr", new int [] {idx})
model.externalInterface(<simtag>).remove("outputdescr", idx)

其中idx是要删除的输出的索引。

  • 输出的索引对应于Simulink中COMSOL Cosimulation块中输出端口的顺序。要更改它们的顺序,命令:
model.externalInterface(<simtag>).move("outputexpr", new int [] {idx}, relativeChange)
model.externalInterface(<simtag>).move("outputputunit", new int [] {idx}, relativeChange)
model.externalInterface(<simtag>).move("outputdescr", new int [] {idx}, relativeChange)

其中idx是要移动的输出的索引,relativeChange是一个对应于相对位置变化的整数(向上变化为负,向下变化为正)。

5. 设置研究

  • 要设置在cosimulation中运行研究,命令:
model.externalInterface(<simtag>).set("study", <stdtag>)

其中< stdtag >是定义研究标签的字符串。
注:只用于包含单个研究步的研究(稳态或瞬态)

  • 对于瞬态研究,可以指定如何存储解。若仅在通信点存储解,命令:
model.externalInterface(<simtag>).set("storeacctostep", false)
  • 若在研究定义的步中包含解,命令:
model.externalInterface(<simtag>).set("storeacctostep", true)
  • 要仅存储通信步结束时的解,命令:
model.externalInterface(<simtag>).set("store", "end")
  • 要存储在通信步的开始和结束处的解,命令:
model.externalInterface(<simtag>).set("store", "both")

6. 设置依赖项

当选定的研究类型为瞬态研究时,可能希望指定输出和输入之间的依赖关系。

  • 要设置依赖关系,命令:
model.externalInterface(<simtag>).set("dependencies", idxIn, idxOut)

其中idxIn是输入索引,idxOut是输出索引。

7. 设置块图像

为了更好地可视化COMSOL协同仿真块,可以让块显示包含一个图像。

  • 要设置图像,命令:
model.externalInterface(< simtag >).set("image", < filename >)

其中< filename >为图片名称

  • 要将图像嵌入到COMSOL模型中,命令:
model.externalInterface(<simtag>).importImage()
  • 要丢弃图像,命令:
model.externalInterface(<simtag>).discard()

二、 命令摘要

  • 接口函数
    在这里插入图片描述
  • 通用函数
    在这里插入图片描述
  • 模型信息与引导函数
    在这里插入图片描述

总结

以上就是今天分享的关于COMSOL Multiphysics with Simulink 的理论基础内容第3部分,简单分享了应用COMSOL Multiphysics with Simulink进行控制仿真的编程方式实现方法。详述了编程参考函数及应用解释。迎各位小伙伴关注、赞赞、留言和收藏。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/706301.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

酷开科技丨女性群像大戏《惜花芷》在酷开系统热播中

在这个国产剧市场蓬勃发展的时代&#xff0c;酷开科技通过其生态智能电视系统&#xff0c;为剧迷们打造了一个精彩的观剧平台。通过酷开科技的智能推荐算法&#xff0c;消费者能够轻松地发掘并观看各种题材的高质量剧集&#xff0c;无论是扣人心弦的金融较量、深刻的家庭代际关…

编程实战:自己编写HTTP服务器(系列5:执行后台shell命令)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 系列入口&#xff1a;编程实战…

【文档理解】TextMonkey:一种OCR-Free的用于文档理解的多模态大模型

背景 传统的信息提取&#xff0c;通常是从文本中提取信息&#xff0c;相关技术也比较成熟。然而对于复杂领域&#xff0c;例如图片&#xff0c;文档等形式的数据&#xff0c;想要提取出高质量的、可信的数据难度就比较大了&#xff0c;这种任务也常称为&#xff1a;视觉文档理…

职业生涯第一课---“Redis分布式锁优化:确保唯一性与效率“

前言 最近因为刚入职公司开启自己的实习生涯&#xff0c;工作和毕设论文同步进行&#xff0c;导致有段时间没更新博客了&#xff0c;今天来分享一下最近学到的一些知识。 场景介绍 BOSS让我写一些接口&#xff0c;他提出这样一个需求&#xff0c;该接口的参数有多个&#xf…

Windows下配置TortoiseGit 访问Ubuntu虚拟机下Samba共享目录

前言&#xff1a; 本文记录学习使用 Git 版本管理工具的学习笔记&#xff0c;通过阅读参考链接中的博文和实际操作&#xff0c;快速的上手使用 Git 工具。 本文参考了引用链接博文里的内容。 引用: 【TortoiseGit】TortoiseGit安装和配置详细说明-CSDN博客 Git版本管理可视…

ubuntu下安装pwndbg

安装pwndbg 如果可以科学上网 首先安装git apt install git 然后拉取git库 git clone GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy 进入到pwngdb的文件夹中 cd pwngdb 执行 ./setup.sh 而后输入gdb 出现红色pwndgb就是安装成功…

ALV 图标显示

前言 在ABAP ALV中&#xff0c;使用fieldcat来定义列表中每个字段的显示属性&#xff0c;包括图标&#xff08;Icon&#xff09;的显示。图标可以在ALV列表中为特定列的行或标题添加图形元素&#xff0c;以增强视觉提示或传达附加信息。 ICON查询 图标的名称用事务码”ICON“进…

析构函数详解

目录 析构函数概念特性对象的销毁顺序 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412; 个人主页 &#x1f978;&#x1f978;&#x1f978; C语言 &#x1f43f;️&#x1f43f;️&#x1f43f;️ C语言例题 &…

设计模式与软件体系结构课后练习参考答案

目录 软件设计模式第二章 创建型软件设计模式1. 工厂模式2. 生成器模式3. 单例模式 第三章 结构型软件设计模式1. 组合模式2. 适配器模式3. 外观模式4. 桥接模式 第四章 行为型软件设计模式1. 迭代器模式2. 访问者模式3. 中介者模式4. 策略模式5. 状态模式 案例分析工厂模式案例…

LED电源质量和性能测试解析

LED电源的性能对于确保照明系统的稳定性和效率至关重要。在LED技术不断进步的今天&#xff0c;对电源进行严格的测试成为了一项挑战。本文将详细探讨LED电源的测试项目&#xff0c;包括电性能、保护功能和安规测试&#xff0c;以及可靠性测试&#xff0c;旨在为测试员提供一个全…

Springboot开发 -- Postman 调试 session 验证 接口

当我们在开发Spring Boot应用时&#xff0c;经常会遇到带有Session验证的接口&#xff0c;这些接口需要用户先登录并获取到Session ID&#xff08;或称为cookie中的JSESSIONID&#xff09;&#xff0c;然后在后续的请求中携带这个Session ID来保持会话状态。下面我将以一个实际…

6---Linux下版本控制器Git的知识点

一、Linux之父与Git的故事&#xff1a; Linux之父叫做“Linus Torvalds”&#xff0c;我们简称为雷纳斯。Linux是开源项目&#xff0c;所以在Linux的早期开发中&#xff0c;许多世界各地的能力各异的程序员都参与到Linux的项目开发中。那时&#xff0c;雷纳斯每天都会收到许许…