Просмотрите различия между сообщениями Stateflow, Событиями и данными

Этот пример сравнивает поведение сообщений, событий и данных в Stateflow®.

Графики отправителя

Эта модель имеет три графика отправителя: DataSender, EventSender, и MessageSender. Каждый график отправителя имеет одно состояние. В действии записи состояния графики присваивают значение данным, отправляют событие вызова функции или отправляют сообщение.

Графики приемника

Для каждого из графиков отправителя существует соответствующий график приемника. Каждый график приемника имеет диаграмму состояний с состояниями A0, A1, A2, и A3. Неявное событие after(3,sec) инициировал переход от A0 к A1. Данные, событие или сообщение из соответствующего графика отправителя охраняют переходы между A1, A2, и A3.

Выход Scope

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

Поведение данных

DataSender график присваивает значение 1 к выходным данным M, который соединяется как вход с DataReceiver график.

DataReceiver график выполняется однажды на каждом временном шаге. В начале симуляции, A0 состояния активно. Во время t=3, переход от A0 к A1 происходит. Во время t=4, график тестирует ли M равняется 1. Это условие верно, таким образом, переходы графика от A1 к A2. Во время t=5M все еще равняется 1, так переходы графика от A2 к A3. На осциллографе вы видите тот DataReceiver изменения утверждают три раза.

После того, как данные присвоены значение, они содержат свое значение в течение симуляции. Поэтому каждый раз, когда DataReceiver оценивает условие [M == 1], это переходит к новому состоянию.

Поведение события

EventSender график использует команду send(M) отправить вызову функции выходное событие, чтобы разбудить EventReceiver график.

EventReceiver график выполняется только когда входное событие M будит график. В начале симуляции, A0 состояния активно. Переход от A0 к A1 основан на абсолютно-разовой временной логике и не допустим во время t=0. A0 остается активным, и график возвращается ко сну. Поскольку EventSender отправляет событие M только однажды, EventReceiver не просыпается снова. На осциллографе вы видите тот EventReceiver никогда переходы из A0.

События не остаются допустимыми через временные шаги, таким образом, график получения имеет только один шанс ответить на событие. Когда EventSender отправляет событие, EventReceiver не готово ответить на него. Возможность для EventReceiver к переходу в ответ на событие потерян.

Поведение сообщения

MessageSender график использует синтаксис send(M) отправить сообщение через порт выходного сигнала. Сообщение входит в очередь входного сигнала MessageReceiver график. Сообщение ожидает в очереди до MessageReceiver оценивает его.

MessageReceiver график выполняется однажды на каждом временном шаге. В начале симуляции, A0 состояния активно. Во время t=3, переход от A0 к A1 происходит. Во время t=4, график определяет тот M присутствует в очереди, таким образом, она берет переход к A2. В конце временного шага график удаляет M от очереди. Во время t=5, нет никакого сообщения, существующего в очереди, таким образом, график не переходит к A3. A2 остается активное состояние. На осциллографе вы видите тот MessageReceiver изменения утверждают только два раза.

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

Похожие темы