主要内容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中模拟此类关系,您可以使用Simscape金宝app™或模型的物理建模工具,作为允许输入/输出定义的较大组件的一部分。有时,更接近建模目标和组件定义的检查有助于定义输入/输出关系。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

    D.GydF4y2Ba V.GydF4y2Ba (GydF4y2Ba T.GydF4y2Ba )GydF4y2Ba D.GydF4y2Ba T.GydF4y2Ba =GydF4y2Ba -GydF4y2Ba B.GydF4y2Ba mGydF4y2Ba V.GydF4y2Ba (GydF4y2Ba T.GydF4y2Ba )GydF4y2Ba +GydF4y2Ba 你GydF4y2Ba (GydF4y2Ba T.GydF4y2Ba )GydF4y2Ba

  • 对于离散系统,差异方程描述了变量的变化率,但等式仅在特定时间定义。例如,来自离散比例衍生控制器的控制信号:GydF4y2Ba

    P.GydF4y2Ba D.GydF4y2Ba [GydF4y2Ba NGydF4y2Ba ]GydF4y2Ba =GydF4y2Ba (GydF4y2Ba E.GydF4y2Ba [GydF4y2Ba NGydF4y2Ba ]GydF4y2Ba -GydF4y2Ba E.GydF4y2Ba [GydF4y2Ba NGydF4y2Ba -GydF4y2Ba 1GydF4y2Ba ]GydF4y2Ba )GydF4y2Ba K.GydF4y2Ba D.GydF4y2Ba +GydF4y2Ba E.GydF4y2Ba [GydF4y2Ba NGydF4y2Ba ]GydF4y2Ba K.GydF4y2Ba P.GydF4y2Ba

  • 没有衍生物的等式是代数方程。例如,代数方程给出了具有两个组件的并联电路中的总电流:GydF4y2Ba

    一世GydF4y2Ba T.GydF4y2Ba =GydF4y2Ba 一世GydF4y2Ba 一种GydF4y2Ba +GydF4y2Ba 一世GydF4y2Ba B.GydF4y2Ba

轮子和线性运动。GydF4y2Ba有两种力量在车轮上采取行动:GydF4y2Ba

  • 电机施加的力 - 力GydF4y2BaFGydF4y2Ba在速度变化方向上起作用,是对车轮子系统的输入。GydF4y2Ba

  • 拖力 - 力量GydF4y2BaFGydF4y2Ba拖GydF4y2Ba抵抗速度变化方向,是速度的函数。GydF4y2Ba

    FGydF4y2Ba D.GydF4y2Ba R.GydF4y2Ba 一种GydF4y2Ba GGydF4y2Ba =GydF4y2Ba K.GydF4y2Ba D.GydF4y2Ba R.GydF4y2Ba 一种GydF4y2Ba GGydF4y2Ba V.GydF4y2Ba |GydF4y2Ba V.GydF4y2Ba |GydF4y2Ba

加速与这些力量的总和成正比:GydF4y2Ba

(GydF4y2Ba mGydF4y2Ba /GydF4y2Ba 2GydF4y2Ba )GydF4y2Ba V.GydF4y2Ba ˙GydF4y2Ba =GydF4y2Ba FGydF4y2Ba -GydF4y2Ba FGydF4y2Ba D.GydF4y2Ba R.GydF4y2Ba 一种GydF4y2Ba GGydF4y2Ba (GydF4y2Ba mGydF4y2Ba /GydF4y2Ba 2GydF4y2Ba )GydF4y2Ba V.GydF4y2Ba ˙GydF4y2Ba =GydF4y2Ba FGydF4y2Ba -GydF4y2Ba K.GydF4y2Ba D.GydF4y2Ba R.GydF4y2Ba 一种GydF4y2Ba GGydF4y2Ba V.GydF4y2Ba |GydF4y2Ba V.GydF4y2Ba |GydF4y2Ba V.GydF4y2Ba ˙GydF4y2Ba =GydF4y2Ba FGydF4y2Ba -GydF4y2Ba K.GydF4y2Ba D.GydF4y2Ba R.GydF4y2Ba 一种GydF4y2Ba GGydF4y2Ba V.GydF4y2Ba |GydF4y2Ba V.GydF4y2Ba |GydF4y2Ba (GydF4y2Ba mGydF4y2Ba /GydF4y2Ba 2GydF4y2Ba )GydF4y2Ba

