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

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

  • В командной строке используйте 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.

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