您在系统结构中建模每个组件以表示该组件的物理或功能行为。您通过使用测试数据模拟它们来验证基本组件行为。GydF4y2Ba
在建模各个组件时,整个系统布局的大图形视图很有用。首先加载布局模型。在MATLAB命令行,输入:GydF4y2Ba
Open_System(GydF4y2Ba'system_layout.slx'GydF4y2Ba)GydF4y2Ba
一个金宝app模拟GydF4y2Ba®GydF4y2Ba组件的模型基于几个起点:GydF4y2Ba
物理组件的输出和输入之间的显式数学关系 - 您可以通过代数计算和分子等式的集成来计算来自输入的组件的输出。例如,给定流入率的罐中的水位计算是一种明确的关系。每个Sim金宝appulink块基于从其输入到其输出的计算的定义执行。GydF4y2Ba
物理组件模型变量之间的隐式数学关系 - 因为变量是相互依赖的,分配输入和对组件的输出并不简单。例如,电压GydF4y2Ba+GydF4y2Ba
在电路中连接的电机的末端和电压GydF4y2Ba-GydF4y2Ba
结束具有隐含关系。为了在Simulink中模拟此类关系,您可以使用Simscape金宝app™或模型的物理建模工具,作为允许输入/输出定义的较大组件的一部分。有时,更接近建模目标和组件定义的检查有助于定义输入/输出关系。GydF4y2Ba
从实际系统获得的数据 - 您已从实际组件中测量的输入/输出数据,但不存在完全定义的数学关系。许多设备具有符合此描述的未刻度组件。例如,电视散发的热量。您可以使用系统识别工具箱™来定义此类系统的输入/输出关系。GydF4y2Ba
显式功能定义 - 您可以通过代数和逻辑计算定义从输入中的功能组件的输出。例如,恒温器的切换逻辑。您可以将大多数功能关系模拟为Simulink块和子系统。金宝appGydF4y2Ba
本教程模拟具有显式输入/输出关系的物理和功能组件。在本教程中,您将:GydF4y2Ba
使用系统方程来创建Simulink模型。金宝appGydF4y2Ba
在Simulink编辑器中添加和金宝app连接Simulink块。块表示来自方程的系数和变量。GydF4y2Ba
单独为每个组件构建模型。构建系统模型的最有效方法是首先独立考虑组件。GydF4y2Ba
首先使用系统的近似构建简单模型。确定可能影响模型准确性的假设。迭代地添加细节,直到复杂程度满足建模和准确性要求。GydF4y2Ba
描述组件之间的关系,例如数据,能量和力传输。使用系统方程来构建Simulink中系统的图形模型。金宝appGydF4y2Ba
在开始模拟组件之前要询问的一些问题:GydF4y2Ba
每个组件的常数是什么?除非您更改它们,否则哪些值不会更改?GydF4y2Ba
每个组件的变量是什么?随着时间的推移改变了什么值?GydF4y2Ba
组件有多少个州变量?GydF4y2Ba
使用科学原则导出每个组件的方程。许多系统方程分为三类:GydF4y2Ba
对于连续系统,微分方程描述了为所有时间值定义的方程式的变量的变化率。例如,一阶微分方程给出了汽车的速度:GydF4y2Ba
对于离散系统,差异方程描述了变量的变化率,但等式仅在特定时间定义。例如,来自离散比例衍生控制器的控制信号:GydF4y2Ba
没有衍生物的等式是代数方程。例如,代数方程给出了具有两个组件的并联电路中的总电流:GydF4y2Ba
轮子和线性运动。GydF4y2Ba有两种力量在车轮上采取行动:GydF4y2Ba
电机施加的力 - 力GydF4y2BaFGydF4y2Ba在速度变化方向上起作用,是对车轮子系统的输入。GydF4y2Ba
拖力 - 力量GydF4y2BaFGydF4y2Ba拖GydF4y2Ba抵抗速度变化方向,是速度的函数。GydF4y2Ba
加速与这些力量的总和成正比:GydF4y2Ba
在哪里GydF4y2BaK.GydF4y2Ba拖GydF4y2Ba是拖动系数和GydF4y2BamGydF4y2Ba是机器人的质量。每个轮子带有该群众的一半。GydF4y2Ba
构建车轮模型:GydF4y2Ba
在里面GydF4y2Basystem_layout.GydF4y2Ba
模型,双击GydF4y2Ba右轮GydF4y2Ba子系统显示空子系统。GydF4y2Ba
模型速度和加速度。加一个GydF4y2Ba积分商GydF4y2Ba堵塞。将初始条件设置为GydF4y2Ba0.GydF4y2Ba
。该块的输入是加速度GydF4y2Bavdot.GydF4y2Ba并且输出是速度GydF4y2BaV.GydF4y2Ba。GydF4y2Ba
模拟拖动力。添加A.GydF4y2BaMatlab功能GydF4y2Ba块从用户定义的函数库。这GydF4y2BaMatlab功能GydF4y2Ba块提供了一种在模型中实现数学表达式的快速方法。要编辑函数,请双击块以打开MATLAB功能编辑器。GydF4y2Ba
定义MATLAB功能块的参数。在里面GydF4y2BaMatlab功能GydF4y2Ba块编辑器,单击GydF4y2Ba编辑数据GydF4y2Ba按钮。点击GydF4y2Bak_drag.GydF4y2Ba, 放GydF4y2Ba范围GydF4y2Ba至GydF4y2Ba范围GydF4y2Ba,然后点击GydF4y2Ba申请GydF4y2Ba。GydF4y2Ba
从电机力量中减去阻力GydF4y2Ba减去GydF4y2Ba堵塞。用a完成力量加速方程GydF4y2Ba获得GydF4y2Ba块与参数GydF4y2Ba1 /(m / 2)GydF4y2Ba
。GydF4y2Ba
扭转的方向GydF4y2BaMatlab功能GydF4y2Ba块,右键单击块并选择GydF4y2Ba旋转和翻转>翻盖块GydF4y2Ba。连接块。GydF4y2Ba
两个轮子的动态相同。制作刚刚建模并粘贴在左轮子系统中的右轮子系统的副本。GydF4y2Ba
查看模型的顶级。点击GydF4y2Ba向父母导航GydF4y2Ba按钮GydF4y2Ba。GydF4y2Ba
旋转运动。GydF4y2Ba当两个轮子转向相反的方向时,它们在半径的圆圈中移动GydF4y2BaR.GydF4y2Ba,导致机器人的旋转运动。当车轮转向相同方向时,没有旋转。假设车轮速度始终相等,因此模拟旋转运动是依赖于两个车轮速度的差异的旋转运动GydF4y2BaV.GydF4y2BaR.GydF4y2Ba和GydF4y2BaV.GydF4y2BaL.GydF4y2Ba:GydF4y2Ba
构建旋转动力学模型:GydF4y2Ba
在顶级GydF4y2Basystem_layout.GydF4y2Ba
模型,双击旋转子系统以显示空子系统。删除之间的连接GydF4y2Bainport.GydF4y2Ba和GydF4y2Ba外港GydF4y2Ba块。GydF4y2Ba
模型角速度和角度。加一个GydF4y2Ba积分商GydF4y2Ba堵塞。将初始条件设置为GydF4y2Ba0.GydF4y2Ba
。该块的输出是角度GydF4y2Baθ.GydF4y2Ba并且输入是角速度GydF4y2Batheta_dot.GydF4y2Ba。GydF4y2Ba
从切向速度计算角度速度。添加A.GydF4y2Ba获得GydF4y2Ba使用参数GydF4y2Ba1 /(2 * r)GydF4y2Ba
。GydF4y2Ba
连接块。GydF4y2Ba
查看模型的顶级。点击GydF4y2Ba向父母导航GydF4y2Ba按钮GydF4y2Ba。GydF4y2Ba
将功能从函数的输入描述为输出。该描述可以包括代数方程和逻辑构造,您可以使用它在Simulink中构建系统的图形模型。金宝appGydF4y2Ba
坐标转换。GydF4y2BaX和Y坐标中机器人的速度,GydF4y2BaV.GydF4y2BaXGydF4y2Ba和GydF4y2BaV.GydF4y2BayGydF4y2Ba,与线速相关GydF4y2BaV.GydF4y2BaNGydF4y2Ba和角度GydF4y2Baθ.GydF4y2Ba:GydF4y2Ba
构建坐标变换模型:GydF4y2Ba
在顶级GydF4y2Basystem_layout.GydF4y2Ba
模型,双击坐标变换子系统显示空子系统。GydF4y2Ba
模型三角函数。添加A.GydF4y2Ba顾GydF4y2Ba从数学操作库中块。GydF4y2Ba
模型乘法。加二GydF4y2Ba产品GydF4y2Ba来自数学运营库的块。GydF4y2Ba
连接块。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选项卡,单击GydF4y2Ba新的GydF4y2Ba。将右轮块复制到新模型中。GydF4y2Ba
创建测试输入。添加A.GydF4y2Ba步GydF4y2Ba从源库中块并将其连接到右轮块的输入。将步骤时间参数设置为GydF4y2Ba1GydF4y2Ba
。GydF4y2Ba
将查看器添加到输出。右键单击右轮块的输出端口,然后选择GydF4y2Ba创建和连接查看器> Simulink>范围金宝appGydF4y2Ba。GydF4y2Ba
运行模拟。在里面GydF4y2Ba模拟GydF4y2Ba选项卡,单击GydF4y2Ba跑步GydF4y2Ba。GydF4y2Ba
仿真结果表现出一般的预期行为。直到在步进时间应用于力量。当施加力时,速度开始增加,然后当施加的力和拖动力达到平衡时以常数稳定。除了验证之外,该仿真还提供有关给定力的车轮的最大速度的信息。GydF4y2Ba
为旋转模型创建和运行测试模型:GydF4y2Ba
创建一个新模型。点击GydF4y2Ba并将旋转块复制到新模型中。GydF4y2Ba
在新模型中创建测试输入。添加A.GydF4y2Ba步GydF4y2Ba来自来源库的块。将步骤时间参数设置为GydF4y2Ba1GydF4y2Ba
。将其连接到旋转块的输入。当车轮沿相反方向旋转时,该输入表示车轮速度的差异。GydF4y2Ba
将查看器添加到输出。右键单击旋转块的输出端口,然后选择GydF4y2Ba创建和连接查看器> Simulink>范围金宝appGydF4y2Ba。GydF4y2Ba
运行模拟。在里面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
在里面GydF4y2Basystem_layout.GydF4y2Ba
模型,双击输入子系统以显示空子系统。GydF4y2Ba
通过添加一个测试输入GydF4y2Ba步GydF4y2Ba堵塞。将步骤时间参数设置为GydF4y2Ba1GydF4y2Ba
。将它连接到两者GydF4y2Ba外港GydF4y2Ba块。GydF4y2Ba
在模型的顶级,将输出信号连接到相同的范围查看器:GydF4y2Ba
运行模型。GydF4y2Ba
在该图中,黄线是x方向,蓝线是y方向。由于角度为零并且不改变,因此车辆仅在X方向上移动,如预期的那样。GydF4y2Ba
双击输入子系统并添加一个GydF4y2Ba获得GydF4y2Ba使用参数GydF4y2Ba-1GydF4y2Ba
源和第二个输出之间。这反转了左轮的方向。GydF4y2Ba
将范围添加到角度输出。GydF4y2Ba
运行模型。GydF4y2Ba
第一视图表明X-y平面中没有运动。第二视图表明存在稳定的旋转。GydF4y2Ba
您可以通过更改输入来使用此最终模型回答有关模型的许多问题。一些例子是:GydF4y2Ba
当初始角度不是零时会发生什么?GydF4y2Ba
动力下降到零时,动作需要多长时间?GydF4y2Ba
机器人较重的时候会发生什么?GydF4y2Ba
当机器人在更平滑的表面上移动时会发生什么,即当拖动系数较低时?GydF4y2Ba