在哪里GydF4y2BaK.GydF4y2Ba拖GydF4y2Ba是拖动系数和GydF4y2BamGydF4y2Ba是机器人的质量。每个轮子带有该群众的一半。GydF4y2Ba

构建车轮模型:GydF4y2Ba

  1. 在里面GydF4y2Basystem_layout.GydF4y2Ba模型,双击GydF4y2Ba右轮GydF4y2Ba子系统显示空子系统。GydF4y2Ba

  2. 模型速度和加速度。加一个GydF4y2Ba积分商GydF4y2Ba堵塞。将初始条件设置为GydF4y2Ba0.GydF4y2Ba。该块的输入是加速度GydF4y2Bavdot.GydF4y2Ba并且输出是速度GydF4y2BaV.GydF4y2Ba。GydF4y2Ba

  3. 模拟拖动力。添加A.GydF4y2BaMatlab功能GydF4y2Ba块从用户定义的函数库。这GydF4y2BaMatlab功能GydF4y2Ba块提供了一种在模型中实现数学表达式的快速方法。要编辑函数,请双击块以打开MATLAB功能编辑器。GydF4y2Ba

  4. 定义MATLAB功能块的参数。在里面GydF4y2BaMatlab功能GydF4y2Ba块编辑器,单击GydF4y2Ba编辑数据GydF4y2Ba按钮。点击GydF4y2Bak_drag.GydF4y2Ba, 放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当两个轮子转向相反的方向时,它们在半径的圆圈中移动GydF4y2BaR.GydF4y2Ba,导致机器人的旋转运动。当车轮转向相同方向时,没有旋转。假设车轮速度始终相等,因此模拟旋转运动是依赖于两个车轮速度的差异的旋转运动GydF4y2BaV.GydF4y2BaR.GydF4y2Ba和GydF4y2BaV.GydF4y2BaL.GydF4y2Ba:GydF4y2Ba

θ.GydF4y2Ba ˙GydF4y2Ba =GydF4y2Ba V.GydF4y2Ba R.GydF4y2Ba -GydF4y2Ba V.GydF4y2Ba L.GydF4y2Ba 2GydF4y2Ba R.GydF4y2Ba

构建旋转动力学模型:GydF4y2Ba

  1. 在顶级GydF4y2Basystem_layout.GydF4y2Ba模型,双击旋转子系统以显示空子系统。删除之间的连接GydF4y2Bainport.GydF4y2Ba和GydF4y2Ba外港GydF4y2Ba块。GydF4y2Ba

  2. 模型角速度和角度。加一个GydF4y2Ba积分商GydF4y2Ba堵塞。将初始条件设置为GydF4y2Ba0.GydF4y2Ba。该块的输出是角度GydF4y2Baθ.GydF4y2Ba并且输入是角速度GydF4y2Batheta_dot.GydF4y2Ba。GydF4y2Ba

  3. 从切向速度计算角度速度。添加A.GydF4y2Ba获得GydF4y2Ba使用参数GydF4y2Ba1 /(2 * r)GydF4y2Ba。GydF4y2Ba

  4. 连接块。GydF4y2Ba

  5. 查看模型的顶级。点击GydF4y2Ba向父母导航GydF4y2Ba按钮GydF4y2Ba。GydF4y2Ba

模型功能组件GydF4y2Ba

将功能从函数的输入描述为输出。该描述可以包括代数方程和逻辑构造,您可以使用它在Simulink中构建系统的图形模型。金宝appGydF4y2Ba

坐标转换。GydF4y2BaX和Y坐标中机器人的速度,GydF4y2BaV.GydF4y2BaXGydF4y2Ba和GydF4y2BaV.GydF4y2BayGydF4y2Ba,与线速相关GydF4y2BaV.GydF4y2BaNGydF4y2Ba和角度GydF4y2Baθ.GydF4y2Ba:GydF4y2Ba

