Проектирование контроллера MPC для сервомеханизма положения

Этот пример показывает, как спроектировать прогнозирующий контроллер модели для сервомеханизма положения с использованием MPC Designer.

Системная модель

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

Дифференциальные уравнения, представляющие эту систему,

ω˙L=kTJL(θLθMρ)βLJLωLω˙M=kMJM(VkMωMR)βMωMJM+kTρJM(θLθMρ)

где,

  • V - приложенное напряжение.

  • T - крутящий момент, действующий на нагрузку.

  • ωL=θ˙L - скорость вращения нагрузки.

  • ωM=θ˙M - угловая скорость вала мотора.

Остальные условия являются постоянными параметрами.

Постоянные параметры для модели сервомеханизма

Символ

Значение (Модули СИ)

Определение

kT

1280.2

Жесткость при кручении

kM

10

Моторная константа

JM

0.5

Инерция двигателя

JL

50 JM

Инерция нагрузки

ρ

20

Передаточное число

βM

0.1

Коэффициент вязкого трения двигателя

βL

25

Коэффициент вязкого трения нагрузки

R

20

Сопротивление якоря

Если вы задаете переменные состояния как

xp=[θLωLθMωM]T,

тогда можно смоделировать сервомеханизм как систему в пространстве состояний LTI.

x˙p=[0100kTJLβLJLkTρJL00001kTρJM0kTρ2JMβM+kM2RJM]xp+[000kMRJM]VθL=[1000]xpT=[kT0kTρ0]xp

Контроллер должен установить угловое положение нагрузки, θL, на желаемое значение путем регулировки приложенного напряжения, V.

Однако, поскольку упругий вал имеет конечную прочность на сдвиг, крутящий момент, T, должен оставаться в области значений |<reservedrangesplaceholder1>| ≤ 78,5 Нм. Кроме того, источник напряжения физически ограничивает приложенное напряжение областью значений |<reservedrangesplaceholder0>| ≤ 220 В.

Конструкция модели объекта управления

Задайте константы модели.

Kt = 1280.2;  % Torsional rigidity
Km = 10;      % Motor constant
Jm = 0.5;     % Motor inertia
Jl = 50*Jm;   % Load inertia
N = 20;       % Gear ratio
Bm = 0.1;     % Rotor viscous friction
Bl = 25;      % Load viscous friction
R = 20;       % Armature resistance

Задайте матрицы пространства состояний, выведенные из уравнений модели.

A = [        0       1             0                0;
        -Kt/Jl  -Bl/Jl     Kt/(N*Jl)                0;
             0       0             0                1;
     Kt/(Jm*N)       0  -Kt/(Jm*N^2)  -(Bm+Km^2/R)/Jm];
B = [0; 0; 0; Km/(R*Jm)];
C = [  1  0       0  0;
      Kt  0   -Kt/N  0];
D = [0; 0];

Создайте модель пространства состояний.

plant = ss(A,B,C,D);

Откройте приложение MPC Designer

mpcDesigner

Импорт объекта и определение строения сигнала

В MPC Designer на вкладке MPC Designer выберите MPC Structure.

В диалоговом окне «Определение структуры MPC при импорте» выберите plant модель объекта управления и присвоение заводским каналам ввода-вывода следующих типов сигналов:

  • Манипулируемая переменная - Напряжение, V

  • Измеренный выход - Угловое положение нагрузки, θL

  • Неизмеренный выход - Крутящий момент, T

Нажмите Define and Import.

MPC Designer импортирует указанный объект в Data Browser. К Data Browser также добавляются:

  • mpc1 - контроллер по умолчанию создан с использованием plant как его внутренняя модель.

  • scenario1 - Сценарий симуляции по умолчанию. Результаты этой симуляции отображаются на Input Response и Output Response графиках.

Задайте атрибуты входного и выходного канала

На вкладке MPC Designer, в разделе Structure, нажмите I/O Attributes.

В Вход и Выход окнах Channel Спецификаций для каждого входа и выхода канала:

  • Задайте значимые Name и Unit.

  • Сохраните Nominal Value на значение по умолчанию 0.

  • Задайте Scale Factor для нормализации сигнала. Выберите значение, которое аппроксимирует предсказанную рабочую область значений сигнала:

    Имя каналаМинимальное значениеМаксимальное значениеМасштабный коэффициент
    Voltage-220 В220 В440
    Theta-, радианы, radians6.28
    Torque-78,5 Нм78,5 Нм157

Щелкните OK, чтобы обновить атрибуты канала и закрыть диалоговое окно.

Измените сценарий для моделирования углового положения Переходной характеристики

В Scenario разделе Edit Scenario раскрывающемся списке выберите scenario1 для изменения сценария симуляции по умолчанию.

В диалоговом окне Simulation Scenario задайте Simulation duration 10 секунд.

В таблице Reference Signals сохраните строение по умолчанию для первого канала. Эти настройки создают Step изменение 1 радиан в заданной угловой позиции на Time 1 второе.

Для второго выхода в раскрывающемся списке Signal выберите Constant для сохранения уставки крутящего момента на ее номинальном значении.

Нажмите OK.

Приложение запускает симуляцию с новыми настройками сценария и обновляет Input Response и Output Response графики.

Задайте шаг расчета и горизонты

На вкладке Tuning, в разделе Horizon, задайте Sample time 0.1 секунд.

Для заданного шага расчета, Ts и желаемого времени отклика Tr = 2 секунды выберите горизонт предсказания, p, такой что:

TrpTs.

Поэтому задайте Prediction horizon 20.

Задайте Control horizon 5.

Когда вы обновляете значения шага расчета и горизонта, Input Response и Output Response графики обновляются автоматически. И входное напряжение, и значения крутящего момента превышают ограничения, заданные в спецификациях системной модели.

Задайте ограничения

В Design разделе выберите Constraints.

В диалоговом окне «Ограничения» в разделе Input Constraints задайте Min и Max значения напряжения для управляемой переменной (MV).

В разделе Output Constraints задайте Min и Max значения крутящего момента для неизмеренного выхода (UO).

Нет никаких дополнительных ограничений, то есть другие ограничения остаются на своих максимальных и минимальных значениях по умолчанию —Inf и Inf соответственно

Нажмите OK.

Графики отклика обновляются, чтобы отразить новые ограничения. На Input Response графике наблюдаются нежелательные большие изменения напряжения входа.

Задайте веса настройки

В Design разделе выберите Weights.

В диалоговом окне Weights, в таблице Input Weights, увеличьте управляемую Rate Weight переменной.

Настройка Weight для управляемой переменной (MV) 0. Этот вес указывает, что контроллер может разрешить изменение напряжения входа в пределах его ограниченной области значений. Увеличенное Rate Weight ограничивает размер манипулируемых изменений переменной.

Поскольку цель управления состоит в том, чтобы угловое положение нагрузки отслеживала ее уставку, Weight настройки на измеренном выходе 1. Уставка для приложенного крутящего момента отсутствует, поэтому контроллер может позволить второму выходу изменяться в пределах своих ограничений. Поэтому Weight на неизмеренном выходе (UO) 0, что позволяет контроллеру игнорировать уставку крутящего момента.

Нажмите OK.

Графики отклика обновляются, чтобы отразить повышенный вес скорости. Этот Input Response более плавный с меньшими изменениями напряжения.

Исследуйте выходной ответ

На Output Response графике щелкните правой кнопкой мыши Theta область графика и выберите Characteristics > Peak Response.

Пиковая выходная реакция возникает во времени 3 секунды с максимальным перерегулированием 3%. Поскольку изменение шага опорного сигнала составляет 1 секунду, время пика контроллера составляет 2 секунды.

Улучшите время отклика контроллера

Щелкните и перетащите Closed-Loop Performance ползунок вправо, чтобы получить более Aggressive ответ. Чем дальше вы перетащите ползунок вправо, тем быстрее реагирует контроллер. Выберите положение ползунка так, чтобы максимальная чувствительность наступила через 2,7 секунды.

Окончательное пиковое время контроллера составляет 1,7 секунды. Уменьшение времени отклика дополнительно приводит к чрезмерно агрессивным изменениям входного напряжения.

Сгенерируйте и запустите скрипт MATLAB

В Analysis разделе щелкните стрелу Export Controller.

В разделе Export Controller нажмите Generate Script.

В Генерация MATLAB® Диалоговое окно скрипта, установите флажок рядом с scenario1.

Нажмите Generate Script.

Приложение экспортирует копию модели объекта управления, plant_C, в рабочее пространство MATLAB, наряду с входными и опорными сигналами симуляции.

Кроме того, приложение генерирует следующий код в РЕДАКТОРА MATLAB.

%% create MPC controller object with sample time
mpc1 = mpc(plant_C, 0.1);
%% specify prediction horizon
mpc1.PredictionHorizon = 20;
%% specify control horizon
mpc1.ControlHorizon = 5;
%% specify nominal values for inputs and outputs
mpc1.Model.Nominal.U = 0;
mpc1.Model.Nominal.Y = [0;0];
%% specify scale factors for inputs and outputs
mpc1.MV(1).ScaleFactor = 440;
mpc1.OV(1).ScaleFactor = 6.28;
mpc1.OV(2).ScaleFactor = 157;
%% specify constraints for MV and MV Rate
mpc1.MV(1).Min = -220;
mpc1.MV(1).Max = 220;
%% specify constraints for OV
mpc1.OV(2).Min = -78.5;
mpc1.OV(2).Max = 78.5;
%% specify overall adjustment factor applied to weights
beta = 1.2712;
%% specify weights
mpc1.Weights.MV = 0*beta;
mpc1.Weights.MVRate = 0.4/beta;
mpc1.Weights.OV = [1 0]*beta;
mpc1.Weights.ECR = 100000;
%% specify simulation options
options = mpcsimopt();
options.RefLookAhead = 'off';
options.MDLookAhead = 'off';
options.Constraints = 'on';
options.OpenLoop = 'off';
%% run simulation
sim(mpc1, 101, mpc1_RefSignal, mpc1_MDSignal, options);

В окне MATLAB, на вкладке Editor, выберите Save.

Заполните диалоговое окно «Сохранить» и нажмите кнопку Save.

На вкладке Editor нажмите Run.

Скрипт создает контроллер, mpc1, и запускает сценарий симуляции. Входные и выходные отклики совпадают с результатами симуляции из приложения.

Проверьте эффективность контроллера в Simulink

Если у вас есть Simulink® модель вашей системы, вы можете симулировать ваш контроллер и подтвердить его эффективность. Функциональность Simulink не поддерживается в Online™ MATLAB.

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

open_system('mpc_motor')

Эта модель использует блок MPC Controller для управления объектом сервомеханизма. Блок Servomechanism Model уже настроен на использование plant модель из рабочего пространства MATLAB.

Исходный блок Angle reference создает синусоидальный опорный сигнал с частотой 0.4 рад/с и амплитуду π.

Дважды кликните MPC Controller блок.

В диалоговом окне Параметров блоков контроллера MPC задайте MPC Controller от Рабочего пространства MATLAB. Используйте mpc1 контроллер, созданный с помощью сгенерированного скрипта.

Нажмите OK.

В командной строке MATLAB задайте переменную величины крутящего момента.

tau = 78.5;

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

В окне модели Simulink нажмите Run, чтобы симулировать модель.

В Angle возможностей выходной ответ желтый, отслеживает уставку углового положения, синяя, тесно.

См. также

| |

Похожие темы