exponenta event banner

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

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

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

Укажите, где генератор кода размещает фиксированный и другой служебный код.

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

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

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

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

Введите префикс или суффикс, например rt_ или _rt, для параметра модификатора имени переменной MAT-файла. Генератор кода задает префиксы или добавляет текст к именам переменных для системных выходов, состояний и времени моделирования, указанных на панели Импорт/экспорт данных (Data Import/Export). Для получения информации о протоколировании данных MAT-файла см. Журнал результатов выполнения программы.

Укажите API обмена данными для включения в созданный код.

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

Дополнительные сведения о работе с этими интерфейсами см. в разделах Обмен данными между сгенерированным и внешним кодом с помощью C API, Экспорт файла ASAP2 для измерения и калибровки данных и Моделирование внешнего режима для настройки параметров и мониторинга сигналов.

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

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

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

Примечание

Прежде чем задать стандартную математическую библиотеку или библиотеку замены кода, убедитесь, что компилятор поддерживает нужную библиотеку. При выборе значения параметра, которое не поддерживается в цепочке инструментов, могут возникать ошибки компилятора. Например, если выбрана стандартная математическая библиотека C99 (ISO) компилятор не поддерживает математические расширения ISO C, могут возникать ошибки времени компиляции.

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

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

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

ПараметрЗависимости?Сведения о зависимостях
Стандартная математическая библиотекаДаДоступные значения зависят от выбора языка.
Библиотека замены кодаДаДоступные значения зависят от лицензирования продукта и других параметров. Дополнительные сведения см. в разделе Библиотека замены кода.
Размещение общего кодаНет 
Поддержка: числа с плавающей запятой (только целевые файлы системы ERT)Нет 
Поддержка: неграничные числаДа (ERT)
Нет (GRT)
Для целевых файлов системы ERT с поддержкой чисел с плавающей запятой
Поддержка: комплексные номера (только целевые файлы системы ERT)Нет 
Поддержка: абсолютное время (только целевые файлы системы ERT)Нет 
Поддержка: непрерывное время (только целевые файлы системы ERT)ДаТребуется отключить поле Удалить состояние ошибки в структуре данных модели в реальном времени.
Поддержка: неинлинированные S-функции (только целевые файлы системы ERT)ДаТребуется включить поддержку чисел с плавающей запятой и поддержку неграничных чисел
Классический интерфейс вызоваДаТребуется отключить функцию Single output/update. Для целевых файлов системы ERT необходимо включить поддержку чисел с плавающей запятой.
Одна функция вывода/обновленияДаОтключить для классического интерфейса вызова
Требуется функция завершения (только целевые файлы системы ERT)Да 
Упаковка интерфейса кодаДаДоступные значения зависят от выбора языка.
Диагностика ошибок многоэкземплярного кодаДаУстановить упаковку интерфейса кода в Reusable function или C++ class
Передача ввода-вывода на корневом уровне как (только целевые файлы системы ERT)ДаУстановить упаковку интерфейса кода в Reusable function
Использовать динамическое выделение памяти для инициализации модели (только целевые файлы системы ERT)ДаУстановить упаковку интерфейса кода в Reusable function
Ведение журнала файлов MAT ДаДля целевых файлов системы GRT необходимо включить поддержку неграничных чисел; для целевых файлов системы ERT необходимо включить функцию «Поддержка чисел с плавающей запятой», «Поддержка неграничных чисел» и «Завершение»
Модификатор имени переменной файла MATДаВключено протоколированием MAT-файлов
Удалить поле состояния ошибки в структуре данных модели в реальном времени (только целевые файлы системы ERT)ДаТребуется отключить поддержку: непрерывное время.
Генерация C API для: сигналовНет 
Создание C API для: параметровНет 
Создать C API для: состоянийНет 
Создание C API для: ввода-вывода на корневом уровнеНет 
ASAP2 интерфейсНет 
Внешний режимНет 
Транспортный уровень ДаВключить внешний режим
Аргументы MEX-файлаДаВключить внешний режим
Статическое выделение памятиДаВключить внешний режим
Размер буфера статической памятиДаВключить статическое выделение памяти

Настройка поддержки числовых данных

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

Создание кода, поддерживающего...Делай...
Только целочисленные данныеСнимите флажок Поддерживать числа с плавающей запятой. Если во время создания кода встречаются неинтегрированные данные или выражения, сообщение об ошибке сообщает об ошибочных блоках и параметрах.
Данные с плавающей запятой

Выберите «Поддержка чисел с плавающей запятой».

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

Выберите Поддержка чисел с плавающей запятой и Поддержка неграничных чисел.

Сложные данные

Выберите «Поддержка комплексных чисел».

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

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

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

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

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

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

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

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

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

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

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

Встроенные S-функции имеют большое преимущество при формировании производственного кода, например, при реализации драйверов устройств. Чтобы принудительно использовать встроенные S-функции для генерации кода, снимите флажок Поддерживать неинлинированные S-функции.

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

  • Параметр конфигурации модели GenCodeOnly имеет значение off.

  • Параметр конфигурации модели ProdEqTarget имеет значение off.

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

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

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

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

Выберите Классический интерфейс вызова и ведение журнала MAT-файла. Кроме того, следует очистить поле Remove error status в структуре данных модели в реальном времени. Классический интерфейс вызова обеспечивает быстрый способ использования кода, созданного в R2012a или более поздних версиях, с пользовательским системным целевым файлом на основе pre-R2012a GRT путем создания вызовов функции-оболочки, которые взаимодействуют с сгенерированным кодом.

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

Выбор функции одиночного вывода/обновления

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

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

Выберите функцию завершения (Embedded Coder). Дополнительные сведения см. в описании model_terminate.

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

Выберите Создать повторно используемый код. Дополнительные сведения см. в разделе Настройка поддержки повторного использования кода.

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

Снимите флажок Генерировать повторно используемый код. Созданный код не является повторно используемым или повторно вводимым. Для получения информации о вызывающем интерфейсе, сгенерированном для функций модели в данном случае, см. раздел Конфигурирование генерации кода C для функций точки входа модели.

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

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

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

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

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

В редакторе отображения кода на вкладке Функции точек входа щелкните в столбце Имя функции для функции шага базовой скорости. Щелкните отображаемые три вертикальные точки. Затем щелкните Настроить прототип. Если прототип функции не был предварительно сконфигурирован, откроется диалоговое окно, в котором отображается предварительный просмотр интерфейса функции шага без аргументов (void-void). В диалоговом окне также отображается имя текущей функции. Если аргументы ранее были настроены для модели, в диалоговом окне отображаются текущие настройки. Можно изменить имя и параметры аргумента для функции шага. Дополнительные сведения см. в разделе Настройка имени и аргументов для отдельных ступенчатых функций (встроенный кодер).

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

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

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

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

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

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

Упаковка интерфейса кода > Reusable function и передача ввода-вывода на корневом уровне как > Part of model data structure.

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

Иногда выбор упаковки интерфейса Code в качестве Reusable function может создавать код, который компилируется, но не вводится повторно. Например, если сигнал, DWork структура или данные параметров имеют класс хранения, отличный от Autoсоздаются глобальные структуры данных. Для обработки таких случаев используйте параметр диагностики ошибок кода нескольких экземпляров для выбора уровней серьезности диагностики.

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

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

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

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

Дополнительные сведения см. в разделах Создание кода повторного ввода из лучших моделей (встроенный кодер) и Параметры конфигурации модели: интерфейс генерации кода.

Связанные темы