Функции Simulink: блок Simulink Function, экспортированные графические функции Stateflow и MATLAB

Simulink® функции имеют интерфейс с входными и выходными аргументами, подобными языкам программирования. Вы можете создать определение функции для функции Simulink с помощью:

  • Блоки Simulink в блоке Simulink Function

  • Stateflow® изменения состояния в графической функции, экспортированной из диаграммы Stateflow.

  • MATLAB® код в функции MATLAB, экспортированный из диаграммы Stateflow.

В следующих разделах показано, как создать функцию Simulink для функции y = timestwo(x). Функция умножает значение (x) от вызывающего абонента по 2, а затем отправляет вычисленное значение (y) назад к вызывающему абоненту. Чтобы вызвать функцию, см. Simulink function callers: Function Caller block, блок MATLAB function, диаграмма Stateflow.

Чтобы открыть завершенную модель с функциями Simulink и вызывающими функциями, смотрите ex_simulink_functions_and_function_callers.

Создайте функцию Simulink с помощью функционального блока Simulink

Настройте блок Simulink Function для приема данных через входной параметр от вызывающего абонента функции, а затем передайте вычисленное значение назад через выходной параметр.

  1. Добавьте блок Simulink Function к модели.

  2. На грани блока введите прототип функции.

    y = timestwo(x)

  3. Дважды кликните блок, чтобы открыть подсистему, определяющую алгоритм функции.

  4. Добавьте блок Gain и установите параметр Gain равным 2.

Создайте функцию Simulink с помощью экспортированной графической функции из диаграммы Stateflow

Настройте графическую функцию в диаграмме Stateflow, чтобы получить данные через входной параметр от вызывающего абонента функции и передать вычисленное значение назад через выходной аргумент. Установите параметры графика, чтобы экспортировать функцию в модель Simulink.

Задайте графическую функцию В диаграмме Stateflow

Создайте графическую функцию в диаграмме Stateflow. Определите интерфейс функции и определение функции.

  1. Добавьте диаграмму Stateflow к модели Simulink. Дважды кликните по Диаграмме Simulink. В поле поиска введите chartи затем из результатов поиска выберите Chart.

  2. Дважды кликните, чтобы открыть график.

  3. Добавьте графическую функцию. На левой панели инструментов щелкните и перетащите на график значок графической функции.

  4. Определите интерфейс функции. В функциональном поле замените ? с интерфейсом функции y = timestwo(x).

  5. Задайте алгоритм функции. Щелкните стреле перехода и замените ? с {y = 2*x}.

Протестируйте графическую функцию.  Протестируйте графическую функцию в диаграмме Stateflow перед экспортом в модель Simulink.

  1. Добавьте переход по умолчанию на графике для проверки функции. На левой панели инструментов щелкните и перетащите стрелу перехода по умолчанию на график.

  2. Дважды кликните стрелу и замените ? с {y1 = timestwo(x1)}.

  3. Добавьте порт входа к графику. Откройте Model Explorer. На левой панели выберите Chart. В меню выберите Add > Data. Установите Name значение x1 и Scope к Input.

  4. Добавьте порт выхода к графику. В меню выберите Add > Data. Установите Name значение y1 и Scope к Output.

  5. Добавьте блок Sine Wave, чтобы предоставить тестовые данные для входных данных, и блок Scope, чтобы просмотреть результаты из выходов.

  6. Запустите симуляцию.

Установите параметры аргумента для графической функции

Задайте размер, сложность и тип входного параметра функции и выходных аргументов. График может экспортировать только функции с полностью заданными прототипами.

  1. Откройте Model Explorer. На вкладке Modeling и из раздела Design выберите Model Explorer.

  2. На левой панели выберите графическую функцию.

  3. В списке Column View на средней панели выберите Stateflow. Выберите значок фильтра, а затем из списка переключателей выберите All Stateflow Objects. В таблице центральной панели выберите вход или выходной аргумент.

  4. На правой панели установите Size равным 1 (скаляр), Set Complexity равным Off (вещественное число) и установите Type равным double.

  5. Повторите шаги 2 и 3 с аргументом выходной функции y.

