玩转Matlab-Simscape(初级)- 10 - 基于COMSOLSimulink 凸轮机构的控制仿真
**
玩转Matlab-Simscape(初级)- 10 - 基于COMSOL&Simulink 凸轮机构的控制仿真
**
目录
- 玩转Matlab-Simscape(初级)- 10 - 基于COMSOL&Simulink 凸轮机构的控制仿真
- 前言
- 一、简介
- 二、在Solidworks中创建3D模型,并导入Simulink
- 2.1 Solidworks中建模
- 2.2 、将xml模型导入simulink
- 三、在COMSOL中创建模型,并导入Simulink
- 3.1 模型简介
- 3.2 模型搭建
- 3.3 在Simulink中创建模型
- 总结
前言
在产品开发中,多体动力学控制仿真是一种常见方法,本文从初学者的角度一点点掀开应用Maltab simscape对多体进行仿真的面纱。写这篇博文是为后续做旋翼无人机的多体系统仿真打基础。欢迎各位小伙伴关注、赞赞、留言和收藏。
本文进一步深入学习构建复杂一点点的凸轮机构的建模过程。
一、简介
本文研究柴油机气门机构。该系统所有组成零件全部假定为刚体。模型的输出包括气门从动件的位移和速度,模型输入为旋转凸轮转速。凸轮3D结构如下所示。

二、在Solidworks中创建3D模型,并导入Simulink
2.1 Solidworks中建模
当我们按照从下到上的方式,将一个个创建完零件再装配起来。
该机构的运动组件是:
- 凸轮和凸轮轴
- 气门
固定组件是: - 导程、销轴、凸轮轴承
有时候从Solidworks中利用插件导出*.xml文件时会遇到一些问题,如在装配体中,如果使用“凸轮配合相切”、‘铰链’等配合方式来联结3D模型汇总的凸轮与推杆,摇臂与销轴时,会在导出Samscape Multibody模型的xml文件时出错。如下图所示。


这通常意味着你正在尝试导出的某些约束类型不被Simscape Multibody所支持。Simscape Multibody支持多种标准的机械约束,如固定连接、铰链、滑块、齿轮等,但对于一些更复杂或自定义的约束,如机械配合中涉及的“凸轮配合相切”,可能无法直接转换成Simscape Multibody中可用的约束类型。
解决方法1:忽略这种错误
手动创建凸轮:•在MATLAB/Simscape Multibody环境中,使用内置的凸轮组件(如果有的话)来重新创建凸轮机构。这可能需要手动输入凸轮轮廓的数据。
解决方法2:在SW中用其他约束来替换“凸轮配合相切”这种约束尝试使用Simscape Multibody支持的标准约束来代替你的凸轮配合。
这两种方法都不太友好,后续我对SimSacpe了解多了,再补上这块内容。
2.2 、将xml模型导入simulink
在matlab 命令窗中,利用命令smimport(‘*.xml’)语句,导入在SW中生成的xml模型文件,并运行仿真。
三、在COMSOL中创建模型,并导入Simulink
上面2.1 ~2.2讲到的方式,对于新手处理起那些复杂模型问题来,非常困难,下面讲述另一种简单的方法。
3.1 模型简介
该机构中,凸轮旋转是指定的,弹簧联结到气门,以限制其运动,由此,可以计算给定凸轮转速条件下,从动件的位移、速度和加速度;计算凸轮-推杆的连接力(单独在comsol中求解这个力是很容易收敛的,但与simulink进行协同仿真时,很难收敛。协同仿真时,我把求解连接力这部分给取消了,协同仿真模型很容易得到了收敛)。
将弹簧安装到气门上的目的是迫使气门跟随凸轮的轮廓运动,并避免凸轮与气门之间的间歇性接触。因此,弹簧刚度的最佳值是使凸轮与从动件始终保持接触,同时,使凸轮轴旋转所需的扭矩最小。
3.2 模型搭建
-
将Solidworks中创建的CamFollwer装配体模型导入进COMSOL几何中。

