Моделирование семейства ответов как неопределенная система

Этот пример показывает, как использовать команду Robust Control Toolbox™ ucover, чтобы смоделировать семейство ответов LTI как неопределенная система. Эта команда полезна, чтобы соответствовать неопределенной модели к группе представителя частотных характеристик системной изменчивости или уменьшать сложность существующей неопределенной модели, чтобы упростить синтез устойчивых контроллеров с dksyn.

Моделирование изменчивости объекта как неуверенность

В этом первом примере у нас есть семейство моделей, описывающих поведение объекта под различными условиями работы. Номинальная модель объекта управления является нестабильной системой первого порядка.

Pnom = tf(2,[1 -2])
Pnom =
 
    2
  -----
  s - 2
 
Continuous-time transfer function.

Другие модели являются изменениями Pnom. У них всех есть один нестабильный полюс, но местоположение этого полюса может меняться в зависимости от условий работы.

p1 = Pnom*tf(1,[.06 1]);              % extra lag
p2 = Pnom*tf([-.02 1],[.02 1]);       % time delay
p3 = Pnom*tf(50^2,[1 2*.1*50 50^2]);  % high frequency resonance
p4 = Pnom*tf(70^2,[1 2*.2*70 70^2]);  % high frequency resonance
p5 = tf(2.4,[1 -2.2]);                % pole/gain migration
p6 = tf(1.6,[1 -1.8]);                % pole/gain migration

Чтобы применить устойчивые инструменты управления, мы можем заменить этот набор моделей с одной неопределенной моделью объекта управления, чья область значений поведений включает p1 через p6. Это - одно использование команды ucover. Эта команда берет массив моделей LTI Parray и номинальная модель Pnom и моделирует различие Parray-Pnom как мультипликативная неуверенность в системной динамике.

Поскольку ucover ожидает массив моделей, используйте команду stack, чтобы собрать модели объекта управления p1 через p6 в один массив.

Parray = stack(1,p1,p2,p3,p4,p5,p6);

Затем, используйте ucover, чтобы "покрыть" область значений поведений Parray с неопределенной моделью формы

P = Pnom * (1 + Wt * Delta)

где вся неуверенность сконцентрирована в "несмоделированной динамике" Delta (объект ultidyn). Поскольку усиление Delta однородно ограничено 1 на всех частотах, фильтр "формирования", который Wt используется, чтобы получить, как относительная сумма неуверенности меняется в зависимости от частоты. Этот фильтр также упоминается как функция взвешивания неуверенности.

Попробуйте фильтр 4-го порядка Wt за этот пример:

orderWt = 4;
Parrayg = frd(Parray,logspace(-1,3,60));
[P,Info] = ucover(Parrayg,Pnom,orderWt,'InputMult');

Получившаяся модель P является одно входом, объектом неопределенного пространства состояний (USS) одно вывода с номинальной стоимостью Pnom.

P
P =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 5 states.
  The model uncertainty consists of the following blocks:
    Parrayg_InputMultDelta: Uncertain 1x1 LTI, peak gain = 1, 1 occurrences

Type "P.NominalValue" to see the nominal value, "get(P)" to see all properties, and "P.Uncertainty" to interact with the uncertain elements.

tf(P.NominalValue)
ans =
 
    2
  -----
  s - 2
 
Continuous-time transfer function.

Предвещать график значения подтверждает, что формирующий фильтр Wt "покрывает" относительное изменение в поведении объекта. Как функция частоты, уровень неуверенности составляет 30% в 5 радах/секунда (-10dB = 0.3), 50% в 10 радах/секунда и 100% вне 29 радов/секунда.

Wt = Info.W1;
bodemag((Pnom-Parray)/Pnom,'b--',Wt,'r'); grid
title('Relative Gaps vs. Magnitude of Wt')

Можно теперь использовать неопределенную модель P, чтобы разработать устойчивый контроллер для исходного семейства моделей объекта управления, видеть, что Одновременная Стабилизация Использует Устойчивое Управление для деталей.

Упрощение существующей неопределенной модели

В этом втором примере мы запускаем с подробной неопределенной модели объекта. Эта модель состоит из динамики первого порядка с неопределенным усилением и временной константой, последовательно с мягко underdamped резонанс и значительная несмоделированная динамика. Эта модель создается с помощью ureal и команд ultidyn для определения неопределенных переменных:

gamma = ureal('gamma',2,'Perc',30);  % uncertain gain
tau = ureal('tau',1,'Perc',30);      % uncertain time-constant
wn = 50; xi = 0.25;
P = tf(gamma,[tau 1]) * tf(wn^2,[1 2*xi*wn wn^2]);

% Add unmodeled dynamics and set SampleStateDim to 5 to get representative
% sample values of the uncertain model P
delta = ultidyn('delta',[1 1],'SampleStateDim',5,'Bound',1);
W = makeweight(0.1,20,10);
P = P * (1+W*delta)
P =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 4 states.
  The model uncertainty consists of the following blocks:
    delta: Uncertain 1x1 LTI, peak gain = 1, 1 occurrences
    gamma: Uncertain real, nominal = 2, variability = [-30,30]%, 1 occurrences
    tau: Uncertain real, nominal = 1, variability = [-30,30]%, 1 occurrences

Type "P.NominalValue" to see the nominal value, "get(P)" to see all properties, and "P.Uncertainty" to interact with the uncertain elements.

Набор переходных процессов иллюстрирует изменчивость объекта.

step(P,4)
title('Sampled Step Responses of Uncertain System')

Неопределенная модель объекта управления P содержит 3 неопределенных элемента. В целях системы управления часто желательно упростить эту модель неуверенности в то время как приблизительно сдерживающий ее полная изменчивость. Это - другое использование команды ucover.

Чтобы использовать ucover в этом контексте, сначала сопоставьте неопределенную модель P в массив моделей LTI с помощью usample. Эта команда выбирает неопределенные элементы в неопределенной системе и возвращает соответствующие модели LTI, каждый модель, представляющая одно возможное поведение неопределенной системы. В этом примере, демонстрационном P в 60 точках (генератор случайных чисел отобран для воспроизводимости):

rng(0,'twister');
Parray = usample(P,60);

Затем, используйте ucover, чтобы покрыть все поведения в Parray простой моделью Usys неуверенности. Выберите номинальную стоимость P как центр покрытия и используйте фильтр 2-го порядка, чтобы смоделировать плотность распределения несмоделированной динамики.

orderWt = 2;
Parrayg = frd(Parray,logspace(-3,3,60));
[Usys,Info] = ucover(Parrayg,P.NominalValue,orderWt,'InputMult');

Предвещать график значения показывает, как значение фильтра (в красном) "покрывает" относительную изменчивость частотной характеристики объекта (в синем).

Wt = Info.W1;
bodemag((P.NominalValue-Parray)/P.NominalValue,'b--',Wt,'r')
title('Relative Gaps (blue) vs. Shaping Filter Magnitude (red)')

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

Корректировка взвешивания неуверенности

В этом третьем примере мы запускаем с 40 частотных характеристик системы с 2 выводами, с 2 входами. Эти данные были собраны с частотой анализатор под различными условиями работы. Номинальная модель с двумя состояниями адаптирована к самому типичному ответу:

A = [-5 10;-10 -5];
B = [1 0;0 1];
C = [1 10;-10 1];
D = 0;
Pnom = ss(A,B,C,D);

Данные о частотной характеристике загружаются в 40 1 массив моделей FRD:

load ucover_demo
size(Pdata)
40x1 array of FRD models.
Each model has 2 outputs, 2 inputs, and 120 frequency points.

Отобразите эти данные на графике и наложите номинальную модель.

bode(Pdata,'b--',Pnom,'r',{.1,1e3}), grid
legend('Frequency response data','Nominal model','Location','NorthEast')

Поскольку изменчивость ответа скромна, попытайтесь моделировать это семейство частотных характеристик с помощью аддитивной модели неуверенности формы

P = Pnom + w * Delta

где Delta является объектом ultidyn 2 на 2, представляющим несмоделированную динамику, и w является скалярной функцией взвешивания, отражающей плотность распределения неуверенности (изменчивость в Pdata).

Запустите с фильтра первого порядка w и сравните значение w с минимальным количеством неуверенности, необходимой на каждой частоте:

[P1,InfoS1] = ucover(Pdata,Pnom,1,'Additive');
w = InfoS1.W1;
bodemag(w,'r',InfoS1.W1opt,'g',{1e-1 1e3})
title('Scalar Additive Uncertainty Model')
legend('First-order w','Min. uncertainty amount','Location','SouthWest')

