Интерфейс данных модели - это средство, с помощью которого модель обменивается данными (например, значениями сигнала) с другими внешними моделями или системами. Настройте интерфейс данных модели следующим образом:
Включите интеграцию созданного кода с собственным кодом.
Улучшение прослеживаемости и удобочитаемости кода.
На верхнем уровне модели блоки Inport и Outport представляют входные и выходные сигналы модели. Чтобы настроить интерфейс данных в сгенерированном коде, настройте эти блоки. На ранних этапах процесса проектирования, когда модель может содержать неподключенные блоки Inport и Outport, используйте этот метод, чтобы указать интерфейс перед разработкой внутреннего алгоритма.
При применении классов хранения к блокам Inport и Outport каждый блок отображается в сгенерированном коде как поле глобальной структуры или как отдельная глобальная переменная, на которую непосредственно ссылается сгенерированный алгоритм. При наличии встроенного кодера можно использовать управление прототипом функции вместо классов хранения для передачи данных в модель и из нее. 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, установите для параметра Data Type значение single или к другому типу данных. Из-за настроек наследования типов данных, которые по умолчанию используются другими блоками в модели, нисходящие сигналы в остальной части модели используют тот же или аналогичный тип данных.
При необходимости настройте другие атрибуты конструкции, такие как Мин (Min) и Макс (Max) (минимальное и максимальное значения).
Можно настроить класс хранения по умолчанию для блоков Inport и Outport, а затем выбрать блоки, которые должны использовать указанные по умолчанию.
Откройте приложение Simulink Coder.
На вкладке Код C выберите Интерфейс кода > Сопоставления кодов по умолчанию.
В редакторе сопоставлений кодов в разделе Inports и Outports задайте класс хранения по умолчанию для Inports и Outports равным ExportedGlobal.
Затем на вкладке Inports выберите элементы данных, которые должны использовать класс хранения по умолчанию. Нажмите Ctrl и щелкните по каждому входу.
Для выбранных портов ввода задайте для класса хранения значение Model default: ExportedGlobal.
Аналогично, на вкладке Исходящие порты установите класс хранения для исходящего порта равным 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.
После настройки классов хранения по умолчанию для входов и выходов можно переопределить этот класс по умолчанию и задать класс хранения для некоторых элементов данных по отдельности. Например, можно направить один сигнал в несколько блоков Outport и применить к каждому Outport другой класс хранения. Например, используйте этот метод для передачи данных сигнала в пользовательскую функцию (например, драйвер устройства) и в глобальную переменную, которую может использовать пользовательский алгоритмический код:
Ответвление линии целевого сигнала на каждый блок Outport.
Для повышения эффективности кода оставьте класс хранения целевой сигнальной линии настроенным на Auto (значение по умолчанию). Затем оптимизация может исключить сигнальную линию из сгенерированного кода.
В редакторе Сопоставления кодов на вкладке Исходящие порты примените класс хранения GetSet к одному блоку Outport и ExportToFile в другой блок Outport.
В инспекторе свойств настройте свойства, связанные с каждым применяемым классом хранения.
open_system('ex_route_sig')

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