Matlab—simulink—simscape学习指导

本文介绍了如何使用Simulink和Simscape Multibody进行3D机械系统仿真。从安装Simscape Multibody,到与SolidWorks等三维建模软件的集成,再到坐标系统、刚体变换、运动副等关键概念的详细解释,展示了Simulink在多体系统建模中的应用。同时,文中还提到了常见问题的解决方法和一些实用工具的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、引入

        本科学机械设计的时候,就发现ppt上有很多运动的机构,一直想知道是怎么做出来的,后来发现solidwork、admas可以制作动画,也用3dmax制作过,但总感觉不太像回事。

        这是一个共轴旋翼的运动仿真,也是意外的发现simlink竟然可以做那么多有趣的事。碰巧研究了一下simscape_multibody。

二、功能介绍

        Simulink是一个模块图环境,用于多域仿真以及基于模型的设计。 Simulink提供图形编辑器、可自定义的模块库以及求解器,能够进行动态系统建模和仿真。Simulink - Simulation and Model-Based Design - MATLAB & Simulink

        Simscape构建物理组件模型基于直接物理连接,集成块图和其他建模范例。如电动马达,桥整流器,液压执行机构,和制冷系统,通过装配基本组件示意图。Simscape - MATLAB & Simulink

        Simscape Multibody提供了一个为3d机械系统多体仿真环境,如机器人、车辆悬挂、建筑设备、飞机起落架。您可以使用块模型多体系统代表身体关节,约束、力元素,和传感器。Simscape多体制定和解决整个机械系统的运动方程。可以导入完整的CAD程序集,包括所有的质量、惯量、关节,限制,3d模型。Simscape Multibody - MATLAB & Simulink

三、操作经验

 3.1安装Simscape Multibody

1.进入官网 Simscape Multibody - SimMechanics Link - MATLAB & Simulink,可以看到支持多种三维建模软件。

2. 在下方输入邮箱及各种信息便可以跳转网页,选取适合自己matlab版本下载即可(两个文件都需要下载),一个install_addon.m文件,一个smlink.rxxxx.win64.zip文件。

3.下载好后,打开matlab,在matlab切换至包含这两个文件的文件夹,在命令行中输入install_addon('smlink.rxxxx.win64.zip')即可安装完成。 若要查看此工具的help,在命令行输入doc smlink即可。

4.与三维建模软件建立联系,以常用的SolidWorks为例。在matlab命令行中输入 smlink_linksw,会提示

Registering dll: regsvr32 "F:\Matlab_R2014a\bin\win64\cl_sldwks2sm.dll"。

5.打开SolidWorks,点击工具,选择插件。在此处勾选 SimMechanics Link。完成后就会看到SimMechanics Link添加到新的菜单中(需要在打开装配体*.SLDASM时才能看到)。

6. 将sldasm文件导出为xml格式,选择 SimMechanics Link 插件里面的export,选择第二个版本。关于第一和第二版本,官方文档这样说的:Export in first-generation format generates a Physical Modeling XML file. Export in second-generation format generates a SimMechanics Import XML file. 两种不同的版本,有不同的打开方式,切换到xml文件所在的文件目录,第一种使用 mech_import命令打开,第二版本使用smimport命令打开。语法为  H = smimport('filename').。执行后会出现一个树状机构,上面是每一个部件的名字。点击run可以看到三维模型。

附官网视频:Simscape Multibody - Videos - MATLAB & Simulink

官方documentation: Simscape Multibody Documentation

3.2可能会出现的问题

在这里插入图片描述

启动安装位置(“D:\Program Files\MATLAB\R2018b\bin\win64\MATLAB.exe”)下的matlab(如果启动慢,可以先创建快捷方式到桌面,打开快捷方式属性,在目标位置添加 -c +“注册表路径”,便可快速启动),在命令窗口输入

enableservice('AutomationServer')

看其是否为1判断期前是否是服务器版本的matlab

若为0,在命令窗口输入:

enableservice('AutomationServer' ,true)

 将其转换为服务器版本的matlab

在这里插入图片描述

 然后再次打开solidwork,尝试运行Simscape Multibody Link——export。

在这里插入图片描述

 3.3Simscape Multibody的坐标系统

