[个人笔记]Matlab-Simulink

本文主要参考matlab2019a的帮助文档
只要你足够耐心,看上面的链接可要比看我下面记的东西更有收获。

Simulink快速入门

Simulink模块图

模块可以表示物理组件小型系统、或函数。模块的特性体现在输入输出之间的变化关系。(突然有自动化的味道了)
模块只有指定了输入和输出,模块才算定义完成
这是一个模块的输入接口
在这里插入图片描述
这是一个模块的输出接口
在这里插入图片描述
鼠标悬停到输出接口上,出现十字星后拖动到想要连接的输入接口上,就完成了模块的连接在这里插入图片描述
Simulink 的主要功能是对系统各个组件随时间流逝的行为变化进行仿真。在每个时间步,每个模块都要根据输入计算输出。当在一个给定时间步计算完图中的所有信号后,Simulink 将基于模型配置和数值求解器算法确定下一个时间步,并向前移动仿真时钟。接下来,每个模块将为这个新的时间步计算输出。
如果输入对输出的影响不是瞬时,这个动作需要作为微分方程提供输入。
Simulink 处理三类数据:信号 - 在仿真期间计算的模块输入和输出;状态 - 在仿真期间中计算的代表模块动态的内部值;参数 - 影响模块行为的值,由用户控制。在这里插入图片描述

创建简单模型

帮助给出了一个汽车加速的简化模型仿真案例,这里就不搬过来了。
一般步骤
新建模型模板⇒打开模块库查找模块⇒把模块添加到模型⇒调整连接模块⇒添加信号查看器⇒运行仿真⇒优化(如果有必要)
模块也可以在搜索栏直接搜索(只要你知道名字,哪怕是一部分)
想要了解各模块功能,可以在模块库右键Help for the Scope block就可以在帮助界面查看到有关这个模块的详细介绍。
在这里插入图片描述

常用模块作用
Continuous表示具有连续状态的系统的模块
Discrete表示具有离散状态的系统的模块
Math Operations实现代数和逻辑方程的模块
Sinks存储并显示所连接信号的模块
Sources生成模型的驱动信号值的模块

如何将模块库始终放置在窗口前端——点击这个小东西就可以了在这里插入图片描述
双击信号线可以在上面添加注释
在这里插入图片描述

使用 Simulink 进行基于模型的设计

建模是为真实系统创建虚拟表示的一种方法。您可以在各种条件下仿真此虚拟表示,以观察其行为。
英文一般,翻译的质量可能不高,还请见谅
在这里插入图片描述
Simulink 中基于模型的设计工作流
在这里插入图片描述在这里插入图片描述

系统定义和布局

此处帮助以一个扫地机器人为模型进行讨论。加粗部分通用思路。
假设机器人有两种移动方式:1.线性 - 两个轮子以相同的速度向同一方向转动,机器人线性移动。2.旋转 - 两个轮子以相同的速度向相反方向转动,机器人原地旋转。
在这里插入图片描述
一、确定建模目的,明确建模目的和要求
1.如果想弄清楚机器人走多块,那么只对线性运动进行建模即可。
2.如果想为机器人设计一组输入,使它按指定路径移动,那么线性和旋转就都要考虑。
3.如果考虑机器人的避障功能,那么系统就需要传感器。
以避障来进行分析,就需要知道 电机停转后多久机器人能停下,线性运动和旋转运动 。第一个建模目的是让您能够分析运动,以便设计传感器。第二个目的是让您能够对设计进行测试。
二、确定系统组件和接口,明确各结构组件之间的关系,有利于分析构建复杂的系统。
思考如下问题:
1.系统需要哪些结构组件和功能组件?组件反映物理结构和功能结构的时候将有助于理解、构建系统。
2.每个组件的输入和输出是什么?便于理解信号走向,确保必要组件完整。
3.需要达到多高的详细程度?建模是一个反复的过程,可以由低精度逐渐向高精度过度。
4.系统哪些部分需要测试?
5.测试数据和成功的标准是什么?
6.哪些输出的分析和设计任务是必须的?

