exponenta event banner

setEstimator

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

Синтаксис

setEstimator(MPCobj,L,M)
setEstimator(MPCobj,'default')
setEstimator(MPCobj,'custom')

Описание

пример

setEstimator(MPCobj,L,M) устанавливает матрицы усиления, используемые для оценки состояний контроллера MPC. Смотрите уравнения Средства оценки состояния. Если L пуст, он принимает значение по умолчанию к L = A*M, где A является матрицей Грина, заданной в уравнениях Средства оценки состояния. Если M не использован или пуст, он принимает значение по умолчанию к нулевой матрице, и средство оценки состояния становится наблюдателем Luenberger.

setEstimator(MPCobj,'default') восстанавливает матрицы усиления L и M к их значениям по умолчанию. Значения по умолчанию являются оптимальными статическими усилениями, вычисленными функцией Control System Toolbox™ kalmd для объекта, воздействия и моделей шума измерения, заданных в MPCobj.

setEstimator(MPCobj,'custom') указывает, что оценка состояния контроллера будет выполняться предоставленной пользователями процедурой, а не уравнениями, описанными в уравнениях Средства оценки состояния. Эта опция подавляет вычисление L и M. Когда контроллер действует таким образом, процедура должна предоставить оценку состояния x[n|n] контроллеру в начале каждого интервала управления.

Примеры

свернуть все

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

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

G = tf({1,1,1},{[1 .5 1],[1 1],[.7 .5 1]});

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

old_status = mpcverbosity('off');

Создайте образцовый прогнозирующий контроллер для объекта. Задайте шаг расчета контроллера как 0,2 секунды.

MPCobj = mpc(G, 0.2);

Получите усиление средства оценки состояния по умолчанию.

[~,M,A1,Cm1] = getEstimator(MPCobj);

Вычислите полюса наблюдателя по умолчанию.

e = eig(A1-A1*M*Cm1);
abs(e)
ans = 6×1

    0.9402
    0.9402
    0.8816
    0.8816
    0.7430
    0.9020

Задайте более быстрые полюса наблюдателя.

new_poles = [.8 .75 .7 .85 .6 .81];

Вычислите матрицу усиления состояния, которая помещает полюса наблюдателя в new_poles.

L = place(A1',Cm1',new_poles)';

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

Получите усиление средства оценки из матрицы усиления состояния.

M = A1\L;

Задайте M как средство оценки для MPCobj.

setEstimator(MPCobj,L,M)

Пара, (A1,Cm1), описание полной реализации пространства состояний комбинации объекта и возмущений должно быть заметным для проекта оценки состояния, чтобы успешно выполниться. Наблюдаемость проверяется в программном обеспечении Model Predictive Control Toolbox на двух уровнях: (1) наблюдаемость модели объекта управления проверяется при конструкции объекта MPC, при условии, что модель объекта дана в форме пространства состояний; (2) наблюдаемость полной расширенной модели проверяется при инициализации объекта MPC, после того, как все модели были преобразованы в дискретное время, форму пространства состояний без задержек и объединены вместе.

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

mpcverbosity(old_status);

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

свернуть все

Контроллер MPC, заданный как контроллер MPC объект. Используйте команду mpc, чтобы создать контроллер MPC.

Матрица усиления Кальмана для обновления времени, заданного как матрица. Размерностями L является nx-by-nym, где nx является общим количеством состояний контроллера, и nym является количеством измеренных выходных параметров. Смотрите уравнения Средства оценки состояния.

Если L пуст, он принимает значение по умолчанию к L = A*M, где A является матрицей Грина, заданной в уравнениях Средства оценки состояния.

Матрица усиления Кальмана для обновления измерения, заданного как матрица. Размерностями L является nx-by-nym, где nx является общим количеством состояний контроллера, и nym является количеством измеренных выходных параметров. Смотрите уравнения Средства оценки состояния.

Если M не использован или пуст, он принимает значение по умолчанию к нулевой матрице, и средство оценки состояния становится наблюдателем Luenberger.

Больше о

свернуть все

Уравнения средства оценки состояния

Следующие уравнения описывают оценку состояния. Для получения дополнительной информации смотрите Оценку состояния Контроллера.

Выходная оценка: ym [n |n–1] = Cm x [n |n–1] + Dvm v [n].

Обновление измерения: x [n |n] = x [n |n–1] + M (ym [n] –ym [n |n–1]).

Обновление времени: x [n +1|n] = A x [n |n–1] + Bu u [n] + Bv v [n] + L (ym [n] – ym [n |n–1]).

Состояние средства оценки: x [n +1|n] = (AL Cm) x [n |n–1] + Bu u [n] + (BvL Dvm) v [n] + L ym [v]. Состояние средства оценки основано на текущем измерении ym [n] и v [n], а также действие оптимального управления u [n], вычисленный в текущем интервале управления.

Переменные в этих уравнениях получены в итоге в следующей таблице.

СимволОписание
x

Вектор состояния контроллера, длина nx. Это включает (в эту последовательность):

  • Оценки состояния модели объекта управления. Размерность, полученная преобразованием MPCobj.Model.Plant к дискретной форме пространства состояний LTI (при необходимости), сопровождаемая при помощи absorbDelay, чтобы преобразовать любые задержки с дополнительными состояниями.

  • Введите оценки состояния возмущения (если таковые имеются). Используйте команду getindist, чтобы рассмотреть входную структуру возмущения.

  • Выведите оценки состояния возмущения (если таковые имеются). Используйте команду getoutdist, чтобы рассмотреть выходную структуру возмущения.

  • Выведите состояния шума измерения (если таковые имеются), как задано MPCobj.Model.Noise.

Длина nx является суммой количества состояний в вышеупомянутых четырех категориях.

ymВектор измеренных выходных параметров или оценка их истинных значений, длина nym.
uВектор переменных, которыми управляют, длина nu.
vВектор измеренных входных воздействий, длина nv.
[j |k]Обозначает оценку состояния или вывода во время tj на основе доступных данных во время tk.
KОбозначает количество, известное во время tk, т.е. не оценка.
Anx-by-nx матрица Грина.
Bunx-by-nu матрица, сопоставляющая u с x.
Bvnx-by-nx матрица, сопоставляющая v с x.
Cmnym-by-nx матрица, сопоставляющая x с ym.
Dvmnym-by-nv матрица, сопоставляющая v с ym. Обратите внимание на то, что Dum = 0, потому что не может быть никакого прямого сквозного соединения ни между какой переменной, которой управляют, и любым измеренным выводом.
Lnx-by-nym матрица усиления Кальмана для обновления времени. (См. kalmd в документации Control System Toolbox.) Обратите внимание на то, что L = A *M минимизирует ожидаемую ошибку оценки состояния для большинства комбинаций объекта и возмущений, используемых в MPC, но это не верно в целом.
Mnx-by-nym матрица усиления Кальмана для обновления измерения. (См. kalmd в документации Control System Toolbox.)

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

| | |

Введенный в R2014b