Неопределенность модели в Simulink для устойчивой настройки

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

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

Система массового демпфера Spring

Откройте модель 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.

В диалоговом окне Block Linearization Specification проверяйте Specify block linearization using one of the following и введите k_un в текстовом поле. Нажмите OK.

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

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

Примечание

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

Таким же образом задайте c_un как линеаризация блока для Damping блок. Для Mass блокируйтесь, в диалоговом окне Block Linearization Specification, введите 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, смотрите Устойчивую Настройку Системы Массового Демпфера Spring.

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

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

Отображение этой структуры к модели Simulink,

  • w является ссылочным входом r, выход блока Step.

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

  • z является объектом выход x, выход блока Integrator.

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

Используйте эти сигналы с getIOTransfer команда, чтобы извлечь объект 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.

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

| | | |

Похожие темы