Можно задать внутреннюю модель объекта управления модели прогнозирующего контроллера с помощью линейной модели, идентифицированной с помощью программного обеспечения System Identification Toolbox™. Можно идентифицировать модель объекта управления и спроектировать контроллер MPC в интерактивном режиме с помощью приложений или программно в командной строке. Для получения дополнительной информации об идентификации моделей завода смотрите Идентификация объекта из данных.
Приложение System Identification не поддерживается в MATLAB® Online™.
Этот пример показывает, как в интерактивном режиме проектировать прогнозирующий контроллер модели с использованием идентифицированной модели объекта управления. Сначала оцените модель объекта управления по данным с помощью приложения System Identification. Затем спроектируйте контроллер MPC путем импорта идентифицированного объекта в MPC Designer.
Загрузка входных/выходных данных
Загрузите входные и выходные данные для идентификации.
load(fullfile(matlabroot,'examples','mpc','plantIO'))
Эта команда импортирует входной сигнал объекта управления, u
, выходной сигнал, y
, и шаг расчета, Ts
, в рабочее пространство MATLAB.
Откройте приложение System Identification.
systemIdentification
В приложении System Identification, под Import data, выберите Time domain data
.
В диалоговом окне Импорт данных задайте Input, Output и Sample time с помощью данных из рабочего пространства MATLAB.
Кроме того, задайте Data name следующим ioData
и Starting time как 0
.
Нажмите Import. Приложение импортирует данные, создает iddata
объект с заданным именем и свойствами сигнала и добавляет этот объект к области Data Views.
Предварительная обработка данных
Обычно необходимо предварительно обработать идентификационные вводы-выводы данные перед оценкой модели. В данном примере удалите смещения из входа и выходных сигналов путем удаления тренда данных. В приложении System Identification, под Preprocess, выберите Remove trends
.
Приложение создает объект данных, ioDatad
, используя предварительно обработанные данные, и добавляет этот объект к области Data Views.
Для получения дополнительной информации о предварительной обработке идентификационных данных см. Раздел «Предварительная обработка данных» (System Identification Toolbox).
Оценка линейной модели
Чтобы использовать детрендированные данные, ioDatad
для оценки модели сначала перетащите соответствующий объект данных из области Data Views в Working Data.
Чтобы оценить модель пространства состояний, под Estimate выберите State Space Models
.
В диалоговом окне «Модели пространства состояний» задайте свойства предполагаемой модели и опции оценки. В этом примере оцените модель второго порядка в дискретном времени, оставив другие опции оценки на своих значениях по умолчанию.
Для получения дополнительной информации об оценке моделей пространства состояний смотрите Модели пространства состояний (System Identification Toolbox).
Нажмите Estimate. Приложение оценивает модель пространства состояний, ss1
, и добавляет модель к Model Views области.
Предполагаемая модель имеет один измеренный вход и один неизмеренный шумовой компонент.
Импорт идентифицированного объекта в MPC Designer
Как использовать ss1
для разработки MPC управления сначала экспортируйте модель в рабочее пространство MATLAB.
Перетащите мышью ss1
от области Model Views до To Workspace.
Откройте MPC Designer. В командной строке MATLAB введите:
mpcDesigner
Чтобы импортировать идентифицированную модель, в MPC Designer, нажмите MPC Structure. В диалоговом окне «Определение структуры MPC при импорте» выберите ss1
со таблицы.
Нажмите Define and Import.
Совет
Можно также импортировать идентифицированную модель при открытии MPC Designer.
mpcDesigner(ss1)
Приложение преобразует идентифицированное объект в модель дискретного времени, при необходимости в пространстве состояний, и создает контроллер MPC по умолчанию mpc1
, в котором:
Измеренный вход идентифицированного объекта является манипулированной переменной.
Выходом идентифицированного объекта является измеренный выход.
По умолчанию контроллер MPC отбрасывает неизмеренный компонент из вашей идентифицированной модели. Чтобы сконфигурировать шумовые каналы как неизмеренные нарушения порядка, необходимо сначала создать модель дополненного пространства состояний из вашей идентифицированной модели. Для получения дополнительной информации смотрите Сконфигурируйте Шумовые Каналы как Неизмеренные Нарушения порядка.
Примечание
Можно также импортировать идентифицированную линейную модель в существующий сеанс MPC Designer. В MPC Designer нажмите Import Plant. В диалоговом окне Импорт модели объекта управления выберите идентифицированную модель из таблицы.
В диалоговом окне Import Plant Model отображаются только идентифицированные модели с строением ввода-вывода, которая совместима с текущей структурой MPC. Если текущая структура MPC включает неизмеренные нарушения порядка, любые шумовые каналы из идентифицированной модели преобразуются в неизмеренные нарушения порядка. В противном случае шумовые каналы отбрасываются.
Задание атрибутов ввода-вывода
Чтобы улучшить эффективность контроллера и упростить настройку контроллера, задайте следующие атрибуты для каждого входного и выходного сигнала:
Scale Factor - Масштабируйте каждый сигнал на коэффициент, который аппроксимирует его диапазон, который является различием между его максимальным и минимальным значениями. Масштабирование упрощает настройку веса контроллера и улучшает числовую настройку контроллера. Для получения дополнительной информации смотрите Задать масштабные коэффициенты.
Nominal Value - применить смещение к каждому сигналу, которое соответствует номинальным условиям работы, при которых вы собрали идентификационные данные; это смещения, удаленные путем удаления тренда данных. Установка номинальных значений помещает контроллер в ту же рабочую точку, что и объект, что важно, когда объект является нелинейной системой.
В MPC Designer на вкладке MPC Designer нажмите I/O Attributes.
В Вход и Выход окнах Channel Спецификаций задайте Nominal Value и Scale Factor для входа и выходных сигналов.
Нажмите OK.
Контроллер по умолчанию хорошо отслеживает значение выхода ссылки, однако начальная реакция контроллера агрессивна.
Совет
Можно задать Nominal Value или Scale Factor с помощью выражений, таких как mean(u)
или max(y) - min(y)
соответственно, где u
и y
являются сигналами ввода-вывода из рабочего пространства MATLAB.
Сконфигурируйте сценарий симуляции
В MPC Designer на вкладке Tuning нажмите Edit Scenario > scenario1.
В диалоговом окне Simulation Scenario задайте Simulation duration 5
секунд.
В разделе Reference Signals сохраните шаговый сигнал по умолчанию.
Нажмите OK.
Настройка контроллера
Перед настройкой контроллера рекомендуется задать шаг расчета контроллера, горизонт предсказания и горизонт управления. Поскольку вы идентифицировали модель объекта управления в дискретном времени, контроллер автоматически выводит свой шаг расчета из идентифицированной модели. В данном примере используйте предсказание по умолчанию и управляйте горизонтами. Для получения дополнительной информации см. «Выбор шага расчета» и «Горизонты».
Чтобы сделать контроллер менее агрессивным, на вкладке Tuning перетащите Closed-Loop Performance ползунок налево. Это увеличивает вес функции затрат на манипулируемой переменной скорости изменения и уменьшает вес на выход переменной.
Теперь входная характеристика более консервативна. Компромиссы - это увеличенное перерегулирование и более длительное время урегулирования.
Для получения дополнительной информации о настройке весов контроллеров см. Раздел «Настройка весов».
Примечание
Если у вашего объекта есть известные физические или защитные ограничения, которые ограничивают выходную область значений, входную область значений или скорость изменения входного сигнала, можно задать эти ограничения в контроллере MPC. Если это так, задайте ограничения перед настройкой весов контроллера. Дополнительные сведения см. в разделе «Задание ограничений».
Этот пример показывает, как спроектировать прогнозирующий контроллер модели в командной строке с помощью идентифицированной модели объекта управления.
Загрузите входные/выходные данные.
load plantIO
Эта команда импортирует входной сигнал объекта управления, u
, выходной сигнал объекта, y
, и шаг расчета, Ts
, в рабочую область MATLAB ®.
Создайте iddata
объект из входных и выходных данных.
mydata = iddata(y,u,Ts);
Предварительно обработайте данные ввода-вывода путем удаления смещений (средних значений) из входного и выходного сигналов.
mydatad = detrend(mydata);
Можно также удалить смещения путем создания ssestOptions
объект и установка InputOffset
и OutputOffset
опции.
Оцените линейную модель пространства состояний второго порядка с помощью данных ввода-вывода. Оцените модель в дискретном времени путем определения шага расчета как Ts
.
ss1 = ssest(mydatad,2,'Ts',Ts);
Предполагаемая модель имеет один измеренный вход и один неизмеренный шумовой компонент.
Создайте прогнозирующий контроллер модели по умолчанию для идентифицированной модели, ss1
.
mpcObj = mpc(ss1);
-->Converting linear model from System Identification Toolbox to state-space. -->The "PredictionHorizon" property of "mpc" object is empty. Trying PredictionHorizon = 10. -->The "ControlHorizon" property of the "mpc" object is empty. Assuming 2. -->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.
По умолчанию контроллер отбрасывает неизмеренный шумовой компонент из вашей идентифицированной модели.
Чтобы упростить процесс настройки, задайте входной и выходной коэффициенты масштабирования сигнала.
mpcObj.MV(1).ScaleFactor = max(u) - min(u); mpcObj.OV(1).ScaleFactor = max(y) - min(y);
Задайте номинальные значения для входа и выходных сигналов. Используйте смещения, которые вы ранее удалили из данных ввода-вывода.
nominalInput = mean(u); nominalOutput = mean(y); mpcObj.Model.Nominal.u = nominalInput; mpcObj.Model.Nominal.y = nominalOutput;
Сконфигурируйте опорный сигнал симуляции. Задайте опорный сигнал с пятисекундной длительностью и модулем шагом за одну секунду. Начальное значение опорного сигнала является номинальным значением выхода сигнала.
outputRef = [nominalOutput*ones(1/Ts,1); (nominalOutput+1)*ones(4/Ts+1,1)];
Перед настройкой контроллера моделируйте начальную эффективность контроллера.
sim(mpcObj,[],outputRef)
-->Assuming output disturbance added to measured output channel #1 is integrated white noise. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
Контроллер по умолчанию хорошо отслеживает значение выхода ссылки, однако начальная реакция контроллера агрессивна.
Чтобы сделать контроллер менее агрессивным, одновременно увеличьте настройочный вес для управляемой переменной скорости изменения и уменьшите настройочный вес для переменного выхода.
beta = 0.37; mpcObj.Weights.MVRate = mpcObj.Weights.MVRate/beta; mpcObj.Weights.OV = mpcObj.Weights.OV*beta;
Симулируйте настроенный ответ контроллера
sim(mpcObj,[],outputRef)
-->Assuming output disturbance added to measured output channel #1 is integrated white noise. -->The "Model.Noise" property of the "mpc" object is empty. Assuming white noise on each measured output channel.
Теперь входная характеристика более консервативна. Компромиссы - это увеличенное перерегулирование и более длительное время урегулирования.
Когда вы создаете контроллер с помощью идентифицированной модели, программное обеспечение по умолчанию отбрасывает из модели любые шумовые каналы. Можно сконфигурировать шумовые каналы как неизмеренные нарушения порядка, увеличив идентифицированную модель.
Чтобы преобразовать шумовые каналы в неизмеренные нарушения порядка, сначала преобразуйте идентифицированную модель, ss1
, в модель пространства состояний, использующую 'augmented'
опция. В командной строке MATLAB введите:
ss2 = ss(ss1,'augmented');
Эта опция создает модель пространства состояний, ss2
, со следующими входными группами:
Measured
- Входные каналы из идентифицированной модели.
Noise
- Шумовые каналы от идентифицированной модели. Количество каналов шума совпадает с количеством каналов выходов.
Примечание
Программное обеспечение System Identification Toolbox принимает, что входы в Noise
каналы являются Гауссовым шумом с единичной дисперсией. Поэтому дополненная модель инкапсулирует любую динамику шума из идентифицированной модели, такую как интегрирование в источнике нарушения порядка.
Затем можно создать контроллер MPC с помощью модели дополненного пространства состояний.
mpcObj = mpc(ss2);
Программное обеспечение конфигурирует Measured
входы как манипулируемые переменные и Noise
входы как неизмеренные нарушения порядка.
Можно также импортировать дополненную модель в MPC Designer.
mpcDesigner(ss2)
Чтобы просмотреть строение сигнала MPC, в MPC Designer, на вкладке MPC Designer, нажмите MPC Structure.
Диалоговое окно View MPC Structure показывает шумовые каналы как неизмеренные нарушения порядка.
Когда вы преобразовываете идентифицированную модель в модель дополненного пространства состояний, программное обеспечение System Identification Toolbox принимает, что источники шума являются дисперсией единиц Гауссова шума. Однако по умолчанию контроллеры MPC моделируют неизмеренные входные нарушения порядка как интегрированный Гауссов шум. При разработке контроллера можно:
Удалите интеграторы из модели входа возмущения, что упрощает работу контроллера. Используйте эту опцию, если экспериментальные идентификационные данные были собраны в условиях, которые тесно соответствуют ожидаемым условиям работы объекта. В этом случае модель дополненного пространства состояний инкапсулирует любую динамику шума от идентифицированной системы.
Сохраните модель интегрированного белого шума входа возмущения по умолчанию, которая приводит к более агрессивным подавлениям помех. Используйте эту опцию, если экспериментальные идентификационные данные были собраны в контролируемых условиях, которые могут не соответствовать ожидаемым условиям работы объекта. В этом случае контроллер компенсирует динамику шума, которую не инкапсулирует дополненная модель.
Примечание
При использовании MPC Designer можно настроить свойства подавления помех контроллера, настроив State Estimation ползунок. Для получения дополнительной информации см. Раздел «Настройка подавления помех».
Чтобы удалить интегратор из входного канала модели возмущения, сконфигурируйте этот канал как статический единичный коэффициент усиления. Для примера, чтобы удалить интеграторы из всех каналов входа модели возмущения, установите вход модель возмущения в статическую матрицу тождеств усиления. В командной строке MATLAB введите:
setindist(mpcObj,ss(eye(Nd)));
где Nd
количество неизмеренных нарушений порядка.
Чтобы установить модель возмущения для неизмеренного канала нарушения порядка в статическое единичное усиление с помощью MPC Designer:
На вкладке Tuning выберите Estimation Models > Input Disturbance Model.
В диалоговом окне Input Disturbance Model, в раскрывающемся списке Update the model, выберите specifying a custom model channel by channel
.
В таблице Specifications, в раскрывающемся списке Disturbance, выберите White Noise
.
Задайте Magnitude 1
.
Повторите шаги 3 и 4 для каждого неизмеренного нарушения порядка.
Чтобы применить изменения и обновить входную модель возмущения, нажмите OK или Apply.
Для получения дополнительной информации об изменении входной модели возмущения, смотрите Настроить нарушения порядка и шума.
Можно симулировать контроллер MPC с помощью дисперсии единиц Гауссов шумовых немеренных сигналов нарушения порядка, как принято программным обеспечением System Identification Toolbox. Этот сценарий эмулирует экспериментальные условия, при которых данные были собраны для идентификации.
Чтобы сконфигурировать неизмеренные сигналы нарушения порядка, создайте набор опций симуляции MPC для вашего контроллера, используя mpcsimopt
. В командной строке MATLAB введите:
opt = mpcsimopt(mpcObj);
Сконфигурируйте UnmeasuredDisturbance
использование опции randn
.
opt.UnmeasuredDisturbance = randn(T,Nd);
где T
количество шагов симуляции и Nd
количество неизмеренных нарушений порядка.
Симулируйте контроллер, используя этот набор опций и выхода опорного сигнала, outputRef
.
y = sim(mpcObj,T,outputRef,opt);
Чтобы сконфигурировать симуляцию в MPC Designer:
На вкладке Tuning, под Edit Scenario выберите сценарий симуляции, который необходимо изменить.
В диалоговом окне Simulation Scenario, в разделе Unmeasured Disturbances, под Signal, выберите Gaussian
.
Задайте Size 1
, что соответствует модулю отклонения.
Чтобы применить нарушение порядка от начала симуляции, задайте Time 0
.
Повторите шаги 2-4 для каждого неизмеренного канала нарушения порядка.
Чтобы применить изменения и обновить MPC Designer графиков отклика, нажмите OK или Apply.