Процесс создания включает в себя генерацию кода на C или C++ из модели и построение исполняемой программы из сгенерированного кода. Этот пример может использовать универсальный системный целевой файл в реальном времени (GRT) или встроенный целевой файл системы в реальном времени (ERT) (STF) для генерации кода. Получившаяся автономная программа работает на вашем компьютере разработчика, независимо от внешнего времени и событий.
Этот пример использует локальную копию slexAircraftExample
модель, хранящаяся в собственной папке, aircraftexample
. Настройте рабочую папку следующим образом:
В MATLAB® Браузер текущей папки, перейдите к папке, к которой у вас есть доступ для записи.
Чтобы создать рабочую папку, введите следующую команду MATLAB:
mkdir aircraftexample
Делайте aircraftexample
ваша рабочая папка:
cd aircraftexample
Откройте slexAircraftExample
модель:
slexAircraftExample
Модель появляется в Simulink® Окно модели редактора.
В окне модели выберите File > Save As. Перейдите к рабочей папке, aircraftexample
. Сохраните копию slexAircraftExample
модель как myAircraftExample
.
Во время создания кода генератор кода создает папку сборки в вашей рабочей папке. Имя папки сборки
, выведенный из имени исходной модели и выбранного системного целевого файла. Папка сборки хранит сгенерированный исходный код и другие файлы, созданные в процессе сборки. Исследуйте содержимое папки сборки в конце этого примера.model
_ target
_rtw
Когда модель содержит блоки Model (ссылки на другие модели), сборка модели создает специальные подпапки в папке генерации кода, чтобы организовать код для ссылочных моделей. Эти папки генерации кода существуют вместе с папками сборки продукта и имеют имена slprj
. Для получения дополнительной информации смотрите Сгенерировать код для иерархии Модели-ссылки.
Под slprj
папка, подпапка с именем _sharedutils
содержит сгенерированный код, который может использоваться совместно между моделями.
Чтобы сгенерировать код из вашей модели, вы должны изменить некоторые параметры конфигурации модели. В частности, общий целевой файл системы в реальном времени (GRT) и большинство других целевых файлов системы требуют, чтобы модель задала решатель с фиксированным шагом.
Примечание
Для моделей, которые задают решатели с переменным шагом, генератор кода производит код только, если модели также задают быструю симуляцию (rsim
) или целевые файлы системы S-функций.
Откройте myAircraftExample
модель, если она еще не открыта.
В диалоговом окне Configuration Parameters задайте значения параметров конфигурации для решателя:
Start time: 0.0
Stop time: 60
Type: Fixed-step
Solver: ode5 (Dormand-Prince)
Fixed step size (fundamental sample time): 0.1
Treat each discrete rate as a separate task: Off
Нажмите Apply.
Сохраните модель.
Чтобы сконфигурировать процесс сборки для модели, выберите системный целевой файл, набор инструментов или файл make-файла шаблона и make
команда.
В этих примерах и в большинстве приложений вам не нужно задавать эти параметры индивидуально. В примерах используется готовая к запуску универсальное целевое строение (GRT) в реальном времени. Системный целевой файл GRT создает независимый исполняемый файл программу, которая запускается на вашем рабочем компьютере.
Для выбора целевого файла системы GRT:
Откройте myAircraftExample
модель, если она еще не открыта.
В Параметры конфигурации окне в поле System target file введите grt.tlc
. Затем нажмите Apply.
Вы видите выбор для Toolchain (Automatically locate an installed toolchain
), и Build Configuration (Faster Builds
).
Сохраните модель.
Примечание
Если щелкнуть Browse, откроется браузер системных целевых файлов, который отобразит системные целевые файлы в пути MATLAB. Некоторые системные целевые файлы требуют дополнительных продуктов. Для примера, ert.tlc
требует Embedded Coder®.
Откройте myAircraftExample
модель, если она еще не открыта.
В диалоговом окне Параметров конфигурации задайте настройки:
Используйте настройки по умолчанию для Code Generation продвинутых параметров, которые управляют подробностями сборки и отладкой:
Verbose build (RTWVerbose
)
Retain .rtw file (RetainRTWFile
)
Profile TLC (ProfileTLC
)
Start TLC debugger when generating code (TLCDebug
)
Start TLC coverage when generating code (TLCCoverage
)
Enable TLC assertion (TLCAssert
)
Используйте настройки Code Generation > Comments по умолчанию.
Опции Code Generation > Identifiers управляют внешним видом и чувством сгенерированного кода. Используйте настройки по умолчанию.
Выберите Code Generation > Interface.
Из списка Shared code placement выберите Shared location
. Процесс сборки помещает сгенерированный код для утилит в подпапку в папке генерации кода.
Под Advanced parameters снимите флажок Classic call interface.
Под Advanced parameters установите флажок Single output/update function.
В Code Generation > Report выберите Create code generation report и Open report automatically. Это действие позволяет программному обеспечению создавать и отображать отчет генерации кода для myAircraftExample
модель.
Щелкните Apply и сохраните модель.
Процесс сборки генерирует код С из модели. Затем он компилирует и связывает сгенерированную программу, чтобы создать исполняемый образ. Чтобы создать и запустить программу:
С myAircraftExample
откройте модель, выполните одно из следующих действий:
Вы видите генерацию кода и сообщения компиляции в Командном окне. Начальное сообщение:
### Starting build procedure for model: myAircraftExample
Содержимое многих последующих сообщений зависит от вашего компилятора и операционной системы. Окончательные сообщения включают:
### Created executable myAircraftExample.exe ### Successful completion of build procedure for model: myAircraftExample ### Creating HTML report file myAircraftExample_codegen_rpt.html
Теперь папка генерации кода содержит исполняемый файл, myAircraftExample.exe
(Microsoft® Windows® платформы) или myAircraftExample
(UNIX® платформы). В сложение процесс сборки создал slprj
папка и myAircraftExample_grt_rtw
папка в папке генерации кода.
Чтобы увидеть содержимое рабочей папки после сборки, введите dir
или ls
команда:
>> dir . myAircraftExample.slx slprj .. myAircraftExample.slx.autosave myAircraftExample.exe myAircraftExample_grt_rtw
Чтобы запустить исполняемый файл из Командного окна, введите !myAircraftExample
. The !
символ передает команду, которая следует за ней, операционной системе, которая запускает автономную myAircraftExample
программа.
>> !myAircraftExample ** starting the model ** ** created myAircraftExample.mat **
Чтобы увидеть файлы, созданные в папке сборки, используйте dir
или ls
снова команда. Точный список производимых файлов варьируется среди платформ и версий MATLAB. Вот пример списка с платформы Windows:
>> dir myAircraftExample_grt_rtw . rt_main.obj myAircraftExample_data.c .. rtmodel.h myAircraftExample_data.obj buildInfo.mat rtw_proj.tmw myAircraftExample_private.h codeInfo.mat myAircraftExample.bat myAircraftExample_ref.rsp defines.txt myAircraftExample.c myAircraftExample_types.h html myAircraftExample.h modelsources.txt myAircraftExample.mk rt_logging.obj myAircraftExample.obj
Процесс сборки создает папку сборки и называет ее
, где model
_ target
_rtw
- имя исходной модели и model
- системный целевой файл, выбранный для модели. В этом примере папка сборки называется target
myAircraftExample_grt_rtw
.
Папка сборки включает следующие сгенерированные файлы.
Файл | Описание |
---|---|
|
Автономный код С, который реализует модель |
|
Файл заголовка включения, содержащий определения параметров и переменных состояния |
|
Заголовочный файл, содержащий общие определения |
|
Пересылка объявлений типов данных, используемых в коде |
|
Master заголовочный файл для включения сгенерированного кода в статическую основную программу (его имя не меняется, и он просто включает |
Отчет генерации кода, созданный для myAircraftExample
модель отображает ссылку для каждого из этих файлов. Вы можете щелкнуть ссылку, чтобы исследовать содержимое файла.
Папка сборки содержит другие файлы, используемые в процессе сборки. Они включают в себя:
myAircraftExample.mk
- make для создания исполняемого файла с использованием указанного набора инструментальных средств.
Объект (.obj
) файлы
myAircraftExample.bat
- Файл управления пакетом
rtw_proj.tmw
- Файл маркера
buildInfo.mat
- Создание информации для перемещения сгенерированного кода в другую среду разработки
defines.txt
- Определения предпроцессора, необходимые для компиляции сгенерированного кода
myAircraftExample_ref.rsp
- Данные для включения в качестве аргументов в командной строке mex
(Только системы Windows)
Папка сборки также содержит подпапку, html
, который содержит файлы, составляющие отчет генерации кода. Для получения дополнительной информации см. Отчеты для генерации кода.
После создания кода генератор кода производит настраиваемый make-файл, model
.mk
. Сгенерированный make-файл инструктирует make
системная утилита для компиляции и связывания исходного кода, сгенерированного из модели, любой необходимой программы обвязки, библиотек или пользовательских модулей. Генератор кода создает файл model
.mk
независимо от подхода, который вы используете для управления процессом сборки:
Если вы используете подход набора инструментальных средств, генератор кода создает model
.mk
на основе Toolchain settings модели. Вы можете изменить генерацию make-файла через rtwmakecfg.m
API.
Если вы используете подход make-файла шаблона, генератор кода создает model
.mk
из файла системного шаблона, system
.tmf
(где system
означает выбранное имя системного целевого файла). Файл make-файла системного шаблона предназначен для вашего системного целевого файла. Можно изменить шаблон make-файла, чтобы задать компиляторы, опции компилятора и дополнительную информацию для создания исполняемого файла.
Дополнительные сведения см. в разделах Выбор подхода к сборке и Настройка процесса сборки.