主要内容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中对这样的关系建模,您可以使用物理建模工具,金宝app如Simscape™,或者将这些变量建模为允许输入/输出定义的更大组件的一部分。有时候,更仔细地检查建模目标和组件定义有助于定义输入/输出关系。gydF4y2Ba

  • 从实际系统获得的数据 - 您已从实际组件中测量的输入/输出数据,但不存在完全定义的数学关系。许多设备具有符合此描述的未刻度组件。例如,电视散发的热量。您可以使用系统标识工具箱™来定义此类系统的输入/输出关系。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

  • Drag force -力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翻转左右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模型,双击rotate子系统显示空子系统。删除连接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模型,双击Coordinate Transform子系统以显示空子系统。gydF4y2Ba

  2. 三角函数模型。添加一个gydF4y2Ba要求gydF4y2Ba从数学运营库中阻止。gydF4y2Ba

  3. 乘法模型。添加两个gydF4y2Ba产品gydF4y2Ba块从数学运算库。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块,并将其连接到右轮块的输入。保持步长时间参数为gydF4y2Ba1gydF4y2Ba.gydF4y2Ba

  3. 将查看器添加到输出。右键单击右轮块的输出端口,然后选择gydF4y2Ba创建和连接查看器> Simulink >范围金宝appgydF4y2Ba.gydF4y2Ba

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

仿真结果表现出一般的预期行为。直到在步骤时间应用于力量,没有动作。当施加力时,速度开始增加,然后当施加的力和拖动力达到平衡时以恒定稳定。除了验证之外,该模拟还提供了关于给定力的车轮的最大速度的信息。gydF4y2Ba

验证旋转组件gydF4y2Ba

为旋转模型创建和运行测试模型:gydF4y2Ba

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

  2. 在新模型中创建一个测试输入。添加一个gydF4y2Ba步gydF4y2Ba来自来源库的块。保持步长时间参数为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模型,双击input子系统以显示空子系统。gydF4y2Ba

  2. 通过添加gydF4y2Ba步gydF4y2Ba块。保持步长时间参数为gydF4y2Ba1gydF4y2Ba.把它连接到两者gydF4y2Ba外港gydF4y2Ba块。gydF4y2Ba

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

  4. 运行模型。gydF4y2Ba

    在图中,黄线是X方向,蓝线是Y方向。由于角度为零且不变,所以车辆只在X方向移动,正如预期的那样。gydF4y2Ba

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

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

  7. 运行模型。gydF4y2Ba

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

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

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

  • 动力下降到零时,运动需要多长时间停止?gydF4y2Ba

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

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

相关的话题gydF4y2Ba