• 玩转Matlab-Simscape(初级)- 10 - 基于COMSOL&Simulink 凸轮机构的控制仿真


    **

    玩转Matlab-Simscape(初级)- 10 - 基于COMSOL&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进行控制仿真;两种方法各有长短。后续会一步步再深入研究。【赠人玫瑰,手留余香】欢迎各位小伙伴关注、赞赞、留言和收藏。

  • 相关阅读:
    【高数】高数平面立体几何
    C++初始化列表使用与否的区别
    华为OD机试真题-计算误码率-2023年OD统一考试(B卷)
    什么?WPF 不支持 SVG ?
    国内与海外风控模型的差异内容
    Do Transformers Really Perform Bad for Graph Representation?
    Flask 学习-96.Flask-SQLAlchemy 判断查询结果是否存在的几种方式
    微信小程序框架---详细教程
    云服务器相比较物理服务器的好处有哪些?
    谷歌硬件工程师年薪165万,苹果外籍员工222万,在大厂打工“香”吗?
  • 原文地址:https://blog.csdn.net/lichuanxichina/article/details/139473469