Эта тема обращается к программному обеспечению Simscape™ Multibody™ First Generation. Библиотека первого поколения будет скоро удержана от использования. Чтобы избежать проблем совместимости, создайте любые новые модели и преобразуйте любые существующие модели с помощью блоков второго поколения — доступные путем ввода команды smlib
в командной строке MATLAB®.
Этот пример показывает, как сгенерировать код для моделей Simscape Multibody с помощью программного обеспечения Simulink Coder™ и Simulink®. Пример касается трех сценариев генерации кода. Вы:
Преобразуйте подсистему объекта Simscape Multibody в Блок s-function Simulink. Блок s-function использует сгенерированный код, чтобы включить симуляцию в вычислительных системах без активной лицензии Simscape Multibody.
Сошлитесь на модель объекта управления Simscape Multibody как на Подсистему Simulink с помощью блока Model Simulink. Блок Model использует сгенерированный код, чтобы включить инкрементное построение моделей и более быструю симуляцию в Режиме Accelerator Simulink.
Преобразуйте модель Simscape Multibody вместе с объектом и подсистемами контроллера в код независимого исполняемого файла. Исполняемый код запускается вне MATLAB и окружений Simulink, чтобы включить быструю симуляцию с минимальными требованиями к программному обеспечению.
Пример основан на модели mech_stewart_codegen
в качестве примера, включенной в вашу установку Simscape Multibody. Модель включает подсистему объекта Simscape Multibody и подсистему контроллера Simulink. Сценарий модели - ссылки использует дополнительную модель, mech_stewart_codegen_plant
, включая подсистему объекта Simscape Multibody только.
Чтобы продолжиться, у вас должна быть активная установка Simulink Coder. Для получения дополнительной информации о генерации кода для моделей Simscape Multibody см. Генерирующийся Код.
Чтобы преобразовать подсистему Simscape Multibody в код, необходимо гарантировать, что все физические соединения содержатся в самой подсистеме. Связи, включающие физические порты коннектора моделирования или порты системы координат тела, не могут продолжить контуры подсистемы. В этом примере блок-схема объекта полностью заключена в подсистему объекта (mech_stewart_codegen
) или в отдельную модель (mech_stewart_codegen_plant
).
Используйте программное обеспечение Simulink Coder, чтобы сгенерировать Блок s-function для подсистемы объекта модели mech_stewart_codegen
. Блок представляет подсистему объекта, использующую автоматически сгенерированный код C, сохраненный во вспомогательных двоичных файлах. Можно использовать блок, чтобы представлять подсистему объекта в вычислительных системах без активных лицензий Simscape Multibody.
В подсказке команды MATLAB введите mech_stewart_codegen
.
Программное обеспечение MATLAB открывает модель в качестве примера включение объекта платформы Стюарта и подсистемы ПИД-регулятора. Сохраните модель под другим именем в удобной папке.
Щелкните правой кнопкой по подсистеме Объекта и выберите C/C++ Code> Generate S-Function.
Программное обеспечение Simulink загружает окно Generate S-Function for Subsystem. Окно перечисляет параметры подсистемы с и предоставляет возможность делать их настраиваемыми. Только параметры Simulink могут быть настраиваемыми.
Нажмите кнопку Build.
Программное обеспечение Simulink открывает новое окно модели с Блоком s-function под названием Объект. Код S-функции появляется в исходных и заголовочных файлах, написанных в C, которые сохранены в текущей папке MATLAB.
Сократите исходный блок подсистемы Объекта от модели и замените его на новый Блок s-function.
Попытайтесь моделировать модель. Симуляция запускается с Блоком s-function, представляющим подсистему объекта через сгенерированный код, сохраненный в текущей папке MATLAB.
Используйте программное обеспечение Simulink Coder, чтобы сгенерировать код для подсистемы объекта Стюарта, включающей модель mech_stewart_codegen_plant
. Можно затем использовать сгенерированный код, чтобы сослаться на модель объекта управления как на подсистему в отдельной модели. Используйте модель - ссылку для инкрементно частей компиляций образцового шага за один раз. Закройте свою предыдущую модель прежде, чем попробовать следующие шаги.
В подсказке команды MATLAB введите mech_stewart_codegen
.
Программное обеспечение MATLAB открывает модель в качестве примера включение объекта платформы Стюарта и подсистемы ПИД-регулятора. Сохраните модель под другим именем в удобной папке.
От библиотеки Simulink Ports & Subsystems перетащите блок Model.
Модель, на которую ссылаются, еще не задана, и блок не имеет никаких портов.
В диалоговом окне блока Model, установленном параметр Model name на mech_stewart_codegen_plant
и установленный параметр Simulation mode на Accelerator
.
Блок представляет порты, соответствующие входным параметрам объекта (Сила) и выходные параметры (Pos, Vel, Верхняя часть).
Сократите Модель объекта управления и замените ее на блок Model.
Попытайтесь моделировать модель. Симуляция запускается с блоком Model, представляющим подсистему объекта через сгенерированный код, сохраненный в текущей папке MATLAB.
Используйте программное обеспечение Simulink Coder, чтобы сгенерировать файл независимого исполняемого файла, который можно использовать, чтобы моделировать модель mech_stewart_codegen
вне MATLAB и окружений Simulink. Закройте предыдущую модель прежде, чем попробовать следующие шаги.
В подсказке команды MATLAB введите mech_stewart_codegen
.
Программное обеспечение MATLAB открывает модель в качестве примера включение объекта платформы Стюарта и подсистемы ПИД-регулятора. Сохраните модель под другим именем в удобной папке.
Из панели меню Simulink выберите Code> C/C++ Code> Build Model
Программное обеспечение Simulink Coder генерирует код независимого исполняемого файла, представляющий целую модель mech_stewart_code_gen
.
В подсказке команды MATLAB войти
!mech_stewart_codegen
Программное обеспечение MATLAB моделирует модель путем выполнения исполняемого кода. Данные о симуляции модели, включая времена симуляции, объединенные состояния, и любые данные выходного порта, хранятся в файле MATLAB под названием mech_stewart_codegen.m
и сохраненный в текущей папке.
В подсказке команды MATLAB введите load mech_stewart_codegen
.
MATLAB загружает данные моделирования в вашу рабочую область. Переменная rt_out
содержит времена симуляции, переменная rt_xout
состояния механического устройства объекта и переменная rt_yout
выходные параметры от выходных портов объекта.