Сократите усилия по подготовке модели для генерации кода C, указав конфигурации по умолчанию для категорий элементов данных и функций в модели. Применение конфигураций по умолчанию позволяет сэкономить время и снизить риск появления ошибок в коде, особенно для более крупных моделей и моделей, из которых создается многоэкземплярный код.
Необходимо настроить среду примеров, как описано в разделе Настройка среды примеров.
Копировать эти файлы внешних источников и заголовков из 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.
В коллекции приложений откройте приложение Embedded Coder.
В этом примере показано, как с помощью редактора сопоставлений кодов задать требования к созданию кода для данных модели. Модель использует несколько скоростей выполнения и настроена для использования в одном экземпляре.
В этом примере предполагаются следующие требования к созданию кода для данных:
Использовать определение типа проекта DBL_FLOAT определено в файле заголовка exDblFloat.h.
Получить элемент данных ex_input1 из файла заголовка exInDataMem.h. Данные используются для вычисления значения, хранящегося в памяти, а затем используются в состоянии «если-иначе» блока коммутатора.
Получение элементов данных ex_input2, ex_input3, и ex_input4 из файла заголовка exInDataLut.h. Данные используются в таблицах поиска Table1 и Table2.
Данные, импортированные в модель из файлов заголовков exInDataMem.h и exInDataLut.h имеет тип DBL_FLOAT, стандарт проекта.
Параметр K1 должна иметь возможность настройки для включения калибровки.
Хранилище данных mode определяет данные, совместно используемые в модели. Блок логического оператора записывает данные в хранилище данных, а блок перехода скорости считывает данные из хранилища данных.
Элемент данных X представляет задержку для блока Unit Delay.
Хранить внутренние данные модели, например, задержку X, в разделе памяти с меткой internalDataMem.
Экспорт объявлений выходных данных в файл заголовка exSysOut.h и определения exSysOut.c.
Переменные имен, представляющие входы и выходы в сгенерированном коде, как указано в этой таблице, поэтому они соответствуют именам переменных во внешних файлах заголовков и определений.
Хотя в модели используются отдельные экземпляры некоторых данных, в примере настраиваются настройки по умолчанию для демонстрации различных типов сопоставлений. При добавлении блоков в модель новые элементы данных получают сопоставления генерации кода по умолчанию.
Укажите внешний файл заголовка, объявляющий входные данные. Три из четырех корневых входов считывают входные данные из переменных, объявленных в файле заголовка exInDataLut.h. Установите этот файл заголовка в качестве файла по умолчанию.
Открыть rtwdemo_configdefaults модели. Сохранение копии в доступное для записи расположение.
Откройте приложение Embedded Coder.
На вкладке Код C выберите Интерфейс кода > Сопоставления кодов по умолчанию. Откроется вкладка «Значения по умолчанию» редактора сопоставлений кода и инспектор свойств.
На вкладке «Параметры данных по умолчанию» разверните узлы «Порты ввода» и «Порты вывода». Затем выберите Inports.
Задайте для класса хранения значение ImportFromFile.
В инспекторе свойств задайте для параметра «Файл заголовка» значение exInDataLut.h.
Настройте настройки по умолчанию для параметров рабочей области модели, которые необходимо настроить.
В редакторе сопоставлений кодов перейдите на вкладку «Значения по умолчанию».
На вкладке «Значения по умолчанию» разверните узел «Параметры».
В строке параметров модели щелкните текст 'Auto' will be inlined. Откроется диалоговое окно Параметры конфигурации модели (Model Configuration Parameters) на панели Создание кода (Code Generation) > Оптимизация (Optimization). Задать поведение параметра по умолчанию как Tunable. Примените изменение и закройте диалоговое окно. В редакторе сопоставлений кодов текст справа от параметров модели теперь читается 'Auto' will be tunable.
Чтобы включить определения и объявления глобальных переменных в созданный код для параметров модели, установите класс хранения для категории Параметры модели равным ExportedGlobal.
Определение секции памяти для сохранения единичной задержки X, данные, которые являются внутренними для модели.
Откройте Embedded Coder Dictionary, выбрав Code Interface > Embedded Coder Dictionary.
В словаре встроенного кодера перейдите на вкладку «Разделы памяти».
Нажмите "Добавить".
В новой строке таблицы назовите новый раздел памяти internalDataMem. Также установить:
Предварительная выписка по #pragma start INTERNALDATA
Проводка выписки по #pragma end INTERNALDATA
Заявления окружают Group of variables
Закройте словарь.
Дополнительные сведения см. в разделе Управление данными и размещением функций в памяти путем вставки прагматиков.
Настройка конфигурации генерации кода по умолчанию для внутренних данных для включения раздела памяти internalDataMem.
В редакторе сопоставлений кодов перейдите на вкладку «Значения по умолчанию».
На вкладке «Значения по умолчанию» разверните узел «Сигналы».
Выберите категорию Сигналы, состояния и внутренние данные.
В инспекторе свойств задайте для параметра «Раздел памяти» значение internalDataMem.
Укажите внешние заголовки и файлы определений по умолчанию для переменных, в которые создается код, записывающий выходные данные.
В редакторе сопоставлений кодов перейдите на вкладку «Значения по умолчанию».
На вкладке «Параметры данных по умолчанию» разверните узлы «Порты ввода» и «Порты вывода».
Выберите категорию «Выходы».
Задайте для класса хранения значение ExportToFile.
В инспекторе свойств задайте для параметра «Файл заголовка» значение exSysOut.h и файл определения для exSysOut.c.
Если отдельные элементы данных явно не сопоставлены с альтернативными параметрами класса хранения, редактор сопоставлений кодов предполагает, что класс хранения для элементов является Auto. Если класс хранения для элемента данных равен Autoгенератор кода может исключить или изменить представление соответствующего кода в целях оптимизации. Если оптимизация невозможна, генератор кода применяет конфигурацию модели по умолчанию.
Чтобы избежать оптимизации и заставить генератор кода использовать конфигурацию по умолчанию, задайте класс хранения для отдельного элемента равным Model default.
Чтобы переопределить конфигурацию по умолчанию, укажите класс хранения, соответствующий требованиям к созданию кода для этого элемента данных.
В этом примере настройте генератор кода, чтобы применить настройку класса хранения по умолчанию к следующим элементам данных:
Inports In2, In3, и In4
Вспомогательный порт Out1
Параметр модели K1
Государство X
В редакторе сопоставлений кодов перейдите на вкладку «Inports».
Выберите строки для ввода In2, In3, и In4. Затем для одного из выбранных портов ввода установите класс хранения в значение Model default: ImportFromFile. Класс хранения для трех выбранных портов ввода изменяется на Model default: ImportFromFile.
Перейдите на вкладку «Выходы». Для аутпорта Out1, задайте для класса хранения значение Model default: ExportToFile.
Перейдите на вкладку Параметры (Parameters). Разверните узел «Параметры модели». Затем для параметра K1, задайте для класса хранения значение Model default: ExportedGlobal.
Перейдите на вкладку Signals/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.
В словаре встроенного кодера перейдите на вкладку «Разделы памяти».
Нажмите "Добавить".
В новой строке таблицы назовите новый раздел памяти functionFastMem. Затем установите:
Предварительная выписка по #pragma start FASTMEM
Проводка выписки по #pragma end FASTMEM
Нажмите кнопку Добавить еще раз. Назовите раздел памяти functionSlowMem. Затем установите:
Предварительная выписка по #pragma start SLOWMEM
Проводка выписки по #pragma end SLOWMEM
Чтобы настроить категории функций, определите шаблоны настройки функций. Если в словаре Embedded Coder не определены шаблоны, связанные с моделью, единственным доступным шаблоном является Default. Исходя из требований, в словаре определите два шаблона настройки функции: один для указания правила именования и раздел памяти для инициализации и завершения функций и один для указания правила именования и раздел памяти для выполнения функций.
В словаре Embedded Coder Dictionary перейдите на вкладку Function Customization Templates.
Нажмите "Добавить".
В новой строке таблицы назовите новый шаблон exFastFunction. Затем установите:
Имя функции для exFast_$N. Это правило именования применяет префикс exFast_ на имя, определяющее имя генератора кода по умолчанию для функции (например, initialize или step).
Раздел памяти для functionFastMem. Это сопоставление связывает раздел памяти, определенный в разделе Определение разделов памяти, с новым шаблоном.
Нажмите кнопку Добавить еще раз. Назовите шаблон exSlowFunction. Затем установите:
Имя функции для exSlow_$N.
Раздел памяти для functionSlowMem.
Закройте словарь.
На вкладке Код C щелкните Интерфейс кода > Сопоставления кодов по умолчанию.
В редакторе сопоставлений кодов перейдите на вкладку «Параметры функции по умолчанию».
Сконфигурируйте функции инициализации и завершения точек входа. Для категории Инициализировать/Завершить выберите шаблон exSlowFunction.
Сконфигурируйте функции начального уровня выполнения. Для категории Выполнение выберите шаблон exFastFunction.
Сохраните модель.
Создать код.
В представлении «Код»:
Открыть файл rtwdemo_configdefaults.c. Щелкните в поле Поиск. В меню перечислены сгенерированные функции точки входа:
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. Использовать поиск для поиска #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 Dictionary, связанный с моделью rtwdemo_configdefaults.
Раздел памяти internalDataMem с предварительным отчетом, установленным в значение #pragma start INTERNALDATA и Разнести выписку #pragma end INTERNALDATA.
Раздел памяти functionFastMem с предварительным отчетом, установленным в значение #pragma start FASTMEM и Разнести выписку #pragma end FASTMEM.
Раздел памяти functionSlowMem с предварительным отчетом, установленным в значение #pragma start SLOWMEM и Разнести выписку #pragma end SLOWMEM.
Шаблон настройки функции exFastFunction с правилом именования функций exFast_$N и раздел памяти functionFastMem
Шаблон настройки функции exSlowFunction с правилом именования функций exSlow_$N и раздел памяти functionSlowMem
Обновить модель rtwdemo_configdefaults использовать те же определения кода в словаре данных exCodeDefs.sldd вместо определений в локальной модели Embedded Coder Dictionary.
Необходимо настроить среду примеров, как описано в разделе Настройка среды примеров.
В редакторе Simulink выберите «Моделирование» > «Связь со словарем данных».
В диалоговом окне «Свойства модели» на вкладке «Внешние данные» перейдите к местоположению копии файла словаря данных. exCodeDefs и выберите этот файл.
Щелкните Перенос данных.
В диалоговом окне «Связать модель с словарем данных» нажмите кнопку «Применить».
В диалоговом окне «Перенос данных» нажмите «Перенос». По завершении миграции данных нажмите кнопку ОК.
В левом нижнем углу холста модели щелкните значок Данные модели (Model data).
В списке источников данных модели щелкните Внешние данные (External Data).
В обозревателе моделей на панели «Иерархия моделей» разверните узел exCodeDefs.
Щелкните правой кнопкой мыши Embedded Coder Dictionary.
Нажмите кнопку Открыть словарь встроенного кодера.
В словаре встроенного кодера просмотрите определения на вкладках Шаблоны настройки функций и Разделы памяти.
Закройте словарь встроенного кодера.
Откройте приложение Embedded Coder.
На вкладке C Code выберите Code Interface > Embedded Coder Dictionary.
Удалите определения кода, созданные локально в модели.
На закладке Шаблоны адаптации функций выберите строки для exSlowFunction и exFastFunction для которых установлено значение Source rtwdemo_configdefaults. Нажмите кнопку Удалить.
На вкладке «Разделы памяти» выберите строки для functionFastMem, functionSlowMem, и internalDataMem для которых установлено значение Source rtwdemo_configdefaults. Нажмите кнопку Удалить.
Закройте словарь.
Сохраните модель.
На вкладке Код C выберите Интерфейс кода > Сопоставления кодов по умолчанию.
В редакторе сопоставлений кодов перейдите на вкладку «Значения по умолчанию».
Разверните раздел «Сигналы». Выберите категорию Сигналы, состояния и внутренние данные.
В инспекторе свойств задайте для параметра «Раздел памяти» значение internalDataMem.
Перейдите на вкладку «Параметры функции по умолчанию».
Для категории Инициализация/завершение выберите шаблон настройки функции. exSlowFunction.
Для категории Выполнение выберите шаблон exFastFunction.
Сохраните модель.
Создание и просмотр кода.
Дополнительные сведения о настройке словаря встроенного кодера см. в разделе Определение классов хранения, разделов памяти и шаблонов функций для архитектуры программного обеспечения.
В этом примере показано, как настроить генерацию данных по умолчанию и кода функции, например, модель rtwdemo_configdefaultsВ примере используется интерфейс программирования отображения по умолчанию для определения требований к генерации кода для данных и функций модели. Этот интерфейс используется для автоматизации конфигурации или для программной настройки моделей. Сведения о настройке генерации данных по умолчанию и кода функции с помощью редактора сопоставлений кодов см. в разделе Настройка генерации кода 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.
Например, кто-то, например системный архитектор, ранее создал эти определения кода в словаре встроенного кодера, который является частью словаря данных 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
Шаблон настройки функции для инициализации, завершения и выполнения функций
% 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 и 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
Ранее для файла заголовка по умолчанию для ввода было установлено значение exInDataLut.h. Требования определяют импорт данных для блока ввода 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'
Переопределить настройку имени функции по умолчанию для пошаговой функции
Ранее был установлен шаблон настройки функции по умолчанию для функций выполнения functionFastMem, which применяет правило именования exFast_$N к трем пошаговым функциям, созданным для модели. Требования указывают, что имя функции Periodic:D2, который имеет время выборки 1 сек. быть назван 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'
Связанные ссылки