ss

Преобразуйте контроллер MPC без ограничений в форму линейной системы пространства состояний

Описание

Используйте Model Predictive Control Toolbox™ ss функция для преобразования контроллера MPC без ограничений в форму передаточной функции (см. mpc для фона). Возвращенный контроллер эквивалентен исходному контроллеру MPC MPCobj когда никакие ограничения не активны. Затем можно использовать программное обеспечение Control System Toolbox™ для анализа чувствительности и других диагностических вычислений.

Чтобы создать или преобразовать типовую динамическую систему LTI в форму пространства состояний, смотрите ss и динамические системные модели.

пример

kss = ss(MPCobj) возвращает линейный динамический контроллер в дискретном времени kss, в форме пространство состояний. kss эквивалентно контроллеру MPC MPCobj когда никакое ограничение не активно.

kssFull = ss(MPCobj,signals) возвращает линейный динамический контроллер в дискретном времени kss, в форме полное пространство состояний, и позволяет вам задать сигналы, которые вы хотите включить в качестве входов для kssFull.

kssFullPv = ss(MPCobj,signals,refPreview,mdPreview) определяет, имеет ли возвращенный контроллер действие предварительного просмотра, то есть использует ли он в качестве входных сигналов целую ссылку и измеренные последовательности нарушения порядка.

[kss,ut] = ss(MPCobj) также возвращает входные целевые значения для полной формы контроллера.

Примеры

свернуть все

Чтобы улучшить ясность примера, подавьте сообщения о работе с контроллером MPC.

old_status = mpcverbosity('off');

Создайте модель объекта управления.

G = rss(5,2,3);
G.D = 0;
G = setmpcsignals(G,'mv',1,'md',2,'ud',3,'mo',1,'uo',2);

Сконфигурируйте контроллер MPC с ненулевыми номинальными значениями, весами и входными целями.

C = mpc(G,0.1);
C.Model.Nominal.U = [0.7 0.8 0];
C.Model.Nominal.Y = [0.5 0.6];
C.Model.Nominal.DX = rand(5,1); 
C.Weights.MV = 2;
C.Weights.OV = [3 4];
C.MV.Target = [0.1 0.2 0.3];

C является контроллером MPC без ограничений. Определение C.Model.Nominal.DX как ненулевое означает, что номинальные значения не находятся в установившемся состоянии. C.MV.Target задает три шага предварительного просмотра.

Преобразование C в модель пространства состояний.

sys = ss(C);

Выход, sys, является моделью SISO седьмого порядка в пространстве состояний. Семь состояний включают пять состояний модели объекта управления, одно состояние от модели входного возмущения по умолчанию и одно состояние от предыдущего перемещения u(k-1).

Восстановление mpcverbosity.

mpcverbosity(old_status);

Входные параметры

свернуть все

Моделируйте прогнозирующий контроллер, заданный как объект контроллера MPC. Чтобы создать контроллер MPC, используйте mpc.

Задайте signals как вектор символов или строка с любой комбинацией, содержащей один или несколько из следующих символов:

  • 'r' - Выходные ссылки

  • 'v' - Измеренные нарушения порядка

  • 'o' - Условия смещения

  • 't' - Входные цели

Для примера получить контроллер, который отображает [ym; r; v], чтобы u, используйте:

kss = ss(MPCobj,'rv');

Пример: 'r'

Если этот флаг 'on'тогда входные матрицы возвращенного контроллера имеют больший размер, чтобы умножить всю эталонную последовательность.

Пример: 'on'

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

Пример: 'on'

Выходные аргументы

свернуть все

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

x (k + 1) = <reservedrangesplaceholder5> <reservedrangesplaceholder4> (<reservedrangesplaceholder3>) + <reservedrangesplaceholder2> <reservedrangesplaceholder1> (<reservedrangesplaceholder0>)

u (<reservedrangesplaceholder6>) = <reservedrangesplaceholder5> <reservedrangesplaceholder4> (<reservedrangesplaceholder3>) + <reservedrangesplaceholder2> <reservedrangesplaceholder1> (<reservedrangesplaceholder0>)

где A, B, C и D являются матрицами, образующими реализацию контроллера в пространстве состояний kssym является вектором измеренных выходов объекта управления, а u - вектором манипулируемых переменных. Время дискретизации контроллера kss является MPCobj.Ts.

Примечание

Вектор x включает состояния наблюдателя (состояние модели объекта + нарушение порядка + шум) и предыдущей манипулированной переменной u (k -1).

Примечание

Только следующие поля MPCobj используются при вычислении модели пространства состояний: Model, PredictionHorizon, ControlHorizon, Ts, Weights.

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

