Рассмотрите образцовый прогнозирующий контроллер для проблем устойчивости и робастности

Можно рассмотреть образцовое прогнозирующее проектирование контроллера для потенциальной устойчивости и проблем робастности. Сделать так:

  • В командной строке используйте функцию review.

  • В MPC Designer, на вкладке Tuning, в разделе Analysis, нажимают Review Design.

В обоих случаях программное обеспечение генерирует отчет, который показывает результаты следующих тестов:

  • Создание объекта MPC — Тест, генерируют ли спецификации контроллера допустимый контроллер MPC. Если контроллер недопустим, дополнительные тесты не выполняются.

  • Матричная Валидность Гессиана QP — Тест, имеет ли проблема квадратичного программирования (QP) MPC для контроллера уникальное решение. Необходимо выбрать параметры функции стоимости (веса штрафа) и горизонты, таким образом, что матрица Гессиана QP является положительно-определенной.

  • Внутренняя Устойчивость с обратной связью — Извлечение матрица A от реализации пространства состояний неограниченного контроллера, и затем вычисляет свои собственные значения. Если абсолютное значение каждого собственного значения меньше чем или равно 1, и объект стабилен, то ваша система с обратной связью внутренне стабильна.

  • Номинальная Устойчивость с обратной связью — Извлечение матрица A от реализации пространства состояний дискретного времени системы с обратной связью; то есть, объект и контроллер, подключенный в настройке обратной связи. Затем вычислите собственные значения A. Если абсолютное значение каждого собственного значения меньше чем или равно 1, то номинальная (неограниченная) система стабильна.

  • Установившиеся Усиления с обратной связью — Тест, обеспечивает ли контроллер все управляемые выходные переменные к их целям в устойчивом состоянии в отсутствие ограничений.

  • Трудные Ограничения мВ — Тест, есть ли у контроллера трудные ограничения и на переменную, которой управляют, и на ее скорость изменения, и если так, могут ли эти ограничения конфликтовать во время выполнения.

  • Другие Трудные Ограничения — Тест, вывел ли контроллер трудно ограничения или трудно смешал ограничения ввода/вывода, и если так, могут ли эти ограничения стать невозможными удовлетворить во время выполнения.

  • Мягкие Ограничения — Тест, есть ли у контроллера соответствующий баланс трудных и мягких ограничений путем оценки ограничения параметры ECR.

  • Емкость памяти для Данных MPC — Оценка емкость памяти требуется контроллером во время выполнения.

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

Следующий пример показывает, как рассмотреть ваше проектирование контроллера в командной строке и обратиться к потенциальным проблемам проекта.

Модель объекта управления

Приложение в этом примере является топливным газом смешивающийся процесс. Цель состоит в том, чтобы смешать шесть газов, чтобы получить топливный газ, который затем записывается, чтобы обеспечить нагревание процесса. Топливный газ должен удовлетворить три стандарта качества для него, чтобы гореть надежно и с ожидаемым тепловыделением. Топливное давление заголовка газа должно также контролироваться. Таким образом существует четыре управляемых выходные переменные. Шесть переменных, которыми управляют, являются скоростями потока сырьевого газа.

Входные параметры объекта:

  1. Природный газ (NG)

  2. Преобразованный газ (RG)

  3. Водород (H2)

  4. Азот (N2)

  5. Газ хвоста 1 (T1)

  6. Газ хвоста 2 (T2)

Объект выходные параметры:

  1. Высокая теплота сгорания (HHV)

  2. Индекс Wobbe (WI)

  3. Индекс скорости пламени (FSI)

  4. Давление заголовка (P)

Для получения дополнительной информации о топливной задаче на составление смесей газа см. [1].

Используйте следующую линейную модель объекта управления в качестве модели прогноза для контроллера. Эта модель в пространстве состояний, применимая в типичной установившейся рабочей точке, использует часы единицы измерения времени.

A = diag([-28.6120 -28.6822 -28.5134  -0.0281 -23.2191 -23.4266 ...
          -22.9377  -0.0101 -26.4877 -26.7950 -27.2210  -0.0083 ...
          -23.0890 -23.0062 -22.9349  -0.0115 -25.8581 -25.6939 ...
          -27.0793  -0.0117 -22.8975 -22.8233 -21.1142  -0.0065]);
