Сконфигурируйте параметры генерации кода, связанного с STF

Многие параметры конфигурации модели для генерации кода специфичны для системных целевых файлов GRT, ERT или ERT.

Задайте Сгенерированный код интерфейсов

Используйте параметры конфигурации модели интерфейса, чтобы контролировать, какие библиотеки использовать при генерации кода, включать ли поддержку API в сгенерированный код и другие опции интерфейса.

Кому...Выберите или введите...
Задайте стандартную математическую библиотеку, которую генератор кода использует при генерации кода.

Выберите C89/C90 (ANSI), C99 (ISO), или C++03 (ISO) для параметра Standard math library.

Выбор C89/C90 (ANSI) предоставляет ANSI®[a] Набор функций библиотеки на C. Для примера выберите C89/C90 (ANSI) приводит к сгенерированному коду, который вызывает sin() является ли входной параметр двойной точностью или одинарной точностью. Однако, если вы выбираете C99 (ISO), сгенерированный код вызывает функцию sinf() когда входной параметр является одинарной точностью. Если ваш компилятор поддерживает ISO®[b] Математические расширения C, выбор библиотеки ISO C может привести к более эффективному коду.

Для получения дополнительной информации см. Стандартная математическая библиотека.

Опции для этого параметра имеют зависимости. См. «Зависимости интерфейса».

Укажите библиотеку для конкретного приложения, которую генератор кода использует при генерации кода.

Если вы генерируете специфичный для приложения код C or C++ для математических функций или операций, выберите значение для Code replacement library. В противном случае задайте None.

Дополнительные сведения о библиотеках замещения кода см. в разделе Выбор библиотеки замещения кода и библиотеки замещения кода.

Опции для этого параметра имеют зависимости. См. «Зависимости интерфейса».

Направьте туда, где генератор кода помещает фиксированную точку и другой служебный код.

Выберите Auto или Shared location для Shared code placement. Общее местоположение направляет код для утилит, которые будут помещены в slprj папка в рабочей папке, которая используется для создания ссылочных моделей. Если вы выбираете Auto,

  • Когда модель содержит блоки Model, помещает код утилиты в slprj/ target/ _sharedutils папка.

  • Когда модель не содержит блоков Model, помещает код утилиты в папку сборки (обычно в model.c или model.cpp).

Укажите текст, который будет добавлен к именам переменных, используемым при регистрации данных в MAT-файлах, и чтобы отличить данные регистрации от приложений генерации кода и симуляции.

Введите префикс или суффикс, например rt_ или _rt, для параметра MAT-file variable name modifier. Генератор кода префиксирует или добавляет текст к именам переменных для системных выходов, состояний и времени симуляции, заданных в панели Data Import/Export. Смотрите Журнал Результатов Выполнения Программы для получения информации о логгировании данных MAT-файлов.

Укажите API обмена данными, которые будут включены в сгенерированный код.

Выберите одну или несколько опций C API, опцию ASAP2 interface или опцию External mode. При выборе External mode появляются другие опции. API обмена данными являются независимыми, и можно выбрать комбинации этих API. Например, можно выбрать C API и режим external mode.

Для получения дополнительной информации о работе с этими интерфейсами смотрите Exchange Data Between Genered and External Code Using C API, Экспорт ASAP2 файла для измерения и калибровки данных и Симуляции режима external mode для настройки параметров и контроля сигналов.

Опции для этого параметра имеют зависимости. См. «Зависимости интерфейса».

[a] ANSI является зарегистрированным товарным знаком Американского национального института стандартов, Inc.

[b] ISO является зарегистрированным товарным знаком Международной организации по стандартизации.

Примечание

Прежде чем настраивать Standard math library или Code replacement library, проверьте, что ваш компилятор поддерживает библиотеку, которую вы хотите использовать. Если вы выбираете значение параметров, которое не поддерживает набор инструментальных средств, могут возникнуть ошибки компилятора. Для примера, если вы выбираете стандартную математическую библиотеку C99 (ISO) и ваш компилятор не поддерживает математические расширения ISO C, могут возникнуть ошибки во время компиляции.

