Сконфигурируйте 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 или Код С++ для математических функций или операций, выберите значение для Code replacement library. В противном случае задайте None.

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

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

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

Выберите Auto или Shared location for 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.

Для получения дополнительной информации о работе с этими интерфейсами смотрите, обмениваются Данными Между Сгенерированным и Внешним Кодом Используя 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.

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

Выберите 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 или Configuration Parameters> Code Generation> Generate code only, очищен.

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

Чтобы избежать такого несоответствия, установите ProdEqTarget на on или выберите Configuration Parameters> Code Generation> Generate code only (или установите 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 (значение по умолчанию). Для получения дополнительной информации о прямом канале через, смотрите Алгебраические Концепции Цикла (Simulink).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Configuration Parameters> Code Generation> параметр Pass root-level I/O as предоставляет возможности, которые управляют, как входы и выходы модели на корневом уровне модели передаются функции model_step.

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

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

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

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

Похожие темы