Comunicarse con gráficos de Stateflow con el envío de mensajes
Utilice mensajes para comunicarse dentro y entre los gráficos de Stateflow® en un modelo de Simulink®. Un mensaje es un objeto de Stateflow que comunica datos localmente o entre gráficos. Desde un gráfico emisor, se puede enviar o reenviar un mensaje que contenga datos. En el gráfico receptor, una cola recibe el mensaje y lo retiene hasta que el gráfico pueda evaluarlo.
Los mensajes combinan algunas de las funcionalidades de los datos y los eventos. Al igual que los datos, los mensajes pueden transmitir información numérica y textual. Al igual que los eventos, los mensajes pueden activar acciones de transición y de estado. Sin embargo:
Los mensajes no activan gráficos inactivos. Por el contrario, los mensajes se ponen en cola hasta que el gráfico se activa. Cuando se activa el gráfico, puede responder a los mensajes de la cola.
Los mensajes no se pierden si el gráfico receptor no puede responder inmediatamente.
Para obtener más información, consulte Ver las diferencias entre los mensajes, eventos y datos de Stateflow.
Cuando una acción de transición o de estado del gráfico evalúa un mensaje, el gráfico determina si la cola contiene algún mensaje. Si es así, el gráfico elimina el mensaje de la cola. El mensaje sigue siendo válido hasta el final de la unidad de tiempo o hasta que el gráfico lo reenvíe o lo descarte. Mientras el mensaje es válido, otras transiciones o acciones pueden acceder a los datos del mensaje y el gráfico no elimina ningún otro mensaje de la cola. El gráfico destruye todos los mensajes válidos al final de la unidad de tiempo actual.
Definir mensajes en un gráfico
Puede añadir mensajes a un gráfico de Stateflow con el panel Symbols, el menú del editor de Stateflow o Model Explorer.
Añadir mensajes con el panel Symbols
En la pestaña Modeling, en Design Data, seleccione Symbols Pane.
Haga clic en el icono Create Message
.
En la fila del mensaje nuevo, en Type, haga clic en el icono y seleccione:
Input Message
Local Message
Output Message
Edite el nombre del mensaje.
En cuanto a los mensajes de entrada y de salida, haga clic en el campo Port y seleccione un número de puerto.
Para especificar las propiedades del mensaje, abra Property Inspector. En el panel Symbols, haga clic con el botón secundario en la fila del mensaje y seleccione Explore. Para obtener más información, consulte Set Properties for a Message.
Añadir mensajes con el menú del editor de Stateflow
En el editor de Stateflow, seleccione la opción que corresponda al ámbito del mensaje que desea añadir.
Ámbito Opción Entrada En la pestaña Modeling, en Design Data, seleccione Message Input. Salida En la pestaña Modeling, en Design Data, seleccione Message Output. Local En la pestaña Modeling, en Design Data, seleccione Message. En el cuadro de diálogo del mensaje, especifique las propiedades de los datos. Para obtener más información, consulte Set Properties for a Message.
Añadir mensajes con Model Explorer
En la pestaña Modeling, en Design Data, seleccione Model Explorer.
En el panel Model Hierarchy, seleccione el objeto de la jerarquía de Stateflow donde desea que el mensaje nuevo sea visible. El objeto que seleccione se convertirá en el elemento principal del mensaje nuevo.
En el menú de Model Explorer, seleccione Add > Message. El mensaje nuevo con una definición predeterminada aparece en el panel Contents de Model Explorer.
En el panel Message, especifique las propiedades del mensaje. Para obtener más información, consulte Set Properties for a Message.
Vigencia de un mensaje de Stateflow
Un mensaje de Stateflow tiene una vigencia finita. La vigencia comienza cuando se envía un mensaje a una cola receptora con el operador send
. El mensaje permanece en la cola hasta que una acción on
de transición o de estado lo evalúa o el gráfico lo recibe usando el operador receive
.
Un mensaje se convierte en válido cuando un gráfico lo evalúa o lo recibe. El mensaje sigue siendo válido hasta:
Mientras un mensaje es válido, otras transiciones y acciones pueden evaluarlo y acceder a sus datos. Para comprobar si un mensaje es válido, utilice el operador isvalid
.
Para ver el intercambio de mensajes durante la simulación, añada un bloque Sequence Viewer al modelo de Simulink. El bloque Sequence Viewer muestra:
Mensajes enviados
Mensajes recibidos
Mensajes reenviados
Mensajes perdidos
Mensajes destruidos
Mensajes descartados
Para obtener más información, consulte Use the Sequence Viewer to Visualize Messages, Events, and Entities.
Limitaciones de los mensajes
No se pueden utilizar mensajes en:
Diagramas de Moore
Subgráficos atómicos
Expresiones de condición de puntos de interrupción
En los gráficos que utilizan C como lenguaje de acción, los mensajes no admiten datos de punto fijo de varias palabras.
Consulte también
discard
| forward
| isvalid
| receive
| send
| Queue (Simulink) | Sequence Viewer