问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

控制教程 —— 介绍篇:4.根轨迹控制器设计

创作时间:
作者:
@小白创作中心

控制教程 —— 介绍篇:4.根轨迹控制器设计

引用
CSDN
1.
https://blog.csdn.net/zh471021698/article/details/105933095

在控制系统的分析与设计中,根轨迹法是一种重要的工具,它可以帮助工程师直观地理解系统性能与控制器参数之间的关系。本文将详细介绍如何使用MATLAB进行根轨迹的绘制与分析,并通过实例演示如何设计满足特定性能指标的反馈控制器。

闭环极点

开环传递函数H(s)的根轨迹通常是在比例增益K从0到∞变化时,形成的闭环极点的轨迹曲线。下图显示了单位反馈架构,对于任何开环传递函数H(s),即使开环传递函数的某些元素在反馈路径中,根轨迹的过程也都是相同的。

在这种情况下,闭环传递函数为:

$$
\frac{Y(s)}{R(s)} = \frac{KH(s)}{1 + KH(s)}
$$

因此,闭环系统的极点是s的值,使得:

$$
1 + KH(s) = 0
$$

如果我们写H(s) = b(s) / a(s),则该等式可以重写为:

$$
a(s) + Kb(s) = 0
$$

假设n是a(s)的阶数,m是b(s)的阶数(多项式的阶数对应于s的最高次幂)。

我们将考虑K的所有正值。在K→0的极限中,闭环系统的极点是a(s)=0的解(H(s)的极点)。在K→∞的极限中,闭环系统的极点是b(s)=0(H(s)的零点)的解。

无论我们选择K,闭环系统都有n个极点,其中n是开环传递函数H(s)的极点数。然后,根轨迹具有n个分支,每个分支都从H(s)的极点开始,并接近H(s)的零点。如果H(s)的极点多于零点(通常都是这样),即m < n,我们说H(s)在无穷大处有零点。在这种情况下,在s→∞的限制下,H(s)为0,在无穷大处的零点个数为n-m,开环极点个数减去开环零点的个数,是到“无穷大”根轨迹的分支数。

由于根轨迹由所有可能的闭环极点的位置组成,因此根轨迹可帮助我们选择增益K的值,以实现所需的性能类型。如果任何选定的极点在右半复平面上,则闭环系统将不稳定。最接近虚轴的极点对闭环响应的影响最大,因此,即使系统具有三个或四个极点,它的表现仍可能类似于二阶或一阶系统,具体取决于主导极点的位置。

绘制传递函数的根轨迹

考虑一个具有以下传递函数的开环系统:

$$
H(s) = \frac{Y(s)}{U(s)} = \frac{s + 7}{s(s + 5)(s + 15)(s + 20)}
$$

如果我们使用根轨迹为系统设计反馈控制器,假设我们的设计标准是5%的过冲和1s的上升时间,可以使用如下命令:

s = tf('s');
sys = (s + 7)/(s*(s + 5)*(s + 15)*(s + 20));
rlocus(sys)
axis([-22 3 -15 15])

从根轨迹选择K的值

上图显示了纯比例控制器的所有可能的闭环极点位置,在这种情况下,并非所有这些闭环极点位置都满足我们的设计标准。为了确定轨迹的哪一部分可以接受,我们可以使用sgrid(zeta,wn)命令绘制恒定阻尼比和自然频率的线。它的两个参数是阻尼比(ζ)和自然频率(ωn)[如果是想查看可接受的范围,则它们是一个向量]。在我们的问题中,我们需要一个小于5%的超调(这意味着阻尼比ζ大于0.7)①和一个上升时间为1s(这意味着自然频率ωn大于1.8)②。在MATLAB命令窗口中输入以下内容:

①:0.05 > M_p = e^{\left( \frac{-\zeta\pi}{\sqrt{1-\zeta^2}} \right)} \Rightarrow \zeta>0.6906
②:1 > T_r \approx \frac{1.8}{\omega_n} \Rightarrow \omega_n>1.8

zeta = 0.7;
wn = 1.8;
sgrid(zeta,wn)

在上面的图中,两条呈45°角的虚线表示极点位置,其中ζ = 0.7;在这些线之间ζ > 0.7,而在这些线之外ζ < 0.7。半圆表示自然频率ωm = 1.8的极点位置,在圆内ωn < 1.8,在圆外ωn > 1.8。

