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

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

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

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

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

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

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

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

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

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

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

Для получения дополнительной информации о заменяющих библиотеках кода, смотрите, Выбирают Code Replacement Library и заменяющую библиотеку Code.

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

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

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

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

  • То, когда модель не содержит блоки Model, помещает служебный код в папку сборки (обычно, в modelC или 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.

Для получения дополнительной информации о работе с этими интерфейсами смотрите, обмениваются Данными Между Сгенерированным и Внешним Кодом Используя API C, Экспорт Файл ASAP2 для Измерения Данных и Калибровкой и Симуляциями Режима external mode для Настройки Параметра и Контроля сигналов.

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

[a]  ANSI является зарегистрированной торговой маркой American National Standards Institute, 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ДаEnabled 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.

Неличные значения (например, NaNInf)

Выберите Support floating-point numbers и Support неличные числа.

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

Выберите 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-функцию MEX C, которая не имеет соответствующей реализации 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шаг функция.

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

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

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

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

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

Выберите Generate reusable code. Смотрите Конфигурируют Поддержку Повторного использования кода деталей.

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

Очистите Generate reusable code. Сгенерированный код не является допускающим повторное использование или повторно используемым. Смотрите Конфигурируют генерацию кода C для Функций Точки входа Модели для получения информации об интерфейсе вызова, сгенерированном для функций модели в этом случае.

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

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

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

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

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

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

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

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

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

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

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

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

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

Для получения дополнительной информации смотрите, Генерируют Повторно используемый Код от Топ-моделей и Параметров конфигурации Модели: Интерфейс Генерации кода.

Похожие темы