连续开环模型中的时间延迟近似值
本例展示了如何使用 pade 近似计算开环连续时间系统中的延迟。
在使用不支持时延的分析或设计工具时,Pade 近似值非常有用。使用过高的近似阶数会导致数值错误,并可能产生不稳定极点。因此,应避免使用阶数为 的 Pade 近似值。
问题陈述
设计一个具有输出延迟的开环系统示例。

In [ ]:
Pkg.add(["ControlSystems"])
In [ ]:
using ControlSystems
默认情况下,延迟时间为 2.6,但您也可以设置自己的参数。因此,您将得到状态空间 (ss) 形式的 P - 对象,时间延迟为 2.6 c。
In [ ]:
s = tf('s');
L = 2.6 # @param {type:"slider", min:0, max:9, step:0.1}
P = exp(-L*s)/(s^2+0.9*s+1)
Out[0]:
一阶近似
计算 P 的一阶 Pade 近似值。
In [ ]:
Pnd1 = pade(P,1)
Out[0]:
该命令用一阶近似值替换 P 中的所有时间延迟。因此,Pnd1 是一个没有延迟的三阶系统。
使用bodeplot
比较原始模型和近似模型的频率响应。
In [ ]:
bodeplot([P, Pnd1], label = ["P" "Pnd1"])
Out[0]:
P 和 Pnd1 的振幅特性完全一致。但是,Pnd1 的相位与 P 的相位相差约 1 拉德/秒。
三阶近似
增加帕代近似的阶数,以扩大相位近似效果良好的频率范围。
In [ ]:
Pnd3 = pade(P,3);
比较 P、Pnd1 和 Pnd3 的频率响应。
In [ ]:
bodeplot([P, Pnd1, Pnd3], label = ["P" "Pnd1" "Pnd3"])
Out[0]:
使用三阶 Pade 近似值时,相位响应误差会减小。
使用step
比较原始系统和近似系统在时域中的瞬态特性。
In [ ]:
plot(
[step(P), step(Pnd1), step(Pnd3)],
label = ["P" "Pnd1" "Pnd3"]
)
Out[0]:
结论
使用帕代近似法会导致初始瞬态出现非最小相位。在一阶近似中,这种影响非常明显,在方向改变之前会明显降低到零以下。在高阶近似中,这种影响有所减弱,与系统的精确响应更加吻合。