Сообщение является объектом Stateflow®, который передает данные локально или между графиками в модели Simulink®. Из графика отправителя можно отправить или передать сообщение. В графике получения очередь получает сообщение и содержит его, пока график не может оценить его.
Используя операторы Stateflow, можно получить доступ к данным о сообщении, и отправить, получить, отбросить или передать сообщение. Можно также определить, допустимо ли сообщение, и найдите количество сообщений в очереди. Для получения дополнительной информации смотрите, Связываются с диаграммами Stateflow путем Отправки сообщений.
Сообщения Stateflow имеют поле данных. Чтобы читать или записать в поле данных сообщения допустимого сообщения, используйте синтаксис записи через точку:
message_name.data
enumeration
определения, если вы не задаете в противном случае в разделе methods
определения.Вы не можете получить доступ к данным о сообщении для сообщений, которые находятся все еще в очереди или которые были уже отброшены.
Чтобы отправить сообщение, используйте оператор send
:
send(message_name)
A
состояния отправляет сообщению M
со значением данных 3
. Если сообщением является Local
, то сообщение входит в локальную очередь сообщений. Если осциллографом сообщения является Output
, то график отправляет сообщение через выходной порт очереди входного сигнала графика получения.
В одном временном шаге можно отправить несколько сообщений через выходной порт или локальной очереди.
Сообщения могут охранять переходы или акты государственной власти типа on
. Во время временного шага, когда сообщение защиты оценено впервые, график удаляет сообщение из очереди и делает сообщение допустимым. В то время как сообщение допустимо, другие переходы или действия могут получить доступ к данным о сообщении, но они не удаляют другое сообщение из очереди.
В этом графике сообщении M
охраняет переход от A
состояния, чтобы утвердить B
. Переход происходит, когда оба из этих условий верны:
Сообщение присутствует в очереди.
Значение данных сообщения равно 3.
Если сообщение не присутствует или если значение данных не равно 3, то переход не происходит. Если сообщение присутствует, оно удалено из очереди независимо от того, происходит ли переход.
on
состояния с сообщениемВ этом графике сообщении M
охраняет действие on
в A
состояния. Когда A
состояния становится активным, он постепенно увеличивает значение x
, если оба из этих условий верны:
Сообщение присутствует в очереди.
Значение данных сообщения равно 3.
Если сообщение не присутствует или если значение данных не равно 3, то значение x
не изменяется. Если сообщение присутствует, оно удалено из очереди независимо от того, изменяется ли x
.
Чтобы получить сообщение, используйте оператор receive
:
receive(message_name)
, M
существует, receive(M)
, возвращает true
. Если допустимое сообщение не существует, но в очереди существует сообщение, то график удаляет сообщение из очереди, и receive(M)
возвращает true
. Если допустимое сообщение не существует и нет никаких сообщений в очереди, receive(M)
возвращает false
.Например, в этом графике, действие during
в A
состояния проверяет очередь для сообщения M
и постепенно увеличивает значение x
, если оба из этих условий верны:
Сообщение присутствует в очереди.
Значение данных сообщения равно 3.
Если сообщение не присутствует или если значение данных не равно 3, то значение x
не изменяется. Если сообщение присутствует, оно удалено из очереди независимо от того, изменяется ли x
.
Чтобы отбросить допустимое сообщение, используйте оператор discard
:
discard(message_name)
Например, в этом графике, действие during
в A
состояния проверяет очередь для сообщения M
. Если сообщение присутствует, график удаляет его из очереди. Если сообщение имеет значение данных, равное 3, график отбрасывает сообщение.
Чтобы передать сообщение от входной очереди до выходного порта, или к и от локальных очередей сообщений, используют оператор forward
:
forward(input_message_name, output_message_name)
В этом графике утвердите, что A
проверяет входную очередь на сообщение M_in
. Если сообщение присутствует, график удаляет сообщение из очереди и вперед его к выходному порту M_out
. После того, как график передает сообщение, сообщение больше не действительно в A
состояния.
В этом графике утвердите, что A
проверяет входную очередь на сообщение M_in
. Если сообщение присутствует, график передает сообщение к локальной очереди сообщений M_local
. После задержки 0,3 секунд переход от A
состояния, чтобы утвердить B
удаляет сообщение из очереди сообщений M_local
и вперед этого к выходному порту M_out
.
Чтобы проверять, допустимо ли сообщение, используйте оператор isvalid
:
isvalid(message_name)
isvalid
, чтобы проверять, допустимо ли сообщение в модели Simulink, которая содержит больше чем одну диаграмму Stateflow.Например, этот график сначала выполняет A
состояния, как описано в Отбрасывании сообщение. Когда график выполняет B
состояния, проверки действия during
, допустимо ли сообщение M
. Если сообщение допустимо и имеет значение данных, равное 6, график отбрасывает сообщение.
Чтобы проверять количество сообщений в очереди сообщений, используйте оператор length
:
length(message_name)
during
в A
состояния проверяет очередь для сообщения M
. Если сообщение присутствует, график удаляет его из очереди. Если точно семь сообщений остаются в очереди, график постепенно увеличивает значение x
.
Чтобы проверять, потеряно ли сообщение, потому что оно было отправлено очереди, которая была уже полна, используйте оператор overflowed
:
overflowed(message_name)
overflowed
прежде, чем отправить или получить сообщение в том же временном шаге.По умолчанию, когда очередь сообщений переполняется, остановки симуляции с ошибкой. Чтобы предотвратить ошибку времени выполнения и позволить оператору overflowed
динамически реагировать на пропущенные сообщения, установите значение свойства Queue Overflow Diagnostic к Warning
или None
. Для получения дополнительной информации смотрите Диагностику Переполнения Очереди.
Чтобы проверять состояние переполнения очереди входного сигнала, сначала удалите сообщение из очереди. Вы можете:
Охрана переход с сообщением и оператором overflowed
.
Охрана переход с сообщением и вызовом оператор overflowed
в действии записи целевого состояния.
Охрана действие on
состояния с сообщением и вызовом оператор overflowed
в действии.
В акте государственной власти используйте оператор receive
, сопровождаемый оператором overflowed
.
Вызов оператора overflowed
прежде, чем получить входной сигнал в том же временном шаге приводит к ошибке времени выполнения.
Чтобы проверять состояние переполнения очереди выходного сигнала, сначала добавьте сообщение в очередь. Вы можете:
Используйте оператор send
, сопровождаемый оператором overflowed
.
Используйте оператор forward
, сопровождаемый оператором overflowed
.
Вызов оператора overflowed
прежде, чем быть передающим или передать выходной сигнал в том же временном шаге приводит к ошибке времени выполнения.
Чтобы проверять состояние переполнения локальной очереди сообщений, или добавьте сообщение в очередь или удалите сообщение из очереди прежде, чем вызвать оператор overflowed
. Вызов оператора overflowed
прежде, чем быть передающим или получить локальное сообщение в том же временном шаге приводит к ошибке времени выполнения.
отбрасывание | передать | isvalid | длина | переполненный | получить | отправка