Сообщение представляет собой объект Stateflow ®, который осуществляет локальную связь данных или между диаграммами в модели Simulink ®. Из диаграммы отправителей можно отправить или переслать сообщение. На диаграмме приема очередь получает сообщение и удерживает его до тех пор, пока диаграмма не сможет оценить его.

С помощью операторов Stateflow можно получать доступ к данным сообщений, а также отправлять, получать, отбрасывать или пересылать сообщения. Можно также определить, является ли сообщение действительным, и найти количество сообщений в очереди. Дополнительные сведения см. в разделе Взаимодействие с диаграммами потока состояний путем отправки сообщений.
Сообщения stateflow имеют поле данных. Для чтения или записи в поле данных действительного сообщения используйте синтаксис точечной нотации:
message_name.data
enumeration раздел определения, если не указано иное в methods раздел определения.Невозможно получить доступ к данным сообщений, которые все еще находятся в очереди или уже отброшены.
Для отправки выходного или локального сообщения используйте send оператор:
send(message_name)
A отправляет сообщение M со значением данных, равным 3. Если область сообщения Local, затем сообщение переходит в локальную очередь приема. Если область сообщения Output, то диаграмма отправляет сообщение через выходной порт в другой блок в модели Simulink.

За один шаг времени можно отправить несколько сообщений через выходной порт или в локальную очередь приема.
Если диаграмма посылает сообщение, превышающее емкость очереди на получение, происходит переполнение очереди. Результат переполнения очереди зависит от типа очереди на получение.
При переполнении внутренней очереди диаграмма Stateflow удаляет новое сообщение. Можно управлять уровнем диагностических действий, задав для сообщения свойство Диагностика переполнения очереди. См. раздел Диагностика переполнения очереди.
При переполнении внешней очереди блок очереди (Simulink) либо удаляет новое сообщение, либо перезаписывает самое старое сообщение в очереди в зависимости от конфигурации блока. См. раздел Перезапись самого старого элемента, если очередь заполнена (Simulink). Переполнение во внешней очереди всегда приводит к появлению предупреждения.
Сообщения могут защищать переходы или действия состояния типа 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 не меняется. Если сообщение присутствует, диаграмма удаляет его из очереди независимо от значения данных.

Чтобы отменить допустимое входное или локальное сообщение, используйте discard оператор:
discard(message_name)
Например, на этой диаграмме during действие в состоянии A проверяет очередь для сообщения M. Если сообщение присутствует, диаграмма удаляет его из очереди. Если сообщение имеет значение данных, равное 3, диаграмма отбрасывает сообщение.

Чтобы переслать допустимое входное или локальное сообщение в локальную очередь или порт вывода, используйте forward оператор:
forward(message_in_name,message_out_name)
На этой диаграмме состояние A проверяет входную очередь для сообщения M_in. Если сообщение присутствует, диаграмма удаляет сообщение из очереди и пересылает его на выходной порт. M_out. После того как диаграмма пересылает сообщение, оно перестает быть действительным в состоянии A.

На этой диаграмме переход между состояниями A и состояние B проверяет локальную очередь для сообщения M_local. Если сообщение присутствует, переход удаляет сообщение из M_local очередь сообщений и пересылает ее на выходной порт M_out.

Чтобы проверить правильность входного или локального сообщения, используйте isvalid оператор:
isvalid(message_name)
Например, эта диаграмма сначала выполняет состояние A, как описано в разделе Отмена сообщения. Когда диаграмма выполняет состояние B, during действие проверяет, что сообщение M является действительным. Если сообщение является действительным и имеет значение данных, равное 6, диаграмма отбрасывает сообщение.

Для проверки количества сообщений во внутренней очереди приема входного или локального сообщения используйте length оператор:
length(message_name)
Например, на этой диаграмме during действие в состоянии A проверяет очередь для сообщения M. Если сообщение присутствует, диаграмма удаляет его из очереди. Если в очереди осталось ровно семь сообщений, диаграмма увеличивает значение x.

length оператор не поддерживается для входных сообщений, использующих внешние очереди приема, управляемые блоком очереди (Simulink).
брак | отправить | isvalid | длина | получить | послать | Очередь (Simulink)