V.GydF4y2Ba XGydF4y2Ba =GydF4y2Ba V.GydF4y2Ba NGydF4y2Ba COS.GydF4y2Ba (GydF4y2Ba θ.GydF4y2Ba )GydF4y2Ba V.GydF4y2Ba yGydF4y2Ba =GydF4y2Ba V.GydF4y2Ba NGydF4y2Ba 罪GydF4y2Ba (GydF4y2Ba θ.GydF4y2Ba )GydF4y2Ba

构建坐标变换模型:GydF4y2Ba

  1. 在顶级GydF4y2Basystem_layout.GydF4y2Ba模型,双击坐标变换子系统显示空子系统。GydF4y2Ba

  2. 模型三角函数。添加A.GydF4y2Ba顾GydF4y2Ba从数学操作库中块。GydF4y2Ba

  3. 模型乘法。加二GydF4y2Ba产品GydF4y2Ba来自数学运营库的块。GydF4y2Ba

  4. 连接块。GydF4y2Ba

  5. 查看模型的顶级。点击GydF4y2Ba向父母导航GydF4y2Ba按钮GydF4y2Ba。GydF4y2Ba

设置模型参数GydF4y2Ba

模型参数值的源代码可以是:GydF4y2Ba

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

  • 在现有系统上直接测量GydF4y2Ba

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

此模型使用这些参数:GydF4y2Ba

范围GydF4y2Ba 象征GydF4y2Ba 价值GydF4y2Ba
大量的GydF4y2Ba mGydF4y2Ba 2.5千克GydF4y2Ba
滚动阻力GydF4y2Ba k_drag.GydF4y2Ba 30 NS.GydF4y2Ba2GydF4y2Ba/ M.GydF4y2Ba
机器人半径GydF4y2Ba R.GydF4y2Ba 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. 创建测试输入。添加A.GydF4y2Ba步GydF4y2Ba从源库中块并将其连接到右轮块的输入。将步骤时间参数设置为GydF4y2Ba1GydF4y2Ba。GydF4y2Ba

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

  4. 运行模拟。在里面GydF4y2Ba模拟GydF4y2Ba选项卡,单击GydF4y2Ba跑步GydF4y2Ba。GydF4y2Ba

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

验证旋转组件GydF4y2Ba

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

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

  2. 在新模型中创建测试输入。添加A.GydF4y2Ba步GydF4y2Ba来自来源库的块。将步骤时间参数设置为GydF4y2Ba1GydF4y2Ba。将其连接到旋转块的输入。当车轮沿相反方向旋转时,该输入表示车轮速度的差异。GydF4y2Ba

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

  4. 运行模拟。在里面GydF4y2Ba模拟GydF4y2Ba选项卡,单击GydF4y2Ba跑步GydF4y2Ba。GydF4y2Ba

该仿真表明,当车轮在相反方向上以相同的速度转动时,该角度稳定地增加。您可以进行一些模型改进,使其更容易解释角度输出,例如:GydF4y2Ba

  • 您可以将弧度的输出转换为度数。添加A.GydF4y2Ba获得GydF4y2Ba块增益GydF4y2Ba180 / pi.GydF4y2Ba。GydF4y2Ba

  • 您可以在360度的周期中显示度数。添加A.GydF4y2Ba数学函数GydF4y2Ba块与功能GydF4y2Ba摩擦GydF4y2Ba。GydF4y2Ba

Matlab三角函数在弧度中取出输入。GydF4y2Ba

验证模型GydF4y2Ba

验证单个组件后,您可以在完整模型上执行类似的验证。此示例验证以下行为:GydF4y2Ba

  • 当在相同方向上施加相同的力时,机器人在线移动。GydF4y2Ba

  • 当相同的力沿相反方向施加相同的力时,机器人旋转到位。GydF4y2Ba

  1. 在里面GydF4y2Basystem_layout.GydF4y2Ba模型,双击输入子系统以显示空子系统。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

  • 当初始角度不是零时会发生什么?GydF4y2Ba

  • 动力下降到零时,动作需要多长时间?GydF4y2Ba

  • 机器人较重的时候会发生什么?GydF4y2Ba

  • 当机器人在更平滑的表面上移动时会发生什么,即当拖动系数较低时?GydF4y2Ba

相关话题GydF4y2Ba