exponenta event banner

Реализация контроллеров MPC с помощью решателей Embotech FORCES PRO

Вы можете использовать FORCES PRO, встроенное программное обеспечение оптимизации в реальном времени, разработанное Embotech AG, для моделирования и генерации кода для линейных и нелинейных контроллеров MPC, разработанных с помощью программного обеспечения Model Predictive Control Toolbox™. Embotech предоставляет плагин, который использует возможности проектирования программного обеспечения Model Predictive Control Toolbox и вычислительную производительность FORCES PRO. С помощью плагина вы можете создавать пользовательские решатели, которые позволяют развертывать на оборудовании реального времени и которые высоко оптимизированы, в зависимости от конкретной проблемы MPC, для достижения удовлетворительной производительности в реальном времени.

Дополнительные сведения об использовании подключаемого модуля FORCES PRO MPC см. в документации FORCES PRO. Также можно использовать решатели Forces PRO для других приложений оптимизации в MATLAB ® и Simulink ®. Дополнительные сведения см. в разделе Продукты и услуги сторонних производителей FORCES PRO.

Сведения о создании кода в MATLAB и Simulink для контроллеров панели управления моделями см. в разделе Создание кода и развертывание контроллера в целях реального времени.

Решатель Eembotech Quadratic Programming (QP)

Чтобы спроектировать и смоделировать линейный инвариантный по времени MPC-контроллер (модель прогнозирования не изменяется во время выполнения) в MATLAB с помощью решателя Embotech FORCES PRO QP, выполните следующие действия.

  1. Проектирование линейного контроллера с использованием mpc объект.

  2. Создание пользовательского объекта опции создания решателя с помощью mpcToForcesOptions со строковым входным аргументом, который является "sparse" (для создания разреженной проблемы QP), или "dense" (для создания плотной проблемы QP). Использовать "sparse" если проблема MPC имеет длинный горизонт прогнозирования и большое количество ограничений.

  3. Создание пользовательского решателя и связанных переменных, содержащих структуры для ядра, состояний и оперативных данных с помощью mpcToForces.

  4. При необходимости отрегулируйте состояния контроллера в переменных, содержащих структуру данных состояний, и укажите сигналы времени выполнения в переменной, содержащей оперативную структуру данных.

  5. Моделирование системы путем итерационного вызова mpcmoveFORCES. Для разреженных проблем QP файл MEX генерируется автоматически и используется для ускорения моделирования.

Можно также создать производственный код. Например, чтобы создать файл MEX из mpcmoveForces с плотной формулировкой QP, где переменные coredata, statedata, и onlinedata были созданы mpcToForces, можно использовать следующий код:

    % configure code generation to create a MATLAB executable
    cfg = coder.config('mex'); % or LIB, EXE, etc.
    cfg.ConstantInputs = 'IgnoreValues';

    % create an executable named myMPCmoveMex
    codegen('-config',cfg,'mpcmoveForces','-o','myMex',...
            '-args',{coder.Constant(coredata), statedata, onlinedata});

    % call the executable from the MATLAB command line
    [mv, statedata, info] = myMex(coredata, statedata, onlinedata)

Чтобы спроектировать и смоделировать линейный инвариантный по времени MPC-контроллер в Simulink с помощью решателя Embotech FORCES PRO QP, выполните следующие действия.

  1. Проектирование линейного контроллера с использованием mpc объект.

  2. Создание пользовательского объекта опции создания решателя с помощью mpcToForcesOptions со строковым входным аргументом, который является "sparse" (для создания разреженной проблемы QP), или "dense" (для создания плотной проблемы QP). Использовать "sparse" если проблема MPC имеет длинный горизонт прогнозирования и большое количество ограничений.

  3. Создание пользовательского решателя и связанных переменных, содержащих структуры для ядра, состояний и оперативных данных с помощью mpcToForces.

  4. Добавьте соответствующий блок в модель:

    • Для разреженной проблемы QP откройте браузер библиотеки Simulink, найдите блок FORCES MPC (Разреженный QP) в категории FORCES PRO MPC Blocks и добавьте его в модель.

    • Для решения проблемы плотного QP откройте браузер библиотеки Simulink, найдите блок MPC Controller в категории Model Predictive Control Toolbox и добавьте его в модель.

  5. Укажите переменные структуры в диалоговом окне блока:

    • Для разреженной задачи QP укажите переменные, содержащие структуры данных ядра и состояний.

    • Для плотной проблемы QP укажите mpc объект.

  6. Смоделировать систему.

  7. При необходимости создайте код непосредственно из модели или блока.

Дополнительные сведения см. в документации по решателю Embotech FORCES PRO QP.

Примечание

Использование решателя QP Embotech FORCES PRO для адаптивных MPC-контроллеров или MPC-контроллеров с пользовательскими ограничениями не поддерживается.

Решатель нелинейного программирования (NLP) Embotech

Чтобы спроектировать и смоделировать нелинейный MPC-контроллер в MATLAB с помощью решателя Embotech FORCES PRO NLP, выполните следующие действия.

  1. Разработка нелинейного контроллера с использованием nlmpc объект.

  2. Укажите пользовательские параметры генерации решателя с помощью nlmpcToForcesOptions. Можно использовать решатель внутренних точек (IP) или решатель последовательного квадратичного программирования (SQP). Используйте IP-решатель, если нелинейная проблема MPC имеет длинный горизонт прогнозирования и большое количество ограничений.

  3. Создание пользовательского решателя и связанных переменных, содержащих структуры для ядра, состояний и оперативных данных с помощью nlmpcToForces.

  4. Укажите текущие состояния контроллера, последнее управляющее действие и используйте переменную, содержащую оперативную структуру данных, для указания других сигналов времени выполнения.

  5. Моделирование системы путем итерационного вызова nlmpcmoveFORCES. Файл MEX автоматически генерируется из nlmpcmoveForces для ускорения моделирования в MATLAB.

Чтобы спроектировать и смоделировать нелинейный контроллер MPC в Simulink с помощью решателя Embotech FORCES PRO NLP, выполните следующие действия.

  1. Разработка нелинейного контроллера с использованием nlmpc объект.

  2. Укажите пользовательские параметры генерации решателя с помощью nlmpcToForcesOptions. Можно использовать решатель внутренних точек (IP) или решатель последовательного квадратичного программирования (SQP). Используйте IP-решатель, если нелинейная проблема MPC имеет длинный горизонт прогнозирования и большое количество ограничений.

  3. Создание пользовательского решателя и связанных переменных с помощью nlmpcToForces.

  4. Откройте браузер библиотеки Simulink, найдите блок FORCES Nonlinear MPC в категории FORCES PRO MPC Blocks и добавьте его в модель.

  5. В диалоговом окне блока укажите переменную, содержащую основную структуру данных.

  6. Смоделировать систему.

  7. При необходимости создайте код непосредственно из модели или блока.

Можно также создать код для модели Simulink, как описано в разделе Создание кода в Simulink.

Примечание

Использование NLP Embotech FORCES PRO Solver поддерживается только в том случае, если нелинейная задача MPC удовлетворяет всем следующим условиям:

  • Пользовательские функции затрат и ограничений не используются.

  • Функции состояния и вывода совместимы с генерацией кода MATLAB и CasADi.

  • Если нелинейный контроллер MPC использует несколько дополнительных параметров, необходимо сгруппировать их в один вектор столбца и установить Model.NumberOfParameters свойство контроллера 1.

Пример использования блока FORCES Nonlinear MPC см. в разделе Управление маятником с помощью предсказания нелинейной модели.

Связанные темы