Моделируйте неопределенность в Simulink для робастной настройки

В этом примере показано, как настроить Simulink® модель для устойчивой настройки относительно неопределенности параметра. Устойчивая настройка контроллера или синтез робастного контроллера для системы, смоделированной в Simulink, требует линеаризации модели так, чтобы программное обеспечение учитывало неопределенность параметра. Это требует подстановки блоков (Simulink Control Design) для линеаризации, чтобы заменить значение блоков, которые имеют неопределенность параметров, неопределенными параметрами или системами.

В этом примере вы настраиваете модель системы масса-пружина-демпфер для устойчивой настройки, где физические параметры системы неопределенны. Пример показывает, как настроить модель для устойчивой настройки с помощью программного обеспечения, такого как Control System Tuner или systune для slTuner. Это также показывает, как извлечь неопределенную систему для использования в устойчивом проектировании контроллера с musyn.

Система масса-пружина-демпфер

Откройте модель Simulink rct_mass_spring_damper.

open_system('rct_mass_spring_damper')

Эта модель представляет систему для управления системой демпфера масса-пружина на следующем рисунке.

В этой системе приложенная сила F является входом объекта. ПИД-регулятор генерирует силу, необходимую для управления x положения массы. Когда масса m, постоянные c демпфирования и коэффициента упругости k фиксированы и известны, настройка коэффициентов ПИД для желаемой эффективности проста. Однако на практике параметры физической системы могут быть неопределенными. Можно использовать Control System Tuner или systune устойчиво настроить систему против неопределенности и достичь удовлетворительной эффективности в области значений ожидаемых значений для этих параметров.

Задайте неопределенность параметра

Модель сконфигурирована, чтобы использовать номинальные или наиболее вероятные значения физических параметров, m = 3, c = 1 и k = 2. Чтобы настроить систему против неопределенности в этих параметрах, задайте неопределенность параметра в модели.

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

m_un = ureal('m',3,'Percentage',40);
c_un = ureal('c',1,'Percentage',20);
k_un = ureal('k',2,'Percentage',30);

Чтобы задать эти неопределенности в модели, используйте замену блоков. Подстановка блоков позволяет вам задать линеаризацию конкретного блока в модели Simulink. В модели щелкните правой кнопкой мыши по Spring Stiffness заблокировать в модели и выбрать Linear Analysis > Specify Selected Block Linearization.

В Блок окне Спецификации линеаризации установите флажок Specify block linearization using one of the following и введите k_un в текстовом поле. Нажмите OK.

Когда вы используете Control System Tuner для этой модели, программное обеспечение линеаризирует модель и настраивает настраиваемые параметры, используя эту линеаризацию, чтобы вычислить отклики системы. Определение k_un как линеаризация Spring Stiffness блок заставляет программное обеспечение использовать неопределенный параметр в качестве линеаризованного значения блока вместо его номинального значения, которое является постоянным фиксированным усилением 2.

Поскольку неопределенные параметры в этой модели, такие как жесткость пружины, реализованы как скалярные блоки усиления, используйте простой ureal параметр как подстановка блоков. Для более сложных блоков создайте a uss модель, которая представляет неопределенное значение всего блока.

Примечание

Используйте подстановку блоков, чтобы задать неопределенность блока, даже если блок является Uncertain LTI System блок. Если вы явным образом не задаете неопределенное значение в качестве замены блоков, Control System Tuner и slTuner используйте номинальное значение при линеаризации Uncertain LTI System блоки.

Точно так же задайте c_un как блочная линеаризация для Damping блок. Для Mass блок, в диалоговом окне Block Linearization Спецификации, введите 1/m_un как неопределенное значение, потому что усиление этого блока является обратным массе.

Настройка с помощью Control System Tuner

Теперь можно открыть Control System Tuner для модели, создать цели настройки и настроить модель. Когда вы делаете это, Control System Tuner настраивает параметры контроллера, чтобы оптимизировать эффективность во всей области значений неопределенностей. Графики целей настройки и графики отклика в Control System Tuner отображают несколько откликов, вычисленных случайными значениями неопределенных параметров, как показано.

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