回到我们的问题,要使超调量小于5%,极点必须位于两条带角度的虚线之间,并且要使上升时间短于1s,极点必须位于虚线半圆之外。因此,现在我们知道根轨迹的哪一部分(可能的闭环极点位置)可以满足我们的要求。另外该位置的所有极点都在左半平面中,因此闭环系统是稳定的。

从上图可以看出,所需区域内有一部分根轨迹,因此,在这种情况下,我们只需要一个比例控制器即可将极点移至所需区域。您可以在MATLAB中使用rlocfind命令在轨迹上选择所需要的极点:

[k,poles] = rlocfind(sys)

在图上单击您想要闭环极点的点,您可能希望选择下图中指示的点,以满足设计需求。

请注意,由于根轨迹可能具有多个分支,因此当您选择一个极点时,您还要确定其他闭环极点在何处,所有这些极点对应的相同的K。请记住,这些极点也会影响响应,从上图可以看出,在选择的四个极点(由 “+”号表示)中,最接近虚轴的两个极点位于我们所需的区域中。由于这些极点趋于主极点,因此我们可以确信,对于具有K的比例控制器,可以满足期望要求。

闭环响应

为了验证阶跃响应,您需要了解闭环传递函数。您可以使用框图简化规则来进行计算,或者让MATLAB为您完成(如果使用rlocfind,则无需输入K的值)。

K = 350;
sys_cl = feedback(K*sys,1)

函数feedback的两个参数是开环传递函数的前馈路径中的传递函数和反馈路径中的传递函数。在这种情况下,我们的系统是单位反馈。

如果遇到非单位反馈的情况,请查看MATLAB函数feedback的帮助文件,该文件演示了如何获取具有增益的反馈路径中的传递函数。

用选择的K来查看闭环系统的阶跃响应:

step(sys_cl)

正如我们预期的那样,该响应的过冲小于5%,上升时间小于1s。

使用控制系统设计器进行根轨迹设计

完成上述操作的另一个方法是使用MATLAB中的交互式"控制系统设计器"工具,针对上述相同的模型,我们首先定义传递函数H(s):

s = tf('s');
plant = (s + 7)/(s*(s + 5)*(s + 15)*(s + 20));

controlSystemDesigner函数可用于分析和设计,在这种情况下。我们将专注于根轨迹作为设计方法来改善闭环系统的阶跃响应。首先,在MATLAB命令窗口中输入以下内容:

controlSystemDesigner(plant)

应出现以下窗口。您也可以通过转到“APP“选项卡并单击控制系统与优化的应用程序来启用GUI,在这里,您可以看到根轨迹以及开环Bode图和给定系统在单位反馈中使用默认控制器K=1的闭环阶跃响应。

下一步是将设计要求添加到”根轨迹“图中,右键单击”设计需求“,然后单击”新建“,直接在图上完成。可以为”稳定时间“,”超调百分比“,”阻尼比“,”自然频率“,”区域约束“,设置系统要求。

在这里,我们将设置阻尼比和自然频率的设计要求,就像之前使用sgrid命令所做的那样,回想一下,我们需求的边界要求ζ = 0.7,ωn = 1.8。在设计要求内进行设置。在图中,任何仍为白色的区域都是闭环极点可以接受的区域。

右键单击某个轴并选择”属性“,然后选择”极限“,以放大”根轨迹“,将实轴限制更改为-25到5,将虚轴限制更改为-2.5到2.5。

同样,我们可以查看相应的关键参数,在阶跃响应图上,右键单击该图,然后转到”特性“并选择”峰值响应“和”上升时间“。屏幕上现在应该有两个大圆点,指示这些参数的值。单击这些点中的每一个,将弹出一个包含信息的框。

当关闭伯德图后,可以显示为:

正如阶跃响应上的特性所示,过冲是可以接受的,但上升时间太大。根轨迹上的粉红色框显示了当前所选控制增益K的对应闭环极点位置。

要解决此问题,我们需要为增益K选择一个新值。类似于我们使用rlocfind命令的方式,可以直接在根轨迹图上更改控制器的增益,单击并将最接近虚轴的粉红色框拖动到我们的根轨迹图的可接受区域,如下所示:

在窗口的”预览“框中,可以看到环路增益已更改为360。检查闭环阶跃响应图,现在已经满足我们的两个要求。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号