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 estado.
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 estado haciendo que estos se convierten en activos o inactivos. 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.
Crear un estado
Para añadir un estado al gráfico de Stateflow, siga estos pasos:
Abra el gráfico.
En la paleta de objetos, haga clic en el icono State
.
En el área de trabajo del gráfico, haga clic en la ubicación del nuevo estado.
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 entry
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 convierte en activo. 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.
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.
Acciones entry
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.
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
.
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.
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 de 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.
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:
En la pestaña Modeling, en Design Data, seleccione Property Inspector.
En el editor de Stateflow, seleccione el estado.
En Property Inspector, edite las propiedades del estado.
Para utilizar Model Explorer:
En la pestaña Modeling, en Design Data, seleccione Model Explorer.
En el panel Model Hierarchy, seleccione el estado.
En el panel Dialog, edite las propiedades del estado.
Para utilizar el cuadro de diálogo de propiedades del estado:
En el editor de Stateflow, haga clic con el botón secundario sobre el estado.
Seleccione Properties.
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 Visión general de la API de Stateflow.
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 Orden de ejecución para estados paralelos.
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 registrados 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 registrados 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
- Model Explorer (Simulink)