Строение для slTuner

Когда вы используете slTuner для настройки командной строки можно задать неопределенности в модели с помощью диалогового окна Спецификация линеаризации блоков (Block Linearization Specification). Кроме того, можно задать неопределенные замены блоков, не изменяя модель. Для этого используйте структуру замещения блоков при создании slTuner интерфейс. Например, создайте структуру замещения блоков для rct_mass_spring_damper модель.

blocksubs(1).Name = 'rct_mass_spring_damper/Mass';
blocksubs(1).Value = 1/m_un;
blocksubs(2).Name = 'rct_mass_spring_damper/Damping';
blocksubs(2).Value = c_un;
blocksubs(3).Name = 'rct_mass_spring_damper/Spring Stiffness';
blocksubs(3).Value = k_un;

Используйте эту структуру для получения slTuner интерфейс с моделью с неопределенными значениями.

UST0 = slTuner('rct_mass_spring_damper','Controller',blocksubs);

Теперь можно создать цели настройки и настроить модель. systune настраивает систему на оптимизацию эффективности во всей области значений неопределенности. Для примера, иллюстрирующего этот рабочий процесс устойчивой настройки с slTuner, см. Робастная настройка системы масса-пружина-демпфер.

Извлечение uss Модель объекта управления для робастного Проектирования контроллера с musyn

musyn команда синтезирует устойчивый контроллер для объекта управления, принимая строение управления LFT.

Сопоставление этой структуры с моделью Simulink,

  • w - ссылка вход r, выход блока Step.

  • u является управляющим сигналом F, выходы блока ПИД-регулятор.

  • z - выход объекта управления x, выход блока Integrator.

  • y - сигнал измерения, который является входом контроллера или выходом блока Sum.

Используйте эти сигналы с getIOTransfer (Simulink Control Design), чтобы извлечь P объекта из slTuner интерфейс UST0. Для этого UST0 должны быть определены точки анализа в каждом из этих местоположений. Исследуйте точки анализа UST0.

getPoints(UST0)
ans =

  2×1 cell array

    {'rct_mass_spring_damper/Step/1[r]'      }
    {'rct_mass_spring_damper/Integrator/1[x]'}

Уже есть точки анализа на w и z. Добавьте точки анализа для u и y.

addPoint(UST0,{'Sum1','Controller'});
getPoints(UST0)
ans =

  4×1 cell array

    {'rct_mass_spring_damper/Step/1[r]'      }
    {'rct_mass_spring_damper/Integrator/1[x]'}
    {'rct_mass_spring_damper/Sum1/1'         }
    {'rct_mass_spring_damper/Controller/1[F]'}

Теперь можно извлечь P модели объекта управления для настройки с musyn. Используйте имена сигналов точек анализа, показанные в скобках в выходах getPoints, для определения входов и выходов P. Для точек анализа, которые не имеют имен сигналов, используйте имя блока.

Pg = getIOTransfer(UST0,{'r','F'},{'x','Sum'});

getIOTransfer возвращает genss модель. В данном случае, потому что Pg исключает блок контроллера, Pg является genss модель только с неопределенными блоками. Преобразование Pg на uss для проектирования контроллера с musyn.

P = uss(P)
P =

  Uncertain continuous-time state-space model with 2 outputs, 2 inputs, 3 states.
  The model uncertainty consists of the following blocks:
    c: Uncertain real, nominal = 1, variability = [-20,20]%, 1 occurrences
    k: Uncertain real, nominal = 2, variability = [-30,30]%, 1 occurrences
    m: Uncertain real, nominal = 3, variability = [-40,40]%, 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.

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

[K,CLperf,info] = musyn(P,1,1);

В качестве альтернативы спроектируйте ПИД-регулятор с фиксированной структурой, как в исходной модели Simulink.

C0 = tunablePID('K','PID');
CL0 = lft(P,C0);
[CL,CLperf,info] = musyn(CL0);

Для получения дополнительной информации о конструкции робастного проектирования контроллера musyn.

См. также

| | (Simulink Control Design) | (Simulink Control Design) | (Simulink Control Design)

Похожие темы