具体到例子中:
确定机器人组件:
1.线性运动特性。
2.旋转运动特性。
3.用于确定系统在两个维度上的位置的变换。
4.用于测量机器人与障碍物之间的距离的传感器。
此系统的模型包括两个相同的轮子、施加在轮子上的输入作用力、旋转动态特性、坐标变换和一个传感器。此模型使用 Subsystem 表示每个组件。
定义组件之间的接口:

模块输入输出注释
输入右轮作用力/左轮作用力
右轮右轮作用力右轮速度有方向性,负值表示相反方向
左轮左轮作用力左轮速度有方向性,负值表示相反方向
旋转计算左右轮之间的速度差旋转角度逆时针测量
坐标变换正常速度旋转角度X 速度/Y 速度
传感器X 坐标/Y 坐标建模不需要任何模块。传感器动态特性是设计任务的一部分。

从表中可以看出,某些模块输入与模块输出并不是完全匹配。因此,除了各个组件的动态特性之外,模型还必须计算以下内容:
1.旋转计算的输入 - 两个轮子的速度相减并除以 2。
2.坐标变换的输入 - 两个轮子的平均速度。
3.传感器的输入 - 对坐标变换的输出进行积分。
参数和数据
确定模型需要的参数以及参数的值。根据建模目的决定这些值是始终固定,还是针对不同的仿真而更改。实现建模目的所需要的参数必须在模型中显式表示。下表可以帮助您确定对每个组件进行建模时的详细程度。
在这里插入图片描述

建模并验证系统

一、对组件进行建模
包含一个组件的 Simulink 模型基于以下几点:
物理组件的输出和输入之间的显式数学关系 - 根据组件的输入通过代数计算和微分方程积分,直接或间接计算出组件的输出。
物理组件的模型变量之间的隐式数学关系 - 由于变量之间相互依赖,因此为组件指定输入和输出并不容易。要在 Simulink 中对这种关系进行建模,可以使用 Simscap 等物理建模工具,也可以将这些变量建模为允许定义输入/输出的更大组件的一部分。有时候,更仔细地审视建模目的和组件定义有助于定义输入/输出关系。
==从实际系统获得的数据 - 您已经测得实际组件的输入/输出数据,但不存在完全定义的数学关系。许多设备具有符合此说明的未建模组件。例如,电视机散发出的热量。您可以使用 System Identification Toolbox来定义此类系统的输入/输出关系。

显式功能定义 - 您可以根据功能组件的输入通过代数计算和逻辑计算来定义功能组件的输出。调温器的开关逻辑就是一个示例。您可以将大多数功能关系建模为 Simulink 模块和子系统。
对物理组件进行建模需要思考以下问题:

1.每个组件的常量和恒定值(除非您更改这些值,否则它们不会变化)是什么?
2.每个组件的变量和可变值(随时间变化而改变)是什么?
3.一个组件有多少个状态变量?
对于连续系统,微分方程描述变量的变化率,为所有时间值都定义方程。例如,用二阶微分方程表示车速:
对于离散系统,差分方程描述变量的变化率,但只在特定时间定义方程。例如,下面的差分方程表示离散比例微分控制器发出的控制信号:
没有导数的方程是代数方程。例如,用代数方程表示包含两个组件的并联电路中的总电流。

轮子和线性运动. 作用在轮子上的力有两个:
1.电机施加的力 - 此力 F 作用在速度变化的方向上,是轮子子系统的输入。
2.阻力 - 此力 Fdrag作用在速度变化的相反方向上,是速度本身的函数:在这里插入图片描述在这里插入图片描述
其中 kdrag是阻力系数,m 是机器人的质量。每个轮子承载机器人一半的质量。
旋转运动. 当两个轮子沿相反方向转动(即具有方向相反的速度)时,它们沿半径为 r 的圆周运动,从而产生旋转运动。当它们向相同方向转动时,没有旋转。因此,假设轮子的速度大小始终相同,则可将旋转运动视为速度 VR 与 VL 之差的因变量来对其进行建模。
在这里插入图片描述
二、通过仿真来验证组件
三、验证模型
这里要与实例结合,请参考帮助的实例。

在 Simulink 中设计系统

一、确定设计的组件和设计目的
即使是一个简单的系统,也可能存在多个甚至是相互矛盾的设计目的。
二、通过仿真来分析系统行为
三、设计组件并验证设计
实例链接见文章开头帮助文档链接。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值