极点和零点的位置
这个例子说明了如何研究动力系统的极点和零点的位置。 这可以通过使用以下方法以图形方式构建地图来完成 pzmap. 你可以用这个函数找到数值 zpkdata.
研究极点和零点的位置对于稳定性分析等任务非常有用。 本例比较了控制对象传递函数相同、控制器不同的两个闭环系统。
让我们创建两个闭环系统模型。
In [ ]:
Pkg.add(["ControlSystems"])
In [ ]:
using ControlSystems
G = zpk([], [-5, -5, -10], 100)
C1 = pid(2.9, 7.1)
CL1 = feedback(G * C1, 1)
C2 = pid(29, 7.1)
CL2 = feedback(G * C2, 1)
Out[0]:
C2控制器具有高得多的比例增益。 否则,两个闭环系统CL1和CL2是相同的。
以图形方式,我们检查了两个系统的极点和零点的位置。
In [ ]:
pzmap(CL1,label="CL1")
pzmap!(CL2,label="CL2")
Out[0]:
pzmap 将极点和零点在复平面上的位置分别显示为x和o标记。 当提供多个模型时,每个模型的极点和零点以不同的颜色显示。 在这里,CL1的极点和零点用橙色突出显示,CL2的极点和零点用紫色突出显示。 函数的零是相同的,所以当相互叠加时,颜色是绿色的。
图表显示CL1的所有极点都在左半平面内,因此CL1是稳定的。 CL2系统的模型在右半平面中包含极点,因此不稳定。
让我们计算cl2中极点和零点位置的数值,使用 zpkmap. 此函数按以下顺序返回三个值:增益(k),极点(p),零点(z)。
In [ ]:
z,p,k = zpkdata(CL2)
display(z)
display(p)
还有一个单独的功能,用于查找极点。 - poles,并搜索零 - tzeros. 让我们找到CL1系统的各个值。
In [ ]:
poles(CL2)
Out[0]:
In [ ]:
tzeros(CL1)
Out[0]:
tzero 和 poles 返回包含系统零点和极点位置的列向量。
借助于找到系统传递函数的极点和零点的知识,可以判断其稳定性。 更多分析系统稳定性的功能可以在[分析]部分找到(https://engee.com/helpcenter/stable/julia/ControlSystems/lib/analysis.html )。