Соедините структуры в функциях MATLAB к сигналам шины Simulink

В этом примере показано, как использовать структуры MATLAB® в графике Stateflow®. Структуры MATLAB позволяют вам связать данные различных размеров и типов вместе в одну переменную в функции MATLAB. Можно создать структуру MATLAB к:

  • Связанные с хранилищем данные в локальной или персистентной переменной функции MATLAB

  • Читайте из или запишите в локальную структуру Stateflow

  • Интерфейс с Simulink® соединяет шиной сигнал в порте ввода или вывода

Функции MATLAB поддерживают невиртуальные шины только. Для получения дополнительной информации смотрите Типы Составных Сигналов (Simulink).

Задайте структуры в функциях MATLAB

В этом примере диаграмма Stateflow обрабатывает данные от одного сигнала шины Simulink и выводит результат к другому сигналу шины Simulink. Оба сигналы шины ввода и вывода заданы Simulink.Bus Объект (Simulink) BusObject. Эти шины имеют четыре поля: sbAB, и c. Поле sb также сигнал шины, заданный Simulink.Bus объект SubBus. Это имеет одно поле под названием ele.

В графике шина Simulink сигнализирует об интерфейсе со структурами Stateflow in и out. Функции abc2sb и sb2abc извлеките информацию из входной структуры и сохраните его в локальных структурах Stateflow localbus и subbus. Затем график пишет в структуру output путем объединения значений этих локальных структур. Для получения дополнительной информации о структурах Stateflow смотрите доступ к Сигналам Шины Через Структуры Stateflow.

Функция MATLAB® sb2abc берет структуру Stateflow типа SubBus и возвращает структуру Stateflow типа BusObject. Функция анализирует значение поля ele от его входа на три компонента: вектор, 3-на-2 матрица и скаляр. Функция хранит эти компоненты в локальном MATLAB struct Y это имеет ту же структуру как Simulink.Bus объект BusObject. Затем функция присваивает значение struct MATLAB Y к структуре output y.

function y = sb2abc(u)
% extract data from input structure
E = int8(magic(3));
A = double(u.ele(1:2,1));
B = uint8(u.ele(:,2:3));
C = double(u.ele(3,1));
% create local structure
X = struct('ele',E);
Y = struct('sb',X,'a',A,'b',B,'c',C);
% assign value to output structure
y = Y;
end

Задайте структуры ввода и вывода

В функции MATLAB получите доступ к локальной структуре Stateflow или интерфейсу с сигналом шины Simulink путем определения структур ввода и вывода для функции:

  1. В базовом рабочем пространстве создайте Simulink.Bus объект, который задает тип данных структуры.

  2. В панели Символов выберите входной параметр функции или выведите.

  3. В Property Inspector, набор свойство Type к Bus: <object name>. Замените <имя объекта> на имя Simulink.Bus объект, который задает структуру Stateflow.

Например, в функциональном sb2abc:

  • Свойство Type входной структуры u задан как Bus: SubBus.

  • Свойство Type структуры output y задан как Bus: BusObject.

Для получения дополнительной информации смотрите, Задают Структуры Stateflow.

Задайте локальные и персистентные переменные структуры

К связанным с хранилищем данным в одной переменной в функции MATLAB можно создать struct MATLAB как локальная или персистентная переменная. Например, функциональный sb2abc задает две локальных структуры MATLAB, чтобы временно хранить данные, извлеченные из входной структуры u прежде, чем записать в структуру output y:

  • X скалярный struct с одним полем под названием ele. Это поле содержит 3х3 матрицу типа int8, который совпадает со структурой Simulink.Bus объект SubBus.

  • Y скалярный struct с четырьмя полями: sb подструктура типа SubBusA двумерный вектор из типа doubleB 3-на-2 матрица типа uint8, и c скаляр типа double. Эти поля совпадают со структурой Simulink.Bus объект BusObject.

Для получения дополнительной информации смотрите, Задают Скалярные Структуры для Генерации кода (Simulink).

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

| (Simulink)

Похожие темы