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

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

Stateflow - Simulink

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

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

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

Вот как оператор before можно использовать в описании переходов:

ROTATION[before(10, CLK)].

Это выражение разрешает переход из некоторого состояния только при возникновении события ROTATION (ВРАЩЕНИЕ), но не позже, чем через 10 циклов CLK после активизации этого состояния.

Следующий пример иллюстрирует использование события before в действии during состояния:

Heater_on

on before(MAX_ON_TIME, CLK): temp++;

Эта команда заставляет состояние Heater_on увеличивать на единицу переменную temp однажды за время цикла CLK, пока предел MAX_ON_TIME не достигнут.

Демонстрационный пример функции BEFORE.

Simulink-модель этого примера представлена на рис. 8.

Рис. 8

Этот пример иллюстрирует использование функции BEFORE для трех различных состояний с тремя различными ограничениями. Stateflow-диаграмма представлена на рис. 9. Для нее событием является переход через ноль в положительном направлении сигнала генератора Pulse Generator, что происходит с периодичностью 1 с-1.

Рис. 9

В суперсостоянии One (Один) должны быть выполнены два условия для перехода из подсостояния A_state: signal_one должен быть меньше пяти прежде, чем произойдет 10 событий. Начиная с момента, когда оба эти условия выполнены, каждое событие выходной сигнал устанавливается в 1 (но лишь после того, как все три параллельных состояния инициализированы первым по счету событием!).

В суперсостоянии Two (Два) два различных условия должны быть выполнены для перехода из B_state: signal_two должен быть меньше, чем 10 прежде, чем произойдет 20 событий. Эти условия будут выполнены позже, когда signal_two станет большим, чем 10.

Наконец, в суперсостоянии Three (Три), следующие два условия должны быть выполнены для перехода из C_state: signal_three должен быть больше 11 прежде, чем произойдет 10 событий. Так как эти условия никогда не выполнятся одновременно, output3 никогда не устанавливается в 1 и остается нулевым все время моделирования.

На рис. 10 показаны временные зависимости сигналов signal_one, signal_two и signal_three.

Рис. 10

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

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

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

Вот как оператор before можно использовать в описании переходов:

ROTATION[at(10, CLK)].

Это выражение разрешает переход из некоторого состояния только если событие ROTATION (ВРАЩЕНИЕ) произошло ровно через 10 циклов CLK после активизации этого состояния.

Следующий пример иллюстрирует использование события at в действии during состояния:

Heater_on

on at(10, CLK): status('heater on');

Эта команда заставит состояние Heater_on выдать сообщение о своем статусе через 10 циклов CLK после активизации этого состояния.

Демонстрационный пример функции AT.

Simulink-модель этого примера представлена на рис. 11.

Рис. 11

Этим примером иллюстрируется преимущество использования функции AT. В диаграмме "Temporal Logic" функция AT используется трижды (см. рис. 12).

Рис. 12

После присвоения переменной a значения 5 мы используем функцию at, чтобы изменить в диаграмме выходной сигнал output. При каждом 5-ом событии выходной сигнал устанавливается равным 1; при каждом 10-ом событии выходной сигнал устанавливается равным 0; и наконец, 30-е ('6*a') событие заставляет выходной сигнал равняться -1. В диаграмме "Without Temporal Logic" необходимо использовать намного больше состояний и переходов, чтобы создать ту же самую модель (рис. 13).

Рис. 13

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

На рисунке 14 показаны временные зависимости выходного сигнала output.

Рис. 14

Временная логика, использующая функцию every (каждый).

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

Здесь E - базовое событие для оператора, а n либо целое положительное число, либо выражение, принимающее неотрицательное целое значение. Оператор every принимает значение "истина" в каждое n-ное событие E после того, как связанное состояние стало активно. В противном случае значение оператор at - "ложь". В диаграммах без входных событий выражение every (n,wakeup) или every (n,tick) истинно, когда диаграмма активизирована в k-ый раз, где k кратно n. Оператор every устанавливает счетчик событий E в 0 каждый раз, когда связанное состояние становится активным.

Следующий пример иллюстрирует использование события every в состоянии:

Heater_on

on every(10, CLK): status('heater on');

Эта команда заставляет состояние Heater_on выдаватьвать сообщение о своем статусе через каждые 10 циклов CLK после активизации этого состояния.

Демонстрационный пример функции EVERY.

Этот демонстрационный пример (рис. 15) иллюстрирует преимущество использования функции EVERY.

Рис. 15

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

Рис. 16

Кроме того каждые 10 секунд, вызывается графическая функция double_counter, которая удваивает свой входной аргумент и присваивает это значение переменной 'count'. Лишь одно состояние и одна графическая функция необходима, если эта задача решается с использованием временной логики. В диаграмме "Without Temporal Logic" мы воссоздаем то же самое поведение, что и в диаграмме "Temporal Logic". Чтобы осуществить это, необходимо использовать 4 состояния и одну графическую функцию (рис. 17). Временные зависимости сигналов на выходах диаграмм идентичны (рис. 18). Однако диаграмма "Without Temporal Logic" выглядит намного сложнее. При этом гораздо труднее следить за переходами и событиями, которые имеют место в модели. Таким образом, задача усложняется в том случае, когда делается попытка реализовать требуемое поведение без использования временных логических функций.

Рис. 17

Рис. 18

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

(время поиска примерно 20 секунд)


Знаете ли Вы, в чем фокус эксперимента Майкельсона?

Эксперимент А. Майкельсона, Майкельсона - Морли - действительно является цирковым фокусом, загипнотизировавшим физиков на 120 лет.

Дело в том, что в его постановке и выводах произведена подмена, аналогичная подмене в школьной шуточной задачке на сообразительность, в которой спрашивается:
- Cколько яблок на березе, если на одной ветке их 5, на другой ветке - 10 и так далее
При этом внимание учеников намеренно отвлекается от того основополагающего факта, что на березе яблоки не растут, в принципе.

В эксперименте Майкельсона ставится вопрос о движении эфира относительно покоящегося в лабораторной системе интерферометра. Однако, если мы ищем эфир, как базовую материю, из которой состоит всё вещество интерферометра, лаборатории, да и Земли в целом, то, естественно, эфир тоже будет неподвижен, так как земное вещество есть всего навсего определенным образом структурированный эфир, и никак не может двигаться относительно самого себя.

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

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

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


Рыцари теории эфира
 09.08.2020 - 18:30: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Андрея Фурсова - Карим_Хайдаров.
09.08.2020 - 18:29: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> ПРОБЛЕМА КРИМИНАЛИЗАЦИИ ЭКОНОМИКИ - Карим_Хайдаров.
09.08.2020 - 14:05: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от схиигумена Сергия (Николая Романова) - Карим_Хайдаров.
09.08.2020 - 04:38: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ЗА НАМИ БЛЮДЯТ - Карим_Хайдаров.
08.08.2020 - 18:15: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
08.08.2020 - 18:12: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Пламена Паскова - Карим_Хайдаров.
08.08.2020 - 17:06: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
08.08.2020 - 14:37: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
08.08.2020 - 06:18: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
07.08.2020 - 17:15: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
07.08.2020 - 17:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Владимира Николаевича Боглаева - Карим_Хайдаров.
07.08.2020 - 13:57: ТЕОРЕТИЗИРОВАНИЕ И МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ - Theorizing and Mathematical Design -> ФУТУРОЛОГИЯ - прогнозы на будущее - Карим_Хайдаров.

Боровское исследовательское учреждение - Bourabai Research Bourabai Research Institution