Можно задать внутреннюю модель объекта управления образцового прогнозирующего контроллера, использующего линейную модель, идентифицированную при использовании программного обеспечения System Identification Toolbox™. Можно идентифицировать модель объекта управления и разработать контроллер MPC, в интерактивном режиме использующий приложения или программно в командной строке. Для получения дополнительной информации об идентификации моделей объекта управления смотрите, Идентифицируют Объект от Данных.
Этот пример показывает, как в интерактивном режиме разработать образцовый прогнозирующий контроллер, использующий идентифицированную модель объекта управления. Во-первых, оцените модель объекта управления от данных с помощью приложения 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
и определения опций OutputOffset
и InputOffset
.
Оцените второй порядок, линейная модель в пространстве состояний с помощью данных о вводе-выводе. Оцените модель дискретного времени путем определения шага расчета как 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.