Интерфейс данных проектирования путем конфигурирования блоков Inport и выходного порта

Интерфейс данных модели является средними значениями, которыми модель обменивается данными (например, значения сигналов) с другим, внешними моделями или системами. Настройте интерфейс данных модели к:

  • Включите интегрирование сгенерированного кода с вашим собственным кодом.

  • Улучшите трассируемость и удобочитаемость кода.

В верхнем уровне модели Inport и блоки Outport представляют сигналы ввода и вывода модели. Чтобы настроить интерфейс данных в сгенерированном коде, сконфигурируйте эти блоки. Рано в процессе проектирования, когда модель может содержать несвязанные блоки Inport и Outport, используют этот метод, чтобы задать интерфейс прежде, чем разработать внутренний алгоритм.

Когда вы применяете классы памяти к блокам Inport и Outport, каждый блок появляется в сгенерированном коде как поле глобальной структуры или как отдельная глобальная переменная что сгенерированные ссылки алгоритма непосредственно. Если у вас есть Embedded Coder, можно использовать управление прототипом функции вместо классов памяти, чтобы передать данные в и из модели step функционируйте как формальные параметры. Для получения дополнительной информации смотрите, Конфигурируют генерацию кода C для Функций Точки входа Модели.

Интерфейс данных проектирования

Откройте модель rtwdemo_configrpinterface в качестве примера.

open_system('rtwdemo_configrpinterface')

Сконфигурируйте модель, чтобы показать сгенерированные имена блоков.

set_param('rtwdemo_configrpinterface','HideAutomaticNames','off')

На вкладке Modeling нажмите Model Data Editor.

В Model Data Editor выберите вкладку Inports/Outports. Каждая строка в таблице представляет блок Outport или сигнал, который выходит из блока Inport.

Для каждого из сигналов, которые выходят из блоков Inport, установите Тип данных на single или к другому типу данных. Из-за настроек наследования типа данных, что другие блоки в использовании модели по умолчанию, нисходящие сигналы в остальной части модели используют то же самое или подобный тип данных.

Опционально, сконфигурируйте другие атрибуты проекта, такие как Min и Max (минимальные и максимальные значения).

Сконфигурируйте класс памяти по умолчанию

Можно сконфигурировать класс памяти по умолчанию для блоков Inport, и блоки Выходного порта затем выбирают блоки, которые должны использовать заданное значение по умолчанию.

  1. Откройте приложение Simulink Coder.

  2. Во вкладке C Code выберите Code Interface> Default Code Mappings.

  3. В редакторе Отображений Кода, под Inports и Outports, устанавливает класс памяти по умолчанию и для Inports и для Outports к ExportedGlobal.

  4. Затем на вкладке Inports, выберите элементы данных, которые должны использовать класс памяти по умолчанию. Нажмите Ctrl и кликните по каждому импорту.

  5. Для выбранного импорта, набор класс памяти к Model default: ExportedGlobal.

  6. Точно так же на вкладке Outports, набор класс памяти для выходного порта к Model default: ExportedGlobal.

В качестве альтернативы, чтобы сконфигурировать значения по умолчанию данных в командной строке, используйте эти команды:

cm = coder.mapping.api.get('rtwdemo_configrpinterface');
setDataDefault(cm,'Inports','StorageClass','ExportedGlobal');
setDataDefault(cm,'Outports','StorageClass','ExportedGlobal');

setInport(cm,'In1','StorageClass','Model default');
setInport(cm,'In2','StorageClass','Model default');
setInport(cm,'In3','StorageClass','Model default');
setInport(cm,'In4','StorageClass','Model default');

setOutport(cm,'Out1','StorageClass','Model default','Identifier','output_sig');

Сгенерируйте код из модели.

slbuild('rtwdemo_configrpinterface');
### Starting build procedure for: rtwdemo_configrpinterface
### Successful completion of code generation for: rtwdemo_configrpinterface

Build Summary

Top model targets built:

Model                      Action          Rebuild Reason                                    
=============================================================================================
rtwdemo_configrpinterface  Code generated  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 6.6796s

Просмотрите сгенерированный файл rtwdemo_configrpinterface.c. Поскольку вы применили класс памяти ExportedGlobal с блоками Inport и Outport код создает отдельные глобальные переменные, которые представляют входные параметры и выход.

file = fullfile('rtwdemo_configrpinterface_grt_rtw','rtwdemo_configrpinterface.c');
rtwdemodbtype(file,'/* Data with Exported storage */','real_T output_sig;',1,1)
/* Data with Exported storage */
real_T input1;                         /* '<Root>/In1' */
real_T input2;                         /* '<Root>/In2' */
real_T input3;                         /* '<Root>/In3' */
real_T input4;                         /* '<Root>/In4' */
real_T output_sig;                     /* '<Root>/Out1' */

Сгенерированный алгоритм в модели step функционируйте непосредственно ссылается на эти глобальные переменные, чтобы вычислить и сохранить значение выходного сигнала, output_sig.

Направьте данные сигнала к нескольким Выходным параметрам

Если вы сконфигурировали классы памяти по умолчанию для Inports и Outports, можно принять решение заменить это значение по умолчанию и установить класс памяти для некоторых элементов данных индивидуально. Например, можно направить один сигнал с несколькими блоками Выходного порта и применить различный класс памяти к каждому Выходному порту. Например, используйте этот метод, чтобы отправить данные сигнала в пользовательскую функцию (такие как драйвер устройства) и к глобальной переменной, которую может использовать ваш пользовательский алгоритмический код:

  1. Ветвь целевая сигнальная линия с каждым блоком Outport.

  2. Для более эффективного кода оставьте класс памяти целевой сигнальной линии сконфигурированным к Auto (значение по умолчанию). Оптимизация может затем устранить сигнальную линию из сгенерированного кода.

  3. В редакторе Отображений Кода, на вкладке Outports, применяют класс памяти GetSet с одним блоком Outport и ExportToFile с другим блоком Outport.

  4. В Property Inspector сконфигурируйте свойства, сопоставленные с каждым прикладным классом памяти.

open_system('ex_route_sig')

Ограничения

Вы не можете применить класс памяти к блоку Outport, если вход с блоком имеет переменный размер. Вместо этого примените класс памяти к сигнальной линии.

Похожие темы

Смотрите также

|