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-го интервала управления состояние контроллера оценивается следующими шагами:

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

    • xc (k | k -1) - оценка состояния контроллера из предыдущих контрольных интервалов, k -1

    • uact(k -1) - Манипулируемая переменная (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