Main Content

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.

Simulink model with two Stateflow charts that communicate using a message.

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

  1. En la pestaña Modeling, en Design Data, seleccione Symbols Pane.

  2. Haga clic en el icono Create Message .

  3. En la fila del mensaje nuevo, en Type, haga clic en el icono y seleccione:

    • Input Message

    • Local Message

    • Output Message

  4. Edite el nombre del mensaje.

  5. En cuanto a los mensajes de entrada y de salida, haga clic en el campo Port y seleccione un número de puerto.

  6. 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

  1. En el editor de Stateflow, seleccione la opción que corresponda al ámbito del mensaje que desea añadir.

    ÁmbitoOpción
    EntradaEn la pestaña Modeling, en Design Data, seleccione Message Input.
    SalidaEn la pestaña Modeling, en Design Data, seleccione Message Output.
    LocalEn la pestaña Modeling, en Design Data, seleccione Message.

  2. 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

  1. En la pestaña Modeling, en Design Data, seleccione Model Explorer.

  2. 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.

  3. 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.

  4. 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:

  • El final de la unidad de tiempo actual, cuando el gráfico destruye cualquier mensaje válido restante.

  • El gráfico reenvía el mensaje a otra cola usando el operador forward. El mensaje continúa su vigencia en la cola nueva.

  • El gráfico descarta el mensaje usando discard.

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

  • Acciones de entrada

  • Transiciones predeterminadas con Execute (enter) Chart At Initialization habilitado

En los gráficos que utilizan C como lenguaje de acción, los mensajes no admiten datos de punto fijo de varias palabras.

Los gráficos que contienen mensajes locales no admiten simulaciones en modo External o modo Rapid Accelerator.

Consulte también

| | | | | (Simulink) |

Temas relacionados