Создайте определения кода, которые код системы управления генерацию для данных моделей и функций
Чтобы открыть словарь Embedded Coder Dictionary, в окне модели, на вкладке C Code, выберите Code Interface > Embedded Coder Dictionary.
В окне Embedded Coder Dictionary отображаются определения генерации кода, которые хранятся в файле модели. Если модель связана со словарем данных, в окне также отображаются определения, которые хранятся в этом словаре данных или, если применимо, в словаре-ссылке. Столбец Source указывает, где хранится каждое определение.
Чтобы открыть Embedded Coder в Simulink® словарь данных, на панели Model Hierarchy Model Explorer:
Под узлом словаря выберите узел Embedded Coder.
Если узел не отображается, щелкните правой кнопкой мыши по узлу словаря и выберите Show Empty Sections.
На панели Диалоговое окно (правая панель) нажмите кнопку Open Embedded Coder Dictionary.
В модели создайте класс памяти, который агрегирует данные внутренней модели, включая состояния блока, в структуру, характеристиками которой можно управлять. Затем проверьте класс памяти, сгенерировав код из модели.
Откройте пример модели rtwdemo_roll
.
rtwdemo_roll
Если модель не открывается в приложении Embedded Coder, откройте приложение и нажмите вкладку C Code.
На вкладке C Code выберите Code Interface > Embedded Coder Dictionary. В окне Embedded Coder Dictionary отображаются определения генерации кода, которые хранятся в файле модели.
В окне Embedded Coder Dictionary нажмите Add.
Выберите новый класс памяти, который появится в нижней части списка StorageClass1
. На панели Property Inspector справа задайте значения свойств, перечисленные в этой таблице.
Свойство | Значение |
---|---|
Name | InternalStruct |
Header File | internalData_$R.h |
Definition File | internalData_$R.c |
Storage Type | Structured |
Structure Properties> Type Name | internalData_T_$M |
Structure Properties> Instance Name | internalData_$M |
После внесения изменений в нижней панели проверьте, что предварительный просмотр псевдокода отражает то, что вы ожидаете.
Вернитесь в редактор моделей. Чтобы открыть редактор Отображения, под холстом, дважды щелкните Code Mappings. На вкладке Data Defaults разверните раздел Signals. Выберите Signals, states, and internal data строку и установите Storage Class равной InternalStruct
.
В диалоговом окне Configuration Parameters, на Code Generation> Code Placement панель, набор File packaging format к Modular
.
Сгенерируйте код.
В представлении Simulink Editor Code откройте и проверьте файл 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_;
Откройте и проверьте файл internalData_rtwdemo_roll.c
. Файл выделяет память для internalData_
.
/* Storage class 'InternalStruct' */ internalData_T_ internalData_;
С помощью шаблона функции можно задать правило, которое управляет именами сгенерированных функций точки входа. Этот метод помогает сэкономить время и усилия по техническому обслуживанию в модели со многими функциями точки входа, такими как модель экспорта функций или многозадачная модель многозадачности.
В этом примере показано, как создать шаблон функции, который задает правило именования func_$N_$R
. $N
- базовое имя каждой сгенерированной функции и $R
- имя модели Simulink.
Откройте пример модели rtwdemo_mrmtbb
.
Обновите блок. Эта многозадачная модель имеет две скорости выполнения, поэтому сгенерированный код включает две соответствующие функции точки входа.
В модели установите параметр конфигурации модели System target file равным ert.tlc
. Чтобы использовать шаблон индивидуальной настройки функции, необходимо использовать системный целевой файл на основе ERT.
В Редактор откройте приложение Embedded Coder и откройте Embedded Coder Dictionary.
В словаре Embedded Coder Dictionary, на вкладке Function Customization Templates, нажмите Add.
Для нового шаблона функции задайте следующие свойства:
Name с myFunctions
.
Function Name с func_$N_$R
.
После внесения изменений проверьте, что предпросмотр псевдокода отражает то, что вы ожидаете.
В окне модели откройте редактор Отображения. На вкладке Function Defaults, для Initialize/Terminate и Execution строки, набор Function Customization Template к myFunctions
.
Сгенерируйте код.
В представлении кода откройте и проверьте файл rtwdemo_mrmtbb.c
. Файл определяет две функции выполнения, func_step0_rtwdemo_mrmtbb
и func_step1_rtwdemo_mrmtbb
, имена которых соответствуют правилу, заданному в шаблоне функции.
Для примера, который показывает, как создать раздел памяти, смотрите Control Data and Function Placement in Memory by Inserting Pragmas.
В этом примере показано, как создать класс памяти, который помещает определения глобальных переменных и объявления в файлы, имена которых зависят от имени модели. Вы создаете две копии класса памяти, чтобы можно было использовать одну копию с данными параметра (Model parameters типа данных) и одну копию с другими данными.
Обычно сгенерированный код инициализирует данные параметра статически, вне любой функции и инициализирует другие данные динамически, в функции инициализации модели. Когда вы создаете класс памяти с помощью Custom Storage Class Designer или Embedded Coder Dictionary, вы устанавливаете свойство Data Initialization, чтобы задать механизм инициализации.
В словаре Embedded Coder Dictionary для каждого класса памяти необходимо выбрать Static
или Dynamic
инициализация. Рассмотрите создание одной копии класса памяти для данных параметра (Static
) и одна копия для других данных (Dynamic
).
Откройте пример модели rtwdemo_roll
.
Если вкладка C Code не открыта, откройте приложение Embedded Coder и щелкните вкладку C Code.
Выберите Code Interface > Embedded Coder Dictionary
В словаре Embedded Coder Dictionary нажмите Add.
Для нового класса памяти задайте следующие свойства:
Name с SigsStates
Header File с $R_my_data.h
Definition File с $R_my_data.c
Data Initialization с Dynamic
После внесения изменений проверьте, что предпросмотр псевдокода отражает то, что вы ожидаете.
Нажмите Duplicate. Новый класс памяти, SigsStates_copy
, появляется.
Для нового класса памяти задайте следующие свойства:
Name с Params
Data Initialization с Static
После внесения изменений проверьте, что предпросмотр псевдокода отражает то, что вы ожидаете.
Вернитесь к модели и откройте редактор Отображения. Под полотном модели дважды кликните Code Mappings - C.
На вкладке Data Defaults для строки Parameters > Model Parameters в столбце Storage Class выберите Params
.
Для Signals> Signals, states, and internal data строка, набор Storage Class к SigsStates
.
Сконфигурируйте некоторые элементы данных параметров в модели, чтобы оптимизация не исключала эти элементы из сгенерированного кода. На вкладке Modeling щелкните Design > Model Workspace.
В Model Explorer на центральной панели выберите три строки, которые соответствуют переменным dispGain
, intGain
, и rateGain
в рабочем пространстве модели.
Щелкните правой кнопкой мыши одну из строк и выберите Convert to parameter object
. Этот Model Data Editor преобразует переменные рабочей области в Simulink.Parameter
объекты.
В строке для параметра dispGain
в Storage Class столбце щелкните Configure. В окне модели подсвечивается строка для dispGain
параметр в редакторе Отображения.
Для каждой переменной в Storage Class столбце выберите Model default: Params
, что означает, что они получают класс памяти по умолчанию, указанный для Model parameters.
В диалоговом окне Configuration Parameters, на Code Generation> Code Placement панель, набор File packaging format к Modular
.
Сгенерируйте код.
В представлении кода откройте и проверьте файлы 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 Dictionary для ссылки на определения генерации кода, которые вы храните в пакете (см. «Создание определений кода для внешних объектов данных»). Эти определения будут доступны для выбора в редакторе Отображения. В этом примере вы конфигурируете Embedded Coder в rtwdemo_roll
для обращения к определениям, хранящимся во встроенном примере пакета ECoderDemos
.
Откройте словарь Embedded Coder для rtwdemo_roll
. Инструкции см. в разделе Создание и проверка Класса памяти.
В окне Embedded Coder Dictionary нажмите Manage Packages.
В диалоговом окне Управление пакетами нажмите Refresh. Подождите, пока в раскрывающемся списке Select package не появится больше параметров.
Установите Select package значение ECoderDemos
и нажмите Load.
В окне Embedded Coder Dictionary, на вкладке Storage Classes, в таблице показаны классы памяти, определенные в ECoderDemos
пакет. Теперь, в rtwdemo_roll
можно выбрать эти классы памяти в редакторе Отображения на вкладке Data Defaults.
Чтобы выгрузить пакет, в диалоговом окне Управление пакетами выберите пакет в раскрывающемся списке Select package и нажмите Unload.
Для примера, который показывает, как обмениваться определениями генерации кода между моделями с помощью словарей данных, см. Раздел «Совместное определение словаря Embedded Coder между моделями».
Для примера, в котором показано, как сконфигурировать отображения кода по умолчанию в общем словаре Embedded Coder, смотрите Настройте отображение кода по умолчанию в общем словаре.
Эти свойства отображаются на панели Property Inspector окна Embedded Coder Dictionary. В таблице некоторые свойства отображаются как столбцы для облегчения редактирования пакета.
Классы памятиName
- Имя класса памятиStorageClass1
(по умолчанию) | текстИмя класса памяти. Имя должно быть уникальным среди классов памяти в словаре.
Для списков встроенных и примерных классов памяти, которые предоставляет Simulink, смотрите Выбор класса памяти для управления представлением данных в Сгенерированном коде.
Description
- Назначение и функциональность класса памятиПользовательский текст, который можно использовать для описания назначения и функциональности класса памяти.
Source
- Расположение определения класса памятиЭто свойство доступно только для чтения.
Расположение определения класса памяти.
Built-in
- Предоставляется компанией Simulink.
Имя модели - Определено в модели Simulink.
Имя словаря - Определяется в словаре данных Simulink (см. «Что такое словарь данных?»).
Имя пакета - Определяется в пакете Simulink или в пользовательском пакете (см. «Создание классов памяти при помощи Custom Storage Class Designer»).
Data Access
- Спецификация для доступа к даннымDirect
(по умолчанию) | Function
Спецификация для доступа к данным, сопоставленным с моделью. Доступ к данным непосредственно (Direct
) или через настраиваемые get
и set
функции (Function
). Для получения дополнительной информации смотрите Доступ к данным через функции при помощи классов памяти в словаре Embedded Coder.
Установка значения свойства Function
:
Устанавливает Data Scope на Imported
.
Означает, что вы не можете задать свойства мультиобразцов.
Включает следующие свойства:
Access Mode
Allowed Access
Name of Getter
Name of Setter
Отключает свойство Preserve array dimensions. Чтобы сохранить размерности многомерных массивов в сгенерированном коде, установите Data Access равным Direct
.
Data Scope
- Спецификация для генерации определения данныхExported
(по умолчанию) | Imported
Спецификация, что сгенерированный код определяет данные (Exported
) или импорт (Imported
) определение данных из внешнего кода. Встроенные классы памяти и классы памяти в пакетах, таких как Simulink, могут использовать другие опции возможностей, такие как File
.
Установка значения свойства Imported
:
Отключает Definition File. Чтобы включить ваши внешние исходные файлы кода в процесс сборки, используйте параметры конфигурации модели. Для получения примера см. раздел «Настройка Данных интерфейса».
Означает, что вы не можете задать Header File $N.h
хотя вы можете использовать $N
лексема.
Чтобы задать это свойство равным Exported
необходимо использовать один из лексем $N
или $R
в значении Header File.
Header File
- Имя файла заголовка, который объявляет данные$N.h
(по умолчанию) | текстИмя файла заголовка, который объявляет данные, заданное как имя или правило именования. Правило именования включает комбинацию текста и лексем. Допустимые лексемы перечислены в этой таблице.
Лексема | Описание |
---|---|
$R | Имя корневой модели |
$N | Имя связанного элемента данных |
$G | Имя класса памяти |
$U | Текст лексемы пользователя, который вы задаете для модели, как описано в Identifier Format Control |
Если вы задаете Data Scope Exported
необходимо использовать один из лексем $R
или $N
в значении этого свойства.
Если вы задаете Data Scope Imported
, вы не можете задать значение этого свойства $N.h
, но вы можете использовать $N
лексема.
Definition File
- Имя исходного файла, который задает данные$N.c
(по умолчанию) | текстИмя исходного файла, который определяет данные как имя или правило именования. Правило именования включает комбинацию текста и лексем. Допустимые лексемы перечислены в этой таблице.
Лексема | Описание |
---|---|
$R | Имя корневой модели |
$N | Имя связанного элемента данных |
$G | Имя класса памяти |
$U | Текст лексемы пользователя, который вы задаете для модели, как описано в Identifier Format Control |
Установка значения Data Scope Imported
отключает Definition File. Чтобы включить ваши внешние исходные файлы кода в процесс сборки, используйте параметры конфигурации модели. Для получения примера см. раздел «Настройка Данных интерфейса».
Access Mode
- Спецификация для доступа к данным через функцииValue
(по умолчанию) | Pointer
Спецификация для класса памяти для доступа к данным, связанным с моделью, через функции при помощи Value
или Pointer
. Для получения дополнительной информации смотрите Доступ к данным через функции при помощи классов памяти в словаре Embedded Coder.
Это свойство включено только, когда вы задаете Data Access Function
.
Allowed Access
- Спецификация для доступа к данным через функцииRead/Write
(по умолчанию) | Read Only
| Write Only
Спецификация для класса памяти, разрешающая чтение и запись (Read/Write
), только для чтения (Read Only
), или только запись (Write Only
) доступ к данным.
Это свойство включено только, когда вы задаете Data Access Function
.
Name of Getter
- Имя get
функция, которая выбирает связанные данныеget_$N$M
(по умолчанию) | текстИмя get
функция, которая выбирает связанные данные, заданные как имя или правило именования. Правило именования включает комбинацию текста и лексем. Допустимые лексемы перечислены в этой таблице.
Лексема | Описание |
---|---|
$N | Имя связанного элемента данных (обязательно) |
$R | Имя корневой модели |
$M | Текст Mangle, который гарантирует уникальность |
$U | Текст лексемы пользователя. См. «Управление форматом идентификатора». |
Это свойство включено только, когда вы задаете Data Access Function
.
Name of Setter
- Имя set
функция, которая изменяет связанные данныеset_$N$M
(по умолчанию) | текстИмя set
функция, которая выбирает данные изменений, заданные как имя или правило именования. Правило именования включает комбинацию текста и лексем. Допустимые лексемы перечислены в этой таблице.
Лексема | Описание |
---|---|
$N | Имя связанного элемента данных (обязательно) |
$R | Имя корневой модели |
$M | Текст Mangle, который гарантирует уникальность |
$U | Текст лексемы пользователя. См. «Управление форматом идентификатора». |
Это свойство включено только, когда вы задаете Data Access Function
.
Use different property settings for single-instance and multi-instance data
- Спецификация для назначения отдельных настроек хранилищаoff
(по умолчанию) | on
Спецификация для класса памяти, для использования параметров хранения, заданных в разделе Single-instance storage, или параметров хранения, заданных в разделе Multi-instance storage. При применении класса хранения к элементу данных словарь Embedded Coder Dictionary определяет, является ли это классом хранения с одним экземпляром или классом хранения с несколькими экземплярами, по типу данных и контексту модели в иерархии моделей-ссылок.
Выбор этого свойства включает разделы Single-instance storage и Multi-instance storage. Свойства Storage Type, Type Name и Instance Name появляются как в Single-instance storage, так и в Multi-instance storage разделах.
Storage Type
- Спецификация для агрегирования данных в структуруUnstructured
(по умолчанию) | Structured
Спецификация для агрегирования данных, которые используют класс памяти, в структуру в сгенерированном коде. Каждый элемент данных появляется в коде как поле структуры. Чтобы создать структуру, используйте Structured
.
Установка значения свойства Structured
включает Type Name и Instance Name.
Type Name
- Имя типа структуры$R$N$G$M
(по умолчанию) | текстИмя типа структуры в сгенерированном коде, заданное как имя или правило именования. Правило именования включает комбинацию текста и лексем. Допустимые лексемы перечислены в этой таблице.
Лексема | Описание |
---|---|
$R | Имя корневой модели |
$N | Базовое имя связанной функции, например step |
$G | Имя класса памяти |
$U | Текст лексемы пользователя, который вы задаете для модели, как описано в Identifier Format Control |
$M | Текст управления именами, вставленный, при необходимости, чтобы избежать конфликтов имен |
Установка значения Storage Type Structured
включает это свойство.
Instance Name
- Имя структурной переменной$N$G$M
(по умолчанию) | текстИмя структурной переменной в сгенерированном коде, заданное как имя или правило именования. Правило именования включает комбинацию текста и лексем. Допустимые лексемы перечислены в этой таблице.
Лексема | Описание |
---|---|
$R | Имя корневой модели |
$N | Базовое имя связанной функции, например step |
$G | Имя класса памяти |
$U | Текст лексемы пользователя, который вы задаете для модели, как описано в Identifier Format Control |
$M | Текст управления именами, вставленный, при необходимости, чтобы избежать конфликтов имен |
Установка значения Storage Type Structured
включает это свойство.
Data Initialization
- Как инициализировать данныеAuto
(по умолчанию) | Dynamic
| Static
| None
Спецификация, что сгенерированный код инициализирует данные.
Auto
- Сгенерированный код статически инициализирует данные параметра и динамически инициализирует данные сигнала и состояния.
Dynamic
- Сгенерированный код инициализирует данные как часть функции точки входа инициализации модели.
Static
- Сгенерированный код инициализирует данные в том же операторе, который определяет и выделяет память для данных. Оператор назначения появляется в верхней части .c
или .cpp
исходный файл, вне функции.
None
- Сгенерированный код не инициализирует данные.
Если вы выбираете Const, вы не можете задать это свойство Dynamic
.
Установка значения свойства Dynamic
отключает Const.
Memory Section
- Расположение в памяти для выделения данныхNone
(по умолчанию) | существующий раздел памятиРасположение в памяти для выделения данных, заданное как раздел памяти, который существует в словаре Embedded Coder на вкладке Memory Sections. Для получения информации о разделах памяти смотрите Control Data и Function Placement in Memory путем вставки прагм.
Preserve array dimensions
- Спецификация для сохранения размерностей многомерных массивовoff
(по умолчанию) | on
Спецификация для класса памяти, чтобы сохранить размерности многомерных массивов в сгенерированном коде. Для получения дополнительной информации см. Раздел «Сохранение размерностей многомерных массивов» в Сгенерированном коде.
Const
- Спецификация для применения const
определительoff
(по умолчанию) | on
Спецификация для применения const
квалификатор данных.
Если вы выбираете это свойство, вы не можете задать Data Initialization Dynamic
.
Установка значения Data Initialization Dynamic
отключает это свойство.
Volatile
- Спецификация для применения volatile
определительoff
(по умолчанию) | on
Спецификация для применения volatile
квалификатор данных.
Other Qualifier
- Спецификация для применения пользовательского квалификатораСпецификация для применения пользовательского квалификатора к данным. Для примера некоторые архитектуры памяти поддерживают квалификаторы far
и huge
.
Не используйте это свойство для применения ключевого слова static
. Вместо этого используйте встроенный класс памяти FileScope
, который невозможно применить в редакторе Отображения. Смотрите раздел «Выбор класса памяти для управления представлением данных в сгенерированном коде».
Parameters
- Разрешать ли использование с параметрами моделиoff
(по умолчанию) | on
Спецификация, указывающая, разрешать ли использование класса памяти с параметрами модели.
Установка значения Data Initialization Static
включает это свойство.
Установка значения Data Initialization Dynamic
отключает это свойство.
Чтобы задать значение этого свойства, установите Data Initialization равным None
.
Signals
- Разрешать ли использование с сигналами моделиon
(по умолчанию) | off
Спецификация, указывающая, разрешать ли использование класса памяти с сигналами модели.
Установка значения Data Initialization Dynamic
включает это свойство.
Установка значения Data Initialization Static
отключает это свойство.
Чтобы задать значение этого свойства, установите Data Initialization равным None
.
Name
- Имя шаблона функцииFunctionTemplate1
(по умолчанию) | текстИмя шаблона. Имя должно быть уникальным среди шаблонов функций в словаре. Embedded Coder предоставляет встроенные шаблоны, перечисленные в этой таблице.
Шаблон | Описание |
---|---|
ModelFunction | В редакторе Отображения используйте для функций точки входа функции инициализации, выполнения, завершения и сброса (см. «Настройка генерации кода по умолчанию для функций») |
UtilityFunction | В редакторе Отображения используйте общие служебные функции (см. «Настройка генерации кода по умолчанию для функций») |
Description
- Назначение и функциональность шаблона функцииПользовательский текст, который можно использовать, чтобы описать назначение и функциональность шаблона функции.
Source
- Расположение определения шаблона функцииЭто свойство доступно только для чтения.
Расположение определения шаблона функции.
Имя модели - Определено в модели Simulink.
Имя словаря - Определяется в словаре данных Simulink (см. «Что такое словарь данных?»).
Function Name
- Имена сгенерированных функций$R$N
(по умолчанию) | текстИмена функций в сгенерированном коде, заданные как правило именования. Правило именования включает комбинацию текста и лексем. Допустимые лексемы перечислены в этой таблице.
Лексема | Описание |
---|---|
$R | Имя корневой модели |
$N | Базовое имя связанной функции, например step |
$U | Текст лексемы пользователя, который вы задаете для модели, как описано в Identifier Format Control |
$C | Для общих служебных функций, контрольная сумма вставлена, чтобы избежать конфликтов имен |
$M | Текст управления именами, вставленный, при необходимости, чтобы избежать конфликтов имен |
Memory Section
- Расположение в памяти для выделения функцииNone
(по умолчанию) | существующий раздел памятиРасположение в памяти для выделения функции, заданное как раздел памяти, который существует в словаре Embedded Coder на вкладке Memory Sections. Для получения информации о разделах памяти смотрите Control Data и Function Placement in Memory путем вставки прагм.
Name
- Имя раздела памятиИмя раздела памяти. Имя должно быть уникальным среди разделов памяти словаря. Embedded Coder предоставляет встроенные разделы памяти, перечисленные в этой таблице.
Раздел памяти | Описание |
---|---|
MemConst | Применить проверку типа склада const к данным. |
MemVolatile | Применить проверку типа склада volatile к данным. |
MemConstVolatile | Применить проверку типа склада const и volatile к данным. |
Description
- Назначение и функциональность раздела памятиПользовательский текст, который можно использовать, чтобы описать назначение и функциональность раздела памяти.
Source
- Расположение определения раздела памятиЭто свойство доступно только для чтения.
Расположение определения раздела памяти.
Имя модели - Определено в модели Simulink.
Имя словаря - Определяется в словаре данных Simulink (см. «Что такое словарь данных?»).
Имя пакета - Определяется в пакете Simulink или в пользовательском пакете (см. «Создание определений кода для внешних объектов данных»).
Comment
- Комментарий для вставки в сгенерированный кодКомментарий кода, который генератор кода включает с прагмами или другими украшениями, которые вы задаете с Pre Statement и Post Statement.
Pre Statement
- Код для вставки перед данными или кодом функцииКод, такой как прагмы, для вставки перед определениями и объявлениями данных или функций, которые находятся в разделе памяти.
Можно использовать лексему $R
чтобы представлять имя модели, которая использует раздел памяти.
Когда вы задаете Statements Surround Each variable
, можно использовать лексему $N
чтобы представлять имя каждой переменной или функции, которая использует раздел памяти.
Post Statement
- Код для вставки после данных или кода функцииКод, такой как прагмы, для вставки после определений и объявлений данных или функций, которые находятся в разделе памяти.
Можно использовать лексему $R
чтобы представлять имя модели, которая использует раздел памяти.
Когда вы задаете Statements Surround Each variable
, можно использовать лексему $N
чтобы представлять имя каждой переменной или функции, которая использует раздел памяти.
Statements Surround
- Спецификация для переноса данных и функций отдельно или в группуEach variable
(по умолчанию) | Group of variables
Спецификация для вставки операторов кода (Pre Statement и Post Statement):
Вокруг каждой переменной и функции, которая использует раздел памяти. Выберите Each variable
.
Один раз, вокруг всего раздела памяти. Сгенерированный код агрегирует определения переменной и функции в смежный блок кода и окружает блок операторами. Выберите Group of variables
.
Шаблон класса памяти или индивидуальной настройки функции, который вы создаете в словаре Embedded Coder, не может использовать раздел памяти, который вы загружаете из пакета (как описано в разделе «См. Определения генерации кода в пакете»). Используйте раздел памяти, заданный в словаре Embedded Coder.
Вы не можете создать определения генерации кода в .mdl
файл модели.
Для дополнительных ограничений для определений генерации кода в словаре Embedded Coder словаря данных (.sldd
файл), см. «Развертывание определений генерации кода».