Уменьшите усилия по подготовке модели к генерации кода C, задав строения по умолчанию для категорий элементов данных и функций в модели. Применение строений по умолчанию может сэкономить время и уменьшить риск введения ошибок в код, особенно для больших моделей и моделей, из которых вы генерируете мультиобразец.
Необходимо настроить окружение примера, как описано в Set Up Example Environment.
Скопируйте эти внешние исходные файлы и файлы заголовков из matlabroot/toolbox/rtw/rtwdemos
в рабочую папку с возможностью записи. Эти файлы определяют и объявляют внешний тип данных и данные, которые использует сгенерированный код.
Файл | Описание |
---|---|
exDblFloat.h | Определяет псевдоним типа данных проекта для double, DBL_FLOAT . Simulink® использует PreLoadFcn коллбэк, заданный для модели, чтобы проанализировать этот файл заголовка и создать соответствующее Simulink.AliasType объект. |
exInDataMem.c | Включает exInDataMem.h и задает переменную ex_input1 . |
exInDataMem.h | Включает exDbFloat.h и объявляет переменную ex_input1 . |
exInDataLut.c | exInDataLut.c включает exInDataLut.h и задает переменные ex_input2 , ex_input3 , и ex_input4 . |
exInDataLut.h | Включает exDbFloat.h и объявляет переменные ex_input2 , ex_input3 , и ex_input4 . |
exCodeDefs.sldd | Словарь данных |
rtwdemo_configdefaults.slx | Пример модели. |
Откройте копию примера модели rtwdemo_configdefaults
.
В галерее Apps откройте приложение Embedded Coder.
В этом примере показано, как использовать редактор Отображения для определения требований генерации кода для данных моделей. Модель использует скорости множества потоков выполнения и сконфигурирована для использования в одном экземпляре.
В этом примере приняты следующие требования к генерации кода для данных:
Используйте определение типа проекта DBL_FLOAT
определено в заголовочном файле exDblFloat.h
.
Получите ex_input1
элемента данных из файла заголовка
exInDataMem.h
. Данные используются для вычисления значения, хранящегося в памяти, а затем используются в состоянии if-else блока Switch.
Получите элементы данных ex_input2
, ex_input3
, и ex_input4
из файла заголовка exInDataLut.h
. Данные используются в интерполяционных таблицах Table1
и Table2
.
Данные, импортированные в модель из заголовочных файлов exInDataMem.h
и exInDataLut.h
имеет тип DBL_FLOAT
, стандарт проекта.
Параметрический K1
должна быть настроена, чтобы включить калибровку.
Данные хранилища mode
определяет данные, которые являются общими в модели. Блок Логический Оператор записывает в хранилище данных, и блок 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.
На вкладке Data Defaults разверните Inports and Outports. Затем выберите Inports .
Установите класс памяти равным ImportFromFile
.
В Property Inspector установите Header File равным exInDataLut.h
.
Сконфигурируйте настройки по умолчанию для параметров рабочего пространства модели, которые вы хотите настроить.
В редакторе Отображения перейдите на вкладку Data Defaults.
На вкладке Data Defaults разверните Parameters.
В строке для Model parameters щелкните текст 'Auto' will be inlined
. Откроется диалоговое окно Параметры конфигурации модели (Model Configuration Parameters) на панели Code Generation > Optimization. Установите Default parameter behavior значение Tunable
. Применить изменение и закрыть диалоговое окно. В редакторе Code Mappings текст справа от Model parameters теперь читается 'Auto' will be tunable
.
Чтобы включить определения и объявления глобальных переменных в сгенерированный код для параметров модели, установите класс памяти для категории Model parameters равным ExportedGlobal
.
Задайте раздел памяти для хранения модуля с задержкой X
, данные, которые являются внутренними для модели.
Откройте словарь Embedded Coder Dictionary, выбрав Code Interface > Embedded Coder Dictionary.
В словаре Embedded Coder Dictionary перейдите на вкладку Memory Sections.
Нажмите Add.
В новой строке таблицы назовите новый раздел памяти internalDataMem
. Также установите:
Pre Statement с #pragma start INTERNALDATA
Post Statement с #pragma end INTERNALDATA
Statements Surround с Group of variables
Закройте словарь.
Для получения дополнительной информации смотрите Control Data и Function Placement in Memory путем вставки Pragmas.
Настройте строение генерации кода по умолчанию для внутренних данных, чтобы включить раздел памяти internalDataMem
.
В редакторе Отображения перейдите на вкладку Data Defaults.
На вкладке Data Defaults разверните Signals.
Выберите категорию Signals, states, and internal data.
В Property Inspector установите Memory Section равным internalDataMem
.
Укажите внешние файлы заголовка и определения по умолчанию для переменных, в которые записывает выходы сгенерированный код.
В редакторе Отображения перейдите на вкладку Data Defaults.
На вкладке Data Defaults разверните Inports and Outports.
Выберите категорию Outports.
Установите класс памяти равным ExportToFile
.
В Property Inspector установите Header File равным exSysOut.h
и Definition File к exSysOut.c
.
Если вы явно не сопоставляете отдельные элементы данных с альтернативными настройками класса памяти, редактор Code Mappings предполагает, что класс памяти для элементов Auto
. Когда класс памяти для элемента данных Auto
генератор кода может исключить или изменить представление соответствующего кода в целях оптимизации. Если оптимизация невозможна, генератор кода применяет строение модели по умолчанию.
Чтобы избежать оптимизации и заставить генератор кода использовать строение по умолчанию, установите класс памяти для отдельного элемента равным Model default
.
Чтобы переопределить строение по умолчанию, задайте класс памяти, который удовлетворяет требованиям генерации кода для этого элемента данных.
В данном примере сконфигурируйте генератор кода, чтобы применить настройку класса памяти по умолчанию к этим элементам данных:
Входные порты 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;
В этом примере показано, как использовать редактор Отображения для определения требований генерации кода для функций модели. Модель использует скорости множества потоков выполнения и сконфигурирована для использования в одном экземпляре. Генератор кода производит инициализацию, выполнение и завершение функций точки входа. Поскольку модель использует несколько скоростей, генератор кода производит функцию выполнения для каждой скорости.
Этот пример принимает следующие требования к генерации кода:
Сохраните сгенерированные функции инициализации и завершения в разделе памяти functionSlowMem
и функции выполнения в разделе памяти functionFastMem
.
Используйте правило именования exSlow_$N
назвать initialize
и terminate
функций. Используйте правило именования exFast_$N
для присвоения имени функциям выполнения.
Задайте два раздела памяти: functionSlowMem
для инициализации и завершения функций и functionFastMem
для выполнения функций.
Откройте приложение Embedded Coder.
Откройте словарь Embedded Coder Dictionary, выбрав Code Interface > Embedded Coder Dictionary.
В словаре Embedded Coder Dictionary перейдите на вкладку Memory Sections.
Нажмите Add.
В новой строке таблицы назовите новый раздел памяти functionFastMem
. Затем установите:
Pre Statement с #pragma start FASTMEM
Post Statement с #pragma end FASTMEM
Еще раз нажмите Add. Назовите раздел памяти functionSlowMem
. Затем установите:
Pre Statement с #pragma start SLOWMEM
Post Statement с #pragma end SLOWMEM
Чтобы сконфигурировать категории функций, задайте шаблоны индивидуальной настройки функций. Если вы не задаете шаблоны в словаре Embedded Coder, которые связаны с моделью, единственным доступным шаблоном является Default
. Основываясь на требованиях, в словаре задайте два шаблона индивидуальной настройки функции: один для определения правила именования и раздела памяти для инициализации и завершения функций и один для определения правила именования и раздела памяти для функций выполнения.
В словаре Embedded Coder Dictionary перейдите на вкладку Function Customization Templates.
Нажмите Add.
В новой строке таблицы назовите новый шаблон exFastFunction
. Затем установите:
Function Name с exFast_$N
. Это правило именования применяет префикс exFast_
к имени, которое идентифицирует имя генератора кода по умолчанию функции (для примера, initialize
или step
).
Memory Section с functionFastMem
. Это отображение связывает раздел памяти, который вы определили в Задать разделы памяти с новым шаблоном.
Еще раз нажмите 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, который находится в разделяемых данных. Если вы завершили примеры в Configure Default Code Generation for Data и Configure Default Code Generation for Functions, вы добавили эти определения кода в словарь Embedded Coder Dictionary, связанный с моделью rtwdemo_configdefaults
.
Раздел памяти internalDataMem
с Pre Statement установленным значением #pragma start INTERNALDATA
и Post Statement установлено на #pragma end INTERNALDATA
.
Раздел памяти functionFastMem
с Pre Statement установленным значением #pragma start FASTMEM
и Post Statement установлено на #pragma end FASTMEM
.
Раздел памяти functionSlowMem
с Pre Statement установленным значением #pragma start SLOWMEM
и Post Statement установлено на #pragma end SLOWMEM
.
Шаблон индивидуальной настройки функции exFastFunction
с правилом именования функций exFast_$N
и секцию памяти functionFastMem
Шаблон индивидуальной настройки функции exSlowFunction
с правилом именования функций exSlow_$N
и секцию памяти functionSlowMem
Обновите rtwdemo_configdefaults модели
использовать те же определения кода в словаре данных exCodeDefs.sldd вместо определений в локальной модели Embedded Coder Dictionary.
Необходимо настроить окружение примера, как описано в Set Up Example Environment.
В редакторе Simulink выберите Modeling > Link to Data Dictionary.
В диалоговом окне Свойства, на вкладке External Data, перейдите к местоположению вашей копии файла словаря данных exCodeDefs
и выберите этот файл.
Нажмите Migrate data.
В диалоговом окне Link Model to Data Dictionary нажмите Apply.
В диалоговом окне «Миграция данных» нажмите кнопку Migrate. Когда миграция данных будет завершена, нажмите OK.
В левом нижнем углу полотна модели щелкните значок Model data.
Из списка источников данных моделей нажмите External Data.
В Model Explorer на панели Model Hierarchy разверните узел exCodeDefs.
Щелкните правой кнопкой мыши Embedded Coder Dictionary.
Нажмите кнопку Open Embedded Coder Dictionary, которая появится.
В словаре Embedded Coder Dictionary проверьте определения на вкладках Function Customization Templates и Memory Sections.
Закройте словарь 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
Пример использует программный интерфейс отображения по умолчанию, чтобы задать требования генерации кода для данных модели и функций. Используйте этот интерфейс для автоматизации строения или если вы предпочитаете программно конфигурировать модели. Для получения информации о конфигурировании данных по умолчанию и генерации кода функции с помощью редактора Code Mappings, смотрите Настройте Генерацию кода C по умолчанию для категорий элементов данных и функций.
Откройте модель
Модель rtwdemo_configdefaults
использует множество потоков выполнения скорости и сконфигурирован для использования в одном экземпляре.
open_system('rtwdemo_configdefaults')
Требования к генерации кода
В данном примере это требования к генерации кода:
Импортируйте определение типа проекта для данных типа double
, DBL_FLOAT, из заголовочного файла
exDblFloat.h
.
Импортируйте ex_input1 сигнала
для вычисления значения, сохраненного в памяти и используемого в условии if-else в блоке Switch. Импортируйте данные сигнала из файла заголовка exInDataMem.h
.
Импортируйте сигналы ex_input2
, ex_input3
, и ex_input4
для интерполяционных таблиц Table1
и Table2
. Импортируйте данные сигнала из файла заголовка exInDataLut.h
.
Данные, импортированные в модель из заголовочных файлов exInDataMem.h
и exInDataLut.h
имеет тип DBL_FLOAT
, стандарт проекта.
Параметры UPPER
, LOWER
, K1
, и K2
являются объектами параметров, хранящимися в рабочем пространстве модели. Представьте параметры как глобальные переменные в сгенерированном коде.
Элементы данных X
представляет задержку для блока Unit Delay.
Сохраните данные, которые являются внутренними для модели, в разделе памяти internalDataMem
.
Сохраните сгенерированные функции инициализации и завершения в разделе памяти functionSlowMem
и функции выполнения в разделе памяти 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, блоков Outport и параметров модели
Раздел памяти для внутренних данных (для примера, сигнальда и состояний блока)
Файлы заголовка и определения для блоков 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
и g etFunctionDefaults
. Первые два аргумента, которые вы задаете для этих функций, являются объектом отображений кода, возвращенным coder.mapping.api.get
и имя категории данных или функций. В сложение вы задаете имя строения информации, которую вы хотите вернуть функции, например имя класса памяти или класса памяти свойства.
В этом примере вы проверяете следующие настройки по умолчанию:
Класс памяти для блоков Inport, блоков Outport и параметров модели
Раздел памяти для внутренних данных (для примера, сигнальных данных и состояний блока)
Файлы заголовка и определения для блоков 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'
Переопределите настройку файла заголовка по умолчанию для Inport Block In1
Ранее вы устанавливали заголовочный файл по умолчанию для inports равным 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
.Функциональный вызов задает объект отображений кода, возвращенный coder.mapping.api.get
, имя интересующего блока Inport и строения информацию для возврата.
hfileIn1 = getInport(cm,'In1','StorageClass')
hfileIn1 = 'ImportFromFile'
Переопределите настройку имени функции по умолчанию для функции Step
Ранее вы устанавливали шаблон индивидуальной настройки функции по умолчанию для функций exeuction равным functionFastMem, which
применяет правило именования exFast_$N
к трехэтапным функциям, сгенерированным для модели. Требования определяют, что имя функции Periodic:D2
, который имеет шаг расчета 1 seccond, назовите exFast_1sec.
Установите имя функции при вызове равным setFunction
.Функциональный вызов задает объект отображений кода, возвращенный coder.mapping.api.get
, источник функции, Periodic:D2 и аргумент пары "имя-значение", указывающий, что функция устанавливает имя функции равным exFast_1sec
.
setFunction(cm,'Periodic:D2','FunctionName','exFast_1sec')
Проверьте настройку имени функции
Проверьте обновленное имя функции для функции выполнения Periodic:D2
с вызовом getFunction
.Функциональный вызов задает объект отображений кода, возвращенный coder.mapping.api.get
, функции интереса и имущественных FunctionName
.
functionName = getFunction(cm,'Periodic:D2','FunctionName')
functionName = 'exFast_1sec'
Связанные ссылки