Когда Embedded Coder® продукт установлен в системе, панель Code Generation > Interface развернута и включает несколько дополнительные опции. Описания параметров панели Code Generation > Interface см. в разделе Параметры конфигурации модели: Интерфейс генерации кода.

Несколько параметров интерфейса имеют зависимости от настроек других параметров. В следующей таблице перечислены зависимости.

Зависимости интерфейса

ПараметрЗависимости?Сведения о зависимостях
Standard math libraryДаДоступные значения зависят от Language выбора.
Code replacement libraryДаДоступные значения зависят от лицензирования продукта и других параметров. Дополнительные сведения см. в разделе Библиотека замещения кода.
Shared code placementНет 
Support: floating-point numbers (только целевые файлы системы ERT)Нет 
Support: non-finite numbersДа (ERT)
Нет (GRT)
Для целевых файлов системы ERT, активируемых Support floating-point numbers
Support: complex numbers (только целевые файлы системы ERT)Нет 
Support: absolute time (только целевые файлы системы ERT)Нет 
Support: continuous time (только целевые файлы системы ERT)ДаТребует отключения Remove error status field in real-time model data structure.
Support: non-inlined S-functions (только целевые файлы системы ERT)ДаТребует, чтобы вы включили Support floating-point numbers и Support non-finite numbers
Classic call interfaceДаТребует отключения Single output/update function. Для целевых файлов системы ERT требует, чтобы вы включили Support floating-point numbers.
Single output/update functionДаОтключить для Classic call interface
Terminate function required (только целевые файлы системы ERT)Да 
Code interface packagingДаДоступные значения зависят от Language выбора.
Multi-instance code error diagnosticДаУстановите Code interface packaging значение Reusable function или C++ class
Pass root-level I/O as (только целевые файлы системы ERT)ДаУстановите Code interface packaging значение Reusable function
Use dynamic memory allocation for model initialization (только целевые файлы системы ERT)ДаУстановите Code interface packaging значение Reusable function
MAT-file logging ДаДля целевых файлов системы GRT требует, чтобы вы включили Support non-finite numbers; для целевых файлов системы ERT требует, чтобы вы включили Support floating-point numbers, Support non-finite numbers и Terminate function required
MAT-file file variable name modifierДаВключено по MAT-file logging
Remove error status field in real-time model data structure (только целевые файлы системы ERT)ДаТребует отключения Support: continuous time.
Generate C API for: signalsНет 
Generate C API for: parametersНет 
Generate C API for: statesНет 
Generate C API for: root-level I/OНет 
ASAP2 interfaceНет 
External modeНет 
Transport layer ДаВключите External mode
MEX-file argumentsДаВключите External mode
Static memory allocationДаВключите External mode
Static memory buffer sizeДаВключите Static memory allocation

Сконфигурируйте поддержку числовых данных

По умолчанию целевые файлы системы ERT поддерживают генерацию кода для целочисленных, с плавающей точкой, нефинитных и комплексных чисел.

Чтобы сгенерировать код, который поддерживает...Делай...
Только целочисленные данныеОчистить Support floating-point numbers. Если нецелочисленные данные или выражения встречаются во время генерации кода, сообщение об ошибке сообщает нарушающие блоки и параметры.
Данные с плавающей точкой

Выберите Support floating-point numbers.

Нефинитные значения (для примера, NaN, Inf)

Выберите Support floating-point numbers и Поддержка неконечных чисел.

Комплексные данные

Выберите Support complex numbers.

Для получения дополнительной информации смотрите Параметры конфигурации модели: Интерфейс генерации кода.

Настройка поддержки значения по времени

Некоторым блокам требуется значение абсолютного времени, истекшего времени или непрерывного времени. Абсолютное время - это время от начала выполнения программы до настоящего времени. Истекшее время - это время, прошедшее между двумя триггерными событиями. В зависимости от используемых блоков ваша модель может потребовать корректировки настроек строения для поддерживаемых значений времени.

