Преобразуйте задержку модели дискретного времени к факторам 1/z

В этом примере показано, как преобразовать задержку модели дискретного времени к факторам 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 модель в пространстве состояний второго порядка. Одно состояние внесено объектом первого порядка и другим одним полюсом ПИ-контроллера. Задержки не увеличивают порядок T. Вместо этого они представлены как внутренняя задержка семи временных шагов.

Замените внутреннюю задержку z-7.

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')

Смотрите также

Связанные примеры

Больше о