Реализация Контроллеры MPC, использующие Embotech, ОБЕСПЕЧИВАЕТ Pro Решатели

Можно использовать, ОБЕСПЕЧИВАЕТ Pro, встроенный программный инструмент оптимизации в реальном времени, разработанный Embotech AG, чтобы симулировать и сгенерировать код для линейных и нелинейных контроллеров MPC созданное с использованием программное обеспечение Model Predictive Control Toolbox™. Embotech обеспечивает плагин, который усиливает возможности проектирования программного обеспечения Model Predictive Control Toolbox, и вычислительная эффективность ОБЕСПЕЧИВАЕТ Pro. Используя плагин, можно сгенерировать пользовательские решатели, которые позволяют развертывание на оборудовании в реальном времени и которые высоко оптимизированы, на основе определенной проблемы MPC, чтобы достигнуть удовлетворительной эффективности в реальном времени.

Для получения дополнительной информации об использовании ОБЕСПЕЧИВАНИЯ Pro плагина MPC, смотрите ОБЕСПЕЧИВАНИЕ Pro Документации. Можно также использовать Силы Pro решатели для других приложений оптимизации и в MATLAB® и в Simulink®. Для получения дополнительной информации смотрите ОБЕСПЕЧИВАНИЕ Pro Сторонних Продуктов и услуг.

Для получения информации о генерации кода в MATLAB и Simulink для контроллеров Model Predictive Control Toolbox, смотрите, Генерируют Код и Развертывают Контроллер в Цели В реальном времени.

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

Спроектировать и симулировать линейный независимый от времени контроллер MPC (модель предсказания не изменяется во время выполнения) в MATLAB с помощью Embotech ОБЕСПЕЧИВАЮТ 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 ОБЕСПЕЧИВАЮТ Pro решатель решателя QP, выполните эти шаги.

  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 ОБЕСПЕЧИВАЕТ Pro документацию решателя QP.

Примечание

Используя QP Embotech ОБЕСПЕЧИВАЕТ Pro Решатель для Адаптивных контроллеров MPC, или контроллеры MPC с пользовательскими ограничениями не поддерживается.

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

Спроектировать и симулировать нелинейный контроллер MPC в MATLAB с помощью Embotech ОБЕСПЕЧИВАЮТ Pro решатель NLP, выполните эти шаги.

  1. Спроектируйте нелинейный контроллер, использующий nlmpc объект.

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

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

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

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

Спроектировать и симулировать нелинейный контроллер MPC в Simulink с помощью Embotech ОБЕСПЕЧИВАЮТ 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 как описано в разделе Code Generation in Simulink.

Примечание

Используя NLP Embotech ОБЕСПЕЧИВАЕТ Pro Решатель, только поддерживается, когда нелинейная проблема MPC удовлетворяет всем следующим условиям:

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

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

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

Для примера при использовании блока FORCES Nonlinear MPC смотрите Управление Swing Маятника Используя Нелинейное Прогнозирующее Управление Модели.

Похожие темы