Сократите усилия по подготовке модели для генерации кода 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'
Связанные ссылки