一些例子(Example List- MATLAB & Simulink

  3.4利用刚体变换创建坐标系

3.4.1World Frame        

在这个系统中,有世界坐标系,它是一切坐标系的基准,所有的World Frame指代同一个坐标系。

3.4.2Graphic  

        第二是:,模块名为:Graphic,表示可以添加到机械模型中的参数化图形元素。

1.shape可以定义形状,包括cube正方体, sphere球形,Frame坐标系三种形式

2.diffuse color:漫射颜色

3.opacity:不透明度

3.4.3Rigid Transform

与B相连的代表基坐标系,与F相连的代表变换后的坐标系。

包括两种变换,旋转和平移变换。为了将两个坐标系区别开来,先介绍一下平移变换:

基本含义
cartesian笛卡儿坐标系
 standard Axis标准轴坐标系
cylindrical圆柱坐标系

前两个平移变换形式比较容易理解,我们尝试一下第三个cylindrical:

 因此:Radius代表绕Z轴的半径,Theta代表与坐标系原点连线与基坐标系的夹角,Z offset代表相对于基坐标系的偏移量。

再来看旋转变换,有5中方式:

基本含义
 Aligned Axes轴对齐形式
 Standard axis标准轴形式
Arbitrary axis任意轴
Rotation sequence旋转序列
Rotation matrix旋转矩阵

第一种: Aligned Axes:轴对齐。顾名思义就是基坐标系和变换坐标系的轴相互对应。如下图,

变换后的坐标系的+X轴与基坐标系的+Y对应,+Y与+Z对应。

 具体效果,和预期的一样。

第二种:  Standard axis。

 第三种:  Arbitrary axis。

  以xz对角线为轴线,旋转90度:

 第四种:Rotation sequence。

         

 以右手定则,先绕基坐标X轴90度,在绕Y轴90度。

  第五种:Rotation matrix,高级表达

 3.4.4Transform Sensor:用于测坐标系的位置关系

 3.4.5Connection Label:用于标记信号,无线连接。

 ​

  3.4.6 PS-Simulink Converter(Simulink-PS Converter):用于信号转化。

  3.4.7 Scope:示波器

先测试一下:

 效果:

 位移变化很好理解,但是angle和axis不够直观。官方给出的解释如下图:

Rotational Measurements- MATLAB & Simulink

         意思就是Axis是一个F相对于B的向量,angle代表相对于Axis转动多少。我们希望得到的是相对于自身XYZ的转角。具体如何推导,容我后续更新。

  3.4.8 Solid(可以用它进行简单的物理模型构建,也可以导入)

 下面举一个例子:

我们来新建一个坐标系: 

 3.5常用工具

在命令行输入

 sm_lib

  3.6运动副

3.6.1 Revolute

下面用Revolute来演示运动副的使用:

 运动效果:

可以看出,在两个坐标系之间添加运动副后,F坐标系相对于B坐标系发生运动。使用Revolute的效果是F坐标系绕B坐标系的Z轴以一定转速转动。也可以给定一个初始角度: 

 3.6.2 后续更新

<think>嗯,用户问的是如何在Simulink中建模超扭滑模控制。首先,我需要回忆一下超扭滑模控制的基本原理。超扭滑模是一种高阶滑模控制方法,主要用于减少传统滑模控制中的抖振现象,同时保持鲁棒性。它的核心在于设计一个滑模面,并通过控制律使得系统状态在有限时间内到达滑模面,并沿其滑动。 接下来,用户需要在Simulink中建模,所以得考虑Simulink的模块组成。可能需要使用到积分器、增益模块、函数模块等。首先得明确系统的动态方程,比如被控对象的状态方程,然后设计超扭滑模的控制律。例如,控制律通常包含符号函数和状态变量的非线性组合,可能需要用Matlab Function块来实现复杂的运算。 然后,考虑建模步骤。首先建立被控对象的模型,比如使用传递函数或状态空间模块。接着设计滑模面,可能需要根据系统误差来定义滑模变量。然后根据超扭算法设计控制输入,这部分可能需要编写S函数或者使用已有的模块组合。 另外,需要注意抖振问题,虽然超扭滑模减少了抖振,但在仿真中仍然可能存在高频切换,可能需要调整参数或使用连续近似函数(如饱和函数代替符号函数)来平滑控制信号。 用户可能需要具体的步骤,比如如何搭建各个模块,如何连接信号,如何设置参数。可能需要分步解释:从系统模型搭建,到滑模面计算,再到控制律的实现,最后到仿真结果的分析。同时,可能需要提醒用户调整控制器参数(如增益系数)以达到理想效果,并验证系统的稳定性和鲁棒性。 还要考虑到用户可能对Simulink操作不熟悉,所以需要详细说明模块的位置和配置方法,比如如何添加Matlab Function块,如何设置积分器的初始条件,如何连接信号线等。此外,可能需要给出一个简单的例子,比如二阶系统的控制,帮助用户更好地理解建模过程。 最后,检查是否有遗漏的关键点,比如是否需要考虑扰动的影响,或者是否需要设计观测器来估计不可测状态。确保回答的结构清晰,步骤明确,用户能够按照指导一步步完成建模。</think>超扭滑模控制(Super-Twisting Sliding Mode Control, STSMC)是一种二阶滑模控制方法,能有效抑制传统滑模的抖振问题。在Simulink中建模步骤如下: --- ### **1. 被控对象建模** 假设被控对象为二阶系统: $$ \ddot{x} = f(x, \dot{x}) + b \cdot u + d(t) $$ - 在Simulink中可通过积分器链建模: - 使用两个积分器模块(Integrator)串联,输入为 $\ddot{x}$,输出为 $\dot{x}$ 和 $x$。 - 非线性项 $f(x, \dot{x})$ 和扰动 $d(t)$ 用 **MATLAB Function** 模块或 **Fcn** 模块实现。 --- ### **2. 设计超扭滑模控制律** #### (1) 定义滑模面 选择滑模面: $$ s = \dot{e} + c \cdot e \quad (e = x_{ref} - x) $$ - 其中 $c > 0$ 为滑模面系数。 #### (2) 超扭控制律 控制输入 $u$ 设计为: $$ u = \frac{1}{b} \left[ \lambda |s|^{1/2} \text{sign}(s) + \alpha \int \text{sign}(s) dt \right] $$ - 在Simulink中实现: - 使用 **MATLAB Function** 模块编写 $\text{sign}(s)$ 和 $|s|^{1/2}$。 - 用积分器模块实现积分项 $\int \text{sign}(s) dt$。 - 通过 **Gain** 模块设置参数 $\lambda$ 和 $\alpha$。 --- ### **3. Simulink建模步骤** #### (1) 搭建整体框架 ``` [参考信号] --> [误差计算] --> [滑模面s] --> [超扭控制律] --> [被控对象] ↑ | | | 反馈x, dx/dt | +---------------------------------+ ``` #### (2) 关键模块配置 - **误差计算**:用 **Subtract** 模块计算 $e = x_{ref} - x$。 - **滑模面s**:用 **Derivative** 模块计算 $\dot{e}$,再通过 **Sum** 模块实现 $s = \dot{e} + c \cdot e$。 - **控制律实现**: - 符号函数 $\text{sign}(s)$:用 **Sign** 模块或条件语句实现。 - 非线性项 $|s|^{1/2}$:用 **Math Function** 模块选择 `pow` 函数,指数设为 `0.5`。 - 积分项:用 **Integrator** 模块,注意初始条件设为0。 #### (3) 参数调节 - 增益选择准则:$\alpha > \frac{4L}{b}$, $\lambda > \sqrt{\frac{2(\alpha + L/b)^2}{(\alpha - L/b)}}$,其中 $L$ 为扰动上界。 - 调试时逐步增大 $\lambda$ 和 $\alpha$ 以平衡响应速度与抖振。 --- ### **4. 仿真示例** 以二阶系统 $\ddot{x} = -2\dot{x} - 3x + u + \sin(t)$ 为例: 1. 参考信号 $x_{ref} = \sin(0.5t)$。 2. 在Simulink中搭建模型,加入 **Scope** 模块观察 $x$ 跟踪效果。 3. 对比传统滑模(抖振明显)与超扭滑模(平滑性更好)。 --- ### **5. 注意事项** - 避免符号函数直接使用,可用饱和函数 $\frac{s}{|s|+\epsilon}$($\epsilon$ 为小正数)平滑处理。 - 若系统阶数较高,需扩展滑模面设计(如 $s = \dot{e} + c_1 e + c_2 \int e dt$)。 - 参数调试优先保证稳定性,再优化动态性能。 --- 如需具体模型文件,可提供邮箱发送示例slx文件。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南叔先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值