Чтобы интегрировать компоненты Simulink® в стороннее программное обеспечение, экспортируйте модель Simulink как связывающий инструмент функциональный модуль макета (FMU). Когда сторонняя программа запускает FMU, она проверяет необходимые лицензии и начинает локальную установку Simulink, чтобы запустить модель.
Используйте проект экспортировать FMU. Откройте модель и выберите File > Project > Create Project from Model, чтобы создать проект из модели.
Можно экспортировать FMU из проекта в интерактивном режиме.
В проекте выберите Share > 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
Модель должна удовлетворить эти условия для экспорта:
Модель должна быть в Нормальном или режиме симуляции Акселератора.
Корневые порты ввода и вывода должны иметь числовой тип данных.
Если компонент co-симуляции является FMU, экспортируемым от Simulink, локального шага расчета, для которого 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.
Если приложение, которое импортирует 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 должен работать на одной машине.