Линеаризация моделей 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);

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

Блоки

Функции

Похожие темы