Шаблоны логики повторного использования путем определения графических функций

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

  • Создайте модульную, допускающую повторное использование логику, которую можно вызвать где угодно в графике.

  • Отследите поведение симуляции визуально во время анимации графика.

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

  • Если вы хотите вызвать функцию только в одном состоянии или подграфике и его подсостояниях, поместите свою графическую функцию в то состояние или подграфик. Эта функция заменяет любые другие функции того же имени в родительских элементах и предках того состояния или подграфика.

  • Если вы хотите вызвать функцию где-нибудь в том графике, поместите свою графическую функцию в уровень графика.

  • Если вы хотите вызвать функцию из какого-либо графика в вашей модели, поместите свою графическую функцию в уровень графика и позвольте экспортировать функций уровня графика. Для получения дополнительной информации смотрите Экспорт Функции Stateflow для Повторного использования.

Например, эта графическая функция имеет имя f1. Это берет три аргумента (a, b и c) и возвращает три выходных значения (x, y и z). Функция содержит блок-схему, которая вычисляет три различных продукта аргументов.

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

  1. В объектной палитре кликните по значку графической функции. Переместите указатель в местоположение для новой графической функции в вашем графике.

  2. Введите метку подписи для функции, как описано в Объявляют Аргументы функции и Возвращаемые значения.

  3. Чтобы программировать функцию, создайте блок-схему в функциональном поле, как описано в Блок-схемах в Stateflow.

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

  4. В Model Explorer расширьте объект диаграммы и выберите графическую функцию. Аргументы и возвращаемые значения функциональной подписи появляются как элементы данных, которые принадлежат вашей функции. Аргументы имеют осциллограф Input. Возвращаемые значения имеют осциллограф Output.

  5. В диалоговом окне Свойств данных для каждого значения аргумента и возвращаемого значения, задайте свойства данных, как описано в Set Data Properties.

  6. Создайте любые дополнительные элементы данных, требуемые вашей функцией. Для получения дополнительной информации смотрите, Добавляют Данные Через Model Explorer.

    Ваша функция может получить доступ к своим собственным данным или данным, принадлежащим метрополиям или графику. Элементы данных в функции могут иметь один из этих осциллографов:

    • Local — Локальные данные сохраняются от одного вызова функции до следующего вызова функции. Допустимый для C строит диаграмму только.

    • Constant — Постоянные данные сохраняют свое начальное значение посредством всех вызовов функции.

    • Parameter — Данные о параметре сохраняют свое начальное значение посредством всех вызовов функции.

    • Temporary — Временные данные инициализируют в начале каждого вызова функции. Допустимый для C строит диаграмму только.

В графиках, которые используют C в качестве языка действия, задайте временные данные когда это необходимо, чтобы использовать данные, которые только допустимы, в то время как функция выполняется. Например, можно определять счетчик цикла иметь осциллограф Temporary, если встречное значение не должно сохраняться после того, как функция завершается.

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

Можно инициализировать функциональные данные (кроме аргументов и возвращаемых значений) от рабочего пространства MATLAB. Для получения дополнительной информации смотрите, Инициализируют Данные из Базового рабочего пространства MATLAB.

Объявите аргументы функции и возвращаемые значения

Функциональная метка подписи задает имя для вашей функции и официальные имена для ее аргументов и возвращаемых значений. Метка подписи имеет этот синтаксис:

[return_val1, return_val2,...] = function_name(arg1, arg2,...)
Можно задать несколько возвращаемых значений и несколько входных параметров. Каждое возвращаемое значение и входной параметр могут быть скаляром, вектором или матрицей значений. Для функций только с одним возвращаемым значением не используйте скобки в метке подписи.

Можно использовать то же имя переменной и для аргументов и для возвращаемых значений. Например, функция с этой меткой подписи использует переменные y1 и y2 в качестве обоих вводов и выводов:

[y1, y2, y3] = f(y1, u, y2)
Если вы экспортируете эту функцию в код С, y1 и y2 передаются ссылкой (как указатели), и u передается значением. Передача входных параметров ссылкой уменьшает число раз, что сгенерированный код копирует промежуточные данные, приводящие к более оптимальному коду.

Вызовите графические функции в состояниях и переходах

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

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

Совет

Если формальные аргументы функциональной подписи являются скалярами, проверяют, что вводы и выводы вызовов функции следуют правилам скалярного расширения. Для получения дополнительной информации смотрите Как Скалярные работы Расширения для Функций.

Задайте свойства графической функции

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

Имя

FunctionName . Щелкните по ссылке имени функции, чтобы принести вашу функцию к переднему плану в его нативном графике.

Функциональная встроенная опция

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

  • 'auto' Определяет, встроить ли вашу функцию на основе внутреннего вычисления.

  • Встроенный Встраивает вашу функцию, если вы не экспортируете ее в другие графики, и это не часть рекурсии. (Рекурсия существует если ваши вызовы функции сама прямо или косвенно посредством другого вызова функции.)

  • Функция Не встраивает вашу функцию.

Метка

Метка Signature для вашей функции. Для получения дополнительной информации смотрите, Объявляют Аргументы функции и Возвращаемые значения.

Описание

Функциональное описание. Можно ввести краткие описания функций в иерархии.

Ссылка на документ

Соединитесь с онлайн-документацией для функции. Можно ввести веб-адрес URL или команду MATLAB, которая отображает документацию в подходящем онлайн-формате, таком как файл HTML или текст в Окне Команды MATLAB. Когда вы кликаете по гиперссылке Document link, Stateflow отображает документацию.

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

Можно принять решение сделать графическую функцию столь большой, как вы хотите. Если ваша функция становится слишком большой, можно скрыть ее содержимое путем щелчка правой кнопкой в функциональном поле и выбора Group & Subchart> Subchart из контекстного меню.

Чтобы сделать поле графической функции непрозрачным, щелкните правой кнопкой по функции и очистите свойство Content Preview от контекстного меню.

Чтобы выделить целое окно графика программированию вашей функции, получите доступ к блок-схеме в своей графической функции подотмеченной на диаграмме путем двойного клика по функциональному полю.

Широковещательные сообщения события в графических функциях

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

Похожие темы