При построении модели, включающей блоки FMU, необходимо скомпилировать исходный код FMU с помощью компилятора QNX ® Neutrino ®qcc или q++. Этот компилятор создает общие SO-файлы объектов, включенные в FMU. Этот процесс гарантирует, что FMU содержит код для запуска на целевом компьютере Simulink ® Real-Time™. Дополнительные сведения см. в разделе Применение функциональных макетов с использованием Simulink в реальном времени.
Пакет поддержки для целевого компьютера включает компилятор QNX Neutrino C/C + +qcc или q++. Перед использованием компилятора для создания FMU-файла настройте переменные среды компилятора.
Открытие окна cmd и измените папки на корневую папку для целевого пакета поддержки Simulink Real-Time. Если вы изменили папку по умолчанию для пакетов поддержки MATLAB, настройте эту команду в соответствии с пользовательским расположением. В командной строке Windows введите:
C:
cd C:\ProgramData\MATLAB\SupportPackages\<release>\toolbox\slrealtime\target\supportpackage\qnx710Чтобы задать переменные среды Windows, необходимые для использования компилятора QNX Neutrino из командной строки, запустите пакетный файл qnxsdp-env.bat. В командной строке Windows введите:
qnxsdp-env.bat
Убедитесь, что qcc компилятор готов к использованию. В командной строке Windows введите:
which qccКоманда возвращает:
C:/ProgramData/MATLAB/SupportPackages/<release>/toolbox/slrealtime/target/supportpackage/qnx710/host/win64/x86_64/usr/bin/qcc.EXE
Файл FMU содержит иерархию файлов и папок. В этом примере представлен их набор. В примере показано, как создать файл общего объекта для одного исходного файла, связанного с приложением реального времени, запущенным на целевом компьютере.
Чтобы просмотреть файлы для этого примера, в окне команд MATLAB введите:
cd(fullfile(matlabroot, 'toolbox', 'slrealtime', ... 'examples', 'slrt_ex_fmu_work'))
Чтобы открыть модель для этого примера, в окне команды MATLAB введите:
open_system(fullfile(matlabroot, 'toolbox', 'slrealtime', ... 'examples', 'slrt_ex_vanderpol'))
Пример файла FMU vanDerPol_slrt.fmu содержит следующий набор папок:
C:\work\my_fmu_work\ C:\work\my_fmu_work\binaries\ C:\work\my_fmu_work\binaries\slrt_x64 C:\work\my_fmu_work\binaries\win64 C:\work\my_fmu_work\documentation C:\work\my_fmu_work\resources C:\work\my_fmu_work\sources\
В этом примере исходные файлы FMU находятся в папке источников. В этом примере используются файлы: fmuTemplate.c, fmuTemplate.h, vanDerPol.c
В примере имеется динамически связанный файл библиотеки из исходных файлов, созданных с помощью компилятора на основе окна. Этот файл находится в папке win64. В этом примере используется файл: vanDerPol.dll
Компиляция источников в примере с помощью qcc, скопируйте файлы для FMU из папки matlab/slrealtime/examples/slrt_ex_fmu_work к папке C:\work\my_fmu_work.
В Windows cmd измените текущую папку на расположение исходных файлов. В командной строке Windows введите:
cd C:\work\my_fmu_work\sourcesЧтобы создать файл SO общего объекта QNX Neutrino, в примере выполняется компиляция источников с помощью -Vgcc_ntox86_64 флаг. В командной строке Windows введите:
qcc -Vgcc_ntox86_64 -shared -o ../binaries/slrt_x64/vanDerPol.so -fPIC -DFMI_COSIMULATION -IC:/PROGRA~1/MATLAB/R2020b_bash/rtw/c/src/rapid/fmu vanDerPol.c
Примечание
Компилятор QNX Neutrino не поддерживает длинные имена файлов Windows (например, пути с пробелами) для параметра поиска библиотеки -I. Чтобы обойти это ограничение, можно установить MATLAB ® по пути без пробелов (например ,C:\MATLAB) или можно использовать путь DOS 8.3 в команде компилятора. Чтобы получить имена папок 8.3, можно использовать dir /x команда в Windows cmd окно.
Для создания FMU-файла функционального макета, содержащего файл общего объекта QNX Neutrino, в примере архивируются папки и файлы. Используйте расширение FMU для архивного файла. В командной строке Windows введите:
cd .. zip -r vanDerPol.fmu *
Для реализации vanDerPol в модели Simulink с помощью FMU укажите имя FMU для блока. Открытие модели slrt_ex_vanderpolдважды щелкните на блоке FMU vanDerPolи выберите vanDerPol.fmu для параметра блока имени FMU.
Создайте модель, загрузите приложение реального времени на целевой компьютер и запустите приложение реального времени.