exponenta event banner

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

В этом примере показано, как использовать команду «Надежный Toolbox™ управления» ucover для моделирования семейства ответов LTI как неопределенной системы. Эта команда полезна для подгонки неопределенной модели к набору частотных откликов, представляющих изменчивость системы, или для уменьшения сложности существующей неопределенной модели для облегчения синтеза надежных контроллеров с musyn.

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

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

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 (a 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 для проектирования надежного контроллера для исходного семейства моделей растений см. раздел Одновременная стабилизация с использованием надежного управления для получения подробной информации.

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

В этом втором примере мы начинаем с детальной неопределенной модели завода. Эта модель состоит из динамики первого порядка с неопределенным усилением и постоянной времени, последовательно с слабо затухающим резонансом и значительной немодированной динамикой. Эта модель создается с помощью 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 является 2 на 2 ultidyn объект, представляющий немодированную динамику и 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.

См. также

|

Связанные темы