Уменьшайте усилие по подготовке модели для генерации кода C путем определения настроек по умолчанию для категорий элементов данных и функций через модель. Применение настроек по умолчанию может сэкономить время и снизить риск представления ошибок в коде, особенно для больших моделей и моделей, из которых вы генерируете код мультиэкземпляра.
Вы, должно быть, настроили среду в качестве примера, как описано в Настроенной Среде В качестве примера.
Скопируйте их внешний источник и заголовочные файлы от matlabroot/toolbox/rtw/rtwdemos
к перезаписываемой рабочей папке. Эти файлы задают и объявляют внешний тип данных и данные, которые использует сгенерированный код.
Файл | Описание |
---|---|
exDblFloat.h | Задает псевдоним типа данных проекта для двойного, DBL_FLOAT . Simulink® использует PreLoadFcn коллбэк, заданный для модели, чтобы проанализировать этот заголовочный файл и создать соответствующий Simulink.AliasType объект. |
exInDataMem.c | Включает exInDataMem.h и задает переменную ex_input1 . |
exInDataMem.h | Включает exDbFloat.h и объявляет переменную ex_input1 . |
exInDataLut.c | exInDataLut.c includes exInDataLut.h и задает переменные ex_input2 , ex_input3 , и ex_input4 . |
exInDataLut.h | Включает exDbFloat.h и объявляет переменные ex_input2 , ex_input3 , и ex_input4 . |
exCodeDefs.sldd | Словарь данных |
rtwdemo_configdefaults.slx | Модель Example. |
Откройте свою копию модели rtwdemo_configdefaults
в качестве примера.
В галерее Apps откройте приложение Embedded Coder.
В этом примере показано, как использовать редактор Отображений Кода, чтобы задать требования генерации кода для данных модели. Модель использует несколько уровней выполнения и сконфигурирована для использования одно экземпляра.
Этот пример принимает эти требования генерации кода для данных:
Используйте определение типа проекта DBL_FLOAT
заданный в заголовочном файле exDblFloat.h
.
Получите элемент данных ex_input1
от заголовочного файла exInDataMem.h
. Данные используемы в вычислениях значение, сохраненное в памяти, и затем используемое в если еще условие блока Switch.
Получите элементы данных ex_input2
, ex_input3
, и ex_input4
от заголовочного файла exInDataLut.h
. Данные используются в интерполяционных таблицах Table1
и Table2
.
Данные импортированы в модель от заголовочных файлов exInDataMem.h
и exInDataLut.h
имеет тип DBL_FLOAT
, стандарт проекта.
Параметр K1
должно быть настраиваемым, чтобы включить калибровку.
Хранилище данных mode
задает данные, которые совместно используются в модели. Блок Logical Operator пишет в хранилище данных, и блок Rate Transition читает из хранилища данных.
Элемент данных X
представляет задержку блока Unit Delay.
Храните данные, которые являются внутренними к модели, такими как задержка X
, в разделе памяти пометил internalDataMem
.
Экспортируйте объявления выходных данных в заголовочный файл exSysOut.h
и определения exSysOut.c
.
Назовите переменные, представляющие импорт и выходные порты в сгенерированном коде, как задано в этой таблице, таким образом, они совпадают с именами переменных во внешнем заголовке и файлах определения.
Несмотря на то, что модель использует один экземпляры некоторых данных, пример конфигурирует настройки по умолчанию, чтобы продемонстрировать различные типы отображений. Когда вы добавляете блоки в модель, новые элементы данных получают отображения генерации кода по умолчанию.
Задайте внешний заголовочный файл, который объявляет входные данные. Три из четырех корней импортируют вход чтения из переменных, объявленных в заголовочном файле exInDataLut.h
. Установите тот заголовочный файл как значение по умолчанию.
Открытая модель rtwdemo_configdefaults. Сохраните копию в перезаписываемое местоположение.
Откройте приложение Embedded Coder.
Во вкладке C Code выберите Code Interface> Default Code Mappings. Это открывает редактор Отображений Кода вкладка Data Defaults и Property Inspector.
Во вкладке theData Defaults расширьте Inports and Outports. Затем выберите Inports.
Установите класс памяти на ImportFromFile
.
В Property Inspector, набор Header File к exInDataLut.h
.
Сконфигурируйте настройки по умолчанию для параметров рабочего пространства модели, что вы хотите быть настраиваемыми.
В редакторе Отображений Кода кликните по вкладке Data Defaults.
Во вкладке theData Defaults расширьте Parameters.
В строке для Model parameters кликните по тексту 'Auto' will be inlined
. Диалоговое окно Model Configuration Parameters открывается к Code Generation> панель Optimization. Установите Default parameter behavior на Tunable
. Примените изменение и закройте диалоговое окно. В редакторе Отображений Кода текст направо of Model parameters теперь читает 'Auto' will be tunable
.
Чтобы включать определения глобальной переменной и объявления в сгенерированном коде для параметров модели, установите класс памяти для категории Model parameters к ExportedGlobal
.
Задайте раздел memory для хранения единичной задержки X
, данные, которые являются внутренними к модели.
Откройте Словарь Embedded Coder путем выбора Code Interface> Embedded Coder Dictionary.
В Словаре Embedded Coder кликните по вкладке Memory Sections.
Нажмите Add.
В новой строке таблицы назовите новый раздел memory internalDataMem
. Также набор:
Pre Statement к #pragma start INTERNALDATA
Post Statement к #pragma end INTERNALDATA
Statements Surround к Group of variables
Закройте словарь.
Для получения дополнительной информации смотрите Данные об Управлении и Функциональное Размещение в Памяти Вставкой Прагм.
Настройте настройку генерации кода по умолчанию для внутренних данных, чтобы включать раздел memory internalDataMem
.
В редакторе Отображений Кода кликните по вкладке Data Defaults.
Во вкладке theData Defaults расширьте Signals.
Выберите категорию Signals, states, and internal data.
В Property Inspector, набор Memory Section к internalDataMem
.
Задайте внешний заголовок по умолчанию и файлы определения для переменных, к которым записи сгенерированного кода выводят.
В редакторе Отображений Кода кликните по вкладке Data Defaults.
Во вкладке theData Defaults расширьте Inports and Outports.
Выберите категорию Outports.
Установите класс памяти на ExportToFile
.
В Property Inspector, набор Header File к exSysOut.h
и Definition File к exSysOut.c
.
Если вы явным образом не сопоставляете отдельные элементы данных с альтернативными настройками класса памяти, редактор Отображений Кода принимает, что классом памяти для элементов является Auto
. Когда классом памяти для элемента данных является Auto
, генератор кода может устранить или изменить представление соответствующих норм в целях оптимизации. Если оптимизация не возможна, генератор кода применяет настройку по умолчанию модели.
Чтобы избежать оптимизации и обеспечить генератор кода, чтобы использовать настройку по умолчанию, установите класс памяти для отдельного элемента к Model default
.
Чтобы заменить настройку по умолчанию, задайте класс памяти, который удовлетворяет требования генерации кода для того элемента данных.
В данном примере сконфигурируйте генератор кода, чтобы применить установку класса памяти по умолчанию на эти элементы данных:
Inports In2
, In3
, и In4
Выходной порт Out1
Параметр модели K1
X
состояния
В редакторе Отображений Кода кликните по вкладке Inports.
Выберите строки для импорта In2
, In3
, и In4
. Затем для одного из выбранного импорта, устанавливает класс памяти на Model default: ImportFromFile
. Класс памяти для трех выбранного импорта превращается в Model default: ImportFromFile
.
Кликните по вкладке Outports. Для выходного порта Out1
, установите класс памяти на Model default: ExportToFile
.
Кликните по вкладке Parameters. Расширьте Model Parameters. Затем для параметра K1
, установите класс памяти на Model default: ExportedGlobal
.
Кликните по вкладке Signals/States. Расширьте States. Для X
состояния, установите класс памяти на
Model default: Default
.
Сохраните модель.
Сгенерируйте код и проверьте сгенерированный код.
В файле rtwdemo_configdefaults.h
, ищите #include
операторы, которые включают заголовочные файлы, которые объявляют внешние входные данные.
#include "exInDataMem.h" #include "exInDataLut.h"
Открытый файл rtwdemo_configdefaults.c
. Код инициализирует переменную K1
усиления и использует переменную в ступенчатой функции модели
exFast_step1
.
DBL_FLOAT K1 = 2.0; . . . void exFast_step1(void) { DBL_FLOAT rtb_Gain; rtb_Gain = K1 * look1_binlc(ex_input2, (&(rtTable1_bp01Data[0])), (&(rtTable1_tableData[0])), 10U); rtDWork.RateTransition_Buffer0 = rtb_Gain; } . . . }
В файле rtwdemo_configdefaults.c
, найдите #pragma
управляйте линиями, которые задают разделы памяти для INTERNALDATA
(локальное хранилище данных, единичная задержка и константы).
#pragma start INTERNALDATA D_Work rtDWork; #pragma end INTERNALDATA . . . #pragma start INTERNALDATA static RT_MODEL rtM_; #pragma end INTERNALDATA . . . pragma start INTERNALDATA extern D_Work rtDWork; #pragma end INTERNALDATA
Открытый файл exSysOut.c
. Файл включает экспортируемое определение данных для ex_output
.
#include "rtwdemo_configdefaults.h" DBL_FLOAT ex_output;
Открытый совместно используемый файл exSysOut.h
. Файл объявляет ex_output
. Получить доступ к ex_output
, внешний код может включать этот заголовочный файл.
extern DBL_FLOAT ex_output;
В этом примере показано, как использовать редактор Отображений Кода, чтобы задать требования генерации кода для функций модели. Модель использует несколько уровней выполнения и сконфигурирована для использования одно экземпляра. Генератор кода производит, инициализируют, выполнение, и отключают функции точки входа. Поскольку модель использует несколько уровней, генератор кода производит функцию выполнения для каждого уровня.
Этот пример принимает эти требования генерации кода:
Сгенерированное хранилище инициализирует и отключает функции в разделе memory functionSlowMem
и выполнение функционирует в разделе memory functionFastMem
.
Используйте правило именования exSlow_$N
назвать initialize
и terminate
функции. Используйте правило именования exFast_$N
назвать функции выполнения.
Задайте два раздела памяти: functionSlowMem
для инициализируют и отключают функции и functionFastMem
для функций выполнения.
Откройте приложение Embedded Coder.
Откройте Словарь Embedded Coder путем выбора Code Interface> Embedded Coder Dictionary.
В Словаре Embedded Coder кликните по вкладке Memory Sections.
Нажмите Add.
В новой строке таблицы назовите новый раздел memory functionFastMem
. Затем набор:
Pre Statement к #pragma start FASTMEM
Post Statement к #pragma end FASTMEM
Нажмите Add снова. Назовите раздел memory functionSlowMem
. Затем набор:
Pre Statement к #pragma start SLOWMEM
Post Statement к #pragma end SLOWMEM
Чтобы сконфигурировать категории функций, задайте функциональные шаблоны настройки. Если вы не задаете шаблоны в Словаре Embedded Coder, которые сопоставлены с моделью, единственным доступным шаблоном является Default
. На основе требований, в словаре, задают два функциональных шаблона настройки: один, чтобы задать правило именования и раздел memory для инициализируют и отключают функции и один, чтобы задать правило именования и раздел memory для функций выполнения.
В Словаре Embedded Coder кликните по вкладке Function Customization Templates.
Нажмите Add.
В новой строке таблицы назовите новый шаблон exFastFunction
. Затем набор:
Function Name к exFast_$N
. Это правило именования применяет префиксный exFast_
к имени, которое идентифицирует имя функции генератора кода по умолчанию (например, initialize
или step
).
Memory Section к functionFastMem
. Это отображение сопоставляет раздел memory, в котором вы задали, Задают Разделы Памяти с новым шаблоном.
Нажмите Add снова. Назовите шаблон exSlowFunction
. Затем набор:
Function Name к exSlow_$N
.
Memory Section к functionSlowMem
.
Закройте словарь.
Во вкладке C Code нажмите Code Interface> Default Code Mappings.
В редакторе Отображений Кода кликните по вкладке Function Defaults.
Сконфигурируйте инициализирование и отключите функции точки входа. Для категории Initialize/Terminate выберите шаблон exSlowFunction
.
Сконфигурируйте функции точки входа выполнения. Для категории Execution выберите шаблон exFastFunction
.
Сохраните модель.
Сгенерируйте код.
В представлении Code:
Открытый файл rtwdemo_configdefaults.c
. Щелкните в поле Search. Списки меню сгенерированные функции точки входа:
exFast_step0
(называемый периодически, каждые 0.5 секунды)
exFast_step1
(называемый периодически, каждая 1 секунда)
exFast_step2
(называемый периодически, каждые 1.5 секунды)
exSlow_initialize
Получить доступ к коду функции точки входа в rtwdemo_configdefaults.c
, кликните по имени функции. Проверьте pragma
проверьте утверждения, которые окружают функциональный код. Например:
. . . #pragma start FASTMEM void exFast_step2(void) /* Sample time: [1.5s, 0.0s] */ { boolean_T rtb_DataStoreRead; rtb_DataStoreRead = ((ex_input1 > 10.0) || (ex_input1 < -10.0)); rtDWork.RateTransition1_Buffer0 = rtb_DataStoreRead; } #pragma end FASTMEM #pragma start SLOWMEM void exSlow_initialize(void) { /* (no initialization code required) */ } #pragma end SLOWMEM . . .
Открытый файл rtwdemo_configdefaults.h
. Используйте Search, чтобы найти #pragma
управляйте линиями, которые задают разделы памяти для FASTMEM
и SLOWMEM
. Проверьте pragma
проверьте утверждения, окружают объявления. Например:
. . . #pragma start SLOWMEM extern void exSlow_initialize(void); #pragma end SLOWMEM #pragma start FASTMEM extern void exFast_step0(void); #pragma end FASTMEM . . .
У вас есть опция конфигурирования данных по умолчанию и функциональной генерации кода с определениями, которые настраиваются в словаре данных Simulink. Словарь данных позволяет совместно использовать определений кода между моделями. В этом примере показано, как изменить модель от использования определений кода в Словаре Embedded Coder модели специфичном к использованию определений в Словаре Embedded Coder, который находится в словаре разделяемых данных. Если вы завершились, примеры в Конфигурируют Генерацию кода По умолчанию для Данных и Конфигурируют Генерацию кода По умолчанию для Функций, вы добавили эти определения кода Словарю Embedded Coder, сопоставленному с моделью rtwdemo_configdefaults
.
Раздел Memory internalDataMem
с набором Pre Statement к #pragma start INTERNALDATA
и набор Post Statement к #pragma end INTERNALDATA
.
Раздел Memory functionFastMem
с набором Pre Statement к #pragma start FASTMEM
и набор Post Statement к #pragma end FASTMEM
.
Раздел Memory functionSlowMem
с набором Pre Statement к #pragma start SLOWMEM
и набор Post Statement к #pragma end SLOWMEM
.
Функциональный шаблон настройки exFastFunction
с функцией, называющей правило exFast_$N
и раздел memory functionFastMem
Функциональный шаблон настройки exSlowFunction
с функцией, называющей правило exSlow_$N
и раздел memory functionSlowMem
Обновите модель rtwdemo_configdefaults
использовать те же определения кода в словаре данных exCodeDefs.sldd вместо определений в Словаре Embedded Coder локальной модели.
Вы, должно быть, настроили среду в качестве примера, как описано в Настроенной Среде В качестве примера.
В Редакторе Simulink выберите Modeling> Link to Data Dictionary.
В диалоговом окне Model Properties, во вкладке External Data, обзоре к местоположению вашей копии файла словаря данных exCodeDefs
и выберите тот файл.
Нажмите Migrate data.
В диалоговом окне Link Model to Data Dictionary нажмите Apply.
В диалоговом окне Migrate Data нажмите Migrate. Когда миграция данных будет завершена, нажмите OK.
В нижнем левом углу холста модели кликните по значку Model data.
Из списка источников данных модели нажмите External Data.
В Model Explorer, в панели Model Hierarchy, расширяют узел exCodeDefs.
Щелкните правой кнопкой по Embedded Coder Dictionary.
Нажмите кнопку Open Embedded Coder Dictionary, которая появляется.
В Словаре Embedded Coder рассмотрите определения во вкладках Memory Sections и Function Customization Templates.
Закройте словарь Embedded Coder.
Откройте приложение Embedded Coder.
Во вкладке C Code выберите Code Interface> Embedded Coder Dictionary.
Удалите определения кода, созданные локально в модели.
Во вкладке Function Customization Templates выберите строки для exSlowFunction
и exFastFunction
этому установили Source на rtwdemo_configdefaults
. Нажмите Remove.
Во вкладке Memory Sections выберите строки для functionFastMem
, functionSlowMem
, и internalDataMem
этому установили Source на rtwdemo_configdefaults
. Нажмите Remove.
Закройте словарь.
Сохраните модель.
Во вкладке C Code выберите Code Interface> Default Code Mappings.
В редакторе Отображений Кода кликните по вкладке Data Defaults.
Расширьте Signals. Выберите категорию Signals, states, and internal data.
В Property Inspector, набор Memory Section к internalDataMem
.
Кликните по вкладке Function Defaults.
Для категории Initialize/Terminate выберите функциональный шаблон настройки exSlowFunction
.
Для категории Execution выберите шаблон exFastFunction
.
Сохраните модель.
Сгенерируйте и рассмотрите код.
Для получения дополнительной информации о подготовке Словаря Embedded Coder, смотрите, Задают Классы памяти, Разделы Памяти и Шаблоны функций для Программной архитектуры.
В этом примере показано, как сконфигурировать данные по умолчанию и функциональную генерацию кода, например, модель rtwdemo_configdefaults
Пример.The использует значение по умолчанию, сопоставляющее интерфейс программирования, чтобы задать требования генерации кода для данных модели и функций. Используйте тот интерфейс, чтобы автоматизировать настройку, или если вы предпочитаете конфигурировать программно модели. Для получения информации о конфигурировании данных по умолчанию и функциональной генерации кода при помощи редактора Отображений Кода, смотрите, Конфигурируют генерацию кода C По умолчанию для Категорий Элементов данных и Функций.
Откройте модель
Модель rtwdemo_configdefaults
использование несколько уровней выполнения и сконфигурировано для использования одно экземпляра.
open_system('rtwdemo_configdefaults')
Требования генерации кода
В данном примере это требования генерации кода:
Импортируйте определение типа проекта для данных типа double
, DBL_FLOAT, от заголовочного файла
exDblFloat.h
.
Сигнал импорта ex_input1
для вычисления значения, сохраненного в памяти и используемого в, если еще условие в блоке switch. Импортируйте данные сигнала из заголовочного файла exInDataMem.h
.
Импорт сигнализирует о ex_input2
, ex_input3
, и ex_input4
для интерполяционных таблиц Table1
и Table2
. Импортируйте данные сигнала из заголовочного файла exInDataLut.h
.
Данные импортированы в модель от заголовочных файлов exInDataMem.h
и exInDataLut.h
имеет тип DBL_FLOAT
, стандарт проекта.
Параметры UPPER
ниже
, K1
, и K2
объекты параметра, сохраненные в рабочем пространстве модели. Представляйте параметры как глобальные переменные в сгенерированном коде.
Элемент данных X
представляет задержку блока Unit Delay.
Храните данные, которые являются внутренними к модели в разделе memory internalDataMem
.
Сгенерированное хранилище инициализирует и отключает функции в разделе memory functionSlowMem
и выполнение функционирует в разделе memory functionFastMem
.
Используйте идентификатор, называющий правило exSlow_$N
назвать initialize
и terminate
функции точки входа. Используйте правило именования exFast_$N
назвать выполнение функционирует в течение.5 секунд и 1,5 вторых периодических функций. Определите имя 1 второй периодической функции к exFast_1sec
.
Экспортируйте объявления выходных данных в заголовочный файл exSysOut.h
и определения exSysOut.c
.
В данном примере кто-то, такой как системный архитектор, ранее создал эти определения кода в Словаре Embedded Coder, который является частью словаря данных Simulink exCodeDefs.sldd
:
Память разделяет internalDataMem
, functionFastMem
, и functionSlowMem
.
Функциональные шаблоны настройки exFastFunction
и exSlowFunction
.
Получите данные и функциональные отображения кода для модели
Получите отображения кода, например, модель rtwdemo_configdefaults
путем определения имени модели в вызове функционального coder.mapping.api.get
. Функция возвращает объект, который представляет отображения кода для модели. Вы указываете что объект в качестве первого аргумента в последующих вызовах других функций в API.
Если отображения кода не существуют для модели, создайте объект отображений кода путем вызова coder.mapping.utils.create
.
cm = coder.mapping.api.get('rtwdemo_configdefaults');
Установите соответствующую категорию, свойство и комбинации значения
Установите соответствующую категорию, свойство и комбинации значения с вызовами setDataDefaults
и setFunctionDefaults
. Первые два аргумента, которые вы задаете для этих функций, являются объектом отображений кода, возвращенным coder.mapping.api.get
и имя данных или функциональной категории. Кроме того, вы задаете аргументы пары "имя-значение", которые задают конфигурационную информацию по умолчанию, которую вы хотите установить, такие как свойства класса памяти и класс памяти.
В этом примере вы устанавливаете значение по умолчанию:
Класс памяти для блоков Inport, блоков Выходного порта и параметров модели
Раздел Memory для внутренних данных (например, сообщенный и состояния блока)
Заголовок и файлы определения для блоков Inport и Outport
Функциональный шаблон настройки для инициализирует, завершает работу, и функции выполнения
% Configure data defaults setDataDefault(cm,'Inports','StorageClass','ImportFromFile','HeaderFile','exInDataLut.h'); setDataDefault(cm,'Outports','StorageClass','ExportToFile','HeaderFile','exSysOut.h',... 'DefinitionFile','exSysOut.c'); setDataDefault(cm,'ModelParameters','StorageClass','ExportedGlobal'); setDataDefault(cm,'InternalData','MemorySection','internalDataMem'); % Configure function defaults setFunctionDefault(cm,'InitializeTerminate','FunctionCustomizationTemplate','exSlowFunction'); setFunctionDefault(cm,'Execution','FunctionCustomizationTemplate','exFastFunction');
Проверьте отображения по умолчанию
Проверьте отображения по умолчанию с вызовами getDataDefaults
и getFunctionDefaults
. Первые два аргумента, которые вы задаете для этих функций, являются объектом отображений кода, возвращенным coder.mapping.api.get
и имя данных или функциональной категории. Кроме того, вы задаете имя конфигурационной информации, которую вы хотите, чтобы функция возвратила, такие как имя класса памяти или свойства класса памяти.
В этом примере вы проверяете эти настройки по умолчанию:
Класс памяти для блоков Inport, блоков Выходного порта и параметров модели
Раздел Memory для внутренних данных (например, данные сигнала и состояния блока)
Заголовок и файлы определения для блоков Inport и Outport
Функциональный шаблон настройки для инициализирует, завершает работу, и функции выполнения
% Verify default data configurations defscInports = getDataDefault(cm,'Inports','StorageClass')
defscInports = 'ImportFromFile'
defhfileInports = getDataDefault(cm,'Inports','HeaderFile')
defhfileInports = 'exInDataLut.h'
defscOutport = getDataDefault(cm,'Outports','StorageClass')
defscOutport = 'ExportToFile'
defhfileOutport = getDataDefault(cm,'Outports','HeaderFile')
defhfileOutport = 'exSysOut.h'
defdffileOutport = getDataDefault(cm,'Outports','DefinitionFile')
defdffileOutport = 'exSysOut.c'
defscParams = getDataDefault(cm,'ModelParameters','StorageClass')
defscParams = 'ExportedGlobal'
defmemInternal = getDataDefault(cm,'InternalData','MemorySection')
defmemInternal = 'internalDataMem'
% Verify default function configurations deftempInitTerm = getFunctionDefault(cm,'InitializeTerminate','FunctionCustomizationTemplate')
deftempInitTerm = 'exSlowFunction'
deftempExecution = getFunctionDefault(cm,'Execution','FunctionCustomizationTemplate')
deftempExecution = 'exFastFunction'
Сконфигурируйте отдельные элементы данных, чтобы использовать параметры конфигурации по умолчанию
Класс памяти для каждого элемента данных модели установлен в Auto
, что означает, что генератор кода может устранить или изменить представление соответствующих норм в целях оптимизации. Если оптимизация не возможна, генератор кода применяет настройку по умолчанию модели.
Чтобы избежать оптимизации и обеспечить генератор кода, чтобы использовать настройку по умолчанию, установите класс памяти на Model default
.
Чтобы заменить настройку по умолчанию, задайте класс памяти, который удовлетворяет требования генерации кода для того импорта.
В данном примере вы конфигурируете генератор кода, чтобы применить установку класса памяти по умолчанию на блоки Inport, блок Output, параметры модели, и утвердить X
для блока Unit Delay. Используйте find
функция, чтобы получить имена элементов данных в модели различных категорий. Затем используйте значения, возвращенные find
в вызовах setInport
, setOutport
, setModelParameter
, и setState
установить класс памяти на Model default
. Используйте вызовы getInport
, getOutport
, getModelParameter
, и getState
проверять, настройки класса памяти.
В каждом из вызовов функции вы задаете объект отображений кода, возвращенный coder.mapping.api.get
. Кроме того:
В вызове find
функция, вы указываете значение, указывающее на код, сопоставляющий информацию, которую вы хотите, чтобы функция возвратила.
Вызовы setInport
, setOutport
, setModelParameter
, и setState
идентифицируйте элементы данных, которые вы хотите сконфигурировать и аргумент пары "имя-значение", который задает конфигурационную информацию, которую вы хотите установить, такие как класс памяти или свойство класса памяти.
Вызовы getInport
, getOutport
, getModelParameter
, и getState
идентифицируйте элемент данных, для которого вы хотите возвратить конфигурационную информацию и тип информации, которую вы хотите, чтобы функция возвратила.
input = find(cm,'Inports'); setInport(cm,input,'StorageClass','Model default'); output = find(cm,'Outports'); setOutport(cm,output,'StorageClass','Model default'); params = find(cm,'ModelParameters'); setModelParameter(cm,params,'StorageClass','Model default'); states = find(cm,'States'); setState(cm,states,'StorageClass','Model default'); scIn1 = getInport(cm,'In1','StorageClass')
scIn1 = 'Model default'
scIn2 = getInport(cm,'In2','StorageClass')
scIn2 = 'Model default'
scIn3 = getInport(cm,'In3','StorageClass')
scIn3 = 'Model default'
scIn4 = getInport(cm,'In4','StorageClass')
scIn4 = 'Model default'
scK1 = getModelParameter(cm,'K1','StorageClass')
scK1 = 'Model default'
scTable2 = getModelParameter(cm,'Table2','StorageClass')
scTable2 = 'Model default'
scK2 = getModelParameter(cm,'K2','StorageClass')
scK2 = 'Model default'
scX = getState(cm,'rtwdemo_configdefaults/Delay','StorageClass')
scX = 'Model default'
Замените установку заголовочного файла по умолчанию для блока In1 Inport
Ранее вы устанавливаете заголовочный файл по умолчанию для импорта в exInDataLut.h
. Требования указывают, что вы импортируете данные для блока Inport In1
от заголовочного файла exInDataMem.h
.
Для Inport
блок In1
, замените класс памяти по умолчанию к ImportFromFile
и набор заголовочный файл к exInDataMem.h
с вызовом setInport
. Вызов функции задает объект отображений кода, возвращенный coder.mapping.api.get
, имя блока Inport, чтобы сконфигурировать, и аргументы пары "имя-значение", указывающие, что функция установила StorageClass
к ImportFromFile
и HeaderFile
к exInDataMem.h
.
setInport(cm,'In1','StorageClass','ImportFromFile','HeaderFile','exInDataMem.h');
Проверьте установку заголовочного файла
Проверьте обновленную установку заголовочного файла для блока Inport In1
с вызовом getInport
Вызов функции.The задает объект отображений кода, возвращенный coder.mapping.api.get
, имя блока Inport интереса и конфигурационная информация, чтобы возвратиться.
hfileIn1 = getInport(cm,'In1','StorageClass')
hfileIn1 = 'ImportFromFile'
Замените установку имени функции по умолчанию для ступенчатой функции
Ранее вы устанавливаете функциональный шаблон настройки по умолчанию для функций exeuction к functionFastMem, which
применяется именование управляют exFast_$N
к этим трем ступенчатым функциям, сгенерированным для модели. Требования указывают что имя для функционального Periodic:D2
, который имеет шаг расчета 1 секунды, быть названным exFast_1sec.
Определите имя функции с вызовом setFunction
Вызов функции.The задает объект отображений кода, возвращенный coder.mapping.api.get
, источник функции, Periodic:D2 и аргумента пары "имя-значение", указывающего, что функция определила имя функции к exFast_1sec
.
setFunction(cm,'Periodic:D2','FunctionName','exFast_1sec')
Проверьте установку имени функции
Проверьте обновленную установку имени функции для функции выполнения Periodic:D2
с вызовом getFunction
Вызов функции.The задает объект отображений кода, возвращенный coder.mapping.api.get
, функция интереса и свойство FunctionName
.
functionName = getFunction(cm,'Periodic:D2','FunctionName')
functionName = 'exFast_1sec'
Ссылки по теме