主要内容gydF4y2Ba

对系统进行建模和验证gydF4y2Ba

您可以在系统结构中为每个组件建模,以表示该组件的物理或功能行为。您可以通过使用测试数据模拟基本组件行为来验证它们。gydF4y2Ba

打开系统布局gydF4y2Ba

当为单个组件建模时,整个系统布局的大局观是很有用的。首先加载布局模型。在MATLAB命令行输入:gydF4y2Ba

open_system (gydF4y2Ba“system_layout.slx”gydF4y2Ba)gydF4y2Ba

模型组件gydF4y2Ba

一个金宝app仿真软件gydF4y2Ba®gydF4y2Ba组件的模型基于以下几个起点:gydF4y2Ba

  • 物理组件的输出和输入之间的显式数学关系-您可以通过代数计算和微分方程的积分,直接或间接地从输入计算组件的输出。例如,计算水槽中给定的流入速率的水位是一个明确的关系。每个Sim金宝appulink块根据从输入到输出的计算定义执行。gydF4y2Ba

  • 物理组件的模型变量之间存在隐式的数学关系——因为变量是相互依赖的,给组件分配输入和输出不是一件简单的事情。例如,电压在gydF4y2Ba+gydF4y2Ba在电路中连接电动机的端部和电压gydF4y2Ba-gydF4y2Ba结束有一个内隐的关系。要在Simulink中建模这样的关系,您可以使用物理建模工具,如金宝appSimscape™,或者将这些变量建模为允许输入/输出定义的更大组件的一部分。有时,仔细检查建模目标和组件定义有助于定义输入/输出关系。gydF4y2Ba

  • 从实际系统中获得的数据-你已经测量了实际部件的输入/输出数据,但是不存在一个完全定义的数学关系。许多设备都有未建模的组件,符合此描述。例如,电视散发的热量。您可以使用System Identification Toolbox™来定义这样一个系统的输入/输出关系。gydF4y2Ba

  • 显式函数定义——通过代数和逻辑计算从输入中定义函数组件的输出。例如,恒温器的开关逻辑。您可以将大多数函数关系建模为Simulink块和子系统。金宝appgydF4y2Ba

本教程为具有显式输入/输出关系的物理和功能组件建模。在本教程中,你将:gydF4y2Ba

  1. 利用系统方程建立Simulink模型。金宝appgydF4y2Ba

  2. 在Simulink编辑器中添加和金宝app连接Simulink块。块代表方程中的系数和变量。gydF4y2Ba

  3. 分别为每个组件构建模型。构建系统模型最有效的方法是首先独立地考虑组件。gydF4y2Ba

  4. 从使用系统的近似建立简单的模型开始。确定可能影响模型准确性的假设。迭代地添加细节,直到复杂度满足建模和准确性要求。gydF4y2Ba

为物理组件建模gydF4y2Ba

描述组件之间的关系,例如数据、能量和力传递。利用系统方程在Simulink中建立系统的图形模型。金宝appgydF4y2Ba

在你开始为组件建模之前要问的一些问题:gydF4y2Ba

  • 每个分量的常数是什么?什么价值观不改变就不会改变?gydF4y2Ba

  • 每个组件的变量是什么?什么价值观会随着时间而改变?gydF4y2Ba

  • 一个组件有多少状态变量?gydF4y2Ba

