StateFlow   ОКМ   ДМ   экономическая информатика   визуальные среды - 4GL   Теория и практика обработки информации

Cистема численно-математического моделирования MatLab

Stateflow - Simulink

Работа с графическими функциями StateFlow

Графическая функция - функция, определенная графом потока вычислений (граф потока вычислений - flow graph - это вариант блок-схемы алгоритма). Пример алгоритма, представленного в двух вариантах: традиционной блок-схемой и графом потока вычислений, приведен далее. Графические функции аналогичны текстовым функциям, таким, как MATLAB-функции и C-функции. Подобно текстовым функциям, графические функции могут принимать значения аргументов и возвращать результаты. Графические функции вызываются переходами и состояниями таким же образом, как MATLAB-функции и C-функции. Однако в отличие от них графические функции являются объектами Stateflow. Чтобы создать их, используется Stateflow редактор. Они присутствуют непосредственно в Stateflow- модели наряду с диаграммами, которые их вызывают. Это облегчает процесс создания графических функций, доступ к ним и работу с ними.

Создание графической функции.

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

1.Чтобы создать графическую функцию, вначале создайте состояние.

2.Затем в подменю Type (Тип) контекстного меню выберите команду Function (Функция).

Stateflow конвертирует состояние в графическую функцию.

Новая функция появляется в Stateflow Explorer как безымянный объект.

3.Введите обозначение функции в графическом окне функции. Обозначение функции определяет имя функции и имена формальных аргументов и возвращаемой переменной. Обозначение имеет синтаксис y = f (a1, a2...) где f - имя функции, a1, a2, - имена формальных аргументов и y - формальное имя возвращаемой переменной. На следующем рисунке представлено обозначение графической функции f1, имеющей два аргумента и возвращающей переменную.

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

Поле Scope в Explorer указывает, является ли соответствующая переменная входным аргументом или выходным (возвращаемым). Аргументы имеют область видимости Input. Возвращаемые переменные имеют область видимости Output. Числа в круглых скобках после аргументов соответствуют порядку, в котором аргументы приводятся в описании функции. Когда Stateflow вызывает функцию, аргументы подставляются в функцию в том же самом порядке.

При описании графических функций термин "видимость", обозначенный в поле scope, относится к типу данных (входные или выходные). Обычно же термин "видимость" относится к доступности данных. В этом смысле входные аргументы и выходные данные имеют локальную видимость. Они видимы только внутри диаграммы, которая представляет функцию.

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

Следующие ограничения накладываются на аргументы и возвращаемые данные.

Функция не может возвращать более чем одну величину.

Аргументы и возвращаемые переменные не могут быть массивами.

Аргументы не могут иметь начальных значений.

Аргументы должны иметь видимость Input (Входные).

Возвращаемая переменная должна иметь видимость Output (Выходная).

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

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

Временную. Stateflow создает и инициализирует копию временной переменной при каждом обращении к функции.

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

6.Создайте внутри функции граф потока вычислений. Этот граф отображает действия, которые будут выполнены, когда функция будет вызвана.

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

7.При необходимости можно скрыть содержание функции, выбрав команду Subcharted подменю Make Contents контекстного меню функции.

При этом функция приобретет следующий вид.

Вызов графических функций.

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

Примеры использования графических функций.

С примерами использования графических функций можно познакомиться, выбрав в Help-навигаторе закладку Demos, а далее выбрав папку Stateflow-примеров с названием Graphical Functions.

Первый пример - Using a Graphical Function (использование графической функции). Этот демонстрационный пример поясняет концепцию графической функции и ее использование с целью упрощения Stateflow-модели. Откроем модель.

В этом примере Stateflow-диаграмма имеет два входа. На первый вход normal_input подается синусоидальный сигнал с амплитудой, равной единице и частотой 2*pi, а на второй вход inverse_input - инвертированный сигнал. Stateflow-диаграмма выдает положительные полуволны обоих сигналов, ограничивая амплитуду величиной 0.5.

В первой Stateflow-диаграмме ''Without Graphical Functions', не использующей графических функций, выходной сигнал output определяется непосредственно внутри подсостояний.

Первоначально активизируется нормальное состояние Normal и выходной сигнал устанавливается равным входу normal_input. Когда normal_input превышает значение 0.5, выходной сигнал установливается на уровне 0.5. Когда normal_input становится отрицательным (normal_input < 0), происходит переход в инверсное состояние Inverse, и выходной сигнал формируется по тем же самым правилам за исключением того, что используется inverse_input.

В Stateflow-диаграмме 'With Graphical Functions' , которая использует графическую функцию, выходной сигнал определяется вызовом этой графической функции. Вместо того, чтобы определять переход к насыщению (где выходной сигнал остается на уровне 0.5) внутри состояний, мы определяем это однажды в графической функции.

Выходные сигналы в этих двух случаях идентичны.

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

StateFlow   ОКМ   ДМ   экономическая информатика   визуальные среды - 4GL   Теория и практика обработки информации

Знаете ли Вы, что идеализация - это мысленное конструирование представлений об объектах, не существующих или неосуществимых в действительности, но таких, для которых существуют прообразы в реальном мире.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution