史密斯预测器¶
本示例为一个具有较大时间延迟的对象开发了一个控制系统。在控制有延迟的物体时,通常会用到史密斯预测器,它能在物体输出端实际出现信号之前预测出输出端应出现的信号[1]。
In [ ]:
Pkg.add(["ControlSystems", "ControlSystemsBase"])
In [ ]:
using ControlSystemsBase, Plots
using ControlSystems # Библиотека для моделирования системы задержек
控制目标由公式$P = P_0e^{-sτ}$, 其中$P_0 = {1 \over s+1}$.
In [ ]:
P0 = ss(-1, 1, 1, 0) # Объект управления без задержки
Out[0]:
通过改变延迟 τ,我们可以看到系统在不同延迟下的表现。
In [ ]:
τ = 8 # Величина задержки
P = delay(τ) * P0 # Объект управления с задержкой
Out[0]:
带史密斯预测器的控制系统结构图如下图所示。该系统包含一个额外的内部反馈回路,其中包含一个控制对象的模型$P_0$ 。该额外回路产生一个与系统输出端最终出现的信号相同的信号,并将其输入控制器$C_0$ 的输入端,直到主反馈回路的信号出现。[2]
我们使用 PI 控制器作为调节器$C_0$ 。
In [ ]:
ω0 = 2
ζ = 0.7
C0, _ = placePI(P0, ω0, ζ) # ПИ-регулятор
Out[0]:
史密斯预测器$C$ :
In [ ]:
C = feedback(C0, (1.0 - delay(τ))*P0) # Формирование внутренней обратной связи
Out[0]:
让我们构建瞬态过程。
扰动影响的传递函数 f:
${Y \over F} = {P \over (1+PC)}$ =feedback(P, C)
.
闭环系统的传递函数 :
${Y \over R} ={PC \over (1+PC)}$ =feedback(P*C, 1)
In [ ]:
G = [feedback(P*C, 1) feedback(P, C)] # Эталонный шаг при t = 0 и шаг возмущения нагрузки при t = 15
fig_timeresp = plot(lsim(G,(_,t) -> [1; t >= 15], 0:0.1:40), title="τ = $τ")
Out[0]:
让我们构建预测器的对数幅相频率响应,并将其与负延时$e^{sτ}$ 的频率响应进行比较,后者将是一个理想的控制器(通常这种控制器在实践中无法实现)。
In [ ]:
C_pred = feedback(1, C0*(ss(1.0) - delay(τ))*P0)
fig_bode = bodeplot([C_pred, delay(-τ)], exp10.(-1:0.002:0.4), ls=[:solid :solid :dash :dash], title="", lab=["Предиктор Смита" "" "Идеальный контроллер" ""])
plot!(yticks=[0.1, 1, 10], sp=1)
plot!(yticks=0:180:1080, sp=2)
Out[0]:
让我们构建奈奎斯特霍德图。
In [ ]:
fig_nyquist = nyquistplot(C * P, exp10.(-1:1e-4:2), title="τ = $τ")
Out[0]:
您可以通过更改第 4 行中的延迟值τ
来重复该脚本。请注意,当 τ > 2.99 时,霍特图示为-1。
结论¶
在本案例研究中,我们学习了使用史密斯预测器设计延时物体控制系统的方法。我们还学习了分析此类系统和将其可视化的各种方法。