Arkadiy Turevskiy, MathWorks
PID控制是普遍存在的。PID控制器的设计和调试在理论上很简单,但在实际操作中却非常困难和耗时。网络研讨会将从快速的PID控制理论入门开始。然后,MathWorks工程师将介绍一种简单而直接的方法来快速设计、调优和实现PID控制器。
透过示范,你将学习如何:
关于主讲人:Arkadiy Turevskiy在MathWorks的技术营销组工作,支持Simulink和control设计产品。下载188bet金宝搏金宝app金宝app在加入MathWorks之前,他在普惠公司工作,为大型飞机引擎开发控制系统。
记录:2017年3月14日
大家好,欢迎来到我们的网络研讨会,PID控制变得很简单。我叫Arkadiy Turevskiy。我在MathWorks的控件团队工作。我们将开始这个网络研讨会与快速入门PID控制为那些谁不记得或不知道它是什么。然后我们将介绍在Simulink中设计和实现PID控制器的工作流程。金宝app
在我们开始之前与底漆,让我们赶紧来看看最终的产品,我们将创造今天。对于这一点,让我切换到MATLAB。我们将打开一个Simulink模型。金宝app
这是一个闭环发动机控制系统的模型。这可能是汽车发动机或工业机械的发动机。该发动机是仿照在子系统与节气门的输入和速度的输出。你也有这样的子系统myController的的PID控制器内。
如果我们运行仿真,你会看到这个PID控制器适用于定点数据类型。你也可以看到,这是一个离散时间PID控制器。您还可以看到右侧的模拟结果。
你在右上角看到的黄线是一个速度参考信号。您可以看到,您正在命令速度从2,000 RPO更改为2,200 RPM。洋红色的线是实际测量的速度。正如你所看到的,控制系统或PID控制器在提供快速稳定的参考跟踪方面做得很好。
一旦我们在Simulink中设计并验证了PID控制器,我就会自动生成C代码。金宝app稍后我将向您展示如何更详细地做它。但是现在,让我简单地打开生成的代码并显示文件。
正如你可以在这里看到,这是约30行代码,其中实际PID算法在大约10线的高效,紧凑,定点代码来实现。当然,实际的控制系统将包括比简单PID控制器了更多的功能。但在这个研讨会,我只专注于设计和生成的代码只PID控制器。
所以,现在,我们已经看到了最终产品,PID控制让我们回来谈谈底漆。那么,什么是PID控制?PID代表比例积分微分。如果你看一下维基百科PID控制器的这张照片,你会看到,我们正试图控制,如我们的引擎模型的过程。
您将看到测量的输出是从设定点减去计算误差信号。然后,PID控制器,在此示出,创建通过使用三个不同的术语致动器的要求,在这里这三个不同的盒子示出:比例项,这是乘以增益KP的误差信号;积分项,其是由所述误差信号的积分的积分增益KI;和微分项,这是微分增益KD乘以衍生物的误差信号的。
那么,为什么我们需要这三个不同的方面?让我们切换回MATLAB。让我们用一个简单的脚本,我准备在这里看到。
在这个脚本中,我们将使用Control System Toolbox(比如TF)中的命令来说明为什么需要三个不同的术语。我们将从创建工厂模型的传递函数开始。我们称之为sys。如你所见,这是一个简单的二阶传递函数时间延迟为0。2秒。
我们来看看传递函数的阶跃响应。它是这样的。我们可以检查开环系统的上升时间。大概是7。7秒。
我们现在开始设计一个控制器。首先,我们要做的是使用一个比例项。让我们从增益值3开始。使用控制系统工具箱中的命令,我们将计算闭环系统并绘制其阶跃响应。
阶跃响应现在用黄线表示。我们看到它比开环动力学要快得多。但它没有提供0稳态误差。换句话说,这里的闭环阶跃响应没有达到参考值1。
因此,我们可以尝试通过增加比例增益值固定这一点。让我们来试试。这里使用这个小部件,我们可以增加增益和脚本细胞重新运行计算。如果我们这样做了好几次,我们会看到稳态面积越来越小,但在我们的闭环系统,在这里我们开始看到隔离,增加超调的稳定性为代价的。因此,增加比例增益是不是一个很好的解决方案。
现在让我们添加了积分项,0.8积分增益,并重新计算。现在我们比较比例仅具有0.3比例增益,黄线控制器的响应,与比例积分,或所谓的PI控制器,用3比例增益和0.8积分增益。正如你所看到的,除了积分项的消除稳态误差,同时仍保持系统很好的稳定性,使我们的超调小,我们没有很多隔离的。
我们可以使用微分项,我们将在这里添加使用之类的说法到PID指令提高了系统的稳定性,多一点点。我们来做一下。PID控制器响应被示出在绿色的线。正如你看到的,它具有大致相同的响应时间,上升时间,作为PI控制器,所以它也快。但与此同时,我们尽量减少过冲和摆脱这种冲这儿,所以我们的系统更加稳定。
因此,我们需要的比例项开始。然后将积分项消除稳态误差。和微分项可以让我们提高了系统的稳定性。
如果PID控制器是关于三个增益-比例,积分,和微分-这里的问题是什么?您可以快速编写一些C代码,将其与我们的机器的原型连接起来,然后开始调整这些改进。
当你这样做的时候会遇到很多挑战。有时,您的植物模型是不稳定的。所以如果你开始在原型上调整它,你的整个闭环系统就会变得不稳定。这会损害你的植物。
可能会有一种危险的情况叫做积分器清盘。你需要逻辑来保护它。稍后我将更详细地解释这一点。
很多时候,当人们调优PID控制器时,他们会使用某种植物模型来消除PID控制器的增益。但是很多时候,这种植物模型是不可用的。在这种情况下我们该怎么做?
如果您需要实现微处理器PID控制器,特别如果微处理器已定点架构,那么你就需要考虑在采样和参数离散化。这就是挑战为好。
我们看到的例子是一个简单的单输入单输出系统。但是很多系统都有多个输入和输出。我们也需要有能力应对它们。最后,即使你处理的是单输入单输出系统,植物的动态也会在不同的操作条件下发生很大的变化。这些就是人们在设计和实现PID控制器时要面对的一些挑战。
现在,我想回去的例子,我们开始,发动机控制系统,并通过该系统设计PID控制器的工作流走,并在这个过程中的亮点,我们如何能够帮助您解决其中的一些挑战。现在让我们切换到MATLAB。让我们打开我们将与合作的例子。
这是一个模型,我们将为我们的引擎系统创建一个PID控制器。我们这里还没有PID控制器,但是我们有我们的引擎子系统。让我们在里面导航。
在这里,我们有多个组件。如果你去钻研其中的一个,你会看到我们在这里执行的方程是非线性的。下面是在这里实现的另一个非线性方程。这里还有一个。因此,装置动态是在这种情况下非常非线性的。
因此,在这个顶级型号,我们的发动机子系统。我们有速度参考块。我们有总和块,计算所述参考和测量的速度之间的误差信号。
现在,让我们继续前进,添加PID控制器块。此外,我们还会采用了分离式PID控制器。让我们将这个块连接到我们的系统的其余部分。
而且我们不要打开块对话框该块。这里有很多的选择。我不会解释所有的人。这里有一个很好的帮助文件,您可以阅读,获取有关该PID控制器块的所有不同选项的详细信息。
但我只是强调一些想法在这里。PI,PD,只有比例,只有积分,或PID:要实现可以选择控制器的类型。您可以选择的形式。我们提供两种不同的形式在这里,你可以选择。当你改变窗体或使这里的块对话框中其他任何变化,你看到控制器的形式得到更新。
当然,您可以指定采样时间。我们设它为0。01秒。单击Apply。
我们可以改变控制器的增益。我们将谈论稍晚。在高级选项卡中,我们可以指定输出饱和。如果我们愿意,我们可以使抗饱和保护。同样,我们都晚了一点谈论这个。
当我们做出这些改变,如果我们想看看有什么引擎盖下实现这里,我们总能在此块上单击鼠标右键,进入面膜菜单,面具下的样子。我们将看到,我们实现了使用基本的Simulink模块,如收益,过滤器,集成商和累加模块该模块的逻辑。金宝app所以这是从来没有一个黑盒子。你总是看到发生了什么在这里实现。
我们回到这里。让我们保持简单的设置,PID控制器。我们跳过并行形式。让我们关闭输出命令的限制。好吧。
我们不使用默认的增益值1,1,0和100,我们来参数化这个系统。这个参数是kp ki kd。这些参数已经被设置成我们刚才在MATLAB中看到的值。我马上给你们看。点击应用。
我们也改变PID控制器中积分器的初始值这样PID控制器块的初始输出就等于9。从与引擎子系统的游戏中,我知道你需要一个大约9的油门请求来获得一个大约2000转的输出速度。点击应用。
而只是为了说服你,你开始使用默认的增益值,让我们去MATLAB。在这里,你看到这些参数设置为默认值的值。
让我们回到Simulink模型。金宝app现在让我们运行模拟。如果我们观察结果,我们会发现响应是不稳定的。这并不奇怪,因为我们还没有改变增益值。
现在我们来讨论如何调整增益值。我们可以通过进入block对话框并按下Tune按钮来做到这一点。这将启动一个名为PID Tuner的工具,该工具需要Simulink控制设计。金宝app这个工具在0时刻线性化非线性Simulink模型并打开这个PID金宝app调优器应用程序。
并利用该工具从线性Simulink模型中得到的传递函数,自动得出PID控制器增益,提供良好的参考跟踪。金宝app您可以在这里查看PID参数、增益值和其他特性。如果我们喜欢这个设计,我们可以简单地更新块参数。
对话框中没有任何变化。但是如果你用MATLAB,我们看到增益值已经更新了。
让我们回到Simulink模型。金宝app现在让我们重新运行模拟。让我们看看结果。
所以,现在我们看到我们摆脱这种不稳定的。我们有很好的稳定的响应。但也许我们想消除这种尖峰在节流命令,因为也许那是不现实的。
因此,我们可以回到PID控制器块,提出这个PID调节器,我们有,也许放慢我们的系统一点点的反应。而实际上,我们可以看看其他的情节在这里我们可以看一下控制器的努力,我们都这么多大油门指挥,并看到这种情况正在改变。因此,与默认的设计中,我们在这里看到一个峰值。但是,如果我们继续使其慢一点,我们降低了峰值。
因此,让我们在这里尝试这种设计。更新块再次参数。重新运行模拟。现在,我们有节气门命令没有秒杀出色,稳定的设计。
很快地,你们看到了如何使用PID调节器应用来调整PID控制器增益,以及如何微调设计。如果你想使用更严格的调优工具,如博德图或根轨迹,我们有另一个应用程序,称为控制系统设计师,你可以使用。但我现在不展示。
我想专注于接下来的是一个情况下,你不知道工厂模型。你不知道你的描述植物的动态方程。但是,你可能有访问原型或实际过程或植物,你试图控制。
因此,让我们假装我们不知道我们的发动机的方程式,但我们能够有机会获得实际的发动机。我们可以在这里指令输入到发动机,如油门的请求,并测量输出。在这种情况下,我们正在做的开环测试中,我们只命令油门,在台阶方式从约8.9在2秒时变为约9.4。但是,我们也可以运行,也许我们要在改善同预调节器,所以我们可以指挥速度参考值更改为控制并测量产生的油门和发动机产生的速度。
所以我想说的是我们可以使用的数据不一定是开环数据,但它可以是通过闭环引擎操作得到的数据。但是一旦你测量了工厂的输入和输出,这里的想法是我们可以用这些数据从数据中识别出一个工厂模型,然后用这个识别出的工厂模型来调整我们的PID控制器。
我们来做一下。让我们打开PID调优器应用程序。与我们刚刚在Simulink模型中用来调优PID控制器增益的应用程序非常相似。金宝app但是现在我们还没有一个植物模型,所以我们需要确定一个新的植物模型。
这为识别植物模型打开了另一个窗口。我们需要从将IO数据引入工具开始。这里你可以选择。你可以带来任意的IO数据。但在我们的例子中,我们使用阶跃响应选项,因为我们拥有的数据实际上是阶跃响应。
输出信号被存储在变量输出。而我们知道输入信号具有0.5的幅度。它起始于约8.9,或者实际上我们有输入信号,所以我们可以只得到从那里初始值。我们知道步骤发生在约2秒。而我们的时间向量从0开始,与组装的1/100秒的时间。
让我们输入数据。现在我们看到绿色的曲线,这是测量的引擎速度,蓝色的曲线,它有一个模型的输出,我们正试图输入到绿色的线。我们再来看看输入数据,这是我们控制引擎的一个步骤,油门步骤。
好吧。为了得到更好的拟合,我们去掉测量数据中的偏移。所以引擎的速度不是从2000开始,而是从0开始。进入预处理,移除偏移量。让我们移除所有信号的偏移。我们移除初始信号值。
我们来更新一下。这是我们的新数据。然后关闭这个对话框。
因此,这里是用绿线偏移去除的数据。而我们现在试图将一阶模型,你在这里对这个数据看公式。我们可以交互地调整我们的控制两个参数,稳定状态增益和这个模型的时间常数。
我们可以尝试不同的结构;例如;一对阻尼不足的电杆。让我们选择一个不同的模型。我们可以交互式地调整它,或者我们可以让工具自动提供最佳的参数值,以提供最佳的匹配。
如果我们这样做,这个工具就能很好地适应这里,就像你在这里看到的。在右下角,你可以看到它所适合的工厂的参数。现在我们说我们对这个植物模型很满意,所以我们可以使用它并关闭这个对话框。
所以现在我们要调整我们的PID控制器来适应我们刚刚确定的这个植物模型。我们选择带导数滤波器的PID控制器作为我们要使用的PID控制器的类型。我们看到我们现在有很好的阶跃响应,稳态误差为零。我们可以让它快一点。一旦我们喜欢这个设计,我们就可以将它导出并保存到我们的MATLAB工作空间中的变量c中。
现在,如果我们回到MATLAB,我们有一个变量c。如果你看它是什么,它是一个连续时间PID控制器用这些增益值。我们可以通过键入c.kp,c.ki访问这些增益值,等等等等。所以,现在我们可以把这些收益并把它们纳入在Simulink PID控制器块,用于进一步实施。金宝app
因此,要总结,在本节中,我们看到了两种不同的方式整定PID控制器的,当你有描述工厂的动力学方程在Simulink的工厂模型的一种方式,而另一种方式,当你不知道的公式金宝app但可使用测量的输入/输出数据。在这种情况下,您可以使用系统辨识工具箱集成到PID调节器应用程序首先确定从数据的工厂模型,然后使用该标识的工厂模式调整PID控制器的你 - 收益的参数。
现在让我们谈谈实施。这几乎是相同的模型,我们只是一起工作。但在这里,我们增加了零级整本书来代表A到d转换。我们放在我们的PID控制器这里的子系统的内部。我们还增加了数据类型的转换块。
所以,现在我们希望做的是转换设计到定点设计,在定点处理器实现这个浮点,然后生成代码。因此,让我们通过运行仿真开始。所以我们可以说这是我们开始一起工作的设计。你看所有的信号都是双打了。
现在,为了将这个设计扩展到定点,我们将推出定点工具,它与我们的产品“定点设计师”一起发布。好吧。我们已经得到了刚才的模拟结果。因此,您将清除所有结果并首先运行所有结果。我们将从用双精度覆盖控制器子系统中的所有参数开始。这就是这个设置的作用。
我们会运行模拟。我们将在运行中保存模拟的结果,并将其命名为Double。我们来做一下。让我们来模拟我们的模型。
结果显示在这里。正如您所看到的,对于PID控制器块内的所有参数,我们使用双数据类型。对于子系统内部的所有信号,我们在仿真过程中获取最小值和最大值。
现在我们要做的是使用那些分和仿真过程中捕获最大值自动拿出定点定标。为了做到这一点,我们将向下滚动。而在这里,我们将配置建议部分长度的选项。我们要使用固定16位字长。而对于固定字长,我们希望该工具提出了部分的长度。因此,我们将留在这个选择。
我们希望用于浮点信号的默认数据类型将与嵌入式硬件整数相同。我马上会解释这是什么意思。我们希望使用具有一定安全裕度的模拟最小/最大数据作为定点缩放。
现在我们回到模型上来。在模型中,我所做的是在模型配置参数设置中,有一个节点叫做硬件实现。在这里,我已经指定我们想要在一个通用的16位嵌入式处理器上实现我们的控制器。我可以选择一个特定的。但是在这里,我想继续使用通用架构。
因此,这里最重要的事情就是这样,定点工具,当我们说的默认数据类型是一样的嵌入式硬件整数,它知道我们的目标是16位处理器。因此,既然,我们让工具提出了部分长度为我们。因此,让我们点击这里。
所以,工具前进并与你在这里看到的提案出现。让我们继续前进,并应用所提出的部分长度为所有参数。
现在回到Simulink模型。金宝app打开PID控制器块,查看数据类型步骤。现在你可以看到所有的数据类型都是16位的定点。
现在,我们想要做的是确保在定点定标,我们只是想出了给我们的结果接近我们的浮点设计。对于这一点,而不是覆盖所有的数据类型为双,因为我们做了第一次,我们将使用本地设置,定点定标,我们刚才看到。我们将运行的结果保存到一个名为定点运行。
因此,让我们应用更改。让我们运行模拟。
我们看到我们现在有两个运行,定点和双。编译DT栏显示你在模拟过程中使用的数据类型。所以你看,我们使用的固定点对于固定点运行和双数据类型相对于初始运行。
现在让我们来看看错误信号。让我告诉你它是在模型中。它在这里该信号。你看,我们会记录它。这是参考设置点,基准速度,和测量的速度之间的差。
对于信号,我们将比较运行。在顶部,实际上有两个区域。他们看起来很近。
但是,如果你在一点点放大,你会看到是有区别的。这就是你实际看到的。在上图中的两条线之间的区别是什么,你在底部情节看。因此,让我缩小。
有趣的是,这里需要注意的是,在浮点数和不动点之间,存在稳态值的差异。你可以看到,如果你放大这里。现在,请记住,这是使用定点缩放模拟的结果。所以定点缩放的结果,你不再有零稳态误差。这是有趣的。这告诉你,也许你需要在缩放单元格上多花点时间,或者忍受这个非零稳态误差,或者去进程服务上花点时间。
但是,这是你的选择,作为一名工程师。这里最重要的一点是要告诉你,你怎么可以快速做固定点与此定点工具缩放,如下图所示。
当我们这样做的时候,下一步就是生成代码。有多个网络研讨会讨论如何配置代码生成。但是我将快速地向你展示如何从这个PID控制器块生成代码。同样,在现实生活中,你的控制器会比一个简单的PID控制器块复杂得多。但这个想法仍然适用。
比如说,建立一个子系统。我配置了这个模型来生成高效的代码,优化了ROM和RAM的效率。我会让那些控制器获得参数,可调参数。我们会继续生成代码。
下面是生成的代码。你可以看到我们的收获。您可以在这里看到一些初始化代码。这里是实现PID控制器的实际算法。
那么如何处理这些生成的代码呢?当然,你可以把它放在处理器上,然后开始测试,等等。但我想很快地强调一个选项,你已经称为软件在循环测试。这里的想法是将生成的代码与Simulink中的植物模型一起在主机上进行测试,以确保生成的代码提供的结果与Simulink模型中的块完全相同。金宝app
要做到这一点,我们再去代码生成菜单。但是,我们现在选择一个选项,以生成一个S-功能。同样,我们可以把这些参数可调。我们选择此选项,创建软件在环仿真模块,并单击生成。
同样,这个工具会为我们生成代码。但现在它也产生了一个块,你们马上就会看到。这个块称为Software-in-the-Loop, SIL。我们从这个模型中把它复制到原始模型中。
让我们删除这个PID控制器块,我们设计并没有固定点缩放的,而是用软件在环仿真块替换它。如果我运行模拟,我会得到完全相同的结果,我们将在第二个看到的。
但如果我现在看一下掩模,它不是我们之前看到的PID控制器块。我们实际上是在这里调用生成的代码。再一次,我们只是确保这个生成的代码给我们的结果与我们设计的PID控制器块完全相同。
而这段代码是在主机上运行。因此,下一步将是测试它在处理器上。但是这是我今天想覆盖的范围之外。
好吧。所以,现在我们已经讨论了设计控制器,调整其收益,并实现它,做定点定标,并生成代码。因此,让我们关闭这个模式,在下面谈到当植物动力学改变了不少,从一个操作状态向另一种局面。在这种情况下,它实际上是改变了不少,从2000点到6000 RPM。
让我打开脚本,并告诉你,。所以在这个脚本中,我们将一起工作,让我在这里,有发现这是一个开环的发动机型号,你在这里看到。那么,我们可以从线性油门输入到测量的输出速度这一模式。我们将使用该工具被称为Simulink的控制设计。金宝app这个工具有一个漂亮的图形应用程序,你可以做,你可以用线性化的模型,也可以使用编程的工作流程,我选择在这里使用批处理模式线性化。
在脚本中,我们将以一组速度点(从1400到6000)线性化工厂模型,步长为200。使用Simulink控制设计中的命令,例金宝app如findop和linearize,我们将在所有这些不同的操作点处对模型进行线性化,并将结果绘制在Bode图中。
这个计算需要一秒钟。一旦博德图被创建出来,你会看到这里实际上有24条不同的线在24种不同的情况下与引擎动力学相对应,从每分钟1400转到每分钟6000转。你们可以看到,在引擎动力学中有很大的变化。我们刚刚绘制的结果变量称为sys。
如果我在命令窗口看,我会看到这24个传递函数的数组。现在我想做的是调整PID控制器,所有这些24名传输等功能。我可以单独做到这一点,再次使用的工具,如PID调节器的应用程序或波特图,或控制系统设计师,也许根轨迹图。
但也有一些程序化的方法可以做到这一点。控制系统工具箱中有一个函数叫做PID整定。所以我们要做的是用这个有24个传递函数的数组设计一组24个PID控制器得到闭环带宽是10弧度每秒相位裕度是70度只用两行代码。我们来执行这个单元格。好吧。如果我们看一下计算的结果,我们看到我们有一个我们刚刚创建的24个PID控制器的数组。
让我们看看如何将这些控制器的增益变化的速度。好吧。如此反复,速度变为1,400 RPM到6000 RPM。而且我们看到,增益都改变了不少。在这里,我们只是希望在比例和积分增益。
让我们计算和绘制24个PID控制器应用于我们的24个线性工厂模型的闭环阶跃响应。这看起来很不错。
下一步,当然是在Simulink中实现这24个PID控制器。金宝app这就是增益调度。因此,我将打开一个不同的模型。好吧。我想给你们看的是,我们有我们的引擎子系统。我们有PID块。
但现在,这里面PID功能块的,我们选择了这个选项源设置为外部。而当我们这样做,块得到的PID增益额外进口。我们现在可以提供使用查找表块的。所以你看我们在这里测量转速信号。我们正在喂速度信号来查找块,查找表块。而这些查找表实现比例增益根据发动机转速的函数。
好吧。这里我们看到了形状。所以我们的想法是,当引擎转速从1400转每分钟转到6000转每分钟时,我们的控制器增益也会相应调整。基本上,当我们改变操作条件时,我们从一个控制器切换到另一个控制器。
这里我们有一个signal builder块,在这里我们可以创建多个测试用例来测试控制器。我这里的第一个测试用例是一系列小的上升和下降的步骤,覆盖了一个引擎的整个工作范围。我们来做一下模拟。让我们看看结果。
好吧。这里我们看到的是参考信号,洋红色的信号,和实际的引擎速度,蓝色的信号。所以我们看到我们有很好的参考跟踪在整个操作范围。
现在让我们回到模型,并在此运行不同的测试用例。所以,现在我们会做几个大步骤,一路1,400 RPM至6,000 RPM,并回至1400 RPM。让我们来运行这个方案。让我们再看看结果。
这里参考的是这个红色的信号。实际的速度是绿色的。你注意到这里有一些奇怪的行为,这里有一个很大的超调。信号需要一段时间才能降至参考值。当我们下台时,同样的事情也会发生。
这实际上是我在研讨会称为积分饱和的开头提到的条件。这里发生的是与收益,我们选择这里,参考和实际速度之间的误差信号足够大的积分项整合到一个大的正数。然后它需要一段时间,你这个积分项背下来到0时,我们的实际速度超调的参考。所以你看,我们的控制器是负面影响性能。
我们可以通过增加积分抗饱和逻辑解决这个问题。而在PID控制器块,它真的很容易。您只需选择,它真的很容易做到。你只需选择要应用,单击确定抗饱和方法。现在我们重新运行模拟。
让我们看看结果。让我真正从搜索结果中删除以前的运行。让我们看一看新的。所以,现在你看到的是与抗饱和逻辑新的运行使我们没有超调的方式上或在一路下跌没有过冲一个非常不错的表现。
而且我们还可以真正得到关于什么的,通过比较所创建的油门指令发生的想法。因此,底部的红色线与运行,我们没有足够的抗饱和保护油门命令。而蓝线是从抗饱和生产上运行。所以你看,当我们把抗饱和保护,油门命令脱落的25最大值快得多。
本部分的网络研讨会向您展示了如何在Simulink中快速设计和实现增益调度PID控制器,以及如何防止出现终止。金宝app
所以,过去的事情,我想在这个研讨会地址是MIMO PID控制器的设计。让我们来关闭这一模式。正如我在研讨会开始时提到,很多系统的,我们必须处理的是系统具有多输入多输出。因此,让我打开另一个模型。这是一个柴油发动机的模型,我们在这里看到。
如果我运行模拟,你会看到信号线上的数字。这些数字代表了信号的大小。所以我们看到参考信号实际上是两个信号,boost参考信号和EGR参考信号。柴油机分系统的输出有升压和EGR两种信号。所以我们要控制两个输出。引擎的两个输入是VGT位置和EGR升力。
在这里,我们想实现一个MIMO PID控制器来做2乘2的控制。如果你看里面,你会看到一个积分增益ki,它是2乘2矩阵;比例增益kp, 2乘2矩阵;提供扰动拟合的增益前向,也是2×2矩阵。总共有12个参数需要调优。它们默认设置为0。
所以如果我们看一下模拟的结果,我们会发现我们根本没有很好的参考跟踪。黄线表示boost和EGR的阶跃变化。我们看到洋红色的线,实际的信号根本没有跟踪参考信号。
所以,来设计我们的MIMO PID控制器,我们可以使用一种叫做控制系统调谐器的工具。这是一个工具,你可以用它来设计任何类型的MIMO或SISO控制器在Simulink或MATLAB。金宝app这个想法是,你使用的基本块指定控制器的架构在Simulink中,然后使用这个工具来调整您的控制器的参数。金宝app
我们来看看它是如何工作的。让我们转到这里的优化选项卡。让我们指定要调优的参数。
在我们的MIMO PID控制器中,我们想要调整这些矩阵。我们将指定它们。然后在这里,我们可以指定一些调优目标。这里有各种各样的目标。
让我们以step命令跟踪为例。我们想要从阶跃响应输入来追踪,这是我们的参考信号。让我来告诉你它们是什么信号。这是一个boost参考和EGR参考。输出信号是柴油机子系统的输出这里的信号是boost和EGR。
我们要问的工具来设计控制器给我们与闭环系统的一阶特性约5的时间常数,并显示步骤的命令,我们是指挥,我们的10升压,和3 EGR,所以你会据此调整幅度。所以,你会在这里键入这些数字,10和3。我们甚至可以要求或许真的比5快一点,所以也许3秒。现在,点击确定。
该工具继续并创建调优目标的图表。洋红色的线是我们要求的响应,所以对角项上有良好的快速阶跃响应,而非对角项上没有信号,从而在通道之间提供最小的交叉耦合。
现在,我们只需按下Tune和工具去和曲调所以那些KP,KI和KFF参数。现在,调整是非常快的,因为你可以看到。而我们现在要做的是更新Simulink模型块。金宝app
如果我们去子系统的内部在这里,我们看到所有的块已更新参数。而我们现在可以在运行结果的模拟和外观。而我们现在看到,我们以最小的交叉耦合很好的参考跟踪。所以,当我们在做提升的阶梯变化,有对EGR的影响很小。反之亦然:当我们在做EGR阶跃变化,对升压的影响相对较小。所以很快我们设计了PID调节器工具MIMO PID控制器。
因此,在总结,你看到了PID控制快速入门。然后你看到了如何去调整,实现MATLAB和Simulink的PID控制器,一个简单的工作流程。金宝app我们使用的是不同的产品分别为下载188bet金宝搏Simulink的;金宝app控制系统工具箱;金宝appSimulink的控制设计;系统识别工具箱用于创建从输入/输出数据的工厂模型;鲁棒控制工具箱,这是你需要使用控制系统调谐器的产品;定点设计,做定点定标;和嵌入式编码产生的代码。
如果您想了解更多信息,谷歌“PID控制MATLAB”去的页面,我们已经就如何在MATLAB和Simulink设计和实现PID控制器的所有资源放在一起。金宝app所以这是相当多了。非常感谢你。
您还可以选择从下面的列表中的网站:
选择中国网站(中文或英文),以获得最佳的网站表现。其他MathWorks国家站点没有针对您所在位置的访问进行优化。