Эта тема обращается к программному обеспечению 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 выходные параметры от выходных портов объекта.