ss

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

Синтаксис

sys = ss(MPCobj)
sys = ss(MPCobj,signals)
sys = ss(MPCobj,signals,ref_preview,md_preview)
[sys,ut] = ss(MPCobj)

Описание

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

sys = ss(MPCobj) возвращает линейное дискретное время динамический контроллер sys.

x (k + 1) = A x (k) + B ym (k)

u (k) = C x (k) + D ym (k)

где ym является вектором измеренных выходных параметров объекта, и u является вектором переменных, которыми управляют. Время выборки контроллера sys MPCobj.Ts.

Примечание

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

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

Полная форма контроллера MPC имеет следующую структуру:

x (k + 1) = A x (k) + B ym (k) + Br r (k) + Bv v (k) + But utarget (k) + Boff

u (k) = C x (k) + D ym (k) + Dr r (k) + Dv v (k) + Dut utarget (k) + Doff

Здесь:

  • r является вектором заданных значений и для измеренного и для неизмеренного объекта выходные параметры

  • v является вектором измеренных воздействий.

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

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

  • 'r' — Выведите ссылки

  • 'v' — Измеренные воздействия

  • 'o' — Возместите условия

  • 't' — Введите цели

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

sys = ss(MPCobj,'rv');

В общем случае ненулевых смещений 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 прочь, D прочь нуль.

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

sys = ss(MPCobj,signals,ref_preview,md_preview) задает, есть ли у контроллера MPC действия предварительного просмотра со ссылкой и измеренными сигналами воздействия. Если флаг ref_preview = 'on', затем матрицы Br и Dr умножают целую ссылочную последовательность:

x (k + 1) = A x (k) + B ym (k) + Br [r (k); r (k + 1);...; r (k + p – 1)] +...

u (k) = C x (k) + D ym (k) + Dr [r (k); r (k + 1);...; r (k + p – 1)] +...

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

x (k + 1) = A x (k) +... + Bv [v (k); v (k + 1);...; v (k + p)] +...

u (k) = C x (k) +... + Dv [v (k); v (k + 1);...; v (k + p)] +...

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

ut возвращен, когда вектор удваивается, [utarget(k); utarget(k+1); ... utarget(k+h)].

Здесь:

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

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

Примеры

свернуть все

Чтобы улучшить ясность примера, подавите сообщения о работе с контроллером 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);

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

| | |

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