Когда вы создаете модель, которая включает FMU блоков, необходимо скомпилировать исходный код FMU с помощью QNX® Нейтрино® компилятор qcc или q++. Этот компилятор создает общие файлы SO объектов, которые вы включаете в FMU. Этот процесс гарантирует, что FMU содержит код для запуска в Simulink® Real-Time™ целевой компьютер. Для получения дополнительной информации смотрите Применить функциональные модули макета при помощи Simulink Real-Time.
Пакет поддержки для целевого компьютера включает компилятор QNX Neutrino C/C + + qcc или q++. Прежде чем использовать компилятор для генерации файла FMU, сконфигурируйте переменные окружения компилятора.
Откройте cmd Windows окно и изменение папок в корневую папку для пакета Simulink Real-Time Target Support Package. Если вы изменили папку по умолчанию для пакетов поддержки 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 в папке source. Этот пример использует файлы: fmuTemplate.c, fmuTemplate.h, vanDerPol.c
Пример имеет динамически связанный файл библиотеки из исходных файлов, который был создан с помощью компилятора на базе Window. Этот файл находится в папке 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 команда в cmd Windows окно.
Чтобы сгенерировать functional mockup unit FMU файл, который содержит общий файл объекта QNX Neutrino, пример архивирует папки и файлы. Используйте расширение FMU для файла архива. В командной строке Windows введите:
cd .. zip -r vanDerPol.fmu *
Для реализации vanDerPol блокируйте в модели Simulink при помощи FMU, задайте имя FMU для блока. Откройте модель slrt_ex_vanderpolдважды кликните блок FMU vanDerPol, и выберите vanDerPol.fmu файл для имени параметров блоков FMU.
Создайте модель, загрузите приложение реального времени на целевой компьютер и запустите приложение реального времени.