开环连续模型中的时间延迟近似
此示例演示如何使用pade近似计算开放连续时间系统中的延迟。
当使用不支持时间延迟的分析或设计工具时,Pad近似值非常有用。 使用过高的近似阶数会导致数值误差和可能不稳定的极点。 因此,避免相同阶数的近似。 .
设置任务
创建具有延迟输出的开环系统示例。
In [ ]:
Pkg.add(["ControlSystems"])
In [ ]:
using ControlSystems
默认情况下,延迟为2.6,但您可以设置自己的参数。 结果,您将获得状态空间(ss)形式的P对象,时间延迟为2.6秒。
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相相差约1rad/s。
三阶近似
增加焊盘近似以便扩大相位近似良好的频率范围。
In [ ]:
Pnd3 = pade(P,3);
比较P、Pnd1和Pnd3的频率特性。
In [ ]:
bodeplot([P, Pnd1, Pnd3], label = ["P" "Pnd1" "Pnd3"])
Out[0]:
当使用三阶的Padet近似时,相位特性的误差减小。
比较原始系统和近似系统在时域上的瞬态特性,使用 step.
In [ ]:
plot(
[step(P), step(Pnd1), step(Pnd3)],
label = ["P" "Pnd1" "Pnd3"]
)
Out[0]:
结论
Pade近似的使用导致在初始过渡过程中出现非最小相位。 这种效应在一阶近似中相当明显,在改变方向之前显着下降到零以下。 在更高阶的近似中,这种效应被减小,并且它更好地匹配系统的精确响应。