-
在“多体动力学”物理场节点中设置刚性材料、固定约束条件、运动副(凸轮从动件、铰链关节、槽关节)、 指定凸轮轴旋转运动,气门运动添加弹簧、添加重力
-
划分网格
-
在COMSOL中创建Simulink协同仿真块(Cosimulation for Simulink)
-
- 先创建全局变量探针,用于指定协同仿真块的输入、输出量
-
- 再次求解comsol模型,确保模型能正常求解
-
- 设置协同仿真块输入输出参数
-
- 导出生成*.fmu协同仿真文件,供Simulink调用
-
注意:
1.在COMSOL中如果要输出协同仿真模块(Cosimulation for Simulink节点),一般需要先创建“全局变量探针”,该探针变量用于探测模型的输入量、输出量在整个求解过程中的变化。
2.“研究”设置中“辅助扫描”功能,不支持协同仿真模块(Cosimulation for Simulink)的导出,因此,在“研究”中,不能设置“辅助扫描”参数。
3.3 在Simulink中创建模型
注意:1.需要通过
进入Matlab Simulink平台,不支持手动建立Simulink与COMSOL的连接,否则在Simulink中添加Comsol协同仿真模块时,在Simulink Library中不显示Comsol协同仿真模块,如下图所示。

创建一个简单的控制模型,并运行仿真,如下图所示。

运行结果如下,在simulink和comsol中结果一致。
接下来,在Matlab 命令窗口中输入“mphlaunch”,打开Comsol,我们可以继续利用comsol对数据结果进行后处理,也可以进一步完善优化控制器,达成设计目的。

