В этом примере показано, как преобразовать временную задержку в дискретно-временной модели в коэффициенты 1/_z_.
В дискретно-временной модели временная задержка одного интервала выборки эквивалентна коэффициенту 1/_z_ (полюс при z = 0) в модели. Следовательно, временные задержки, сохраненные в InputDelay, OutputDelay, или IODelay свойства дискретно-временной модели можно переписать в динамике модели, переписав их как полюса при z = 0. Однако дополнительные полюса увеличивают порядок системы. В частности, для больших временных задержек это может дать системы очень высокого порядка, что приводит к длительным временам вычислений или числовым неточностям.
Чтобы проиллюстрировать, как устранить временные задержки в дискретной модели с замкнутым контуром и наблюдать за последствиями этого, создайте следующую систему с замкнутым контуром:

G является дискретно-временной системой первого порядка с входной задержкой, а C является ПИ-контроллером.
G = ss(0.9,0.125,0.08,0,'Ts',0.01,'InputDelay',7); C = pid(6,90,0,0,'Ts',0.01); T = feedback(C*G,1);
Закрытие контура обратной связи на установке с задержками ввода приводит к внутренним задержкам в системе с замкнутым контуром. Проверить порядок и внутреннюю задержку T.
order(T)
ans = 2
T.InternalDelay
ans = 7
T является моделью пространства состояния второго порядка. Одно состояние вносит завод первого порядка, а другое - один полюс PI-контроллера. Задержки не увеличивают порядок T. Вместо этого они представлены как внутренняя задержка в семь временных шагов.
Замените внутреннюю задержку на .
Tnd = absorbDelay(T);
Эта команда преобразует внутреннюю задержку в семь полюсов при z = 0. Для подтверждения изучите порядок и внутреннюю задержку Tnd.
order(Tnd)
ans = 9
Tnd.InternalDelay
ans = 0x1 empty double column vector
Tnd не имеет внутренней задержки, но это модель девятого порядка, из-за семи дополнительных полюсов, введенных поглощением задержки семи единиц в динамику модели.
Несмотря на эту разницу в представительстве, ответы Tnd точно соответствуют таковым из T.
stepplot(T,Tnd,'r--') legend('T','Tnd')

bodeplot(T,Tnd,'r--') legend('T','Tnd')
