Доступ к сигналам шины Simulink в функциях 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. Функциональный sb2abc информация об извлечениях от входной структуры и хранилищ это в локальной структуре Stateflow localbus. Затем график пишет в структуру output путем объединения значений локальной структуры и одного из элементов массива структур subBusArray. Для получения дополнительной информации о доступе и изменении содержимого структуры Stateflow или массива структур Stateflow, смотрите индекс и Значения Присвоения к Структурам Stateflow.

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

function y = sb2abc(u)
% extract data from input structure
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',int8(zeros(3)));
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)

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте