Siddharth Sharma, MathWorks
Messages are useful for modeling asynchronous operations in state machines. This example has two key components: a sender and a receiver. The sender chart generates messages at random intervals, which are queued and processed by the receiver at a different rate.
The sender component generates messages in the state Create_and_Send. Messages can also carry data, which can be used to make decisions or perform actions. These generated messages are transmitted through message lines in Simulink®. and held in a queue at the input of the receiver. The receiver starts in the ready state. It checks to see if a message exists in its queue. Once a message is available, it goes from ready to processing. The receiver stays in the processing state for a fixed period before going back to ready.
There are a couple of points to note: a message gets destroyed after it is used. So after a message has been used in a transition, the top message in the queue stays valid till the end of the time step, and then gets destroyed. The next time this transition is evaluated, it will check if a new message exists in the queue. The receiver chart also shows an example of how to use message data to perform an action.
In this example, the receiver processes messages when it is ready, which can be asynchronous with respect to the sender. To visualize the life of a message, use the message viewer block from the Stateflow® block library.