B = zeros(24,6);
B( 1: 4,1) = [4 4 8 32]';
B( 5: 8,2) = [2 2 4 32]';
B( 9:12,3) = [2 2 4 32]';
B(13:16,4) = [4 4 8 32]';
B(17:20,5) = [2 2 4 32]';
B(21:24,6) = [1 2 1 32]';
C = [diag([ 6.1510  7.6785 -5.9312 34.2689]) ...
     diag([-2.2158 -3.1204  2.6220 35.3561]) ...
     diag([-2.5223  1.1480  7.8136 35.0376]) ...
     diag([-3.3187 -7.6067 -6.2755 34.8720]) ...
     diag([-1.6583 -2.0249  2.5584 34.7881]) ...
     diag([-1.6807 -1.2217  1.0492 35.0297])];
D = zeros(4,6);
Plant = ss(A,B,C,D);

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

Plant.InputName = {'NG','RG','H2','N2','T1','T2'};

По умолчанию всем объектом выходные параметры являются измеренные выходные параметры.

Plant.OutputName = {'HHV','WI','FSI','P'};

Чтобы отразить задержки датчика, добавьте транспортные задержки с объектом выходные параметры.

Plant.OutputDelay = [0.00556  0.0167  0.00556  0];

Первоначальный проект контроллера

Создайте начальный образцовый прогнозирующий контроллер на основе конструктивных требований. Во-первых, для ясности, отключите сообщения командного окна MPC.

MPC_verbosity = mpcverbosity('off');

Создайте контроллер с a:

  • Шаг расчета, Ts, секунд 20, заданных в часах, который соответствует шагу расчета датчиков.

  • Горизонт прогноза, p, 39 управляют интервалами, который приблизительно равен времени установления объекта.

  • Управляйте горизонтом, m, который использует четыре блокированных перемещения с длинами 2, 6, 12 и интервалов управления 19.

Ts = 20/3600;
p = 39;
m = [2 6 12 19];
Obj = mpc(Plant,Ts,p,m);

Задайте выходное измерение шумовая и ненулевая номинальная рабочая точка для контроллера.

Obj.Model.Noise = ss(0.001*eye(4));
Obj.Model.Nominal.Y = [16.5 25 43.8 2100];
Obj.Model.Nominal.U = [1.4170 0 2 0 0 26.5829];

Задайте нижние и верхние границы для каждой переменной, которой управляют, (MV). Поскольку все переменные, которыми управляют, являются скоростями потока жидкости газовых потоков, их нижние границы являются нулем. По умолчанию все ограничения мВ трудны (MinECR = 0 и MaxECR = 0).

MVmin = zeros(1,6);
MVmax = [15 20 5 5 30 30];
for i = 1:6
    Obj.MV(i).Min = MVmin(i);
    Obj.MV(i).Max = MVmax(i);
end

Задайте нижние и верхние границы для переменного шага, которым управляют. Границы установлены достаточно большие, чтобы позволить полный спектр перемещения в одном интервале. По умолчанию все ограничения уровня мВ трудны (RateMinECR = 0 и RateMaxECR = 0).

for i = 1:6
    Obj.MV(i).RateMin = -MVmax(i);
    Obj.MV(i).RateMax =  MVmax(i);
end

Задайте нижние и верхние границы для каждой выходной переменной (OV) объекта. По умолчанию все ограничения OV являются мягкими (MinECR = 1 и MaxECR = 1).

OVmin = [16.5 25 39 2000];
OVmax = [18.0 27 46 2200];
for i = 1:4
    Obj.OV(i).Min = OVmin(i);
    Obj.OV(i).Max = OVmax(i);
end

Задайте настраивающиеся веса для переменных, которыми управляют. Веса мВ заданы на основе известных затрат на каждый поток канала. Выполнение так говорит контроллеру MPC, как переместить шесть переменных, которыми управляют, чтобы минимизировать стоимость газа топливной смеси. Веса нормированы таким образом, что максимальным весом является приблизительно 1.0.

Obj.Weights.MV = [54.9 20.5 0 5.73 0 0]/55;

Задайте настраивающиеся веса для переменного шага, которым управляют. Эти веса являются маленькими относительно максимального веса мВ так, чтобы MVS был свободен отличаться.

Obj.Weights.MVrate = 0.1*ones(1,6);

