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

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

Stateflow - Simulink

Использование временной (темпоральной) логики

Логические операторы временной (темпоральной) логики или временные логические операторы - двоичные операторы, операндами которых являются количества Stateflow-событий.

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

Событие, с которым оператор работает, называется базовым событием. Любое Stateflow-событие может служить базовым событием для оператора. Временные логические операторы могут также работать с неявными событиями, такими как вход в состояние, выход из него, изменение данных. В диаграмме без поступающих из Simulink-событий можно использовать ключевые слова tick или wakeup, обозначающие неявные события активизации диаграмм. Временные логические операторы могут использоваться либо в условиях на переходах, выходящих из состояний, либо в действиях состояний. Это означает, что их нельзя использовать как условия на переходах по умолчанию или переходах в потоковых диаграммах (flow- диаграммах).

Состояние, в которое происходит переход, обусловленный временным логическим оператором, или состояние, в during действии которого этот оператор появляется, называется связанным состоянием временного оператора.

Хотя временная логика не генерирует никаких новых событий в модели Stateflow, полезно думать об изменении значения временного логического условия как о событии. Предположим, необходимо, чтобы переход из состояния A произошел точно через 10 временных циклов после активизации этого состояния. Один из способов достижения поставленной цели состоит в том, чтобы определить событие ALARM (ТРЕВОГА) и вызвать это событие через десять событий CLK после того, как состояние A стало активным. Затем можно использовать ALARM как событие, которое вызовет переход из состояния A. Более простой способ - "установить" временное логическое условие на событие CLK, которое вызывает переход из состояния A:

CLK[after(10, CLK)]

Обратите внимание, что этот подход не требует создания новых событий. Однако можно думать об этом выражении как о создании неявного события, которое вызывает переход. Следовательно, Stateflow поддерживает эквивалентное описание события:

after(10, CLK)

Обратите внимание, что описание события позволяет устанавливать дополнительные ограничения на неявные временные логические "события", например,

after(10, CLK)[temp == COLD]

Это выражение означает: "покинуть состояние А, если температура низкая, но не быстрее, чем через 10 временных циклов".

Группа примеров Temporal Logic (рис. 1) раскрывает некоторые особенности использования в Stateflow операторов темпоральной или временной логики. Эта группа включает примеры использования функций AFTER, BEFORE, AT, EVERY. Получить доступ к этим примерам можно через закладку Demos окна помощи Help системы MATLAB.

Рис. 1

Временная логика, использующая функцию after (после того, как).

Синтаксис оператора after (после того, как): after(n, E).

Здесь E - базовое событие для оператора, а n либо целое положительное число, либо выражение, принимающее неотрицательное целое значение. Оператор after принимает значение "истина", если событие E произошло n раз после того, как связанное состояние стало активно. В противном случае значение оператор after - "ложь". Оператор after устанавливает счетчик событий E в 0 каждый раз, когда связанное состояние становится активным.

Демонстрационный пример AFTER function.

Simulink-модель этого примера представлена на рис. 2. Эта модель включает две Stateflow-диаграммы. Одна диаграмма (Temporal Logic) использует временную логику и функцию after. Другая диаграмма (Without Temporal Logic) достигает той же самой цели без использования временной логики.

Рис. 2

На рис. 3 показана Stateflow-диаграмма Temporal Logic. Она содержит два состояния: 'Off' и 'On'. По умолчанию активизируется состояние 'Off' , при этом выходная переменная roud_count устанавливается в ноль. Функция after позволяет подсчитать число событий, которые произошли в пределах диаграммы и затем использовать это как условие для перехода. Так, в этом демонстрационном примере переход от состояния 'Off' к состоянию 'On' произойдет после того, как 10 событий с именем 'secs' ('секунды') произошли, если при этом входная переменная с именем 'step' ('шаг') меньше 1. События 'secs' ('секунды') задаются в модели Simulink-блоком Pulse Generator (генератор импульсов), параметры которого приведены в окне Block Parameters рис. 4. Переменная 'step' ('шаг') задается Simulink-блоком 'Step' с параметрами рис. 5. На выходе блока 'Step' будет нулевой сигнал в течение 60 секунд модельного времени, после чего сигнал станет единичным. После этого условие перехода [step<1] не выполняется и переход в состояние On больше не происходит.

Рис. 3

Рис. 4

Рис. 5

Тот же самый эффект может быть достигнут без использования операторов временной логики. Отличие этой диаграммы (см. рис. 6) от предыдущей состоит лишь в том то, что здесь необходимо использовать дополнительную переменную и внутренний переход. Они нужны, чтобы подсчитывать количество раз, когда событие наступило. В этом случае локальная переменная 'count_after' является счетчиком событий 'secs'. Переход будет иметь место, если ' count_after ' станет больше 10, а величина переменной 'step' ('шаг') - меньше 1.

Рис. 6

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

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