Экспорт моделей Simulink в функциональные макетные модули

Экспорт моделей

Экспорт Simulink® модели к Functional Mock-up Unit (FMU), который поддерживает Ко-симуляцию в FMI версии 2.0. Чтобы проверить, что экспортированный блок все еще является действительной моделью Simulink, можно также направить программное обеспечение на импорт FMU обратно в модель Simulink в рамках процесса экспорта.

Требования включают:

  • Функции Simulink Compiler™

  • Папка с возможностью записи, в которую можно поместить экспортированный FMU.

Экспортированные модели могут иметь:

  • Входные и выходные данные типы: double, int32, boolean, строка

  • Матрицы

  • Сигналы шины

  • Настраиваемые параметры. Параметр должен ссылаться на переменную глобальной рабочей области.

Автономный FMU

Модели Simulink могут быть экспортированы в автономный Co-Simulation FMU в версии 2.0. Сгенерированный пакет FMU содержит следующие файлы:

  • modelDescription.xml

  • model.png (optional)

  • binaries\win64\modelname.dll, или binaries\linux64\modelname.so, или binaries\darwin64\modelname.dylib

Вы можете испытать ожидаемую задержку в экспортированном FMU для режима ко-симуляции.

Переменные FMU

Файл FMU modelDescription.xml содержит переменные взаимодействия, преобразованные из модели Simulink:

  • Переменные с причинностью = «вход»: преобразованы из корневого блока Inport

  • Переменные с причинностью = «output»: преобразованы из корневого блока Outport

  • Переменные с причинностью = «parameter»: преобразованы из ссылочных настраиваемых параметров во время выполнения

  • Независимая переменная «time»

Чтобы сгенерировать вход и выход FMU, задайте корневые блоки Inport и Outport в модели Simulink. Имя сгенерированной переменной преобразуется из корневого имени блока Inport/Outport путем удаления специальных и пустых символов и предотвращения дублирования.

Поддерживаются следующие типы входных/выходных данных:

  • double (Реальный в FMI)

  • int32 (Целое число в FMI)

  • логический (логический в FMI)

  • string (Строка в FMI)

Если модель root Inport или Outport не является невиртуальной шиной, отдельные элементы шины будут расширены до переменных с помощью структурированного соглашения об именовании (. «»). Если моделировать корневой блок Inport или Outport, отдельные скалярные элементы будут расширены до переменных с использованием соглашения об именовании массивов («[]»).

Чтобы экспортировать ссылочные переменные в качестве параметра FMU, можно

  • задайте переменную. Используйте переменную в блоке Simulink с настраиваемым параметром и убедитесь, что для Code Generation > Optimization > Default параметра задано значение «Tunable» (или для параметра модели «InlineParams» задано значение off)

  • задайте объект Simulink Parameter. Используйте объект в блоке Simulink с настраиваемым параметром и убедитесь, что класс памяти объекта равен "ExportedGlobal’.

Имя сгенерированной переменной преобразуется из имени параметра, удаляя специальные символы и избегая дубликатов.

Поддерживаются следующие типы данных параметров:

  • double (Реальный в FMI)

  • int32 (Целое число в FMI)

  • логический или логический (логический в FMI)

Если ссылочный параметр является struct, отдельные представители struct будут расширены до переменных с помощью структурированного соглашения об именовании (. «»). Если ссылочным параметром является массив или матрица, отдельные скалярные элементы будут расширены до переменных с использованием соглашения об именовании массивов («[]»).

Решатель FMU

Для автономного экспорта FMU поддерживаются решатели с фиксированным шагом. Перед экспортом модели рекомендуется задать фиксированный основной шаг расчета (Solver > Solver details > Fixed-step size). При симуляции автономного FMU в другом окружении, размер шага связи должен быть интегральным произведением основного шага расчета.

Динамическая библиотека FMU

Сгенерированный FMU содержит динамическую сборку библиотеки для текущей платформы. Используется значение fmi2TypesPlatform по умолчанию.

Можно вызвать все необходимые и необязательные функции fmi2, определенные стандартом FMI. Однако следующие функции не имеют никакой операции и возвращаются fmi2OK немедленно:

  • Функции Model-Exchange

  • Функции доступа или сериализации FMUstate

  • Установка функций или получение входных или выходных производных

  • Функции, запрашивающие fmi2DoStep состояние или отменяющие fmi2DoStep

  • Вычисляющая функции производная по направлению от переменных

Сохранение исходного кода при экспорте FMU

Можно экспортировать модель Simulink в FMU вместе с исходным кодом C. Можно проверить Save Source Code в Export Model to FMU Co-Simulation окне или использовать командную строку API, exportToFMU2CS('mdlName','SaveSourceCodeToFMU','on') для экспорта модели в FMU с исходным кодом C.

Если модель Simulink содержит модели-ссылки с пользовательскими типами данных или функциями с фиксированной точкой, экспорт FMU с исходным кодом может ошибиться из-за дублирования файлов заголовков в _sharedutils папка. Следуйте инструкциям по генерации общего служебного кода, чтобы задать Code Generation > Interface > Shared Code Placement параметр на 'Shared Location'и регенерируйте FMU.

Ограничения

Вы не можете сгенерировать FMU из модели Simulink, из-за этих ограничений:

  • Решатели с переменным шагом не поддерживаются

  • Ненулевое время начала симуляции не поддерживается

  • Simulink модели, который ссылками внешние ресурсы (файлы данных, mex или m файлов) не поддерживаются

Экспорт модели Simulink

Используйте Диалоговое окно экспорта

Экспорт vdp пример используя панель инструментов Simulink: Simulation> Save> <reservedrangesplaceholder1> <reservedrangesplaceholder0>

  1. Откройте модель, vdp

  2. В редакторе Simulink Simulink панели инструментов: Simulation > Save > Standalone FMU.

  3. В редакторе Simulink выберите Save > Export Model to > FMU Co-Simulation .

  4. В диалоговом окне экспорта укажите путь для экспорта FMU.

  5. Нажмите Создать

    Simulink создает файл FMU, modelName.fmu и опционально модель Simulink, modelName_fmu.slx.

Используйте программный интерфейс

  • Экспортируйте пример vdp в FMU с помощью exportToFMU2CS по умолчанию функция. Эта команда создает файл FMU, modelName.fmu. По умолчанию он также создает модель Simulink, modelName_fmu.slx, которая содержит блок FMU Co-Simulation с исходной моделью. Создайте эту модель, если хотите проверить целостность экспортированного FMU.

    load_system('vdp')
    set_param('vdp', 'SolverType', 'Fixed-step')
    exportToFMU2CS('vdp')

  • Экспортировать пример vdp в FMU с помощью функции exportToFMU2CS, но не создавать модель Simulink. Эта команда создает файл FMU, modelName.fmu.

    load_system('vdp')
    set_param('vdp', 'SolverType', 'Fixed-step')
    exportToFMU2CS('vdp','CreateModelAfterGeneratingFMU','off')
    
  • Экспортируйте пример vdp в FMU с помощью exportToFMU2CS функция. Создайте модель для FMU и используйте изображение исходной модели в качестве значка блока. Эта команда создает файл FMU, modelName.fmu, и модель Simulink с блоком FMU Co-Simulation, значок блока которого является исходной моделью.

    exportToFMU2CS('vdp','AddIcon','snapshot')

См. также

| | | |

Похожие темы