В этом примере показано, как использовать структуры в функциональном блоке MATLAB для считывания и записи сигналов шины Simulink ®.

В этой модели функциональный блок MATLAB принимает сигнал шины, используя структуру inbus на входном порту 1. Блок выдает два сигнала шины: структура outbus на выходном порту 1 и структуре outbus1 на выходном порту 2. Входной сигнал поступает от блока Bus Creator MainBusCreator, который связывает сигналы ele1, ele2, и ele3. Сигнал ele3 является выходом другого блока Bus Creator SubBusCreator, который связывает сигналы a1 и a2. Структуры outbus и outbus1 подключаются к блокам выбора шины, которые, в свою очередь, подключаются к блокам отображения.
Изучение функции MATLAB fcnдважды щелкните на блоке MATLAB Function. Обратите внимание, что код неявно определяет локальную структурную переменную. mystruct с использованием struct и использует эту локальную структурную переменную для инициализации значения первого вывода, outbus. Инициализирует второй выход, outbus1, к значению поля ele3 структуры inbus.
Ниже приведены определения структур в блоке MATLAB Function в примере, которые отображаются в Ports and Data Manager:

Каждый вход и выход структуры должен быть определен Simulink.Bus в базовой рабочей области (см. Создание структур в функциональных блоках MATLAB). Это означает, что структура имеет те же свойства, что и объект шины, включая номер, имя, тип и последовательность полей. В этом примере следующие объекты шины определяют входы и выходы структуры:

Simulink.Bus объект MainBus определяет входные данные структуры inbus и структурный вывод outbus. Simulink.Bus объект SubBus определяет вывод структуры outbus1. Основываясь на этих определениях, inbus и outbus имеют те же свойства, что и MainBus и, следовательно, ссылаются на свои поля теми же именами, что и поля в MainBus, используя точечное представление (см. Индексные подструктуры и поля). Аналогично, outbus1 ссылается на свои поля теми же именами, что и поля в SubBus. Ниже приведены ссылки на поля для каждой структуры в этом примере:
| Структура | Первое поле | Второе поле | Третье поле |
|---|---|---|---|
inbus | inbus.ele1 | inbus.ele2 | inbus.ele3 |
outbus | outbus.ele1 | outbus.ele2 | outbus.ele3 |
outbus1 | outbus1.a1 | outbus1.a2 | — |