Экспортируйте модель как связывающий инструмент FMU

Чтобы интегрировать компоненты Simulink® в стороннее программное обеспечение, экспортируйте модель Simulink как связывающий инструмент функциональный модуль макета (FMU). Когда сторонняя программа запускает FMU, она проверяет необходимые лицензии и начинает локальную установку Simulink, чтобы запустить модель.

Используйте проект экспортировать FMU. Откройте модель и выберите File > Project > Create Project from Model, чтобы создать проект из модели.

Можно экспортировать FMU из проекта в интерактивном режиме.

  1. В проекте выберите Share > FMU.

  2. Введите в Copyright, Description и полях FMU Icon. Нажмите Save Settings and Export as и обеспечьте имя.

Сгенерированный FMU включает образцовую реализацию, а также метаданные, обеспеченные во время экспорта.

<?xml version="1.0" encoding="utf-8"?>
<fmiModelDescription author="" copyright="" description="" fmiVersion="2.0"
                     generationDateAndTime="2018-08-16T15:51:48Z"
                     generationTool="Simulink (R2018b)"
                     guid="5bd096be-a08d-020e-fc96-847aa21def5b"
                     license=""
                     modelName="vdpSlave"
                     variableNamingConvention="structured"
                     version="1.8">

Можно также создать и экспортировать проект в FMU из командной строки можно следующим образом:

>> p = slproject.create('vdpProject') 
>> copyfile(which('vdp'), './vdpSlave.slx') 
>> p.addFile('./vdpSlave.slx')
>> Simulink.fmuexport.ExportSimulinkProjectToFMU(p,'vdpSlave.slx','-fmuname','vdpFMU')

Для большего количества опций экспорта FMU из командной строки введите:

help Simulink.fmuexport.ExportSimulinkProjectToFMU

Модель должна удовлетворить эти условия для экспорта:

  • Модель должна быть в Нормальном или режиме симуляции Акселератора.

  • Корневые порты ввода и вывода должны иметь числовой тип данных.

Если компонент co-симуляции является FMU, экспортируемым от Simulink, локального шага расчета, для которого FMU является шагом расчета исходной модели.

Используйте экспортируемый связывающий инструмент FMU

Экспортируемый FMU требует, чтобы локальная установка Simulink запустилась. Версия MATLAB®, используемая для co-симуляции, должна совпасть с версией MATLAB, куда FMU экспортируется. На Windows® приложение, которое запускает FMU, может проверить необходимые лицензии автоматически. Для других операционных систем примените эти настройки:

  • На Linux®:

    setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:<InstallationFolder>/bin/glnxa64:<InstallationFolder>/extern/bin/glnxa64  (csh/tcsh) 
    export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:<InstallationFolder>/bin/glnxa64:<InstallationFolder>/extern/bin/glnxa64  (bash)

  • На Mac OS:

    setenv DYLD_LIBRARY_PATH ${LD_LIBRARY_PATH}:<InstallationFolder>/bin/glnxa64:<InstallationFolder>/extern/bin/glnxa64  (csh/tcsh) 
    export DYLD_LIBRARY_PATH=${LD_LIBRARY_PATH}:<InstallationFolder>/bin/glnxa64:<InstallationFolder>/extern/bin/glnxa64  (bash)

Для Mac OS, из-за Защиты целостности системы (SIP), команда setenv не работает на приложения, который запускает новые процессы, такие как MATLAB. Следуйте https://www.mathworks.com/matlabcentral/answers/170268-how-do-i-set-environment-variables-on-mac-os-x, чтобы установить DYLD_LIBRARY_PATH на <InstallationFolder>/bin/glnxa64:<InstallationFolder>/extern/bin/glnxa64.

Прежде чем можно будет запустить FMU, необходимо настроить сеанс работы с MATLAB от консоли операционной системы. После того, как вы настраиваете этот сеанс, запускаете стороннее приложение и импортируете связывающий инструмент FMU. Каждый экземпляр FMU требует нового сеанса работы с MATLAB.

Запустите специализированный сеанс с MATLAB

Если приложение, которое импортирует FMU, запускает один экземпляр FMU, можно использовать MATLAB, чтобы запустить сеанс.

>> shareMATLABForFMUCoSim

Это выделяет текущий сеанс работы с MATLAB, доступный для запросов от внешнего инструмента до co-simulate импортированный FMU. Когда FMU соединяется, этот сеанс, редактор Simulink и проект Simulink загружаются, и co-симуляция запускается автоматически. Можно использовать этот сеанс, чтобы приостановить, возобновить co-симуляцию, а также настройки параметров или сигналы графика из командного окна, в то время как co-симуляция запускается. Если co-симуляция закончена, зашла к пользователю, или прервала ошибкой периода выполнения, завершениями MATLAB, разгружает редактор Simulink и проект Simulink, и отменяет изменения к модели. Если ошибка происходит, она отображается в инструменте симуляции, который импортирует этот FMU. Каждый сеанс может соединиться с одним экземпляром FMU одновременно.

Запустите специализированный сеанс с операционной системы

Если приложение, которое импортирует FMU, запускает несколько экземпляров FMU, можно использовать консоль операционной системы, чтобы запустить выделенные сеансы работы с MATLAB.

  • На Windows:

    <matlabroot>\toolbox\shared\fmu_share\script\fmu-matlab-setup.cmd

  • На Linux и Mac OS:

    <matlabroot>/toolbox/shared/fmu_share/script/fmu-matlab-setup

Запустите matlabroot в MATLAB, чтобы узнать <matlabroot>. Программа установки запускается и ожидает команды. Смотрите доступные команды путем ввода help:

> help
Command list:                                                                                                                                                                                 
quit - Close all shared MATLABs and exit.                                                                                                                                                     
list - List shared MATLABs.                                                                                                                                                                   
start NUMBER_OF_MATLABS - Start NUMBER_OF_MATLABS more MATLABs.                                                                                                                               
stop NUMBER_OF_MATLABS - Stop NUMBER_OF_MATLABS MATLABs.                                                                                                                                      
ignore - Stop asking about the hardware core count when launching MATLABs.                                                                                                                    
clean MATLAB_NUMBER - Clean up the MATLAB workspace for MATLAB #MATLAB_NUMBER. Use 0 for all MATLABs.                                                                                         
help - Print the command list.

Запустите один сеанс для каждого FMU, чтобы запуститься одновременно. Если существует один FMU, введите:

> start 1

Если существует три FMUs, запускающиеся одновременно, введите:

> start 3

Только один инструмент управления MATLAB должен работать на одной машине.

Похожие темы