x (k + 1) = <reservedrangesplaceholder15> <reservedrangesplaceholder14> (<reservedrangesplaceholder13>) + <reservedrangesplaceholder12> <reservedrangesplaceholder11> (<reservedrangesplaceholder10>) + <reservedrangesplaceholder9> <reservedrangesplaceholder8> (<reservedrangesplaceholder7>) + <reservedrangesplaceholder6> <reservedrangesplaceholder5> (<reservedrangesplaceholder4>) + <reservedrangesplaceholder3> <reservedrangesplaceholder2> (<reservedrangesplaceholder1>) + Boff

u (<reservedrangesplaceholder16>) = <reservedrangesplaceholder15> <reservedrangesplaceholder14> (<reservedrangesplaceholder13>) + <reservedrangesplaceholder12> <reservedrangesplaceholder11> (<reservedrangesplaceholder10>) + <reservedrangesplaceholder9> <reservedrangesplaceholder8> (<reservedrangesplaceholder7>) + <reservedrangesplaceholder6> <reservedrangesplaceholder5> (<reservedrangesplaceholder4>) + <reservedrangesplaceholder3> <reservedrangesplaceholder2> (<reservedrangesplaceholder1>) + Doff

Здесь:

  • A, B, C и D являются матрицами, образующими реализацию контроллера в пространстве состояний от измеренного выхода объекта до манипулированных переменных

  • r - вектор уставок для измеренных и не измеренных выходов объекта

  • v - вектор измеренных нарушений порядка.

  • utarget - вектор предпочтительных значений для манипулируемых переменных.

В общем случае ненулевых смещений y m, r, v и u должны интерпретироваться как различие между вектором и соответствующим смещением. Смещения могут быть ненулевыми MPCobj.Model.Nominal.Y или MPCobj.Model.Nominal.U ненулевые.

Векторы Boff и Doff являются постоянными терминами. Они ненулевые тогда и только тогда, когда MPCobj.Model.Nominal.DX является ненулевым (модели предсказания в непрерывном времени), или MPCobj.Model.Nominal.Dx- MPCobj.Model.Nominal.X ненулевое (модели предсказания в дискретном времени). Другими словами, когда Nominal.X представляет равновесное состояние, B off, D off равны нулю.

Если флаг refPreview = 'on', затем матрицы Br и Dr умножить всю эталонную последовательность:

x (k + 1) = <reservedrangesplaceholder13> <reservedrangesplaceholder12> (<reservedrangesplaceholder11>) + <reservedrangesplaceholder10> <reservedrangesplaceholder9> (<reservedrangesplaceholder8>) + <reservedrangesplaceholder7>[<reservedrangesplaceholder6>(<reservedrangesplaceholder5>);<reservedrangesplaceholder4>(<reservedrangesplaceholder3> + 1);...; r (k + p – 1)] +...

u (<reservedrangesplaceholder14>) = <reservedrangesplaceholder13> <reservedrangesplaceholder12> (<reservedrangesplaceholder11>) + <reservedrangesplaceholder10> <reservedrangesplaceholder9> (<reservedrangesplaceholder8>) + <reservedrangesplaceholder7>[<reservedrangesplaceholder6>(<reservedrangesplaceholder5>);<reservedrangesplaceholder4>(<reservedrangesplaceholder3> + 1);...; r (k + p – 1)] +...

Точно так же, если флаг mdPreview='on'затем матрицы Bv и Dv умножают всю измеренную последовательность нарушения порядка:

x (k + 1) = <reservedrangesplaceholder10> <reservedrangesplaceholder9> (<reservedrangesplaceholder8>) +... + <reservedrangesplaceholder7>[<reservedrangesplaceholder6>(<reservedrangesplaceholder5>);<reservedrangesplaceholder4>(<reservedrangesplaceholder3> + 1);...; v (k + p)] +...

u (<reservedrangesplaceholder11>) = <reservedrangesplaceholder10> <reservedrangesplaceholder9> (<reservedrangesplaceholder8>) +... + <reservedrangesplaceholder7>[<reservedrangesplaceholder6>(<reservedrangesplaceholder5>);<reservedrangesplaceholder4>(<reservedrangesplaceholder3> + 1);...; v (k + p)] +...

ut возвращается как вектор двойных чисел, [utarget(k); utarget(k+1); ... utarget(k+h)].

Здесь:

  • h - Максимальная длина предварительно просмотренных входов; то есть h = max(length(MPCobj.ManipulatedVariables(:).Target))

  • utarget - различие между входной целью и соответствующими входными смещениями; то есть MPCobj.ManipulatedVariables(:).Targets - MPCobj.Model.Nominal.U

Представлено до R2006a