PID控制器强制约束
了解如何使用约束强制块将已知约束函数应用到PID控制应用程序。该模块使用二次规划(QP)求解器来解决实时优化问题,以找到一个控制输入,满足植物状态的关键约束。将此块应用于任何控制循环,特别是不允许指定关键约束的控制策略,如PID控制和强化学习。
在本视频中,我们将了解如何修改控制器动作以满足控制系统模型Simulink的关键约束和动作绑定。金宝app具体来说,我们将看一个例子,在PID控制器应用的系统状态强制约束。
这里的S金宝appimulink模型,用系统方程来模拟一个装置的动力学。这里的每一个子系统,都为每一种状态建立动力学模型。这是一个由PID控制器组成的控制组,可以对每个工厂状态进行所需的跟踪。
现在让我们考虑一个控制器目标,在这个目标中,装置的状态必须一起达到一个由这里的方程组给出的圆形轨迹。此外,还有一个约束条件,即任意一个工厂状态都不能超过一个。
现在我们从PID控制器可以使用的方程中为每个状态构造了参考轨迹。当运行仿真并绘制轨迹时,可以看到PID控制器在参考跟踪方面做得很好。
然而,状态x1和x2都超过了1当跟踪轨迹时,这里违反了约束。这是因为这里的PID控制器只能直接控制输入到工厂,而不能控制状态。现在,约束实施块可以帮助修改控制器输入,以对工厂状态实施这些关键约束。
本模块在R2021a版本中引入了类似的控制设计,使用二次规划求解器来求解实时优化问题,以找到满足这些约束的控制器输入u。因此,在每一个时间步,约束强制算法检查约束是否被违反。如果是,它会选择一个最接近正常动作u not的动作。所以设置约束条件。
约束函数的影响系数和检验系数可以是对装置状态的线性函数和非线性函数。C是约束函数的键,u min和u max分别是控制动作的上下骨架。
如果约束函数的组合已经已知,则可以将它们直接应用到此块。但是,如果您无法从植物中推导出约束函数,则可以使用来自实验或模拟的输入输出数据来了解条件。例如,通过使用深度神经网络。
例如,我们知道约束条件是什么。我们来指定它们。根据该约束条件,给出了该装置的可行域。所以下一状态条件应该满足约束条件。现在我们可以用这个方程来近似植物动态。Ts是损伤步骤,是我们在模型中设定的样本损伤。
由于下一个状态不应超过1,我们可以将约束条件应用于这个方程。这让我们以块所需的形式约束函数。这里fx g和c是由这些矩阵给出的,我们将这些系数输入到约束执行块中。在模型中,我们用一个游戏块来表示商fx,用MATLAB函数块来表示gx。
在块对话的参数下,让我们将约束和动作的数量设置为两个,因为我们有两个状态要执行约束,并且有两个PID控制器动作要绑定。对于约束,让我们使用外部源。我们可以用向量1来连接一个常数块来表示常数函数中的常数键c。
通过在块中定义的约束,我们可以将其连接到控制器和工厂之间。标称控制输入u not,将从控制器输入u *将是输入到装置的修改动作。
正如您在这里看到的,该模型已经过修改,以在PID控制器和工厂之间纳入恒定强制块。
为了重新运行仿真,这里我们看到PID控制器开始跟踪期望的轨迹,约束条件得到满足。然后在超过约束将被违反的区域,通过恒强制块,成功地约束PID控制器的控制动作,使工厂状态保持在小于1的状态。
总之,我们看到了如何使用持续执行块来修改控制操作,从而使工厂状态不违反关键约束。此块可以应用于任何控制循环,特别是控制策略,但不可能指定关键约束,如PID控制器和强化学习。此外,您还可以从这个块生成c或c++ +代码,并部署到
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。