Можно просмотреть прогнозирующее проектирование контроллера модели на потенциальные проблемы устойчивости и робастности. Для этого:
В командной строке используйте review
функция.
В MPC Designer, на вкладке Tuning, в разделе Analysis, нажмите Review Design.
В обоих случаях программное обеспечение генерирует отчет, в котором показаны результаты следующих тестов:
Создание объектов MPC - Проверьте, генерируют ли спецификации контроллера допустимый контроллер MPC. Если контроллер недействителен, дополнительные тесты не выполняются.
QP Hessian Matrix Validity - Проверяйте, имеет ли задача квадратичного программирования (QP) MPC для контроллера уникальное решение. Необходимо выбрать параметры функции затрат (веса штрафов) и горизонты так, чтобы QP Hessian матрица была положительно-определена.
Внутренняя стабильность в системе с обратной связью - извлечение A
матрица из реализации в пространстве состояний контроллера без ограничений, а затем вычисляет ее собственные значения. Если абсолютное значение каждого собственного значения меньше или равно 1
и объект стабилен, тогда ваша система обратной связи внутренне стабильна.
Номинальная стабильность в системе с обратной связью - извлечение A
матрица из реализации пространства состояний в дискретном времени системы с обратной связью; то есть объект и контроллер подключены в строении обратной связи. Затем вычислите собственные значения A
. Если абсолютное значение каждого собственного значения меньше или равно 1
, тогда номинальная (без ограничений) система стабильна.
Установившиеся Усиления Замкнутой Системы - Тест, заставляет ли контроллер все управляемые выходные переменные к своим целям в установившемся состоянии в отсутствие ограничений.
Жесткие ограничения MV - проверяйте, имеет ли контроллер жесткие ограничения как на манипулируемую переменную, так и на ее скорость изменения, и, если да, могут ли эти ограничения конфликтовать во время исполнения.
Другие жесткие ограничения - проверяйте, имеет ли контроллер жесткие выходные ограничения или жесткие смешанные входные/выходные ограничения, и, если да, могут ли эти ограничения стать невозможными для удовлетворения во время исполнения.
Мягкие ограничения - проверяйте, имеет ли контроллер правильный баланс жестких и мягких ограничений, путем оценки ограничительных параметров ECR.
Размер памяти для данных MPC - оцените размер памяти, требуемый контроллером во время выполнения.
Можно также программно оценить проектирование контроллера, используя review
функция. В этом случае результаты проверки прохождения/непрохождения возвращаются как структура, и отчет о проверке подавляется.
В следующем примере показано, как просмотреть проектирование контроллера в командной строке и решить потенциальные проблемы проекта.
Применение в этом примере представляет собой процесс смешения топливного газа. Целью является смешивание шести газов с получением топливного газа, который затем сжигается для обеспечения технологического нагрева. Топливный газ должен удовлетворять трем стандартам качества, порядка чтобы он горел надежно и с ожидаемого теплового выхода. Давление коллектора топливного газа также должно контролироваться. Таким образом, существует четыре управляемые выходные переменные. Шесть манипулируемых переменных являются скорости потока жидкости сырьевого газа.
Входные входы объекта:
Природный газ (NG
)
Реформированный газ (RG
)
Водород (H2
)
Азот (N2
)
Хвостовой газ 1 (T1
)
Хвостовой газ 2 (T2
)
Выходные выходы объекта:
Высокое значение нагрева (HHV
)
Индекс Воббе (WI
)
Индекс скорости пламени (FSI
)
Давление в коллекторе (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');
Создайте контроллер с:
Шаг расчета, 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;
Задайте веса настройки для управляемых шагов переменной. Эти веса малы относительно максимального веса MV, так что MV свободно изменяются.
Obj.Weights.MVrate = 0.1*ones(1,6);
Задайте веса настройки для выходных переменных объекта управления. Веса OV штрафуют отклонения от заданных уставок и обычно являются большими по сравнению с другими весами. В данном примере сначала рассмотрим значения по умолчанию, которые равны максимальному весу MV.
Obj.Weights.OV = [1,1,1,1];
Проверьте первоначальный проект контроллера. The review
функция генерирует и открывает отчет в окне Web Browser.
review(Obj)
В сводных данных проверки перечислены три предупреждения и одна ошибка. Просмотрите предупреждения и ошибку в порядке. Нажмите QP Hessian Matrix Validity и прокрутите вниз до предупреждения, которое указывает, что величины сигнала объекта значительно различаются. В частности, реакция давления намного больше, чем другие сигналы.
Диапазоны OV, обозначенные заданными границами OV, довольно различны, и диапазон давления на два порядка величины больше других. Это обеспечивает учет ожидаемых различий в величинах сигналов путем определения масштабных коэффициентов MPC. Поскольку MV уже взвешены на основе относительных затрат, укажите масштабные коэффициенты только для OV.
Вычисление диапазонов OV.
OVspan = OVmax - OVmin;
Используйте эти диапазоны как масштабные коэффициенты.
for i = 1:4 Obj.OV(i).ScaleFactor = OVspan(i); end
Чтобы убедиться, что установка выходных масштабных коэффициентов исправляет предупреждение, проверьте обновлённое проектирование контроллера.
review(Obj)
Следующее предупреждение указывает, что контроллер не управляет OV к своим целям в установившемся состоянии. Чтобы просмотреть список ненулевых коэффициентов усиления, щелкните Замкнутый контур Статические коэффициенты усиления.
Первая запись в списке показывает, что добавление устойчивого нарушения порядка модуля величины к HHV
выход приведет к HHV
выход, чтобы отклонить около 0,0860 модули от своей установившейся цели, принимая, что никакие ограничения не активны. Вторая запись показывает, что модуль нарушения порядка в WI
приведет к установившемуся отклонению или смещению приблизительно -0.0345 в HHV
и так далее.
Поскольку существует шесть MV и только четыре OV, доступны избыточные степени свободы. Поэтому можно ожидать, что контроллер не будет иметь статических смещений. Однако указанные ненулевые веса СН, которые были выбраны для приведения объекта к наиболее экономичным рабочим условиям, вызывают ненулевые смещения в установившемся состоянии.
Ненулевые смещения в установившемся состоянии часто нежелательны, но приемлемы в этой заявке, потому что:
Основной целью является минимизация стоимости смеси. Качество газа (HHV
, и так далее) может свободно изменяться в пределах заданных значений OV.
Малые величины усиления смещения указывают, что влияние нарушений порядка невелико.
Пределы OV являются мягкими ограничениями. Малые краткосрочные нарушения приемлемы.
Чтобы просмотреть второе предупреждение, щелкните Жесткие ограничения СН. Это предупреждение указывает на потенциальный конфликт жестких ограничений.
Если внешнее событие вызывает NG
чтобы опуститься намного ниже заданного минимума, ограничение на скорость его увеличения может сделать невозможным возврат NG
в пределах одного контрольного интервала. Другими словами, если вы задаете оба MV.Min
и MV.RateMax
контроллер не сможет найти оптимальное решение, если самое последнее значение СН меньше (MV.Min
- MV.RateMax
). Точно так же существует потенциальный конфликт, когда вы задаете оба MV.Max
и MV.RateMin
.
Конфликт ограничений СН будет маловероятен в применении смешивания газа. Однако рекомендуется исключить эту возможность путем смягчения одного из двух ограничений. Поскольку минимальное и максимальное значения MV являются физическими пределами, а ограничения, накладываемые на шаг, не являются, смягчите ограничения, накладываемые на шаг.
for i = 1:6 Obj.MV(i).RateMinECR = 0.1; Obj.MV(i).RateMaxECR = 0.1; end
Проверьте обновлённое проектирование контроллера.
review(Obj)
Предупреждение о конфликте ограничений СН исправлено.
Чтобы просмотреть сообщение об ошибке, щелкните Мягкие ограничения (Soft Constraints).
Задержка в WI
выход делает невозможным удовлетворение ограничений для этой переменной в течение первых трёх контрольных интервалов. The WI
ограничения являются мягкими, но это плохая практика, чтобы включить недостижимые ограничения в проект. Поэтому измените WI
привязанные спецификации, такие что это без ограничений до четвертого шага горизонта предсказания.
Obj.OV(2).Min = [-Inf(1,3) OVmin(2)]; Obj.OV(2).Max = [ Inf(1,3) OVmax(2)];
Повторный запуск команды review проверяет, что это изменение устраняет сообщение об ошибке, как показано на следующем шаге.
Учитывая, что требования проекта позволяют OV свободно изменяться в пределах своих пределов, рассмотрите возможность удаления их весов штрафов.
Obj.Weights.OV = zeros(1,4);
Проверьте влияние этого изменения проекта.
review(Obj)
Существует новое предупреждение относительно валидности матрицы Гессия QP. Чтобы просмотреть сведения о предупреждении, нажмите QP Hessian Matrix Validity.
Обзор помечает нулевые веса для всех четырех выходных переменных. Поскольку нулевые веса согласуются с требованиями проекта, а другие тесты Гесси показывают, что квадратичная задача программирования имеет уникальное решение, это предупреждение может быть проигнорировано. Чтобы увидеть второе новое предупреждение, нажмите Closed-Loop Steady-Stated Gains. Предупреждение показывает другое следствие установки четырех весов OV на нуль. Когда OV не наказывается весом, контроллер игнорирует любое выходное нарушение порядка, добавленное к OV, и пропускает нарушение порядка без ослабления.
Поскольку это требование проекта, ненулевые смещения в установившемся состоянии приемлемы, пока контроллер способен удерживать все OV в пределах их заданных границ. Поэтому рекомендуется изучить, насколько легко мягкие OV ограничения могут быть нарушены, когда присутствуют возмущения.
Чтобы просмотреть список мягких ограничений, щелкните Мягкие ограничения (Soft Constraints). В этом примере мягкие ограничения являются верхней и нижней границами каждого OV.
Столбец «Коэффициент Влияния» показывает, что используется значение по умолчанию MinECR
и MaxECR
значения дают давление (P
) намного более высокий приоритет, чем другие OV. Чтобы сделать приоритеты более сопоставимыми, увеличьте значения 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, такие как отклонения MV от их целевых значений. Поэтому вполне вероятно, что произойдет выход нарушения ограничений.
Чтобы придать ограничениям выхода более высокий приоритет, чем другим целям MPC, увеличьте Weights.ECR
параметр от значения по умолчанию, 1e5
, к более высокому значению, которое затвердевает все мягкие OV-ограничения.
Obj.Weights.ECR = 1e8;
Проверьте влияние этого изменения проекта.
review(Obj)
Теперь контроллер более чувствителен к нарушениям выходных ограничений, чем к ошибкам в отслеживании цели в множителе 100
.
Чтобы увидеть предполагаемый размер памяти, необходимый для хранения матриц данных MPC, используемых на оборудовании, щелкните Размер памяти для данных MPC.
В этом примере, если контроллер работает с одинарной точностью, ему требуется 250 КБ памяти для хранения его матриц. Если размер памяти контроллера превышает объем памяти, доступной в целевой системе, измените дизайн контроллера, чтобы уменьшить требования к памяти. Также увеличьте память, доступную в целевой системе.
Восстановите уровень подробностей MPC.
mpcverbosity(MPC_verbosity);
[1] Muller C. J., I. K. Craig, and N. L. Ricker. «Моделирование, валидация и управление промышленной системой смешения топливного газа». Журнал управления процессами. Том 21, № 6, 2011, стр. 852-860.