Main Content

Representar modos de funcionamiento con estados

Un estado describe un modo de funcionamiento de un sistema reactivo. En un gráfico de Stateflow®, los estados se utilizan en diseño secuencial para crear diagramas de transición de estados.

Durante la simulación, los estados pueden estar activos o inactivos. La actividad de un estado cambia en función de los eventos y las condiciones. Los eventos impulsan la ejecución del diagrama de transición de estados haciendo que estos se activen o se desactiven. Para obtener más información, consulte Ejecutar un gráfico de Stateflow.

Para representar varios niveles de componentes de un sistema, cree una jerarquía de estados anidando subestados dentro de superestados. Para obtener más información, consulte Utilizar la jerarquía de estados para diseñar complejidad de estado multinivel.

Para modelar modos de funcionamiento mutuamente excluyentes, habilite la descomposición exclusiva (OR) en un estado para que, como máximo, uno de sus subestados esté activo al mismo tiempo. Para implementar modos de funcionamiento que se ejecuten de forma simultánea, active la descomposición paralela (AND) en un estado para que todos sus subestados estén activos al mismo tiempo. Para obtener más información, consulte Definir modos exclusivos o paralelos con la descomposición de un estado.

Por ejemplo, en este gráfico, los estados PowerOn y PowerOff representan los modos de encendido y apagado de un sistema de control del aire. En el estado PowerOn, los subestados paralelos FAN1 y FAN2 representan los modos de funcionamiento de un par de ventiladores. Cada uno de estos estados contiene subestados exclusivos denominados On y Off. Para obtener más información sobre este ejemplo, consulte Modelar subsistemas sincrónicos utilizando la descomposición paralela.

Chart that contains a hierarchy of exclusive and parallel states that represent the operating modes of an air controller system.

Crear un estado

Para añadir un estado al gráfico de Stateflow, siga estos pasos:

  1. Abra el gráfico.

  2. En la paleta de objetos, haga clic en el icono State .

  3. En el área de trabajo del gráfico, haga clic en la ubicación del nuevo estado.

  4. Introduzca una etiqueta haga clic fuera del estado. La etiqueta especifica el nombre del estado y acción opcional que ejecuta durante la simulación. Para obtener más información, consulte Definir acciones en un estado.

Después de crear un estado, puede utilizar el editor de Stateflow para cambiar su tamaño, posición y contenido:

  • Para cambiar el tamaño del estado, haga clic y arrastre la esquina.

  • Para mover el estado, haga clic y arrastre el interior.

  • Para editar la etiqueta del estado, haga clic en el texto de la etiqueta que se encuentra cerca de la posición del carácter que desea editar.

Sugerencia

Un estado principal debe ser lo suficientemente grande gráficamente para alojar todos sus subestados, por lo que es posible que tenga que cambiar el tamaño de un estado principal antes de incorporar otros subestados. También puede convertir un superestado en un subgráfico. Para obtener más información, consulte Encapsulate Modal Logic by Using Subcharts.

Definir acciones en un estado

La etiqueta de un estado especifica su nombre y cualquier acción opcional que ejecute durante la simulación. La etiqueta del estado aparece en la esquina superior izquierda y tiene el siguiente formato general:

name entry: entry_actions during: during_actions exit: exit_actions on event_name: on_event_actions on message_name: on_message_actions bind: event_name, data_name

Las acciones de estados pueden aparecer en cualquier orden. Para cada tipo de acción, puede especificar más de una instrucción, introduciendo cada una en una línea separada. Como alternativa, puede introducir varias instrucciones en la misma línea separándolas con comas o puntos y coma. También puede combinar las acciones entry, during y exit que ejecutan las mismas instrucciones. Para obtener más información, consulte Eliminar código redundante combinando acciones de estado.

Sugerencia

Si se añaden instrucciones directamente después del nombre del estado, el gráfico interpreta estas instrucciones como acciones entry y during combinadas.

Nombre del estado

Una etiqueta de estado empieza con el nombre del estado, seguido de una barra oblicua opcional (/). Los nombres de los estados distinguen entre mayúsculas y minúsculas, y están formados por una combinación de caracteres alfanuméricos y guiones bajos. Para obtener más información, consulte Directrices para nombrar objetos de Stateflow.

Para evitar conflictos de nombres, no asigne el mismo nombre a estados afines. Sin embargo, puede utilizar el mismo nombre de estado en varios estados, siempre que el nombre completo de cada uno sea único. El nombre completo de un estado está formado por la secuencia de los nombres de sus precedentes en la jerarquía de estados, separados por puntos. Así, en el ejemplo anterior, los estados de FAN1 y FAN2 se identifican con estos nombres completos únicos:

  • PowerOn.FAN1.On

  • PowerOn.FAN1.Off

  • PowerOn.FAN2.On

  • PowerOn.FAN2.Off