Значение w должно тесно совпадать с минимальной суммой неуверенности. Ясно, что подгонка первого порядка слишком консервативна и превышает это минимальное количество на большинстве частот. Попробуйте еще раз с фильтром третьего порядка w. Для скорости снова используйте данные в InfoS1, чтобы не повторно вычислять оптимальную неуверенность, масштабирующуюся на каждой частоте.

[P3,InfoS3] = ucover(Pnom,InfoS1,3,'Additive');
w = InfoS3.W1;
bodemag(w,'r',InfoS3.W1opt,'g',{1e-1 1e3})
title('Scalar Additive Uncertainty Model')
legend('Third-order w','Min. uncertainty amount','Location','SouthWest')

Значение w теперь тесно совпадает с минимальной суммой неуверенности. Среди аддитивных моделей неуверенности P3 обеспечивает трудное покрытие поведений в Pdata. Обратите внимание на то, что P3 имеет в общей сложности 8 состояний (2 от номинальной части и 6 от w).

P3
P3 =

  Uncertain continuous-time state-space model with 2 outputs, 2 inputs, 8 states.
  The model uncertainty consists of the following blocks:
    Pdata_AddDelta: Uncertain 2x2 LTI, peak gain = 1, 1 occurrences

Type "P3.NominalValue" to see the nominal value, "get(P3)" to see all properties, and "P3.Uncertainty" to interact with the uncertain elements.

Можно совершенствовать эту аддитивную модель неуверенности при помощи нескалярных функций взвешивания неуверенности, например

P = Pnom + W1*Delta*W2

где W1 и W2 являются диагональными фильтрами 2 на 2. В этом примере ограничьте, используют W2=1 и позволяют обоим диагональным элементам W1 быть третьим порядком.

[PM,InfoM] = ucover(Pdata,Pnom,[3;3],[],'Additive');

Сравните две записи W1 с минимальной суммой неуверенности, вычисленной ранее. Обратите внимание на то, что на всех частотах, один из диагональных элементов W1 имеет значение, намного меньшее, чем скалярный фильтр w. Это предполагает, что по диагонали взвешенная модель неуверенности приводит к менее консервативному покрытию семейства частотных характеристик.

bodemag(InfoS1.W1opt,'g*',...
    InfoM.W1opt(1,1),'r--',InfoM.W1(1,1),'r',...
    InfoM.W1opt(2,2),'b--',InfoM.W1(2,2),'b',{1e-1 1e3});
title('Diagonal Additive Uncertainty Model')
legend('Scalar Optimal Weight',...
    'W1(1,1), pointwise optimal',...
    'W1(1,1), 3rd-order fit',...
    'W1(2,2), pointwise optimal',...
    'W1(2,2), 3rd-order fit',...
    'Location','SouthWest')

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

Fd2s = norm(inv(W1)*w) ,   Fs2d = norm(W1/w)

Эти количества измеряются тем, насколько одна модель неуверенности должна масштабироваться, чтобы покрыть другой. Например, модель Pnom + W1*Delta неуверенности должна быть увеличена факторным Fd2s, чтобы включать все модели, представленные неопределенной моделью Pnom + w*Delta.

Постройте Fd2s и Fs2d как функция частоты.

Fd2s = fnorm(InfoS1.W1opt*inv(InfoM.W1opt));
Fs2d = fnorm(InfoM.W1opt*inv(InfoS1.W1opt));
semilogx(fnorm(Fd2s),'b',fnorm(Fs2d),'r'), grid
axis([0.1 1000 0.5 2.6])
xlabel('Frequency (rad/s)'), ylabel('Magnitude')
title('Scale factors relating different covers')
legend('Diagonal to Scalar factor',...
    'Scalar to Diagonal factor','Location','SouthWest');

Этот график показывает что:

  • Fs2d = 1 в большом частотном диапазоне так Pnom+w*Delta включает все поведения, смоделированные Pnom+W1*Delta

  • В том же самом частотном диапазоне Pnom+W1*Delta не включает все поведения, смоделированные Pnom+w*Delta и, на самом деле, должен был бы быть увеличен фактором между 1,2 и 2.6 в порядке сделать так.

  • В частотном диапазоне [1 20], никакая модель неуверенности не содержит другой, но на всех частотах, заставление Pnom+W1*Delta покрыть Pnom+w*Delta требует намного меньшего масштабного коэффициента, чем обратное.

Это указывает, что модель Pnom+W1*Delta обеспечивает менее консервативное покрытие данных о частотной характеристике в Pdata.