Интегрировать Simulink® компоненты в стороннее программное обеспечение, экспортируйте модель Simulink как связывающий инструмент функциональный модуль макета (FMU). Когда сторонняя программа запускает FMU, она проверяет необходимые лицензии и начинает локальную установку Simulink, чтобы запустить модель. Связывающие инструмент FMUs поддерживают фиксированный шаг и решатели переменного шага, которые инкапсулирует FMU.
Используйте проект экспортировать FMU. Откройте модель и выберите New> Project> New Project from this Model, чтобы создать проект из модели.
Можно экспортировать FMU из проекта в интерактивном режиме.
В проекте выберите Share > Tool-Coupling FMU.
Введите в 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
Модель должна удовлетворить этим условиям для экспорта:
Модель должна быть в Нормальном или режиме симуляции Акселератора.
Корневые порты ввода и вывода должны быть одним из этих числовых типов данных:
double
int32
Boolean
Объект шины Simulink, где всеми элементами является double
int32
, или Boolean
Simulink.AliasType
, в котором базовый тип решает к double
int32
или Boolean
Если компонент co-симуляции является FMU, экспортируемым от Simulink. локальный шаг расчета, для которого FMU является шагом расчета исходной модели.
Включать настраиваемые параметры:
Откройте модель из связанного проекта Simulink.
Из модели Simulink кликните по вкладке Modeling и запустите Model Explorer.
Выберите Model Workspace и добавьте MATLAB® переменная или параметр Simulink.
Для каждого параметра вы добавляете и хотите настраиваемый, в Data Properties или панели Simulink.Parameter, устанавливаете флажок Argument.
Нажмите Apply.
Сошлитесь на настраиваемые параметры в модели.
Экспортируйте связывающий инструмент 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 ${DYLD_LIBRARY_PATH}:<InstallationFolder>/bin/maci64:<InstallationFolder>/extern/bin/maci64 (csh/tcsh) export DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:<InstallationFolder>/bin/maci64:<InstallationFolder>/extern/bin/maci64 (bash)
Для Mac OS, из-за Защиты целостности системы (SIP), setenv
команда не работает на приложения, который запускает новые процессы, такие как MATLAB. Следуйте Добавляют путь к библиотеке к "DYLD_LIBRARY_PATH" в MAC, чтобы установить DYLD_LIBRARY_PATH
к <InstallationFolder>/bin/maci64:<InstallationFolder>/extern/bin/maci64
.
Прежде чем можно будет запустить FMU, необходимо настроить сеанс работы с MATLAB от консоли операционной системы. После того, как вы настраиваете этот сеанс, запускаете стороннее приложение и импортируете связывающий инструмент FMU. Каждый экземпляр FMU требует нового сеанса работы с 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 должен работать на одной машине.