Acciones de entrada

Para añadir una acción entry, introduzca entry o en, seguido de dos puntos (:) y una o más instrucciones. El gráfico ejecuta estas instrucciones cuando el estado se activa. Por ejemplo, en este gráfico, la acción entry del estado PowerOff establece el valor de airflow en cero cuando el sistema de control del aire se apaga. Para obtener más información, consulte Acceder a un gráfico o un estado.

State with entry action.

Acciones during

Para añadir una acción during, introduzca during o du, seguido de dos puntos (:) y una o más instrucciones. El gráfico ejecuta estas instrucciones cuando el estado está activo y no hay transiciones válidas a otro estado. Por ejemplo, en este gráfico, la acción during del estado PowerOn calcula el valor de airflow cuando el sistema de control del aire está encendido. Para obtener más información, consulte Ejecutar un gráfico de Stateflow.

State with during action.

Acciones de salida

Para añadir una acción exit, introduzca exit o ex, seguido de dos puntos (:) y una o más instrucciones. El gráfico ejecuta estas instrucciones cuando el estado está activo y ocurre una transición fuera del estado. Por ejemplo, en este gráfico, la acción exit del estado PowerOn establece el valor de airflow en cero cuando el sistema de control del aire se apaga. Para obtener más información, consulte Salir de un estado.

State with exit action.

Acciones "on"

Para añadir una acción on, introduzca on, seguido del nombre de un evento o mensaje, dos puntos (:) y una o más instrucciones. El gráfico ejecuta estas instrucciones cuando el estado está activo y recibe el evento o mensaje especificado. Para obtener más información, consulte Sincronizar los componentes del modelo con la transmisión de eventos y Comunicarse con gráficos de Stateflow con el envío de mensajes.

Puede especificar las acciones on en más de un evento o mensaje. Por ejemplo, este estado contiene diferentes acciones on para los eventos E1 y E2.

State with multiple on actions.

Si se producen varios eventos al mismo tiempo, las acciones on correspondientes se ejecutan en el orden en que aparecen en la etiqueta de estado. Para obtener más información, consulte Ejecutar un gráfico de Stateflow.

Sugerencia

Puede usar eventos implícitos (como change, enter o exit) y operadores de lógica temporal (como after, at, before o every) para activar las acciones on en los estados. Para obtener más información, consulte Controlar el comportamiento del gráfico con eventos implícitos y Controlar la ejecución de gráficos con lógica temporal.

Acciones "bind"

Para añadir una acción bind, introduzca bind, seguido de dos puntos (:) y el nombre de uno o más eventos u objetos de datos. Para separar varios eventos y datos, utilice varias comas o punto y coma, o bien introduzca los eventos y datos en líneas separadas. Por ejemplo, en este gráfico, el estado A contiene una acción bind que vincula el evento E y el objeto de datos x al estado.

State with bind action that binds an event and a data object to the state.

Una acción bind se aplica independientemente de si el estado está activo o inactivo. Otros estados pueden leer los datos vinculados o estar atentos a los eventos vinculados, pero solo el estado y sus subestados pueden cambiar el valor de los datos vinculados o transmitir los eventos vinculados. De lo contrario, se produce un error en tiempo de compilación.

Cuando se vincula un evento de llamada a función a un estado también se vincula el subsistema de llamada a función al que llama el evento. El subsistema de llamada a función se habilita cuando el estado vinculado está activo y se deshabilita cuando está inactivo. Para obtener más información, consulte Control Function-Call Subsystems by Using bind Actions.

Si un gráfico incluye acciones que vinculan los mismos datos o eventos a varios estados, se produce un error en tiempo de compilación.

Los gráficos independientes de Stateflow en MATLAB® no admiten acciones bind.

Agrupar estados

Puede simplificar la edición de un gráfico agrupando el contenido gráfico de un estado para que actúe como una única unidad. Por ejemplo, cuando se mueve un estado que forma parte de un grupo también se mueven los subestados, las transiciones y otros objetos gráficos que están dentro del estado. Para incorporar un estado a un grupo, haga clic con el botón secundario sobre el estado y seleccione Group & Subchart > Group en el menú contextual.

Antes de seleccionar objetos o mover objetos gráficos dentro o hacia un estado, se debe quitar el estado del grupo al que pertenece. Por ejemplo, si intenta mover un estado o una función gráfica a un estado que forma parte de un grupo, se produce un error de intersección no válida. Para quitar un estado del grupo al que pertenece, haga clic con el botón secundario sobre el estado y elimine Group & Subchart > Group en el menú contextual.

