主要内容GydF4y2Ba

模型并验证系统GydF4y2Ba

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

打开系统布局GydF4y2Ba

当对单个组件建模时,整个系统布局的全局视图是很有用的。首先加载布局模型。在MATLAB命令行中,输入:GydF4y2Ba

开放式系统(GydF4y2Ba'system_layout.slx'GydF4y2Ba的)GydF4y2Ba

模型组件GydF4y2Ba

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

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

  • 物理组件的模型变量之间的隐式数学关系 - 因为变量是相互依赖的,为组件分配输入和输出并不直接。例如,电压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 M.GydF4y2Ba V.GydF4y2Ba (GydF4y2Ba T.GydF4y2Ba 的)GydF4y2Ba +GydF4y2Ba 你GydF4y2Ba (GydF4y2Ba T.GydF4y2Ba 的)GydF4y2Ba

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

    P.GydF4y2Ba D.GydF4y2Ba [GydF4y2Ba N.GydF4y2Ba ]GydF4y2Ba =GydF4y2Ba (GydF4y2Ba E.GydF4y2Ba [GydF4y2Ba N.GydF4y2Ba ]GydF4y2Ba -GydF4y2Ba E.GydF4y2Ba [GydF4y2Ba N.GydF4y2Ba -GydF4y2Ba 1GydF4y2Ba ]GydF4y2Ba 的)GydF4y2Ba K.GydF4y2Ba D.GydF4y2Ba +GydF4y2Ba E.GydF4y2Ba [GydF4y2Ba N.GydF4y2Ba ]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 M.GydF4y2Ba /GydF4y2Ba 2GydF4y2Ba 的)GydF4y2Ba V.GydF4y2Ba ˙GydF4y2Ba =GydF4y2Ba FGydF4y2Ba -GydF4y2Ba FGydF4y2Ba D.GydF4y2Ba R.GydF4y2Ba 一种GydF4y2Ba GGydF4y2Ba (GydF4y2Ba M.GydF4y2Ba /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 M.GydF4y2Ba /GydF4y2Ba 2GydF4y2Ba 的)GydF4y2Ba

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

构建车轮模型:GydF4y2Ba

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

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

  3. 对阻力进行建模。添加一个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翻转左右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模型,双击rotate子系统显示空子系统。删除连接GydF4y2Ba输入GydF4y2Ba和GydF4y2Ba外埠GydF4y2Ba阻碍。GydF4y2Ba

  2. 模型角速度和角度。加一个GydF4y2Ba积分器GydF4y2Ba阻止。将初始条件设置为GydF4y2Ba0.GydF4y2Ba.此块的输出为角度GydF4y2Baθ.GydF4y2Ba输入是角速度GydF4y2Batheta_dotGydF4y2Ba.GydF4y2Ba

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

  4. 连接块。GydF4y2Ba

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

为功能组件建模GydF4y2Ba

描述从函数输入到输出的函数。此描述可包括代数方程和逻辑结构,可用于在Simulink中构建系统的图形模型。金宝appGydF4y2Ba

坐标转换。GydF4y2Ba机器人在X和Y坐标系中的速度,GydF4y2BaV.GydF4y2BaXGydF4y2Ba和GydF4y2BaV.GydF4y2BayGydF4y2Ba,与线速度有关GydF4y2BaV.GydF4y2BaN.GydF4y2Ba和角GydF4y2Baθ.GydF4y2Ba:GydF4y2Ba

V.GydF4y2Ba XGydF4y2Ba =GydF4y2Ba V.GydF4y2Ba N.GydF4y2Ba 余弦GydF4y2Ba (GydF4y2Ba θGydF4y2Ba 的)GydF4y2Ba V.GydF4y2Ba yGydF4y2Ba =GydF4y2Ba V.GydF4y2Ba N.GydF4y2Ba 罪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 M.GydF4y2Ba 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. 创建一个测试输入。添加一个GydF4y2Ba一步GydF4y2Ba块,并将其连接到右轮块的输入。保持步长时间参数为GydF4y2Ba1GydF4y2Ba.GydF4y2Ba

  3. 向输出添加查看器。右键单击Right Wheel块的输出端口并选择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

  • 您可以将Radians的输出转换为度数。添加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. 双击input子系统并添加一个GydF4y2Ba获得GydF4y2Ba使用参数GydF4y2Ba-1GydF4y2Ba在源和第二个输出之间。这反转了左轮的方向。GydF4y2Ba

  6. 将范围添加到角度输出。GydF4y2Ba

  7. 运行模型。GydF4y2Ba

    第一视图表明x-y平面中没有运动。第二视图表明存在稳定的旋转。GydF4y2Ba

通过更改输入,您可以使用此最终模型回答有关该模型的许多问题。一些示例包括:GydF4y2Ba

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

  • 当力降到零时,运动需要多长时间才能停止?GydF4y2Ba

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

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

相关话题GydF4y2Ba