Установите параметры экспорта функций для графической функции

Установите параметры, чтобы экспортировать графическую функцию в модель Simulink с диаграммы Stateflow во время симуляции.

  1. Откройте Model Explorer.

  2. На левой панели выберите график, содержащий графическую функцию.

  3. В диалоговом окне свойств справа установите флажок Export Chart Level Functions , нажмите кнопку Apply, а затем установите флажок Treat Exported Functions as Globally Visible.

    Если вы вызываете экспортированную графическую функцию из другой диаграммы Stateflow (не графика, экспортировавшей графическую функцию), вам не нужно устанавливать флажок Treat Exported Functions as Globally Visible.

Создайте функцию Simulink с помощью экспортированной функции MATLAB из диаграммы Stateflow

Настройте функцию MATLAB на графике Stateflow, чтобы получить данные через входной параметр от вызывающего абонента функции, а затем передайте вычисленное значение назад через выходной аргумент. Установите параметры графика, чтобы экспортировать функцию в модель Simulink.

Задайте функцию MATLAB на диаграмме Stateflow

Создайте функцию MATLAB на диаграмме Stateflow. Определите интерфейс функции и определение функции.

  1. Добавьте диаграмму Stateflow к модели Simulink. Дважды кликните по блоку схеме. В поле поиска введите chartи затем из результатов поиска выберите Chart.

  2. Откройте график.

  3. Добавьте функцию MATLAB. На левой панели инструментов щелкните и перетащите на график значок графической функции.

  4. Определите интерфейс функции. В функциональном поле замените ? с интерфейсом функции y = timestwo(x).

  5. Дважды кликните окно функции, чтобы открыть редактор кода MATLAB. Определите алгоритм функции с кодом MATLAB.

Протестируйте функцию MATLAB.  Протестируйте функцию MATLAB в диаграмме Stateflow перед экспортом в модель Simulink.

  1. Добавьте переход по умолчанию на графике для проверки функции. На левой панели инструментов щелкните и перетащите стрелу перехода по умолчанию на график.

  2. Дважды кликните стрелу и замените ? с {y1 = timestwo(x1)}.

  3. Добавьте порт входа к графику. Откройте Model Explorer. На левой панели выберите Chart. В меню выберите Add > Data. Установите Name значение x1 и Scope к Input.

  4. Добавьте порт выхода к графику. В меню выберите Add > Data. Установите Name значение y1 и Scope к Output.

  5. Добавьте блок Sine Wave, чтобы предоставить тестовые данные для входных данных, и блок Scope, чтобы просмотреть результаты из выходов.

  6. Запустите симуляцию.

Установите параметры аргумента для функции MATLAB

Задайте размер, сложность и тип входного параметра функции и выходных аргументов. График может экспортировать только функции с полностью заданными прототипами.

  1. Откройте Model Explorer. На вкладке Modeling и из раздела Design выберите Model Explorer.

  2. На левой панели выберите функцию MATLAB.

  3. В списке Column View на средней панели выберите Stateflow. Выберите значок фильтра, а затем из списка переключателей выберите All Stateflow Objects. В таблице центральной панели выберите вход или выходной аргумент.

  4. На правой панели установите Size значение 1 (скаляр), Установите Complexity на Off (вещественное число) и установите Type равным double.

  5. Повторите шаги 2 и 3 с аргументом выходной функции y.

Установите параметры экспорта функций для функции MATLAB

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

  1. Откройте Model Explorer.

  2. На левой панели выберите график, содержащую функцию MATLAB.

  3. В диалоговом окне свойств справа установите флажок Export Chart Level Functions , нажмите кнопку Apply, а затем установите флажок Treat Exported Functions as Globally Visible.

    Если вы вызываете экспортированную функцию MATLAB из другой диаграммы Stateflow (не графика, экспортировавшей функцию MATLAB), вам не нужно устанавливать флажок Treat Exported Functions as Globally Visible.

См. также

Блоки

Похожие темы