Реализуйте контроллеры 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 для контроллеров Model Predictive Control Toolbox, смотрите Генерация кода и Развертывание Контроллера на целевых устройствах в реальном времени.

Решатель квадратичного программирования (QP) Embotech

Чтобы спроектировать и симулировать линейный инвариантный по времени контроллер 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 с помощью решателя QP-решателя Embotech FORCES PRO, выполните следующие шаги.

  1. Проектируйте линейный контроллер с помощью mpc объект.

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

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

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

    • Для решения разреженной задачи QP откройте браузер библиотеки Simulink, найдите блок FORCES MPC (Sparse 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. Можно выбрать использование решателя Interior-Point (IP) или решателя Sequential Quadratic Programming (SQP). Используйте IP- решателя, если ваша нелинейная задача MPC имеет длинный горизонт предсказания и большое количество ограничений.

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

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

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

  6. Моделируйте систему.

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

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

Примечание

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

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

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

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

Для примера использования блока FORCES Nonlinear MPC см. «Управление качанием маятника с использованием нелинейной модели прогнозирующего управления».

Похожие темы