Задайте настраивающиеся веса для выходных переменных объекта. Веса OV штрафуют отклонения от заданных заданных значений и обычно были бы большими относительно других весов. В данном примере сначала рассмотрите значения по умолчанию, которые равняются максимальному весу мВ.

Obj.Weights.OV = [1,1,1,1];

Улучшите первоначальный проект

Рассмотрите первоначальный проект контроллера. Функция review генерирует и открывает отчет в окне веб-браузера.

review(Obj)

Сводные данные анализа перечисляют три предупреждения и одну ошибку. Рассмотрите предупреждения и ошибку по порядку. Нажмите QP Hessian Matrix Validity и прокрутите вниз к предупреждению, которое указывает, что значения сигнала объекта значительно отличаются. А именно, ответ давления намного больше, чем другие сигналы.

Промежутки OV, обозначенные заданными границами OV, очень отличаются, и промежуток давления является двумя порядками величины, больше, чем другие. Это - хорошая практика, чтобы составлять ожидаемые различия в значениях сигнала путем определения масштабных коэффициентов MPC. Начиная с MVS уже взвешиваются на основе относительной стоимости, задают масштабные коэффициенты только для OVs.

Вычислите промежутки OV.

OVspan = OVmax - OVmin;

Используйте эти промежутки в качестве масштабных коэффициентов.

for i = 1:4
    Obj.OV(i).ScaleFactor = OVspan(i);
end

Чтобы проверить, что установка выходных масштабных коэффициентов фиксирует предупреждение, рассмотрите обновленное проектирование контроллера.

review(Obj)

Следующее предупреждение указывает, что контроллер не управляет OVs к их целям в устойчивом состоянии. Чтобы видеть список ненулевых усилений, нажмите Closed-Loop Steady-State Gains.

Первая запись в списке показывает, что, добавляя длительное воздействие модульного значения к HHV вывод заставил бы HHV вывод отклонять приблизительно 0,0860 модуля от своей установившейся цели, приняв, что никакие ограничения не активны. Вторая запись показывает, что модульное воздействие в WI вызвало бы установившееся отклонение или сместило бы, приблизительно-0.0345 в HHV, и так далее.

С тех пор существует шесть MVS и только четыре OVs, избыточные степени свободы доступны. Поэтому вы можете ожидать, что у контроллера не будет установившихся смещений. Однако заданные ненулевые веса мВ, которые были выбраны, чтобы управлять объектом к самым экономичным условиям работы, вызывают ненулевые установившиеся смещения.

Ненулевые установившиеся смещения часто являются нежелательным, но приемлемы в этом приложении потому что:

  1. Главная цель состоит в том, чтобы минимизировать стоимость смешения. Качество газа (HHV, и так далее) может отличаться свободно в заданных пределах OV.

  2. Маленькие значения усиления смещения указывают, что влияние воздействий является маленьким.

  3. Пределы OV являются мягкими ограничениями. Маленькие, краткосрочные нарушения приемлемы.

Просмотрите второе предупреждение путем нажатия на Hard MV Constraints. Это предупреждение указывает на потенциальный конфликт в трудных ограничениях.

Если внешнее событие заставляет NG идти далеко ниже его заданного минимума, ограничение на его уровень увеличения может лишить возможности возвращать NG в границах в одном интервале управления. Другими словами, если бы вы задаете и MV.Min и MV.RateMax, контроллер не смог бы найти оптимальное решение, если новое значение мВ является меньше, чем (MV.Min - MV.RateMax). Точно так же существует потенциальный конфликт, когда вы задаете и MV.Max и MV.RateMin.

Ограничительный конфликт мВ был бы маловероятен в приложении смешивания газа. Однако это - хорошая практика, чтобы устранить возможность путем смягчения одного из этих двух ограничений. Начиная с мВ минимальные и максимальные значения являются физическими пределами, и инкрементные границы не являются, смягчают инкрементные границы.

for i = 1:6
    Obj.MV(i).RateMinECR = 0.1;
    Obj.MV(i).RateMaxECR = 0.1;
end

Рассмотрите обновленное проектирование контроллера.

review(Obj)

Ограничительный конфликт мВ, предупреждающий, фиксируется.

Чтобы просмотреть сообщение об ошибке, нажмите Soft Constraints.

Задержка WI вывод лишает возможности удовлетворять границы на той переменной в первых трех интервалах управления. Границы WI являются мягкими, но это - плохая практика, чтобы включать недосягаемые ограничения в проект. Поэтому измените связанные спецификации WI, таким образом, что это неограничено до четвертого шага горизонта прогноза.

