Engee 文档
Notebook

极点和零点的位置

这个例子说明了如何研究动力系统的极点和零点的位置。 这可以通过使用以下方法以图形方式构建地图来完成 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]:
TransferFunction{Continuous, ControlSystemsBase.SisoZpk{Float64, ComplexF64}}
                              (1.0s + 5.000000140181413)(1.0s + 4.999999859818593)(1.0s + 0.14084507042253516)
2900.0---------------------------------------------------------------------------------------------------------------------------------
      (1.0s + 5.0)(1.0s + 5.0)(1.0s + 21.10553800168399)(1.0s^2 - 1.2358649411320777s + 148.49404080219574)(1.0s + 0.13032693944811272)

Continuous-time transfer function model

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)
1×1 Matrix{Vector{ComplexF64}}:
 [-5.000000140181413 + 0.0im, -4.999999859818593 + 0.0im, -0.14084507042253516 + 0.0im]
1×1 Matrix{Vector{ComplexF64}}:
 [-5.0 + 0.0im, -5.0 + 0.0im, -21.10553800168399 + 0.0im, 0.6179324705660388 + 12.170135589385021im, 0.6179324705660388 - 12.170135589385021im, -0.13032693944811272 + 0.0im]

还有一个单独的功能,用于查找极点。 - poles,并搜索零 - tzeros. 让我们找到CL1系统的各个值。

In [ ]:
poles(CL2)
Out[0]:
6-element Vector{ComplexF64}:
                 -5.0 + 0.0im
                 -5.0 + 0.0im
   -21.10553800168399 + 0.0im
   0.6179324705660388 + 12.170135589385021im
   0.6179324705660388 - 12.170135589385021im
 -0.13032693944811272 + 0.0im
In [ ]:
tzeros(CL1)
Out[0]:
3-element Vector{ComplexF64}:
  -5.0000000890586955 + 0.0im
   -4.999999910941301 + 0.0im
 -0.14084507042253533 + 0.0im

tzeropoles 返回包含系统零点和极点位置的列向量。

借助于找到系统传递函数的极点和零点的知识,可以判断其稳定性。 更多分析系统稳定性的功能可以在[分析]部分找到(https://engee.com/helpcenter/stable/julia/ControlSystems/lib/analysis.html )。