Вы можете использовать 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 для контроллеров панели управления моделями см. в разделе Создание кода и развертывание контроллера в целях реального времени.
Чтобы спроектировать и смоделировать линейный инвариантный по времени MPC-контроллер (модель прогнозирования не изменяется во время выполнения) в MATLAB с помощью решателя Embotech FORCES PRO QP, выполните следующие действия.
Проектирование линейного контроллера с использованием mpc объект.
Создание пользовательского объекта опции создания решателя с помощью mpcToForcesOptions со строковым входным аргументом, который является "sparse" (для создания разреженной проблемы QP), или "dense" (для создания плотной проблемы QP). Использовать "sparse" если проблема MPC имеет длинный горизонт прогнозирования и большое количество ограничений.
Создание пользовательского решателя и связанных переменных, содержащих структуры для ядра, состояний и оперативных данных с помощью mpcToForces.
При необходимости отрегулируйте состояния контроллера в переменных, содержащих структуру данных состояний, и укажите сигналы времени выполнения в переменной, содержащей оперативную структуру данных.
Моделирование системы путем итерационного вызова 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, выполните следующие действия.
Проектирование линейного контроллера с использованием mpc объект.
Создание пользовательского объекта опции создания решателя с помощью mpcToForcesOptions со строковым входным аргументом, который является "sparse" (для создания разреженной проблемы QP), или "dense" (для создания плотной проблемы QP). Использовать "sparse" если проблема MPC имеет длинный горизонт прогнозирования и большое количество ограничений.
Создание пользовательского решателя и связанных переменных, содержащих структуры для ядра, состояний и оперативных данных с помощью mpcToForces.
Добавьте соответствующий блок в модель:
Для разреженной проблемы QP откройте браузер библиотеки Simulink, найдите блок FORCES MPC (Разреженный QP) в категории FORCES PRO MPC Blocks и добавьте его в модель.
Для решения проблемы плотного QP откройте браузер библиотеки Simulink, найдите блок MPC Controller в категории Model Predictive Control Toolbox и добавьте его в модель.
Укажите переменные структуры в диалоговом окне блока:
Для разреженной задачи QP укажите переменные, содержащие структуры данных ядра и состояний.
Для плотной проблемы QP укажите mpc объект.
Смоделировать систему.
При необходимости создайте код непосредственно из модели или блока.
Дополнительные сведения см. в документации по решателю Embotech FORCES PRO QP.
Примечание
Использование решателя QP Embotech FORCES PRO для адаптивных MPC-контроллеров или MPC-контроллеров с пользовательскими ограничениями не поддерживается.
Чтобы спроектировать и смоделировать нелинейный MPC-контроллер в MATLAB с помощью решателя Embotech FORCES PRO NLP, выполните следующие действия.
Разработка нелинейного контроллера с использованием nlmpc объект.
Укажите пользовательские параметры генерации решателя с помощью nlmpcToForcesOptions. Можно использовать решатель внутренних точек (IP) или решатель последовательного квадратичного программирования (SQP). Используйте IP-решатель, если нелинейная проблема MPC имеет длинный горизонт прогнозирования и большое количество ограничений.
Создание пользовательского решателя и связанных переменных, содержащих структуры для ядра, состояний и оперативных данных с помощью nlmpcToForces.
Укажите текущие состояния контроллера, последнее управляющее действие и используйте переменную, содержащую оперативную структуру данных, для указания других сигналов времени выполнения.
Моделирование системы путем итерационного вызова nlmpcmoveFORCES. Файл MEX автоматически генерируется из nlmpcmoveForces для ускорения моделирования в MATLAB.
Чтобы спроектировать и смоделировать нелинейный контроллер MPC в Simulink с помощью решателя Embotech FORCES PRO NLP, выполните следующие действия.
Разработка нелинейного контроллера с использованием nlmpc объект.
Укажите пользовательские параметры генерации решателя с помощью nlmpcToForcesOptions. Можно использовать решатель внутренних точек (IP) или решатель последовательного квадратичного программирования (SQP). Используйте IP-решатель, если нелинейная проблема MPC имеет длинный горизонт прогнозирования и большое количество ограничений.
Создание пользовательского решателя и связанных переменных с помощью nlmpcToForces.
Откройте браузер библиотеки Simulink, найдите блок FORCES Nonlinear MPC в категории FORCES PRO MPC Blocks и добавьте его в модель.
В диалоговом окне блока укажите переменную, содержащую основную структуру данных.
Смоделировать систему.
При необходимости создайте код непосредственно из модели или блока.
Можно также создать код для модели Simulink, как описано в разделе Создание кода в Simulink.
Примечание
Использование NLP Embotech FORCES PRO Solver поддерживается только в том случае, если нелинейная задача MPC удовлетворяет всем следующим условиям:
Пользовательские функции затрат и ограничений не используются.
Функции состояния и вывода совместимы с генерацией кода MATLAB и CasADi.
Если нелинейный контроллер MPC использует несколько дополнительных параметров, необходимо сгруппировать их в один вектор столбца и установить Model.NumberOfParameters свойство контроллера 1.
Пример использования блока FORCES Nonlinear MPC см. в разделе Управление маятником с помощью предсказания нелинейной модели.