Кому...Выберите...
Сгенерируйте код, который создает и поддерживает целочисленные счетчики для блоков, которые используют абсолютные или истекшие временные значения (по умолчанию).

Support absolute time. Для получения дополнительной информации о выделении и операции абсолютных и истекших таймеров, смотрите Абсолютные и истекшие Временные Расчеты. Если вы не выбираете этот параметр, и модель включает блок, который использует абсолютные или истекшие значения времени, процесс сборки генерирует ошибку.

Сгенерируйте код для блоков, которые полагаются на непрерывное время.

Support continuous time. Если вы не выбираете этот параметр, и модель включает блоки в непрерывном времени, процесс сборки генерирует ошибку.

Для получения дополнительной информации смотрите Параметры конфигурации модели: Интерфейс генерации кода.

Сконфигурируйте поддержку неинлинзованных S-функций

Чтобы сгенерировать код для нелинейных S-Функций в модели, выберите Support noninlined S-functions. Для генерации неинстрированных S-функций требуются числа с плавающей точкой и нефиниты. Таким образом, когда вы выбираете Support non-inlined S-functions, системный целевой файл ERT выбирает Support floating-point numbers и Support non-finite numbers.

Когда вы выбираете Support non-finite numbers, и модель включает в себя S-функцию C MEX, которая не имеет соответствующей реализации TLC (для инициализации генерации кода), процесс сборки генерирует ошибку.

Внедрение S-функций очень выгодно при генерации производственного кода, например, при реализации драйверов устройств. Чтобы обеспечить использование встроенных S-функций для генерации кода, очистите Support non-inlined S-functions.

При генерации кода для модели, которая содержит нелинейные S-функции с целевым файлом системы ERT, может возникнуть несоответствие между результатами симуляции и генерации кода, когда любое из следующих значений верно:

  • Моделируйте параметры конфигурации GenCodeOnly установлено в off.

  • Моделируйте параметры конфигурации ProdEqTarget установлено в off.

Чтобы избежать такого несоответствия, установите ProdEqTarget на on или установите GenCodeOnly на on.

Сконфигурируйте генерацию функции модели и передачу аргументов

Для целевых файлов системы ERT можно сконфигурировать модель для того, как сгенерированы функции и как аргументы передаются в функции.

Кому...Делай...
Сгенерируйте вызовы функций модели, которые совместимы с основным программным модулем целевого файла pre-R2012a системы GRT (grt_main.c или .cpp).

Выберите Classic call interface и MAT-file logging. В сложение очистка Remove error status field in real-time model data structure. Classic call interface предоставляет быстрый способ использования кода, сгенерированного в R2012a или выше, с pre-R2012a пользовательским системным целевым файлом на основе GRT путем генерации вызовов функций оболочки, которые соединяются с сгенерированным кодом.

Уменьшите накладные расходы и используйте больше локальных переменных путем объединения функций выхода и обновления в одной model_step функция.

Выберите Single output/update function

Ошибки или неожиданное поведение могут возникнуть, если блок Model является частью цикла, и строение модели включает функцию Single output/update (по умолчанию). Для получения дополнительной информации о прямой передаче через, см. Алгебраические Циклы Концепций.

Сгенерируйте model_terminate функция для модели, не предназначенной для бесконечной работы.

Выберите Terminate function required (Embedded Coder). Для получения дополнительной информации смотрите описание model_terminate.

Сгенерируйте переиспользуемый, повторно входящий код из модели или подсистемы.

Выберите Generate reusable code. Для получения дополнительной информации см. раздел «Настройка поддержки повторного использования кода».

Статически распределите структуры данных моделей и получите доступ к ним непосредственно в коде модели.

Очистить Generate reusable code. Сгенерированный код не является переиспользуемым или повторно входящим. Смотрите Configure C Code Generation for Model Entry-Point Functions для получения информации о вызывающем интерфейсе, сгенерированном для функций модели в этом случае.

