setEstimator

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

Описание

пример

setEstimator(MPCobj,L,M) устанавливает матрицы усиления, используемые в оценке состояний контроллера MPC. Для получения дополнительной информации смотрите уравнения Средства оценки состояния.

setEstimator(MPCobj,'default') восстанавливает матрицы усиления L и M к их значениям по умолчанию. Значениями по умолчанию являются оптимальные статические усиления, вычисленные с помощью 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.

Алгоритмы

свернуть все

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

В общем случае состояния контроллера не измерены и должны быть оценены. По умолчанию диспетчер использует установившийся Фильтр Калмана, который выводит от наблюдателя состояния. Для получения дополнительной информации смотрите Оценку состояния Контроллера.

В начале k th контрольный интервал, состояние контроллера оценивается со следующими шагами:

  1. Получите следующие данные:

    • xc (k |k–1) — Контроллер утверждает оценку от предыдущего контрольного интервала, k –1

    • uact (k –1) — Переменная Manipulated (MV), на самом деле используемая на объекте от k –1 к k (принял постоянный),

    • uopt (k –1) — Оптимальный мВ, рекомендуемый MPC и принятый, чтобы использоваться на объекте от k –1 к k

    • v (k) — Текущие измеренные воздействия

    • ym (k) — Текущий измеренный объект выходные параметры

    • Bu, Bv — Столбцы параметра наблюдателя B, соответствующий u (k) и v (k) входные параметры

    • Cm — Строки параметра наблюдателя C соответствие измеренному объекту выходные параметры

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

    • L, M — Матрицы усиления Константа Кальмана

    Сигналы ввода и вывода объекта масштабируются, чтобы быть безразмерными до использования в вычислениях.

  2. Пересмотрите xc (k |k–1), когда uact (k –1) и uopt (k –1) будет отличаться.

    xcrev(k|k1)=xc(k|k1)+Bu[uact(k1)uopt(k1)]

  3. Вычислите инновации.

    e(k)=ym(k)[Cmxcrev(k|k1)+Dmvv(k)]

  4. Обновите оценку состояния контроллера, чтобы составлять последние измерения.

    xc(k|k)=xcrev(k|k1)+Me(k)

    Затем программное обеспечение использует оценку текущего состояния xc (k |k), чтобы решить квадратичную программу в интервале k. Решением является uopt (k), рекомендуемое MPC управляемое значение переменных, которое будет использоваться между контрольными интервалами k и k +1.

    Наконец, программное обеспечение готовится к следующему контрольному интервалу, принимающему, что неизвестные входные параметры, wid (k), wod (k) и wn (k) принимают свое среднее значение (нуль) между временами k и k +1. Программное обеспечение предсказывает удар известных входных параметров и инноваций можно следующим образом:

    xc(k+1|k)=Axcrev(k|k1)+Buuopt(k)+Bvv(k)+Le(k)

Введенный в R2014b