В этом примере показано, как использовать структуры в блоке MATLAB function, чтобы читать и записать в сигналы шины Simulink®.
В этой модели блок MATLAB function получает сигнал шины использование структуры 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 в примере, когда они появляются в Портах и Менеджере данных:
Каждый ввод и вывод структуры должен быть задан Simulink.Bus
объект в базовом рабочем пространстве (см., Создает Структуры в блоках MATLAB function). Это означает, что структура совместно использует те же свойства, как объект шины, включая номер, имя, вводит, и последовательность полей. В этом примере следующие объекты шины задают вводы и выводы структуры:
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 | — |
В этом примере показано, как использовать данные о шине, хранимые в хранилище данных как вход к блоку MATLAB function.
Соберите данные о шине в блоке памяти хранилища данных
В этом примере, блок Bus Creator MainBusCreator
создает шину под названием MainBus
потому что параметром типа Выходных данных является Bus: MainBus
. Блок Data Store Write затем пишет данные о шине в хранилище данных под названием inbus
, который задает параметр Имени хранилища данных.
Чтобы хранить данные о шине от блока Data Store Write, модель включает Блок памяти Хранилища данных. В Блоке памяти Хранилища данных параметром Имени хранилища данных является inbus
, имя хранилища данных, заданного по условию блок Store Write. Параметром Типа данных является Bus: MainBus
, тип данных задан MainBusCreator
блок.
Задайте аргумент данных оперативной памяти хранилища данных
Чтобы использовать хранилище данных в качестве входа, блок MATLAB function использует данные, которые имеют набор свойств Осциллографа к Data Store Memory
. Функция затем вызывает данные путем определения данных как глобальной переменной с именем хранилища данных, которое является inbus
. Дважды кликните блок MATLAB function, чтобы исследовать код.
function [outbus, outbus1] = fcn
global inbus;
substruct.a1 = inbus.ele3.a1; substruct.a2 = int8([1 2;3 4]);
mystruct = struct('ele1',20.5, 'ele2', single(100), 'ele3', substruct);
outbus = mystruct; outbus.ele3.a2 = 2*(substruct.a2);
outbus1 = inbus.ele3;
Можно настроить свойства аргумента данных оперативной памяти хранилища данных в Портах и Менеджере данных или Model Explorer.