使用延迟反馈减少振荡
时间延迟可以有意加入控制器以改善系统性能. 下面的主动减振器可用延迟状态反馈控制.
{eq1, eq2} = {u[t] + (Subscript[k, 1] + Subscript[k, 2]) Subscript[x, 1][t] - Subscript[k, 2] Subscript[x, 2][t] + (Subscript[b, 1] + Subscript[b, 2]) Derivative[1][Subscript[x, 1]][t] - Subscript[b, 2] Derivative[1][Subscript[x, 2]][t] + Subscript[m, 1]Derivative[2][Subscript[x, 1]][t] == 0, -u[t] + Subscript[k, 2] (-Subscript[x, 1][t] + Subscript[x, 2][t]) + Subscript[b, 2] (-Derivative[1][Subscript[x, 1]][t] + Derivative[1][Subscript[x, 2]][t]) + Subscript[m, 2] Derivative[2][Subscript[x, 2]][t] == 0};absorber = StateSpaceModel[{eq1, eq2}, {Subscript[x, 1][t], Subscript[x, 1]'[t], Subscript[x, 2][t], Subscript[x, 2]'[t]}, {u[t]}, {Subscript[x, 1][t]}, t];csys = SystemsModelStateFeedbackConnect[absorber, {{g SystemsModelDelay[τ]}}, {1}, {1}]values = {Subscript[k, 2] -> .1, Subscript[b, 2] -> .02, Subscript[m, 2] -> .1, Subscript[m, 1] -> 1, Subscript[b, 1] -> .05, Subscript[k, 1] -> 1, g -> 0.043};ynodelay = OutputResponse[csys /. values /. τ -> 0, Sin[ 1.1 t], {t, 0, 80}];
ydelay = OutputResponse[csys /. values /. τ -> 1.82, Sin[1.1t], {t, 0, 80}];Plot[{ynodelay, ydelay}, {t, 0, 80}, PlotRange -> All, PlotStyle -> {Purple, Thick}, PlotLegends -> {"Delay–Free", "Delayed"}, ImageSize -> Medium]