exponenta event banner

Изменяющийся во времени MPC-контроль перевернутого маятника на тележке

В этом примере показано, как управлять перевернутым маятником на тележке с помощью линейного контроллера прогнозирования изменяющейся во времени модели (LTV MPC).

Требования к продукту

В этом примере для моделирования нелинейной модели маятника требуется программное обеспечение Simulink ®.

if ~mpcchecktoolboxinstalled('simulink')
    disp('Simulink (R) is required to run this example.')
    return
end

Сборка маятника/тележки

Установка для этого примера представляет собой следующий узел маятник/тележка, где z - положение тележки, а theta - угол маятника.

Управляемая переменная для этой системы представляет собой переменную силу F, действующую на тележку. Диапазон силы находится в диапазоне от -100 до 100. Контроллер должен держать маятник в вертикальном положении при перемещении тележки в новое положение или когда маятник подталкивается вперед импульсным возмущением dF, приложенным к верхнему концу перевернутого маятника.

Цели контроля

Принять следующие исходные условия для сборки маятника/тележки:

  • Тележка неподвижна при z = 0.

  • Перевернутый маятник неподвижен в вертикальном положении тета = 0.

Цели контроля:

  • Корзина может быть перемещена в новую позицию между -20 и 20 с изменением уставки шага.

  • При отслеживании такого изменения уставки время нарастания должно быть меньше 4 секунд (для производительности), а превышение должно быть меньше 10 процент (для надежности).

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

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

Выбор изменяющегося во времени MPC

При управлении перевернутым маятником на тележке один контроллер MPC может переместить тележку в новое положение между -10 и 10. Однако при увеличении уставки шага изменить на 20маятник не может восстановить свое вертикальное положение во время перехода.

Чтобы достичь большего расстояния в течение того же времени подъема, контроллер прикладывает больше усилия к тележке в начале. В результате маятник смещается из своего вертикального положения на больший угол, такой как 60 степени. При таких углах динамика растения значительно отличается от прогностической модели LTI, полученной при theta = 0. В результате ошибки в прогнозировании поведения установки превышают то, с чем может справиться встроенная надежность MPC, и контроллер не справляется должным образом.

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

mpcobj.OV(2).Min = -pi/2;
mpcobj.OV(2).Max = pi/2;
mpcobj.Weights.ECR = 100;

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

Перемещение корзины в новое положение между -20 и 20 при сохранении одинакового времени подъема контроллер должен иметь более точные модели под разными углами, чтобы контроллер мог использовать их для лучшего прогнозирования. Адаптивный MPC позволяет решить нелинейную задачу управления, обновляя линейные изменяющиеся во времени модели растений во время выполнения.

Структура управления

Для этого примера используйте один контроллер MPC LTV с:

  • Одна управляемая переменная: переменная сила F.

  • Два измеренных выхода: Положение тележки z и угол маятника тета.

mdlMPC = 'mpc_pendcartLTVMPC';
open_system(mdlMPC);

Поскольку все состояния установки поддаются измерению, они непосредственно используются в качестве пользовательских оценочных состояний в блоке Adaptive MPC.

При изменении уставки положения тележки (ввод шага) уставка угла маятника постоянна (0 = вертикальное положение).

Линейные модели растений с изменяющимся временем

На каждом контрольном интервале LTV MPC требует линейной модели установки для каждого шага прогнозирования, начиная с текущего времени k ко времени k+p, где p - горизонт прогнозирования.

В этом примере динамическая система тележки и маятника описывается первой принципиальной моделью. Эта модель состоит из набора дифференциальных и алгебраических уравнений (DAE), определенных в pendulumCT функция. Дополнительные сведения см. в разделе pendulumCT.m.

Блок последовательного линеаризатора в модели Simulink генерирует модели LTV во время выполнения. На каждом этапе предсказания блок получает матрицы состояния-пространства. A, B, C, и D использование якобиана в непрерывном времени, а затем преобразует их в дискретные значения времени. Исходные состояния растения x (k) измеряются непосредственно из растения. Последовательность ввода установки содержит оптимальные перемещения, сгенерированные контроллером MPC в предыдущем интервале управления.

Адаптивная конструкция MPC

Контроллер ПДК рассчитан на номинальную рабочую точку равновесия.

x0 = zeros(4,1);
u0 = zeros(1,1);

Аналитически получить линейную модель установки с использованием ОДУ.

[~,~,A,B,C,D] = pendulumCT(x0, u0);
plant = ss(A,B,C([1 3],:),D([1 3],:)); % position and angle

Для управления нестабильной установкой время выборки контроллера не может быть слишком большим (плохое отклонение возмущений) или слишком малым (чрезмерная вычислительная нагрузка). Аналогично, горизонт прогнозирования не может быть слишком длинным (доминирует нестабильный режим установки) или слишком коротким (нарушения ограничений могут быть непредвиденными). В этом примере используются следующие параметры:

Ts = 0.01;
PredictionHorizon = 60;
ControlHorizon = 3;

Создайте контроллер MPC.

mpcobj = mpc(c2d(plant,Ts),Ts,PredictionHorizon,ControlHorizon);
-->The "Weights.ManipulatedVariables" property of "mpc" object is empty. Assuming default 0.00000.
-->The "Weights.ManipulatedVariablesRate" property of "mpc" object is empty. Assuming default 0.10000.
-->The "Weights.OutputVariables" property of "mpc" object is empty. Assuming default 1.00000.
   for output(s) y1 and zero weight for output(s) y2 

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

mpcobj.MV.Min = -100;
mpcobj.MV.Max = 100;

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

mpcobj.MV.ScaleFactor = 100;

Для повышения надежности контроллера увеличьте вес изменения MV от 0.1 кому 1.

mpcobj.Weights.MVRate = 1;

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

mpcobj.Weights.OV = [0.6 1.2];

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

setoutdist(mpcobj,'model',[0;tf(1)]);

Используйте пользовательскую оценку состояния, так как все состояния установки измеримы.

setEstimator(mpcobj,'custom');

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

Проверка конструкции MPC с помощью моделирования с замкнутым контуром в Simulink.

open_system([mdlMPC '/Scope']);
sim(mdlMPC)
-->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.

В нелинейном моделировании все цели управления успешно достигнуты.

bdclose(mdlMPC);

См. также

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