开始使用Simulink for Controls
开始使用Simulink®通过演示一个例子。本视频向您展示了使用Simulink的基本原理。
您将学习如何建模,模拟和测试太阳能电池板的控制器,因为它跟踪太阳的运动一整天。您将了解如何为一个物理系统建模,为该系统设计一个基本的PI控制器,然后运行模拟以确保模型正确工作。
在完成这个示例之后,您将了解到Simulink如何只是基于模型的设计的一部分,用于建模、模拟、测试和实现真实世界的系统。
Simulink是一个图形化环境,用于建模动态系统——也就是随时间变化的系统。Simulink负责模拟,因此您可以专注于工程。你可以用它来建模简单的东西——比如家用恒温器;或者复杂的系统——比如全自动驾驶汽车或外科手术机器人。
本视频将向您展示Simulink的基础知识,并让您了解在Simulink中工作是什么样子的。请继续关注最后,了解如何使用Simulink的更多信息。让我们开始吧!
在MathWorks位于马萨诸塞州纳蒂克的总部,有许多用于发电的太阳能电池板。
这些嵌板朝南,是固定的。这意味着,当太阳在中午直射它们时,它们产生的电力更多,而当太阳在白天的早期和晚期向东或向西时,它们产生的电力更少。
如果你的太阳能电池板可以跟随太阳旋转,这样你就可以产生尽可能多的电力,会怎么样?
在本视频中,我们将使用Simulink设计一个跟踪系统,以保持太阳能电池板与太阳对齐。如果您想跟随我们构建模型,您可以使用下面的链接下载它。
物理系统由面板和电机组成。我们将首先建立模型,然后添加一个控制器来跟踪太阳的位置。
一旦我们对设计满意,我们就会测试它,看看它跟踪实际太阳数据的效果如何。
物理系统有两个主要组成部分。有了一些基本的物理知识,我们就可以写出它们的运动方程。让我们先为面板建模。
您可以通过单击MATLAB工具条中的Simulink按钮启动Simulink。这将打开Start Page,在这里您可以创建新模型、查找示例,甚至查找基础训练。
我们将从头开始我们的模型,所以我们将选择空白模型。
Simulink模型是由块和信号建立起来的。打开Library Browser查看所有可用的块。为了对面板的方程建模,我们将从Integrator块开始。
让我们从库中单击并拖动一个Integrator到模型中。
那么为什么是Integrator块呢?积分器块取一个输入,随着时间对它进行积分。如果对加速度积分,就得到速度。如果对速度积分,就得到位置。这是在Simulink中建模微分方程的基础。
我们的方程有加速度和速度项,所以我们至少需要一个积分器。我们再加一个来得到位置。
我们通过点击和拖动块之间的信号将块连接在一起。不要担心这些红线,我们马上就把它们连起来。
给信号打上标签以使事情井井有条是个好主意,因此我们将双击信号并键入名称。我们把这个命名为theta_dot_dot表示加速度,然后是theta_dot表示速度,以及表示面板的位置。
接下来,让我们对方程的右边建模。首先,力矩项。
让我们使用Constant块。我们稍后会把这个换成马达。
您可以双击一个块来更改它的参数——让我们将值更改为10。
我们需要执行减法运算,因此我们还要获取一个Subtract块。
阻尼项取决于面板的速度——theta_dot信号。我们可以通过右键单击并拖动将其连接到Subtract块来分支这个信号。
别忘了还要乘以Kd。让我们使用一个增益块。
我们也可以使用一个变量,甚至是MATLAB代码,而不是硬编码增益值。假设增益是Kd。红框告诉我们Kd还没有定义。因此,单击这三个点并选择Create。我们将给它赋值5,并将它存储在MATLAB的基本工作区中。让我们用MATLAB检查一下,是的,变量Kd已经被创建出来了。
为了完成这个方程,我们需要除以惯量j,我们用另一个增益块来做。
但是现在我们知道了块的名称,我们可以在模型中双击并开始输入块名称。然后,使用下拉菜单找到正确的区块并按回车键。
我们将增益设置为1/J,并再次将基本工作区中的变量J定义为8.6。
让我们添加一个注释来显示正在建模的方程——这样当我们稍后回到它时,就可以很容易地知道方程是什么。
这应该是我们制作面板模型所需的全部材料了。但为了检查一切是否正常工作,我们需要可视化一些信号。Simulink有很多可视化工具。要快速检查信号,最简单的方法是使用Scope块…把它连接到我们想要查看的信号上。
让我们添加第二个瞄准镜来查看速度信号。
现在我们准备好模拟模型了。我们可以在模拟选项卡----中设置模拟停止时间,但我们现在将其设置为10。
要运行模拟,只需单击run按钮。模拟结束了,但你没有看到的是,Simulink通过时间数值解出了微分方程。
双击作用域查看发生了什么。
在位置范围中,我们看到面板的角度位置在增加。
在速度范围中,速度从零开始,然后趋于平稳。
因此,当扭矩恒定时,面板开始转动,然后以固定的速度旋转。这是有道理的。
让我们做一个快速的检查看看如果我们改变力矩的符号会发生什么。我们可以直接在块上编辑常量值!
重新运行,看起来不错,我们看到面板现在向相反的方向旋转。
现在我们已经有了面板模型,让我们将这些块组合在一起,以保持内容的组织性。只需选择您想要包含的块——我们现在将不考虑Constant块和范围——然后在Modeling选项卡中单击Create子系统。
现在所有这些块都包含在这个子系统中。我们把它命名为Panel。
您可以双击查看子系统内容。这些椭圆形的块是输入和输出—这是进入和离开子系统的数据。让我们调整端口名称。
好的,我们还需要一个马达。还记得那个运动方程吗?我们可以按照完全相同的过程来建模。
和. .我们有发动机了!
我们会给电机一个电压,产生一个扭矩,然后移动面板。让我们看看发生了什么。我们可以看到,当一个电压被应用到电机面板旋转-所以一切看起来很好到目前为止!
好的,我们已经建立了面板和电机的模型。现在我们需要一个控制器来设置正确的电压,这样面板就能跟踪太阳。
根据我们的模型,我们知道面板的指向。假设太阳在这里。
我们想让面板指向太阳,所以这两个角度的差就是误差。我们将添加一个控制器,给电机施加电压,使误差尽可能小。
如果太阳移动,控制器将做出相应的反应,使面板指向太阳。
好了,回到我们的Simulink模型!
这是面板的位置。为了得到误差,我们需要太阳的位置。当我们在设计控制器时,我们将使用单位步长输入—-这在控制设计中非常常见。我们稍后会用一些实际的太阳位置数据来测试它。
现在来计算误差。我们将使用Sum块——它已经有了在控制原理图中常见的漂亮的圆形。我们只需要把第二个端口改成负号而不是正号。
接下来我们需要一个控制器。有很多选择,但常见的方法是某种形式的PID控制——这代表比例/积分/导数,因为控制输出是误差的某个函数,积分误差和误差的导数。但我们不需要自己构建所有这些,我们只需要添加一个PID控制器块。
我们将输入端连接到错误信号上,输出端将驱动电机。
你可以看到有很多方法来定制控制器。我们将切换到PI控制器——D项有助于响应快速变化,我们不需要这一点,因为太阳在天空中稳步移动。
有两个增益需要调整:一个是比例项,一个是积分项。这些会影响控制器的响应。我们将比例增益设为240,积分增益设为180。
为了查看控制器的性能如何,让我们使用相同的作用域来显示太阳位置和面板位置。注意,自动添加了一个新端口。
让我们运行模型…并在范围中添加一个图例,这样我们就可以区分信号。我们还将位置线设为虚线。
我们可以看到控制器有一点超调,然后稳定到参考值1。这对于我们的应用程序来说已经足够了。
好了,我们设计了控制器。但是,它真的能追踪到太阳的运动吗?让我们看看当我们提供一些真实数据时,它的表现如何。
让我们将一些太阳位置数据加载到MATLAB基础工作区中。这个文件有两个变量:一个是15小时的时间向量,另一个是太阳在每个时间点的位置向量。
情节吧。
你可以看到太阳从东北方向从正北60度左右升起,在西北方向300度左右落下。
通过用import替换Step块,我们可以将太阳位置数据引入模型。
我们需要选择使用哪些数据。单击Modeling选项卡中的Model Settings。然后导航到数据导入/导出窗格。
这里有很多设置——如果你对任何事情都不确定,只需右键单击并选择“这是什么”。这个Input选项正是我们所需要的。
在指定输入数据时,第一列应该总是时间。之后,您可以为模型中的每个import添加列向量。
因为我们现在有15小时的数据,我们将改变模拟停止时间。
让我们运行这个模型,我们可以看到它很好地跟踪着太阳的位置。
因此,我们建立了太阳能电池板系统的模型,开发了一个控制器,并测试了该系统,以确保它能跟踪太阳的运动。而且,它看起来像我们的设计作品!
但这只是开始。如果我们想让这些面板成为现实,我们可以将适当的设计规范合并到我们的模型中。
我们可以引入Simscape等其他工具来建模机械和电气系统,而不需要推导任何方程!有了Stateflow,我们可以添加逻辑使面板变得智能,这样它们在一天结束时就会转回东方,并且知道如果条件发生变化该怎么做。
然后,当我们准备好了,我们可以从模型自动生成代码,并将其直接部署到硬件上。
在每一个步骤中,我们都可以不断地测试设计,以确保它没有错误并符合规格。
有了模型在我们的设计过程的中心,我们可以解决各种设计问题。你也可以。
现在你已经对在Simulink中工作有了一个感觉,是时候学习它了。学习Simulink的最好方法是使用它。所以,启动Simulink Onramp,它将教你交互式Simulink的基础知识。它是免费的,只需要几个小时。
欢迎来到仿真软件。
下载代码及文件
相关产品2022世界杯八强谁会赢?
了解更多
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。