Obj.OV(2).Min = [-Inf(1,3) OVmin(2)];
Obj.OV(2).Max = [ Inf(1,3) OVmax(2)];

Повторное выполнение команды анализа проверяет, что это изменение устраняет сообщение об ошибке, как показано на следующем шаге.

Оцените влияние нулевых Выходных весов

Учитывая, что конструктивные требования позволяют OVs отличаться свободно в их пределах, рассмотрите удаление их весов штрафа.

Obj.Weights.OV = zeros(1,4);

Рассмотрите влияние этого конструктивного изменения.

review(Obj)

Существует новое предупреждение относительно матричной валидности Гессиана QP. Чтобы видеть детали предупреждения, нажмите QP Hessian Matrix Validity.

Анализ отмечает нулевые веса на всех четырех выходных переменных. Поскольку нулевые веса сопоставимы с конструктивными требованиями, и другие тесты Гессиана указывают, что проблема квадратичного программирования имеет уникальное решение, это предупреждение может быть проигнорировано. Чтобы видеть второе новое предупреждение, нажмите Closed-Loop Steady-State Gains. Предупреждение показывает другое последствие обнуления четырех весов OV. Когда OV не оштрафован весом, контроллер игнорирует любое выходное воздействие, добавленное к OV, и передает воздействие через без затухания.

Поскольку это - конструктивные требования, ненулевые установившиеся смещения приемлемы, пока контроллер может содержать весь OVs в их заданных границах. Поэтому это - хорошая идея исследовать, как легко мягкие ограничения OV могут быть нарушены, когда воздействия присутствуют.

Рассмотрите мягкие ограничения

Чтобы видеть список мягких ограничений, нажмите Soft Constraints. В этом примере мягкие ограничения являются верхней и нижней границей на каждом OV.

Столбец Фактора Влияния показывает, что использование MinECR по умолчанию и значений MaxECR дает давление (P) намного более высокий приоритет, чем другой OVs. Чтобы сделать приоритеты более сопоставимыми, увеличьте ограничение давления значения ECR и настройте другие также. Например:

Obj.OV(1).MinECR = 0.5;
Obj.OV(1).MaxECR = 0.5;
Obj.OV(3).MinECR = 3;
Obj.OV(3).MaxECR = 3;
Obj.OV(4).MinECR = 80;
Obj.OV(4).MaxECR = 80;

Рассмотрите влияние этого конструктивного изменения.

review(Obj)

В столбце Отношения Чувствительности все отношения чувствительности являются теперь меньше, чем единица, что означает, что мягкие ограничения получают меньше внимания, чем другие условия в целевой функции MPC, такие как отклонения MVS от их целевых значений. Поэтому вероятно, что выходное ограничительное нарушение произошло бы.

Чтобы отдать выходным ограничениям более высокий приоритет, чем другие цели MPC, увеличьте параметр Weights.ECR со значения по умолчанию, 1e5, к более высокому значению, которое укрепляет все мягкие ограничения OV.

Obj.Weights.ECR = 1e8;

Рассмотрите влияние этого конструктивного изменения.

review(Obj)

Контроллер теперь более чувствителен, чтобы вывести ограничительные нарушения, чем к ошибкам в целевом отслеживании фактором 100.

Рассмотрите размер памяти данных

Чтобы видеть предполагаемую емкость памяти, требуемую сохранить матрицы данных MPC, используемые на оборудовании, нажмите Memory Size for MPC Data.

В этом примере, если контроллер запускает одинарную точность использования, она требует, чтобы 250 Кбайт памяти сохранили ее матрицы. Если емкость памяти контроллера превышает память, доступную в целевой системе, перепроектируйте контроллер, чтобы уменьшать ее требования к памяти. Также увеличьте память, доступную в целевой системе.

Восстановите уровень многословия MPC и закройте веб-браузер.

mpcverbosity(MPC_verbosity);
[~,hWebBrowser] = web;
close(hWebBrowser)

Ссылки

[1] Мюллер К. Дж., я. К. Крэйг и Н. Л. Рикер. "Моделируя, валидация и управление промышленного топливного газа смешивающаяся система". Журнал Управления процессом. Издание 21, Номер 6, 2011, стр 852-860.

Смотрите также