您对系统结构中的每个组件建模,以表示该组件的物理或功能行为。您可以通过使用测试数据模拟基本组件行为来验证它们。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
在哪里gydF4y2BakgydF4y2Ba拖gydF4y2Ba阻力系数和gydF4y2Ba米gydF4y2Ba是机器人的质量。每个轮子承载一半的重量。gydF4y2Ba
构建车轮模型:gydF4y2Ba
在gydF4y2Basystem_layoutgydF4y2Ba
模型中,双击gydF4y2Ba右轮gydF4y2Ba子系统显示空子系统。gydF4y2Ba
模拟速度和加速度。添加一个gydF4y2Ba积分商gydF4y2Ba块。将初始条件设置为gydF4y2Ba0gydF4y2Ba
.这个物体的输入是加速度gydF4y2BaVdotgydF4y2Ba输出是速度gydF4y2BaVgydF4y2Ba.gydF4y2Ba
模拟拖动力。添加一个gydF4y2BaMATLAB函数gydF4y2Ba块。的gydF4y2BaMATLAB函数gydF4y2Ba块提供了一种在模型中实现数学表达式的快速方法。要编辑函数,请双击块以打开MATLAB功能编辑器。gydF4y2Ba
为MATLAB函数块定义参数。在gydF4y2BaMATLAB函数gydF4y2Ba块编辑器,单击gydF4y2Ba编辑数据gydF4y2Ba按钮。点击gydF4y2Bak_draggydF4y2Ba,设置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当两个轮子向相反的方向转动时,它们就在一个半径的圆周上运动gydF4y2BargydF4y2Ba,使机器人作旋转运动。当轮子朝同一个方向转动时,就没有转动。假设车轮速度总是相等的大小,它是实用的模型旋转运动依赖于两个车轮速度的差异gydF4y2BaVgydF4y2BaRgydF4y2Ba和gydF4y2BaVgydF4y2BalgydF4y2Ba:gydF4y2Ba
建立旋转动力学模型:gydF4y2Ba
在顶级gydF4y2Basystem_layoutgydF4y2Ba
模型中,双击Rotation子系统显示空的子系统。删除连接gydF4y2Bainport.gydF4y2Ba和gydF4y2Ba外港gydF4y2Ba块。gydF4y2Ba
模型角速度和角度。添加一个gydF4y2Ba积分商gydF4y2Ba块。将初始条件设置为gydF4y2Ba0gydF4y2Ba
.该块的输出是角度gydF4y2BaθgydF4y2Ba输入是角速度gydF4y2Batheta_dotgydF4y2Ba.gydF4y2Ba
从切向速度计算角速度。添加一个gydF4y2Ba获得gydF4y2Ba与参数gydF4y2Ba1 / (2 * r)gydF4y2Ba
.gydF4y2Ba
连接块。gydF4y2Ba
查看模型的顶层。单击gydF4y2Ba向父母导航gydF4y2Ba按钮gydF4y2Ba.gydF4y2Ba
将功能从函数的输入描述为输出。该描述可以包括代数方程和逻辑构造,您可以使用它在Simulink中构建系统的图形模型。金宝appgydF4y2Ba
坐标变换。gydF4y2BaX和Y坐标中机器人的速度,gydF4y2BaVgydF4y2BaXgydF4y2Ba和gydF4y2BaVgydF4y2BaYgydF4y2Ba,与线速相关gydF4y2BaVgydF4y2BaNgydF4y2Ba和角gydF4y2BaθgydF4y2Ba:gydF4y2Ba
建立坐标转换模型:gydF4y2Ba
在顶级gydF4y2Basystem_layoutgydF4y2Ba
模型,双击坐标转换子系统以显示空的子系统。gydF4y2Ba
三角函数模型。添加一个gydF4y2Ba要求gydF4y2Ba块从Math Operations库。gydF4y2Ba
乘法模型。添加两个gydF4y2Ba产品gydF4y2BaMath Operations库中的块。gydF4y2Ba
连接块。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选项卡上,单击gydF4y2Ba新的gydF4y2Ba.复制右车轮块到新模型。gydF4y2Ba
创建测试输入。添加一个gydF4y2Ba一步gydF4y2Ba块,并将其连接到右轮块的输入。请将步长参数设置为gydF4y2Ba1gydF4y2Ba
.gydF4y2Ba
向输出添加一个查看器。右键单击Right Wheel块的输出端口并选择gydF4y2Ba创建和连接查看器> Simulink >范围金宝appgydF4y2Ba.gydF4y2Ba
运行仿真。在gydF4y2Ba模拟gydF4y2Ba选项卡上,单击gydF4y2Ba运行gydF4y2Ba.gydF4y2Ba
仿真结果显示了一般的预期行为。在阶跃时间施加力之前,没有任何运动。当施加力时,速度开始增加,然后当施加的力和阻力达到平衡时,速度稳定在一个常数。除了验证,这个模拟也提供了信息的最大速度的车轮给定的力量。gydF4y2Ba
为旋转模型创建并运行一个测试模型:gydF4y2Ba
创建一个新模型。点击gydF4y2Ba并将旋转块复制到新模型中。gydF4y2Ba
在新模型中创建一个测试输入。添加一个gydF4y2Ba一步gydF4y2Ba来自来源库的块。请将步长参数设置为gydF4y2Ba1gydF4y2Ba
.将其连接到旋转块的输入。当车轮沿相反方向旋转时,该输入表示车轮速度的差异。gydF4y2Ba
向输出添加一个查看器。右键单击旋转块的输出端口,然后选择gydF4y2Ba创建和连接查看器> Simulink >范围金宝appgydF4y2Ba.gydF4y2Ba
运行仿真。在gydF4y2Ba模拟gydF4y2Ba选项卡上,单击gydF4y2Ba运行gydF4y2Ba.gydF4y2Ba
仿真结果表明,当车轮以相同的速度向相反的方向转动时,角度稳定增加。你可以做一些模型改进,使其更容易解释角度输出,例如:gydF4y2Ba
您可以将输出的弧度转换为角度。添加一个gydF4y2Ba获得gydF4y2Ba以增益为的阻塞gydF4y2Ba180 /πgydF4y2Ba
.gydF4y2Ba
你可以显示360度循环输出的角度。添加一个gydF4y2Ba数学函数gydF4y2Ba块的功能gydF4y2Ba国防部gydF4y2Ba
.gydF4y2Ba
MATLAB三角函数以弧度作为输入。gydF4y2Ba
在验证单个组件之后,您可以对完整的模型执行类似的验证。这个例子验证了以下行为:gydF4y2Ba
当相同的力作用在相同方向的两个轮子上时,机器人在一条直线上运动。gydF4y2Ba
当相同的力以相反的方向作用于两个轮子时,机器人就原地旋转。gydF4y2Ba
在gydF4y2Basystem_layoutgydF4y2Ba
模型,双击输入子系统以显示空子系统。gydF4y2Ba
通过添加gydF4y2Ba一步gydF4y2Ba块。请将步长参数设置为gydF4y2Ba1gydF4y2Ba
.把它连接到两者gydF4y2Ba外港gydF4y2Ba块。gydF4y2Ba
在模型的顶级,将输出信号连接到相同的范围查看器:gydF4y2Ba
运行模型。gydF4y2Ba
在该图中,黄线是x方向,蓝线是y方向。由于角度为零并且不改变,因此车辆仅在X方向上移动,如预期的那样。gydF4y2Ba
双击输入子系统并添加gydF4y2Ba获得gydF4y2Ba与参数gydF4y2Ba-1gydF4y2Ba
在源和第二个输出之间。这就改变了左轮的方向。gydF4y2Ba
给角度输出添加一个作用域。gydF4y2Ba
运行模型。gydF4y2Ba
第一个视图显示X-Y平面没有运动。第二种观点显示有稳定的旋转。gydF4y2Ba
您可以通过更改输入来使用此最终模型回答有关模型的许多问题。一些例子是:gydF4y2Ba
当初始角不为0时会怎样?gydF4y2Ba
动力下降到零时,动作需要多长时间?gydF4y2Ba
当机器人变重时会发生什么?gydF4y2Ba
当机器人在更平滑的表面上移动时会发生什么,即当拖动系数较低时?gydF4y2Ba