En el editor de Stateflow, los estados que forman parte de un grupo aparecen más oscuros que los que no están agrupados. Por ejemplo, en este gráfico, el estado FAN1 forma parte de un grupo pero el estado FAN2 no.

Stateflow chart that contains a grouped state called FAN1 and an ungrouped state called FAN2.

Especificar las propiedades de los estados

Las propiedades que se enumeran a continuación permiten especificar cómo interactúa un estado con los demás componentes de un gráfico de Stateflow. Puede modificar estas propiedades en Property Inspector, Model Explorer o el cuadro de diálogo de las propiedades del estado.

Para utilizar Property Inspector:

  1. En la pestaña Modeling, en Design Data, seleccione Property Inspector.

  2. En el editor de Stateflow, seleccione el estado.

  3. En Property Inspector, edite las propiedades del estado.

Para utilizar Model Explorer:

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

  2. En el panel Model Hierarchy, seleccione el estado.

  3. En el panel Dialog, edite las propiedades del estado.

Para utilizar el cuadro de diálogo de propiedades del estado:

  1. En el editor de Stateflow, haga clic con el botón secundario sobre el estado.

  2. Seleccione Properties.

  3. En el cuadro de diálogo de propiedades, edite las propiedades del estado.

También puede modificar las propiedades del estado de forma programática con objetos Stateflow.State. Para obtener más información sobre la interfaz programática de Stateflow, consulte Overview of the Stateflow API.

Nombre

Nombre del estado. Esta propiedad es de solo lectura. Al hacer clic en el hipervínculo del nombre del estado en Model Explorer y en el cuadro de diálogo de propiedades del estado, el estado aparece en primer plano en el editor de Stateflow.

Orden de ejecución

Orden de ejecución para un estado paralelo (AND). Esta propiedad no aparece en los estados exclusivos (OR). Para obtener más información, consulte Execution Order for Parallel States.

Crear una salida para supervisión

Indica si se crea un puerto de salida de datos de estado activo para el estado. Consulte Monitor State Activity Through Active State Data.

Function inline option

Aspecto de las funciones de estado en el código generado. Entre las opciones se incluyen las siguientes:

  • Auto: un cálculo interno determina el aspecto de las funciones de estado en el código generado.

  • Inline: las llamadas a funciones de estado se sustituyen por código siempre que la función no forme parte de una recursión.

  • Function: las funciones de estado se implementan como funciones estáticas independientes.

Para obtener más información, consulte Inline State Functions in Generated Code (Simulink Coder). Esta propiedad no está disponible en Property Inspector.

Etiqueta

Etiqueta del estado. Para obtener más información, consulte Definir acciones en un estado. Esta propiedad no está disponible en Property Inspector.

Agregar actividad propia en un registro

Indica si se activa el registro de señales. El registro de señales guarda la actividad propia del estado en el área de trabajo de MATLAB durante la simulación. Para obtener más información, consulte Log Simulation Output for States and Data.

Nombre de registro

Nombre de la señal utilizado para agregar la actividad del estado en un registro.

  • Para usar el nombre del estado, seleccione Use state name.

  • Para especificar un nombre diferente, seleccione Custom e introduzca el nombre de registro personalizado.

Registrar solo los últimos puntos de datos

Indica si se limita el número de puntos de datos agregados a un registro al máximo especificado. Por ejemplo, si se establece el número máximo de puntos de datos en 5000, el gráfico solo agrega en un registro los últimos 5000 puntos de datos generados por la simulación.

Diezmado

Indica si se limita la cantidad de datos agregados a un registro omitiendo muestras usando el intervalo de diezmado especificado. Por ejemplo, si se establece un intervalo de diezmado de 2, el gráfico agrega una de cada dos muestras en un registro.

Punto de prueba

Indica si se establece el estado como un punto de prueba que puede supervisar con un scope flotante durante la simulación. También pueden agregar en un registro los valores de los puntos de prueba en el área de trabajo de MATLAB. Para obtener más información, consulte Monitor Test Points in Stateflow Charts.

Descripción

Descripción del estado.

Enlace del documento

Enlace a la documentación online del estado. Puede introducir una dirección URL o un comando de MATLAB que muestre la documentación como un archivo HTML o como texto en la ventana de comandos de MATLAB. Cuando hace clic en el hipervínculo Document link, Stateflow evalúa el enlace y muestra la documentación.

Consulte también

Objetos

Herramientas

Temas relacionados