Подавьте генерацию поля состояния ошибки в структуре данных модели реального времени, rtModelдля примера, если вы не требуете регистрироваться или контролировать сообщения об ошибке.

Выберите Remove error status field в структуре данных модели реального времени. Выбор этого параметра может также привести к тому, что генератор кода опускает rtModel структура из сгенерированного кода.

При генерации кода для нескольких интегрированных моделей установите этот параметр одинаковым для всех моделей. В противном случае интегрированное приложение может продемонстрировать неожиданное поведение. Например, если вы выбираете опцию в одной модели, но не в другой, возможно, что интегрированное приложение не смогло зарегистрировать статус ошибки.

Не выбирайте этот параметр, если вы выбираете опцию логгирования MAT-файлов. Эти две опции несовместимы.

Откройте диалоговое окно Configure C Step Function Interface и измените model_step прототип функции.

В редакторе сопоставлений кода на вкладке Entry-Point Functions щелкните в столбце Имя функции для функции шага базовой скорости. Щелкните три вертикальные точки, которые появляются. Затем нажмите Configure Prototype. Если прототип функции не был предварительно сконфигурирован, откроется диалоговое окно, показывающее предварительный просмотр интерфейса функции шага без аргументов (void-void). В диалоговом окне также отображается текущее имя функции. Если для модели ранее были сконфигурированы аргументы, в диалоговом окне отображаются текущие настройки. Вы можете изменить имя и настройки аргумента для функции step. Для получения дополнительной информации смотрите Сконфигурируйте имя и аргументы для отдельных функций шага (Embedded Coder).

Для получения дополнительной информации смотрите Параметры конфигурации модели: Интерфейс генерации кода.

Настройка поддержки повторного использования кода

Для системных целевых файлов на основе GRT, ERT, GRT и ERT можно сконфигурировать, как повторные использования модели код, установив значение параметра конфигурации Code interface packaging равным Reusable function.

Параметр конфигурации Pass root-level I/O as предоставляет опции, которые управляют тем, как входы и выходы модели на корневом уровне модели передаются в model_step функция.

Кому...Выберите...
Передайте каждый входной и выходной аргумент модели корневого уровня в model_step функция индивидуально (по умолчанию)Code interface packaging> Reusable function и Pass root-level I/O as > Individual arguments.
Упакуйте входные параметры корневого уровня и выходные аргументы корневого уровня в отдельные структуры, которые затем передаются в model_step функцияCode interface packaging> Reusable function и Pass root-level I/O as > Structure reference.

Упакуйте входные параметры корневого уровня и выходные аргументы корневого уровня в структуру данных моделей, чтобы поддержать входящий мультиобразец  из модели для целевого файла системы ERT

Code interface packaging> Reusable function и Pass root-level I/O as > Part of model data structure.

При использовании Code interface packaging > Reusable function выберите, рассмотрите использование опции Use dynamic memory allocation for model initialization, чтобы контролировать, сгенерирована ли функция распределения. Эта опция применяется к системным целевым файлам ERT.

Иногда выбираем Code interface packaging следующим Reusable function может сгенерировать код, который компилируется, но не повторяется. Для примера, если сигнал, DWork структура, или данные параметра имеют класс памяти, отличный от Auto, глобальные данные структуры сгенерированы. Чтобы обработать такие случаи, используйте параметр Multi-instance code error diagnostic, чтобы выбрать уровни серьезности для диагностики.

Иногда генератор кода не может сгенерировать допустимый и компилируемый код. Для примера, если модель содержит одно из следующего, сгенерированный код является недопустимым.

  • S-функция, которая не совместима с повторным использованием кода

  • Подсистема, инициируемая триггером широкого вызова функции

В этих случаях сборка прекращается после сообщения о проблеме.

Для получения дополнительной информации смотрите Generate Reentrant Code from Top Models (Embedded Coder) и Model Configuration Parameters: Генерация кода Interface.

Похожие темы