需要注意的是:在运行仿真时,计算不收敛是常见的问题,尝试在simulink–Model Settings中对求解器进行设置,comsol中对求解器进行设置,一般可以解决问题。
总结
以上就是今天分享的关于Matlab Simulink 与comsol协同仿真的内容,搭建了一个柴油机控制气门开闭的凸轮机构的模型,进一步熟悉了利用SW、Comsol、Matlab Simulink进行协同仿真的整个建模流程。一种方法,从SW将3D模型导入Matlab Simscape中,另一种方法,将3D模型从SW导入Comsol生成协同仿真模块,再进入Simulink进行控制仿真;两种方法各有长短。后续会一步步再深入研究。【赠人玫瑰,手留余香】欢迎各位小伙伴关注、赞赞、留言和收藏。
相关文章:
玩转Matlab-Simscape(初级)- 10 - 基于COMSOLSimulink 凸轮机构的控制仿真
** 玩转Matlab-Simscape(初级)- 10 - 基于COMSOL&Simulink 凸轮机构的控制仿真 ** 目录 玩转Matlab-Simscape(初级)- 10 - 基于COMSOL&Simulink 凸轮机构的控制仿真 前言一、简介二、在Solidworks中创建3D模型ÿ…...
spark学习总结
系列文章目录 第1天总结:spark基础学习 1- Spark基本介绍(了解)2- Spark入门案例(掌握)3- 常见面试题(掌握) 文章目录 系列文章目录前言一、Spark基本介绍1、Spark是什么1.1 定义1.2 Spark与M…...
eNSP学习——帧中继基本配置
目录 主要命令 基本原理 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、静态与动态映射的配置 3、子接口配置和静态路由 主要命令 [R1]int s1/0/0 [R1-Serial1/0/0]link-protocol fr //配置链路层协议为FR Warning: The encapsulation protocol…...
XML Encoding = ‘GBK‘ after STRANS,中文乱码
最近帮同事处理了一个中信银行银企直连接口的一个问题,同事反馈,使用STRANS转换XML后,encoding始终是’utf-16’,就算指定了GBK也不行。尝试了很多办法始终不行,发到银行的数据中,中文始终是乱码。 Debug使用HTML视图…...
C 语言通用MySQL 功能增删查改功能.
前提条件:Ubuntu 22.04.4 LTS、MSQL 8数据库 并且已经安装MySQL 8 开发库。如果没有安装,可以查考:C 语言连接MySQL数据库 项目要求: 1、完成MySQL数据库增删改查通用功能封装 2、编辑makefile 文件实现项目动态更新和快速编译 项目结构…...
Java学习 - MySQL表 增减删查
建表 按照DDL练习,先创建student表和home表 插入【增】 向student表中同时插入三个新的字段【1,Alice,f,15353535353】【2,Bob,m,13646464646】【3,Jack,m,13745908686】 INSERT INTO student(id,name,gender,phone) VALUES(1,Alice,f,15353535353),(2,Bob,m,1364…...
力扣SQL50 有趣的电影 简单查询
Problem: 620. 有趣的电影 Code select * from cinema where id % 2 1 and description ! boring order by rating desc;...
01. Java并发编程简介
1. 前言 大家好,本节我们来一起学习 Java 并发编程的核心原理。 作为本专题的第一个小节,我们先来了解下什么是并发编程,以及学习并发编程的必要性,及学习过程应该注意的事项。 下面,我们先了解一下 Java 并发编程。…...
使用Node.js+Express开发简单接口
Node.js 和 Express 是非常流行的组合,用于开发快速、高效的 web 服务器和 API。下面是一个基础教程,介绍如何使用 Node.js 和 Express 开发一个简单的 API。 1. 安装 Node.js 和 npm 首先,确保您已经安装了 Node.js 和 npm(Nod…...
【Python】使用OpenCV特征匹配检测图像中的【特定水印】
如果没有方向 往哪里走都是前方 做自己的光 不需要多亮 曾受过的伤 会长出翅膀 大雨冲刷过的天空会更加明亮 流过泪的眼睛也一样 做自己的光 悄悄的发亮 逆风的方向 更容易飞翔 世界怎样在于你凝视它的目光 那未曾谋面过的远方 或许就在身旁 🎵…...
基于 Clang和LLVM 的 C++ 代码静态分析工具开发教程
基于 Clang和LLVM 的 C 代码静态分析工具开发教程 简介 静态代码分析是一种在不实际运行程序的情况下对源代码进行分析的技术。它可以帮助开发者在编译之前发现潜在的错误、安全漏洞、性能问题等。 在 C 开发中,有几种常用的静态代码分析工具,它们可以…...
Mathtype与word字号对照+Mathtype与word字号对照
字体大小对照表如下 初号44pt 小初36pt 一号26pt 小一24pt 二号22pt 小二18pt 三号16pt 小三15pt 四号14pt 小四12pt 五号10.5pt 小五9pt 六号7.5pt 小六6.5pt 七号5.5pt 八号5pt 1 保存12pt文件 首选选择第一个公式,将其大小改为12pt 然后依次选择 “预置”—…...
PHP 8.4有哪些新功能值得关注
属性钩子(Property Hooks) 允许开发者为每个属性定义自己的get和set钩子,以在属性访问前后添加自定义逻辑。属性钩子通过__get()和__set()方法实现,类似于其他编程语言(如Kotlin、C#和Swift)中的属性访问器…...
PyCharm新手入门
前言 在之前《Python集成开发工具的选择》一文中介绍了python初学者可以使用Jupyter Notebook,Jupyter Notebook简单易用,可以用来练习代码编写,但是实际生产开发环境使用这个工具是远远不够用的,因为实际软件开发中需要软件调试…...
[Linux] 系统管理
全局配置文件 用户个性化配置 配置文件的种类 alias命令和unalias命令 进程管理 进程表...
Xcode无法使用设备:Failed to prepare the device for development
问题: Xcode无法使用设备开发,失败报错如下: Failed to prepare the device for development. This operation can fail if the version of the OS on the device is incompatible with the installed version of Xcode. You may also need…...
AWS无服务器 应用程序开发—第十二章 AWS Step Functions
AWS Step Functions 是一种服务,用于协调和管理分布式应用程序中的多个 AWS 服务和 Lambda 函数。它通过创建有状态的工作流来简化和自动化应用程序的各种工作流程,使得复杂的业务逻辑可以以可管理和可调试的方式实现。 主要功能和特点: 状态机定义: 使用 JSON 或 Amazo…...
Linux tcpdump详解
目录 前言:BPF伯克利包过滤器介绍1.BPF语法(tcpdump语法)2.逻辑运算符3.常用的原子条件1. 协议相关的原子条件2. 地址相关的原子条件3. 端口相关的原子条件4. 网络层和链路层(mac地址)原子条件5. 广播和多播6. VLAN 相关的原子条件…...
vue2实现打印功能(vue-print-nb的实现)
实现效果: 引入插件 npm install vue-print-nb --save import Print from vue-print-nb Vue.use(Print) <div ref"printTest" id"printTest"><div style"text-align: center; page-break-after: always"><div style…...
某全国增值税发票查验平台 接口JS逆向
注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 本文的验证码网址如下,使用base64解码获得 aHR0cHM6Ly9pbnYtdmVyaS5jaGluYXRheC5nb3YuY24v 这个平台功能没什么好说的,就是发票查验&am…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
