Линеаризация моделей Simulink с неуверенностью

Этот пример показывает, как вычислить неопределенную линеаризацию с помощью Robust Control Toolbox™ и Simulink® Control Design™. Существует два удобных рабочих процесса, предлагаемые в зависимости от того, как Simulink используется. Получившаяся неопределенная линеаризация в форме структуры данных неопределенного пространства состояний (USS) в Robust Control Toolbox, который может использоваться аналитическими функциями в Robust Control Toolbox.

Введение

Графический интерфейс пользователя в Simulink является окружающей средой, чтобы смоделировать и моделировать системы управления. Используя возможности линеаризации в Simulink Control Design и элементы неуверенности в Robust Control Toolbox, можно задать неуверенность на определенных блоках в модели Simulink и затем извлечь неопределенную линеаризовавшую модель.

В этом примере производительность ПИД-регулятора исследована в присутствии неуверенности. Существует два подхода, доступные, чтобы вычислить линеаризацию неопределенных систем. Каждый из подходов разработан, чтобы удовлетворить различные потребности при работе в Simulink. Эти подходы получены в итоге в следующих разделах.

Подход № 1: Используя неопределенные блоки пространства состояний

Этот первый подход является самым применимым, когда вы уже используете Неопределенные блоки Пространства состояний в качестве части вашего процесса проектирования системы управления в Simulink. Как показано в Анализе Робастности в качестве примера в Simulink, блок Uncertain State Space в Robust Control Toolbox позволяет вам задать неуверенность в модели Simulink.

В следующем примере и объект и динамика датчика сомнительны. Неуверенность на динамике объекта включает:

  • Действительный unc_pole полюса, местоположение которого отличается между-10 и-4

  • Несмоделированная динамика input_unc (25%-я относительная неуверенность в низкой частоте, повышающейся до 100%-й неуверенности на уровне 130 рад/с).

unc_pole = ureal('unc_pole',-5,'Range',[-10 -4]);
plant = ss(unc_pole,5,1,0);
wt = makeweight(0.25,130,2.5);
input_unc = ultidyn('input_unc',[1 1]);

Неопределенные движущие силы датчика заданы, чтобы быть

sensor_pole = ureal('sensor_pole',-20,'Range',[-30 -10]);
sensor = tf(1,[1/(-sensor_pole) 1]);

Модель rct_ulinearize_uss использует Неопределенные блоки Пространства состояний (подсвеченный в синем), чтобы смоделировать эту неуверенность:

mdl = 'rct_ulinearize_uss';
open_system('rct_ulinearize_uss')

Эта модель Simulink готова вычислить неопределенную линеаризацию. Линейная модель имеет вход в ссылочном блоке rct_ulinearize_uss/Reference и выводе объекта rct_ulinearize_uss/Uncertain Plant. Эти точки ввода и вывода линеаризации заданы с помощью Simulink Control Design. Точки линеаризации найдены с помощью следующей команды:

io = getlinio(mdl);

Неопределенная линеаризация вычисляется с помощью команды ulinearize. Эта команда возвращает объект неопределенного пространства состояний (USS), который зависит от неопределенных переменных input_unc, sensor_pole и unc_pole:

sys_ulinearize = ulinearize(mdl,io)
sys_ulinearize =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 5 states.
  The model uncertainty consists of the following blocks:
    input_unc: Uncertain 1x1 LTI, peak gain = 1, 1 occurrences
    sensor_pole: Uncertain real, nominal = -20, range = [-30,-10], 1 occurrences
    unc_pole: Uncertain real, nominal = -5, range = [-10,-4], 1 occurrences

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

Это завершает первый подход. Закройте модель Simulink:

bdclose(mdl)

Подход № 2: Используя встроенные блоки Simulink

Второй подход использует пользовательский интерфейс Simulink Control Design для спецификации линеаризации блока, чтобы задать неуверенность для линеаризации. Функция спецификации линеаризации блока в Simulink Control Design позволяет любому блоку Simulink быть замененным или усилением, объектом LTI или Robust Control Toolbox неопределенная переменная. Этот подход подходит лучше всего при работе с моделями, которые не используют блок Uncertain State Space. Первичное преимущество этого подхода состоит в том, что спецификация неуверенности не влияет ни на какую другую операцию в Simulink, таком как симуляция.

Измененную версию исходной модели с помощью только встроенные блоки Simulink показывают ниже.

mdl = 'rct_ulinearize_builtin';
open_system(mdl);

Путем щелчка правой кнопкой по блоку rct_ulinearize_builtin/Plant и выбора пункта меню Linear Analysis-> Specify Linearization, можно задать, к какому значению этот блок должен линеаризовать. Если вы введете выражение plant*(1+wt*input_unc) в диалоговое окно, показанное ниже, то блок "Plant" будет линеаризовать к соответствующей неопределенной модели в пространстве состояний (объект USS).

Точно так же можно присвоить неопределенную модель sensor как линеаризацию для блока rct_ulinearize_builtin/Sensor Gain.

Можно теперь линеаризовать rct_ulinearize_builtin с помощью команды Simulink Control Design linearize:

io = getlinio(mdl);
sys_linearize = linearize(mdl,io)
sys_linearize =

  Uncertain continuous-time state-space model with 1 outputs, 1 inputs, 5 states.
  The model uncertainty consists of the following blocks:
    input_unc: Uncertain 1x1 LTI, peak gain = 1, 1 occurrences
    sensor_pole: Uncertain real, nominal = -20, range = [-30,-10], 1 occurrences
    unc_pole: Uncertain real, nominal = -5, range = [-10,-4], 1 occurrences

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

Получившаяся модель является моделью неопределенного пространства состояний (USS), эквивалентной неопределенной линеаризации, вычисленной с помощью первого подхода.

Усиление неопределенного результата линеаризации

Оба подхода линеаризации производят объект неопределенного пространства состояний (USS), который может анализироваться со стандартными командами Robust Control Toolbox. В этом примере эта модель USS используется, чтобы найти усиление худшего случая линеаризовавшего ответа с обратной связью.

[maxg,worstun] = wcgain(sys_linearize);

Получившиеся значения худшего случая для неопределенных переменных могут затем использоваться, чтобы выдержать сравнение с номинальным ответом. Это сравнение указывает, что производительность ПИДа не устойчива к неуверенности датчика и объекту.

sys_worst = usubs(sys_linearize,worstun);
step(sys_linearize.NominalValue,sys_worst)
legend('Nominal','Worst-case');

Это завершает пример. Закройте модель Simulink:

bdclose(mdl);