Словарь Embedded Coder

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

Описание

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

Можно создать эти типы определений кода:

  • Классы памяти, которые управляют кодом, сгенерированным для данных модели.

  • Функциональные шаблоны настройки, которые управляют именованием образцовых функций точки входа, таких как model_step. Шаблоны также применяют разделы памяти к функциям точки входа.

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

Для получения общей информации о создании определений генерации кода, смотрите, Задают Классы памяти, Разделы Памяти и Шаблоны функций для Программной архитектуры.

Словарь Embedded Coder® имеет вкладку для каждого типа определения кода. В каждой вкладке вы конфигурируете свойства определений кода. Используйте таблицу, чтобы сконфигурировать свойства и сравнить определения рядом. К свойствам доступа, которые не появляются в таблице, используйте Property Inspector. Чтобы проверить результаты, когда вы конфигурируете свойства, используйте предварительный просмотр псевдокода.

Можно применить определения, которые вы создаете в словаре к элементам модели путем конфигурирования настроек по умолчанию всей модели в редакторе Отображений Кода (см., Конфигурируют генерацию кода C По умолчанию для Категорий Данных модели и Функций). Чтобы создать разделы storage classes и memory, которые можно использовать за пределами редактора Отображений Кода, используйте Custom Storage Class Designer (см., Создают Определения Кода, чтобы Заменить Настройки по умолчанию).

Откройте словарь Embedded Coder

  • Чтобы открыть Словарь Embedded Coder, используйте один из этих методов:

    Окно Embedded Coder Dictionary отображает определения генерации кода, которые хранятся в образцовом файле. Если модель соединена со словарем данных, окно также отображает определения, которые хранятся в том словаре данных или, если применимо, в словаре, на который ссылаются. Столбец Source указывает, где каждое определение хранится.

  • Открыть Словарь Embedded Coder в словаре данных Simulink®, в панели Model Hierarchy Model Explorer:

    1. Под узлом словаря выберите узел Embedded Coder.

      Если вы не видите узел, щелкните правой кнопкой по узлу словаря и выберите Show Empty Sections.

    2. В Диалоговой панели (правая панель), нажмите Open Embedded Coder Dictionary.

Примеры

Создайте и проверьте пользовательский класс памяти

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

  1. Откройте модель rtwdemo_roll в качестве примера.

    rtwdemo_roll

  2. Включите перспективу Кода. В Редакторе Simulink выберите Code> C/C++ Code> Configure Model in Code Perspective.

  3. Ниже диаграммы модели, в редакторе Отображений Кода, выбирают вкладку Data Defaults.

  4. Кликните по значку Словаря Embedded Coder. Окно Embedded Coder Dictionary отображает определения генерации кода, которые хранятся в образцовом файле.

  5. В окне Embedded Coder Dictionary нажмите Add.

  6. Выберите новый класс памяти, который появляется в нижней части списка, StorageClass1. В панели Property Inspector справа, устанавливает значения свойств, перечисленные в этой таблице.

    СвойствоЗначение
    NameInternalStruct
    Header FileinternalData_$R.h
    Definition FileinternalData_$R.c
    Storage TypeStructured
    Structure Properties> Type NameinternalData_T_$M
    Structure Properties> Instance NameinternalData_$M

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

  7. Возвратитесь к редактору Отображений Кода. Выберите строку Internal data и установите Storage Class на InternalStruct.

  8. В диалоговом окне Configuration Parameters, на Code Generation> панель Code Placement, устанавливает File packaging format на Modular.

  9. Сгенерируйте код.

  10. В Редакторе Simulink Представление кода откройте и осмотрите файл internalData_rtwdemo_roll.h. Файл задает тип структуры internalData_T_, поля которого представляют состояния блока в модели.

    /* Storage class 'InternalStruct', for system '<Root>' */
    typedef struct {
      real32_T FixPtUnitDelay1_DSTATE;     /* '<S7>/FixPt Unit Delay1' */
      real32_T Integrator_DSTATE;          /* '<S1>/Integrator' */
      int8_T Integrator_PrevResetState;    /* '<S1>/Integrator' */
    } internalData_T_;

    Файл также объявляет глобальную переменную структуры под названием internalData_.

    /* Storage class 'InternalStruct' */
    extern internalData_T_ internalData_;

  11. Откройте и осмотрите файл internalData_rtwdemo_roll.c. Файл выделяет память для internalData_.

    /* Storage class 'InternalStruct' */
    internalData_T_ internalData_;

Шаблон настройки Создания функции

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

Этот пример показывает, как создать шаблон функции, который указывает, что именование управляет func_$N_$R. $N является базовым именем каждой сгенерированной функции, и $R является именем модели Simulink.

  1. Откройте модель rtwdemo_mrmtbb в качестве примера.

  2. Обновите блок-схему. Эта многозадачная модель имеет два уровня выполнения, таким образом, сгенерированный код включает две соответствующих функции точки входа.

  3. В модели, параметр конфигурации модели набора System target file к ert.tlc. Чтобы использовать функциональный шаблон настройки, необходимо использовать основанный на ERT системный конечный файл.

  4. В Редакторе Simulink включите перспективный режим Кода и откройте Словарь Embedded Coder.

  5. В Словаре Embedded Coder, на вкладке Function Customization Templates, нажимают Add.

  6. Для нового шаблона функции, набор эти свойства:

    • Name к myFunctions.

    • Function Name к func_$N_$R.

    После внесения ваших изменений проверьте, что предварительный просмотр псевдокода отражает то, что вы ожидаете.

  7. На вкладке Function Defaults, для Initialize/Terminate и строк Execution, устанавливает Function Customization Template на myFunctions.

  8. Сгенерируйте код.

  9. На правой стороне перспективы Кода, в панели Представления кода, открытой и, осматривают файл rtwdemo_mrmtbb.c. Файл задает две функции выполнения, func_step0_rtwdemo_mrmtbb и func_step1_rtwdemo_mrmtbb, имена которого соответствуют правилу, что вы задали в шаблоне функции.

Создайте раздел Memory

Для примера, который показывает, как создать раздел memory, смотрите Данные об Управлении и Функциональное Размещение в Памяти Вставкой Прагм.

Создайте класс памяти для использования со статически и динамически инициализируемые данные

Этот пример показывает, как создать класс памяти, который помещает определения глобальной переменной и объявления в файлах, имена которых зависят от имени модели. Вы создаете две копии класса памяти так, чтобы можно было использовать одну копию с данными о параметре (категория данных Local parameters) и одну копию с другими данными.

Как правило, сгенерированный код инициализирует данные о параметре статически, вне любой функции, и инициализирует другие данные динамически в образцовой функции инициализации. Когда вы создаете класс памяти при помощи Custom Storage Class Designer или Словаря Embedded Coder, вы устанавливаете свойство Data Initialization задать механизм инициализации.

В Словаре Embedded Coder, для каждого класса памяти, необходимо выбрать Static или Dynamic. Рассмотрите создание одной копии класса памяти для данных о параметре (Static) и одна копия для других данных (Dynamic).

Создайте класс памяти

  1. Открытая модель rtwdemo_roll в качестве примера.

  2. Включите Редактору Simulink перспективный режим Кода.

  3. Ниже диаграммы модели, в редакторе Отображений Кода, кликают по значку Словаря Embedded Coder.

  4. В Словаре Embedded Coder нажмите Add.

  5. Для нового класса памяти, набор эти свойства:

    • Name к SigsStates

    • Header File к $R_my_data.h

    • Definition File к $R_my_data.c

    По умолчанию свойство Data Initialization установлено в Dynamic, что означает, что класс памяти подходит для использования с сигналами, состояниями и хранилищами данных.

    После внесения ваших изменений проверьте, что предварительный просмотр псевдокода отражает то, что вы ожидаете.

  6. Нажмите Duplicate. Появляется новый класс памяти, SigsStates_copy.

  7. Для нового класса памяти, набор эти свойства:

    • Name к Params

    • Data Initialization к Static

    После внесения ваших изменений проверьте, что предварительный просмотр псевдокода отражает то, что вы ожидаете.

Примените класс памяти и сгенерируйте код

  1. Возвратитесь к редактору Отображений Кода.

  2. На вкладке Data Defaults, для строки Local parameters, в столбце Storage Class, выбирают Params.

  3. Для строки Internal data, набор Storage Class к SigsStates.

  4. Сконфигурируйте некоторые элементы данных параметра в модели так, чтобы оптимизация не устраняла их из сгенерированного кода. Откройте Model Data Editor.

  5. Выберите вкладку Parameters.

  6. В модели перейдите в подсистему BasicRollMode.

  7. Обновите блок-схему. Теперь, таблица данных содержит строки, которые соответствуют переменным рабочей области, используемым моделью.

  8. Рядом с полем Filter contents активируйте кнопку Filter using selection.

  9. В модели выберите три блока Усиления.

  10. Обновите схему.

  11. В Model Data Editor, в таблице данных, выбирают три строки, которые соответствуют переменным dispGain, intGain и rateGain в рабочем пространстве модели.

  12. Для каждой переменной, в столбце Storage Class, выбирают Convert to parameter object.

    Model Data Editor преобразовывает переменные рабочей области в объекты Simulink.Parameter. Новые объекты используют класс памяти Model default, что означает, что они получают класс памяти по умолчанию, который вы задали для Local parameters в редакторе Отображений Кода.

  13. В диалоговом окне Configuration Parameters, на Code Generation> панель Code Placement, устанавливает File packaging format на Modular.

  14. Сгенерируйте код.

  15. В Представлении кода откройте и осмотрите файлы rtwdemo_roll_my_data.c и rtwdemo_roll_my_data.h. Эти файлы задают и объявляют глобальные переменные, которые соответствуют объектам параметра и некоторым состояниям блока, таким как состояние блока Integrator в подсистеме BasicRollMode.

    /* Storage class 'SigsStates' */
    real32_T rtFixPtUnitDelay1_DSTATE;
    real32_T rtIntegrator_DSTATE;
    int8_T rtIntegrator_PrevResetState;
    
    /* Storage class 'Params' */
    real32_T dispGain = 0.75F;
    real32_T intGain = 0.5F;
    real32_T rateGain = 2.0F;

Обратитесь к определениям генерации кода в пакете

Можно сконфигурировать Словарь Embedded Coder, чтобы обратиться к определениям генерации кода, которые вы храните в пакете (см., Создают Определения Кода, чтобы Заменить Настройки по умолчанию). Те определения затем кажутся доступными для выбора в редакторе Отображений Кода. В этом примере вы конфигурируете Словарь Embedded Coder в rtwdemo_roll, чтобы отослать к определениям, сохраненным во встроенном пакете в качестве примера ECoderDemos.

  1. Откройте Словарь Embedded Coder для rtwdemo_roll. Для инструкций смотрите, Создают и Проверяют Пользовательский Класс памяти.

  2. В окне Embedded Coder Dictionary нажмите Manage Packages.

  3. В диалоговом окне Manage Packages нажмите Refresh. Ожидайте, пока больше опций не появляется в Select package выпадающий список.

  4. Установите Select package на ECoderDemos и нажмите Load.

    В окне Embedded Coder Dictionary, на вкладке Storage Classes, таблица показывает классы памяти, заданные в пакете ECoderDemos. Теперь, в rtwdemo_roll, можно выбрать эти классы памяти в редакторе Отображений Кода на вкладке Data Defaults.

  5. Чтобы разгрузить пакет, в диалоговом окне Manage Packages, выбирают пакет в Select package выпадающий список и нажимают Unload.

Совместно используйте определения генерации кода между моделями при помощи словаря данных Simulink

Для примера, который показывает, как совместно использовать определения генерации кода между моделями при помощи словарей данных, см. Словарное определение Embedded Coder Доли Между Моделями.

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

Для примера, который показывает, как сконфигурировать отображения кода по умолчанию в разделяемом Словаре Embedded Coder, смотрите, Конфигурируют Отображение Кода По умолчанию в Разделяемом Словаре.

Связанные примеры

Свойства определения кода

развернуть все

Эти свойства появляются в панели Property Inspector окна Embedded Coder Dictionary. В таблице некоторые свойства, кажется, как столбцы упрощают пакетное редактирование.

Классы памяти

Имя класса памяти. Имя должно быть уникальным среди классов памяти в словаре.

Для списков встроенных и классов памяти в качестве примера, которые обеспечивает Simulink, смотрите, Выбирают Storage Class for Controlling Data Representation in Generated Code.

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

Это свойство доступно только для чтения.

Местоположение определения класса памяти.

Спецификация, чтобы получить доступ к данным, сопоставленным с моделью. Доступ к данным непосредственно (Direct) или через настраиваемый get и функции set (Function). Для получения дополнительной информации см. Доступ к данным Через Функции при помощи Классов памяти в Словаре Embedded Coder.

Зависимости

  • Установка этого свойства к Function:

    • Наборы Data Access к Imported.

    • Средства, что вы не можете задать свойства мультиэкземпляра.

    • Включает эти свойства:

      • Access Mode

      • Allowed Access

      • Name of Getter

      • Name of Setter

    • Отключает свойство Preserve array dimensions. Чтобы сохранить размерности многомерных массивов в сгенерированном коде, установите Data Access на Direct.

Спецификация, что сгенерированный код задает данные (Exported) или импортирует (Imported) определение данных из внешнего кода. Встроенные классы памяти и классы памяти в пакетах, таких как Simulink могут использовать другие опции осциллографа, такие как File.

Зависимости

  • Установка этого свойства к Imported:

    • Отключает Definition File. Чтобы включать ваш внешний файл исходного кода в процесс сборки, используйте образцовые параметры конфигурации. Для примера смотрите, Конфигурируют Интерфейс Данных.

    • Средства, что вы не можете установить Header File на $N.h, хотя можно использовать лексему $N.

  • Чтобы установить это свойство на Exported, необходимо использовать одну из лексем $N или $R в значении Header File.

Имя заголовочного файла, который объявляет данные, заданные как имя или называющий правило. Правило именования включает комбинацию текста и лексем. Допустимые лексемы перечислены в этой таблице.

ЛексемаОписание
$RИмя корневой модели
$NИмя связанного элемента данных
$GИмя класса памяти
$UПользовательский текст лексемы, который вы задаете для модели, как описано в Управлении форматом Идентификатора

Зависимости

  • Если вы устанавливаете Data Scope на Exported, необходимо использовать одну из лексем $R или $N в значении этого свойства.

  • Если вы устанавливаете Data Scope на Imported, вы не можете установить значение этого свойства к $N.h, но можно использовать лексему $N.

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

ЛексемаОписание
$RИмя корневой модели
$NИмя связанного элемента данных
$GИмя класса памяти
$UПользовательский текст лексемы, который вы задаете для модели, как описано в Управлении форматом Идентификатора

Зависимости

Установка Data Scope к Imported отключает Definition File. Чтобы включать ваш внешний файл исходного кода в процесс сборки, используйте образцовые параметры конфигурации. Для примера смотрите, Конфигурируют Интерфейс Данных.

Спецификация для класса памяти, чтобы получить доступ к данным, сопоставленным с моделью через функции при помощи Value или Pointer. Для получения дополнительной информации см. Доступ к данным Через Функции при помощи Классов памяти в Словаре Embedded Coder.

Зависимости

Это свойство включено только, когда вы устанавливаете Data Access на Function.

Спецификация для класса памяти, чтобы позволить чтение и запись (Read/Write), только для чтения (Read Only), или только для записи (Write Only) доступ к данным.

Зависимости

Это свойство включено только, когда вы устанавливаете Data Access на Function.

Имя функции get, которая выбирает связанные данные, заданные как имя или называющий правило. Правило именования включает комбинацию текста и лексем. Допустимые лексемы перечислены в этой таблице.

ЛексемаОписание
$NИмя связанного элемента данных (требуется)
$RИмя корневой модели
$MИсказите текст, который гарантирует уникальность
$UПользовательский текст лексемы. Смотрите Управление форматом Идентификатора.

Зависимости

Это свойство включено только, когда вы устанавливаете Data Access на Function.

Имя функции set, которая выбирает, изменяет данные, заданные как имя или называющий правило. Правило именования включает комбинацию текста и лексем. Допустимые лексемы перечислены в этой таблице.

ЛексемаОписание
$NИмя связанного элемента данных (требуется)
$RИмя корневой модели
$MИсказите текст, который гарантирует уникальность
$UПользовательский текст лексемы. Смотрите Управление форматом Идентификатора.

Зависимости

Это свойство включено только, когда вы устанавливаете Data Access на Function.

Спецификация для класса памяти, чтобы использовать или настройки устройства хранения данных, что вы указываете в разделе Single-instance storage или настройках устройства хранения данных, что задаете в разделе Multi-instance storage. Когда вы применяете класс памяти к элементу данных, Словарь Embedded Coder определяет, является ли это класс хранения единственного экземпляра или класс памяти мультиэкземпляра типом данных и контекстом модели в иерархии модели - ссылки.

Зависимости

Выбор этого свойства включает разделам Single-instance storage и Multi-instance storage. Свойства Storage Type, Type Name и Instance Name появляются и в Single-instance storage и в разделах Multi-instance storage.

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

Зависимости

Установка этого свойства к Structured включает Type Name и Instance Name.

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

ЛексемаОписание
$RИмя корневой модели
$NБазовое имя присоединенной функции, такой как step
$GИмя класса памяти
$UПользовательский текст лексемы, который вы задаете для модели, как описано в Управлении форматом Идентификатора
$MИскажающий имя вставленный текст, при необходимости, чтобы избежать столкновений имени

Зависимости

Установка Storage Type к Structured включает это свойство.

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

ЛексемаОписание
$RИмя корневой модели
$NБазовое имя присоединенной функции, такой как step
$GИмя класса памяти
$UПользовательский текст лексемы, который вы задаете для модели, как описано в Управлении форматом Идентификатора
$MИскажающий имя вставленный текст, при необходимости, чтобы избежать столкновений имени

Зависимости

Установка Storage Type к Structured включает это свойство.

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

  • Dynamic — Сгенерированный код инициализирует данные как часть образцовой функции точки входа инициализации.

  • Static — Сгенерированный код инициализирует данные в том же операторе, который задает и выделяет память для данных. Оператор присваивания появляется наверху .c или исходного файла .cpp, за пределами функции.

  • 'none' Сгенерированный код не инициализирует данные.

Зависимости

  • Если вы выбираете Const, вы не можете установить это свойство на Dynamic.

  • Установка этого свойства к Dynamic отключает Const.

Местоположение в памяти, чтобы выделить данные, заданные как раздел memory, который существует в Словаре Embedded Coder по вкладке Memory Sections. Для получения информации о разделах памяти смотрите Данные об Управлении и Функциональное Размещение в Памяти Вставкой Прагм.

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

Спецификация, чтобы применить спецификатор const к данным.

Зависимости

  • Если вы выбираете это свойство, вы не можете установить Data Initialization на Dynamic.

  • Установка Data Initialization к Dynamic отключает это свойство.

Спецификация, чтобы применить спецификатор volatile к данным.

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

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

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

Зависимости

  • Установка Data Initialization к Static включает это свойство.

  • Установка Data Initialization к Dynamic отключает это свойство.

  • Чтобы установить значение этого свойства, установите Data Initialization на None.

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

Зависимости

  • Установка Data Initialization к Dynamic включает это свойство.

  • Установка Data Initialization к Static отключает это свойство.

  • Чтобы установить значение этого свойства, установите Data Initialization на None.

Функциональные шаблоны настройки

Имя шаблона. Имя должно быть уникальным среди шаблонов функций в словаре. Embedded Coder обеспечивает встроенные шаблоны, перечисленные в этой таблице.

ШаблонОписание
ModelFunctionВ редакторе Отображений Кода используйте для функций точки входа для инициализации, выполнения, завершения, и сбросьте (см., Конфигурируют Генерацию кода По умолчанию для Функций),
UtilityFunctionВ редакторе Отображений Кода используйте для разделяемых служебных функций (см., Конфигурируют Генерацию кода По умолчанию для Функций),

Пользовательский текст, который можно использовать, чтобы описать цель и функциональность шаблона функции.

Это свойство доступно только для чтения.

Местоположение определения шаблона функции.

  • Имя модели — Заданный в модели Simulink.

  • Имя словаря — Заданный в словаре данных Simulink (см. то, Что Словарь Данных? (Simulink)).

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

ЛексемаОписание
$RИмя корневой модели
$NБазовое имя присоединенной функции, такой как step
$UПользовательский текст лексемы, который вы задаете для модели, как описано в Управлении форматом Идентификатора
$CДля разделяемых служебных функций, контрольная сумма, вставленная, чтобы избежать столкновений имени
$MИскажающий имя вставленный текст, при необходимости, чтобы избежать столкновений имени

Местоположение в памяти, чтобы выделить функцию, заданную как раздел memory, который существует в Словаре Embedded Coder по вкладке Memory Sections. Для получения информации о разделах памяти смотрите Данные об Управлении и Функциональное Размещение в Памяти Вставкой Прагм.

Разделы памяти

Имя раздела memory. Имя должно быть уникальным среди разделов memory в словаре. Embedded Coder обеспечивает встроенные разделы памяти, перечисленные в этой таблице.

Раздел MemoryОписание
MemConstПримените спецификатор типа хранения const к данным.
MemVolatileПримените спецификатор типа хранения volatile к данным.
MemConstVolatileПримените спецификаторы типа хранения const и volatile к данным.

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

Это свойство доступно только для чтения.

Местоположение определения раздела memory.

Комментарий к коду, который генератор кода включает с прагмами или другими художественными оформлениями, которые вы задаете с Pre Statement и Post Statement.

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

Когда вы устанавливаете Statements Surround на Each variable, можно использовать маркерный $N, чтобы представлять имя каждой переменной или функции, которая использует раздел memory.

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

Когда вы устанавливаете Statements Surround на Each variable, можно использовать маркерный $N, чтобы представлять имя каждой переменной или функции, которая использует раздел memory.

Спецификация, чтобы вставить операторы кода (Pre Statement и Post Statement):

  • Вокруг каждой переменной и функции, которая использует раздел memory. Выберите Each variable.

  • Однажды, вокруг целого раздела memory. Сгенерированный код агрегировал переменные и функциональные определения в непрерывный блок кода и окружает блок операторами. Выберите Group of variables.

Ограничения

  • Вы не можете создать или изменить определения генерации кода программно. Однако можно удалить, скопировать и переместить определения кода между моделями и словарями данных при помощи этих функций:

  • Класс памяти или функциональный шаблон настройки, который вы создаете в Словаре Embedded Coder, не могут использовать раздел memory, который вы загружаете от пакета (как описано в, Обращаются к Определениям Генерации кода в Пакете). Используйте раздел memory, заданный в Словаре Embedded Coder.

  • Вы не можете создать определения генерации кода в файле модели .mdl.

  • Для дополнительных ограничений для определений генерации кода в Словаре Embedded Coder словаря данных (файл .sldd), смотрите, Развертывают Определения Генерации кода.

Введенный в R2018a