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