Этот пример показывает, как спроектировать прогнозирующий контроллер модели для сервомеханизма положения с использованием MPC Designer.
Позиционный сервомеханизм состоит из двигателя постоянного тока, коробки передач, упругого вала и нагрузки.
Дифференциальные уравнения, представляющие эту систему,
где,
V - приложенное напряжение.
T - крутящий момент, действующий на нагрузку.
- скорость вращения нагрузки.
- угловая скорость вала мотора.
Остальные условия являются постоянными параметрами.
Постоянные параметры для модели сервомеханизма
Символ | Значение (Модули СИ) | Определение |
---|---|---|
kT | 1280.2 | Жесткость при кручении |
kM | 10 | Моторная константа |
JM | 0.5 | Инерция двигателя |
JL | 50 JM | Инерция нагрузки |
ρ | 20 | Передаточное число |
βM | 0.1 | Коэффициент вязкого трения двигателя |
βL | 25 | Коэффициент вязкого трения нагрузки |
R | 20 | Сопротивление якоря |
Если вы задаете переменные состояния как
тогда можно смоделировать сервомеханизм как систему в пространстве состояний LTI.
Контроллер должен установить угловое положение нагрузки, θ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);
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 | -, радианы | , radians | 6.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, такой что:
Поэтому задайте 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 секунды. Уменьшение времени отклика дополнительно приводит к чрезмерно агрессивным изменениям входного напряжения.
В 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 не поддерживается в 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 возможностей выходной ответ желтый, отслеживает уставку углового положения, синяя, тесно.
mpc
| MPC Controller | MPC Designer