exponenta event banner

Использование представления правой модели

В этом примере показаны некоторые рекомендации по работе с моделями LTI.

Какое представление лучше всего подходит для вычислений?

С помощью программного обеспечения Control System Toolbox™ можно представить системы LTI четырьмя различными способами:

  • Передаточная функция (TF)

  • Нулевой коэффициент усиления (ZPK)

  • Пространство состояний (SS)

  • Данные частотной характеристики (FRD)

Хотя представления TF и ZPK компактны и удобны для отображения, они не идеально подходят для системных манипуляций и анализа по нескольким причинам:

  • Работа с моделями TF и ZPK часто приводит к многочленам высокого порядка, оценка которых может страдать от неточностей.

  • Представления TF и ZPK неэффективны для манипулирования системами MIMO и имеют тенденцию раздувать порядок моделей.

Некоторые из этих ограничений проиллюстрированы ниже. Из-за этих ограничений следует использовать представления SS или FRD для большинства вычислений с использованием моделей LTI.

Подводные камни функций переноса высокого порядка

Вычисления, включающие функции передачи высокого порядка, могут страдать от серьезной потери точности и даже переполнения. Даже простое произведение двух передаточных функций может дать неожиданные результаты, как показано ниже.

Нагрузка и график двух дискретных функций передачи времени Pd и Cd порядка 9 и 2 соответственно:

% Load Pd,Cd models
load numdemo Pd Cd 

% Plot their frequency response
bode(Pd,'b',Cd,'r'), grid
legend('Pd','Cd')

Затем вычислите передаточную функцию с разомкнутым контуром L = Pd * Cd, используя представления TF, ZPK, SS и FRD:

Ltf = Pd * Cd;                    % TF
Lzp = zpk(Pd) * Cd;               % ZPK
Lss = ss(Pd) * Cd;                % SS
w = logspace(-1,3,100);
Lfrd = frd(Pd,w) * Cd;            % FRD

Наконец, сравните величину частотной характеристики для полученных четырех моделей:

sigma(Ltf,'b--',Lzp,'g',Lss,'r:',Lfrd,'m--',{1e-1,1e3});
legend('TF','ZPK','SS','FRD')

Ответы от представлений ZPK, SS и FRD тесно совпадают, но ответ от представления TF чопорный и неустойчивый ниже 100 рад/сек. Чтобы понять потерю точности с формой передаточной функции, сравните карты полюс/ноль Pd и Cd около z = 1:

pzplot(Pd,'b',Cd,'r');
title('Pole/zero maps of Pd (blue) and Cd (red)');
axis([0.4 1.05 -1 1])

Обратите внимание, что существует несколько корней около z = 1. Поскольку относительная точность полиномиальных значений падает вблизи корней, относительная ошибка в значении передаточной функции около z = 1 превышает 100%. Частоты ниже 100 рад/с соответствуют|z-1| < 1e-3, что объясняет неустойчивые результаты ниже 100 рад/с.

Подводные камни возвратно-поступательного преобразования между представлениями

С помощью команд можно легко преобразовать любую модель LTI в форму передаточной функции, усиления нулевого полюса или пространства состояний. tf, zpk, и ssсоответственно. Например, учитывая модель случайного состояния-пространства с двумя входами и двумя выходами HSS1 созданную с помощью

HSS1 = rss(3,2,2);

вы можете получить его передаточную функцию с помощью

HTF = tf(HSS1);

и преобразовать его обратно в состояние-пространство с помощью

HSS2 = ss(HTF);

Однако остерегайтесь того, что такие возвратно-поступательные преобразования являются дорогостоящими, могут привести к некоторой потере точности и искусственно раздуть порядок моделей для MIMO-систем. Например, порядок HSS2 вдвое больше, чем HSS1 поскольку 6 - это общий порядок матрицы переноса 2x2 со знаменателями степени 3:

order(HSS1)
ans = 3
order(HSS2)
ans = 6

Чтобы понять разницу в порядке моделей, сравните карты полюсов/нулей двух моделей:

subplot(211)
pzmap(HSS1,'b')
title('Poles and zeros of HSS1');
subplot(212)
pzmap(HSS2,'r')
title('Poles and zeros of HSS2');

Обратите внимание на то, что пары «полюс-ноль» в HSS2 изображены как «x's inside o's» в карте «полюс-ноль». Можно использовать команду minreal для устранения аннулирующих пар полюс/ноль и восстановления модели 3-го порядка минимальное состояние-пространство из HSS2:

HSS2_min = minreal(HSS2);
3 states removed.
order(HSS2_min)
ans = 3

Проверьте, что HSS1 и HSS2_min совпали, построив график относительного зазора между этими двумя моделями:

clf
Gap = HSS1-HSS2_min;
sigma(HSS1,Gap), grid
Warning: The frequency response has poor relative accuracy. This may be because the response is nearly zero or infinite at all frequencies, or because the state-space realization is ill conditioned. Use the "prescale" command to investigate further.
legend('HSS1','Gap HSS1 vs. minimal HSS2','Location','Best')

Зазор (зеленая кривая) очень мал на всех частотах. Обратите внимание, что sigma предупреждает, что Gap график является «шумным», потому что разница настолько мала, что по существу состоит из ошибок округления.

Поскольку извлечение минимальных реализаций в числовом отношении затруднительно, следует избегать создания немимальных моделей. Соответствующие сведения см. также в разделе Предотвращение дублирования состояний в системных соединениях.