用科学原理推导出每个部件的方程。许多系统方程可分为三类:gydF4y2Ba

  • 对于连续系统,微分方程用定义为所有时间值的方程来描述变量的变化率。例如,一阶微分方程给出了汽车的速度:gydF4y2Ba

    dgydF4y2Ba vgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba dgydF4y2Ba tgydF4y2Ba =gydF4y2Ba −gydF4y2Ba bgydF4y2Ba 米gydF4y2Ba vgydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba +gydF4y2Ba ugydF4y2Ba (gydF4y2Ba tgydF4y2Ba )gydF4y2Ba

  • 对于离散系统,差分方程描述变量的变化率,但方程只在特定的时间定义。例如,离散比例导数控制器的控制信号:gydF4y2Ba

    pgydF4y2Ba dgydF4y2Ba (gydF4y2Ba ngydF4y2Ba ]gydF4y2Ba =gydF4y2Ba (gydF4y2Ba egydF4y2Ba (gydF4y2Ba ngydF4y2Ba ]gydF4y2Ba −gydF4y2Ba egydF4y2Ba (gydF4y2Ba ngydF4y2Ba −gydF4y2Ba 1gydF4y2Ba ]gydF4y2Ba )gydF4y2Ba KgydF4y2Ba dgydF4y2Ba +gydF4y2Ba egydF4y2Ba (gydF4y2Ba ngydF4y2Ba ]gydF4y2Ba KgydF4y2Ba pgydF4y2Ba

  • 没有导数的方程是代数方程。例如,一个代数方程给出了有两个元件的并联电路中的总电流:gydF4y2Ba

    我gydF4y2Ba tgydF4y2Ba =gydF4y2Ba 我gydF4y2Ba 一个gydF4y2Ba +gydF4y2Ba 我gydF4y2Ba bgydF4y2Ba

车轮和直线运动。gydF4y2Ba作用在轮子上的力有两种:gydF4y2Ba

  • 电机施加的力-力gydF4y2BaFgydF4y2Ba作用于速度变化的方向,是车轮子系统的输入。gydF4y2Ba

  • 阻力-力gydF4y2BaFgydF4y2Ba拖gydF4y2Ba与速度变化方向相反,是速度的函数。gydF4y2Ba

    FgydF4y2Ba dgydF4y2Ba rgydF4y2Ba 一个gydF4y2Ba ggydF4y2Ba =gydF4y2Ba kgydF4y2Ba dgydF4y2Ba rgydF4y2Ba 一个gydF4y2Ba ggydF4y2Ba VgydF4y2Ba |gydF4y2Ba VgydF4y2Ba |gydF4y2Ba

加速度与这些力的总和成正比:gydF4y2Ba

