Можно задать внутреннюю модель объекта управления прогнозирующего контроллера модели, использующего линейную модель, идентифицированную с помощью программного обеспечения 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
.
В диалоговом окне Import 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
.
В диалоговом окне 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. В диалоговом окне Define MPC Structure By Importing выберите ss1
из таблицы.
Нажмите Define and Import.
Совет
Можно также импортировать идентифицированную модель при открытии MPC Designer.
mpcDesigner(ss1)
Приложение преобразует идентифицированный объект в дискретное время, модель в пространстве состояний, при необходимости, и создает контроллер MPC по умолчанию, mpc1
, в котором:
Измеренный вход идентифицированного объекта является переменной, которой управляют.
Выходом идентифицированного объекта является измеренный выход.
По умолчанию диспетчер MPC отбрасывает неизмеренный шумовой компонент из вашей идентифицированной модели. Сконфигурировать шум образовывает канал как неизмеренные воздействия, необходимо сначала создать увеличенную модель в пространстве состояний из идентифицированной модели. Для получения дополнительной информации смотрите, Конфигурируют Шумовые Каналы как Неизмеренные Воздействия.
Примечание
Можно также импортировать идентифицированную линейную модель в существующий сеанс MPC Designer. В MPC Designer нажмите Import Plant. В диалоговом окне Import Plant Model выберите идентифицированную модель из таблицы.
Только идентифицированные модели с настройкой ввода-вывода, которая совместима с текущей структурой MPC, отображены в диалоговом окне Import Plant Model. Если текущая структура MPC включает неизмеренные воздействия, любые шумовые каналы из идентифицированной модели преобразованы в неизмеренные воздействия. В противном случае шумовые каналы отбрасываются.
Задайте Атрибуты ввода-вывода
Чтобы улучшать производительность контроллера и упростить контроллер, настраивающийся, задайте следующие атрибуты для каждого сигнала ввода и вывода:
ScaleFactor Масштабируйте каждый сигнал фактором, который аппроксимирует его промежуток, который является различием между его максимальными и минимальными значениями. Масштабирование упрощает настройку веса контроллера и улучшает числовое создание условий контроллера. Для получения дополнительной информации смотрите, Задают Масштабные коэффициенты.
Nominal Value — Примените смещение к каждому сигналу, который соответствует номинальным условиям работы, под которыми вы собрали идентификационные данные; это - смещения, удаленные путем удаления тренда данных. Определение номинальной стоимости размещает контроллер в той же рабочей точке как объект, который важен, когда объект является нелинейной системой.
В MPC Designer, на вкладке MPC Designer, нажимают I/O Attributes.
В диалоговом окне Input and Output Channel Specifications задайте 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.
Настройте контроллер
Прежде, чем настроить ваш контроллер, это - хорошая практика, чтобы задать шаг расчета контроллера, горизонт предсказания и горизонт управления. Поскольку вы идентифицировали модель объекта управления дискретного времени, контроллер автоматически выводит ее шаг расчета из идентифицированной модели. В данном примере используйте предсказание по умолчанию и управляйте горизонтами. Для получения дополнительной информации смотрите, Выбирают Sample Time и Horizons.
Чтобы сделать контроллер менее агрессивным, на вкладке 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.
Входной ответ теперь более консервативен. Компромиссы являются увеличенным перерегулированием и более длинным временем урегулирования.
Когда вы создаете контроллер MPC, использующий идентифицированную модель, программное обеспечение отбрасывает любые шумовые каналы из модели по умолчанию. Можно сконфигурировать шумовые каналы как неизмеренные воздействия путем увеличения идентифицированной модели.
Чтобы преобразовать шумовые каналы в неизмеренные воздействия, сначала преобразуйте идентифицированную модель, 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.