(gydF4y2Ba 米gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba VgydF4y2Ba ̇gydF4y2Ba =gydF4y2Ba FgydF4y2Ba −gydF4y2Ba FgydF4y2Ba dgydF4y2Ba rgydF4y2Ba 一个gydF4y2Ba ggydF4y2Ba (gydF4y2Ba 米gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba VgydF4y2Ba ̇gydF4y2Ba =gydF4y2Ba FgydF4y2Ba −gydF4y2Ba kgydF4y2Ba dgydF4y2Ba rgydF4y2Ba 一个gydF4y2Ba ggydF4y2Ba VgydF4y2Ba |gydF4y2Ba VgydF4y2Ba |gydF4y2Ba VgydF4y2Ba ̇gydF4y2Ba =gydF4y2Ba FgydF4y2Ba −gydF4y2Ba kgydF4y2Ba dgydF4y2Ba rgydF4y2Ba 一个gydF4y2Ba ggydF4y2Ba VgydF4y2Ba |gydF4y2Ba VgydF4y2Ba |gydF4y2Ba (gydF4y2Ba 米gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba

在哪里gydF4y2BakgydF4y2Ba拖gydF4y2Ba阻力系数是和吗gydF4y2Ba米gydF4y2Ba是机器人的质量。每个轮子承担一半的重量。gydF4y2Ba

建立车轮模型:gydF4y2Ba

  1. 在gydF4y2Basystem_layoutgydF4y2Ba模型中,双击gydF4y2Ba右轮gydF4y2Ba子系统显示空子系统。gydF4y2Ba

  2. 模型速度和加速度。添加一个gydF4y2Ba积分器gydF4y2Ba块。保留初始条件设置为gydF4y2Ba0gydF4y2Ba。物体的输入是加速度gydF4y2BaVdotgydF4y2Ba输出是速度gydF4y2BaVgydF4y2Ba。gydF4y2Ba

  3. 建立阻力模型。添加一个gydF4y2BaMATLAB函数gydF4y2Ba块从用户定义函数库。的gydF4y2BaMATLAB函数gydF4y2Ba块提供了在模型中实现数学表达式的快速方法。要编辑函数,双击该块打开MATLAB函数编辑器。gydF4y2Ba

  4. 为MATLAB函数块定义参数。在gydF4y2BaMATLAB函数gydF4y2Ba块编辑器,单击gydF4y2Ba编辑数据gydF4y2Ba按钮。点击gydF4y2Bak_draggydF4y2Ba,设置gydF4y2Ba范围gydF4y2Ba来gydF4y2Ba参数gydF4y2Ba,然后单击gydF4y2Ba应用gydF4y2Ba。gydF4y2Ba

  5. 用。减去马达的阻力gydF4y2Ba减去gydF4y2Ba块。用a完成力-加速度方程gydF4y2Ba获得gydF4y2Ba块与参数gydF4y2Ba1 / (m / 2)gydF4y2Ba。gydF4y2Ba

  6. 反转…的方向gydF4y2BaMATLAB函数gydF4y2Ba块,右键单击块并选择gydF4y2Ba旋转和翻转>翻转块gydF4y2Ba。连接块。gydF4y2Ba

  7. 这两个轮子的动力学是一样的。复制你刚刚建模的右轮子系统并粘贴到左轮子系统中。gydF4y2Ba

  8. 查看模型的顶层。单击gydF4y2Ba导航到上级gydF4y2Ba按钮gydF4y2Ba。gydF4y2Ba

旋转运动。gydF4y2Ba当两个轮子朝相反的方向转动时,它们就以一定半径运动gydF4y2BargydF4y2Ba,引起机器人旋转运动。当轮子朝同一方向转动时,就没有旋转。假设车轮速度的大小总是相等的,它是实用的模型旋转运动依赖于两个车轮速度的差gydF4y2BaVgydF4y2BaRgydF4y2Ba和gydF4y2BaVgydF4y2BalgydF4y2Ba:gydF4y2Ba

θgydF4y2Ba ̇gydF4y2Ba =gydF4y2Ba VgydF4y2Ba RgydF4y2Ba −gydF4y2Ba VgydF4y2Ba lgydF4y2Ba 2gydF4y2Ba rgydF4y2Ba

建立旋转动力学模型:gydF4y2Ba

  1. 在顶层gydF4y2Basystem_layoutgydF4y2Ba建模后,双击旋转子系统以显示空子系统。删除连接gydF4y2Ba轮廓尺寸gydF4y2Ba和gydF4y2Ba外港gydF4y2Ba块。gydF4y2Ba

  2. 模型角速度和角度。添加一个gydF4y2Ba积分器gydF4y2Ba块。保留初始条件设置为gydF4y2Ba0gydF4y2Ba。这个方块的输出是角度gydF4y2BaθgydF4y2Ba输入是角速度gydF4y2Batheta_dotgydF4y2Ba。gydF4y2Ba

  3. 从切向速度计算角速度。添加一个gydF4y2Ba获得gydF4y2Ba与参数gydF4y2Ba1 / (2 * r)gydF4y2Ba。gydF4y2Ba

  4. 连接块。gydF4y2Ba

  5. 查看模型的顶层。单击gydF4y2Ba导航到上级gydF4y2Ba按钮gydF4y2Ba。gydF4y2Ba

为功能组件建模gydF4y2Ba

描述从函数的输入到输出的函数。这个描述可以包括代数方程和逻辑结构,您可以使用它们在Simulink中构建系统的图形模型。金宝appgydF4y2Ba

坐标变换。gydF4y2Ba机器人在X和Y坐标下的速度,gydF4y2BaVgydF4y2BaXgydF4y2Ba和gydF4y2BaVgydF4y2BaYgydF4y2Ba,与线速度有关gydF4y2BaVgydF4y2BaNgydF4y2Ba和角gydF4y2BaθgydF4y2Ba:gydF4y2Ba

VgydF4y2Ba XgydF4y2Ba =gydF4y2Ba VgydF4y2Ba NgydF4y2Ba 因为gydF4y2Ba (gydF4y2Ba θgydF4y2Ba )gydF4y2Ba VgydF4y2Ba YgydF4y2Ba =gydF4y2Ba VgydF4y2Ba NgydF4y2Ba 罪gydF4y2Ba (gydF4y2Ba θgydF4y2Ba )gydF4y2Ba

建立坐标转换模型:gydF4y2Ba

  1. 在顶层gydF4y2Basystem_layoutgydF4y2Ba建模时,双击坐标转换子系统以显示空子系统。gydF4y2Ba

  2. 三角函数模型。添加一个gydF4y2Ba要求gydF4y2Ba从Math Operations库中阻塞。gydF4y2Ba

  3. 乘法模型。添加两个gydF4y2Ba产品gydF4y2Ba块从Math Operations库。gydF4y2Ba

  4. 连接块。gydF4y2Ba

  5. 查看模型的顶层。单击gydF4y2Ba导航到上级gydF4y2Ba按钮gydF4y2Ba。gydF4y2Ba

设置模型参数gydF4y2Ba

模型参数值的来源可以是:gydF4y2Ba

  • 书面规格,如标准属性表或制造商数据表gydF4y2Ba

  • 对现有系统的直接测量gydF4y2Ba

  • 使用系统输入/输出的估计gydF4y2Ba

这个模型使用这些参数:gydF4y2Ba

参数gydF4y2Ba 象征gydF4y2Ba 价值gydF4y2Ba
质量gydF4y2Ba 米gydF4y2Ba 2.5公斤gydF4y2Ba
滚动阻力gydF4y2Ba k_draggydF4y2Ba 30 NsgydF4y2Ba2gydF4y2Ba/ mgydF4y2Ba
机器人半径gydF4y2Ba rgydF4y2Ba 0.15米gydF4y2Ba

金宝appSimulink使用MATLABgydF4y2Ba®gydF4y2Ba用于评估参数的工作区。在MATLAB命令窗口中设置这些参数:gydF4y2Ba

m = 2.5;k_drag = 30;r = 0.15;gydF4y2Ba

使用模拟验证组件gydF4y2Ba

通过提供输入并观察输出来验证组件。即使是这样一个简单的验证也可以立即指出改进模型的方法。这个例子验证了这些行为:gydF4y2Ba

  • 当一个力连续地作用在轮子上时,速度会增加,直到它达到一个稳定的速度。gydF4y2Ba

  • 当车轮向相反的方向转动时,旋转角度以恒定的速率增加。gydF4y2Ba

验证车轮组件gydF4y2Ba

创建并运行车轮组件的测试模型:gydF4y2Ba

  1. 创建一个新模型。在gydF4y2Ba模拟gydF4y2Ba选项卡上,单击gydF4y2Ba新gydF4y2Ba。复制右边的车轮块到新的模型中。gydF4y2Ba

  2. 创建一个测试输入。添加一个gydF4y2Ba一步gydF4y2Ba从源代码库中阻塞,并将其连接到右侧的车轮块的输入。step time参数保持为gydF4y2Ba1gydF4y2Ba。gydF4y2Ba

  3. 向输出添加一个查看器。右键单击右边轮块的输出端口并选择gydF4y2Ba创建和连接查看器> Simulink >范围金宝appgydF4y2Ba。gydF4y2Ba

  4. 运行仿真。在gydF4y2Ba模拟gydF4y2Ba选项卡上,单击gydF4y2Ba运行gydF4y2Ba。gydF4y2Ba

仿真结果显示了一般的预期行为。除非在步长时间施加力,否则就没有运动。当施加力时,速度开始增加,然后当施加的力和阻力达到平衡时,速度稳定在一个常数。除了验证之外,这个模拟还提供了关于给定力下车轮的最大速度的信息。gydF4y2Ba

验证旋转组件gydF4y2Ba

为旋转模型创建并运行一个测试模型:gydF4y2Ba

  1. 创建一个新模型。点击gydF4y2Ba并将旋转块复制到新模型中。gydF4y2Ba

  2. 在新模型中创建一个测试输入。添加一个gydF4y2Ba一步gydF4y2Ba从源代码库中阻塞。step time参数保持为gydF4y2Ba1gydF4y2Ba。将它连接到旋转块的输入端。这个输入表示当车轮向相反方向旋转时,车轮速度的差异。gydF4y2Ba

  3. 向输出添加一个查看器。右键单击旋转块的输出端口并选择gydF4y2Ba创建和连接查看器> Simulink >范围金宝appgydF4y2Ba。gydF4y2Ba

  4. 运行仿真。在gydF4y2Ba模拟gydF4y2Ba选项卡上,单击gydF4y2Ba运行gydF4y2Ba。gydF4y2Ba

仿真结果表明,当车轮以相同的速度向相反方向转动时,车轮转角稳定增大。你可以做一些模型改进,使它更容易解释角度输出,例如:gydF4y2Ba

  • 您可以将以弧度表示的输出转换为角度。添加一个gydF4y2Ba获得gydF4y2Ba以增加的速度阻挡gydF4y2Ba180 /πgydF4y2Ba。gydF4y2Ba

  • 可以360度循环显示输出的度数。添加一个gydF4y2Ba数学函数gydF4y2Ba块的功能gydF4y2Ba国防部gydF4y2Ba。gydF4y2Ba

MATLAB三角函数的输入是弧度。gydF4y2Ba

验证模型gydF4y2Ba

在验证各个组件之后,您可以对完整的模型执行类似的验证。这个例子验证了以下行为:gydF4y2Ba

  • 当向同一方向的两个轮子施加同样的力时,机器人就会直线运动。gydF4y2Ba

  • 当两个方向相反的轮子受到同样的力时,机器人就会原地旋转。gydF4y2Ba

  1. 在gydF4y2Basystem_layoutgydF4y2Ba建模,双击输入子系统以显示空子系统。gydF4y2Ba

  2. 通过添加一个gydF4y2Ba一步gydF4y2Ba块。step time参数保持为gydF4y2Ba1gydF4y2Ba。将它连接到gydF4y2Ba外港gydF4y2Ba块。gydF4y2Ba

  3. 在模型的顶层,将两个输出信号连接到同一个范围查看器:gydF4y2Ba

  4. 运行模型。gydF4y2Ba

    在这个图中,黄线是X方向,蓝线是Y方向。由于角度为零并且没有变化,飞行器只在X方向上移动,正如预期的那样。gydF4y2Ba

  5. 双击输入子系统并添加gydF4y2Ba获得gydF4y2Ba与参数gydF4y2Ba1gydF4y2Ba在源和第二个输出之间。这就颠倒了左轮的方向。gydF4y2Ba

  6. 为角度输出添加一个范围。gydF4y2Ba

  7. 运行模型。gydF4y2Ba

    第一个视图表明,在X-Y平面上没有运动。第二个视图显示有稳定的旋转。gydF4y2Ba

通过更改输入,您可以使用这个最终模型来回答许多有关模型的问题。一些例子:gydF4y2Ba

  • 当初始角度不为0时会发生什么?gydF4y2Ba

  • 当力降为0时,运动停止需要多长时间?gydF4y2Ba

  • 当机器人更重时会发生什么?gydF4y2Ba

  • 当机器人在更光滑的表面上运动时,也就是阻力系数更低时,会发生什么?gydF4y2Ba

相关的话题gydF4y2Ba