Ejecutar un gráfico de Stateflow
Cuando se activa un gráfico de Stateflow®, el gráfico sigue un flujo de trabajo y ejecuta acciones. Un gráfico de Stateflow se activa:
En cada unidad de tiempo, según el solver de Simulink®.
Cuando el gráfico de Stateflow recibe un evento.
Cuando un gráfico se activa por primera vez, el gráfico se inicializa y se activa. Consulte Chart Entry. Una vez que el gráfico esté activo, pero no tenga más acciones pendientes que realizar, se desactiva hasta que una unidad de tiempo nueva o un evento vuelva a activarlo.
Flujo de trabajo de ejecución de gráficos de Stateflow
Este diagrama de flujo muestra la progresión de los eventos que Stateflow toma para ejecutar un gráfico o estado. En este diagrama de flujo, el estado actual se refiere al estado en el que se desarrolla una decisión o un proceso.
Acciones during
Las acciones during de un estado se ejecutan cuando:
El estado está activo, se produce una unidad de tiempo nueva y no hay disponible ninguna transición válida a otro estado.
El estado está activo, se produce un evento y no hay disponible ninguna transición válida a otro estado.
Las acciones during están precedidas por el prefijo during
o du
y seguidas por dos puntos obligatorios (:
), seguidos de una o más acciones. Separe las distintas acciones con un retorno de carro, un punto y coma (;
) o una coma (,
). Si no especifica el tipo de acción de estado de forma explícita con respecto a una instrucción, el gráfico trata dicha instrucción como una acción entry
,during
.
Un estado ejecuta sus acciones during
(si así se ha especificado) cuando el gráfico se activa. El diagrama de flujo anterior representa el proceso de ejecución de un estado y muestra cuándo se producen las acciones during
.
Si el gráfico de Stateflow no contiene estados, cada vez que se ejecute el gráfico, Stateflow evalúa la ruta de transición predeterminada.
Transiciones salientes
Stateflow marca las transiciones salientes para evaluarlas como parte de la ejecución de un gráfico de Stateflow. Una vez que se marque una transición saliente a su evaluación, siga el Workflow for Evaluating Transitions. Para obtener más información sobre cómo Stateflow evalúa las transiciones salientes, consulte Evaluate Transitions.
Transiciones interiores
Stateflow marca las transiciones interiores para evaluarlas como parte de la ejecución de un gráfico de Stateflow. Una vez que se marque una transición interna para su evaluación, siga el Workflow for Evaluating Transitions. Para obtener más información sobre cómo Stateflow evalúa las transiciones interiores, consulte Evaluate Transitions.
Ejecución de gráfico con una transición válida
En este ejemplo, el gráfico de Stateflow se inicializa y las acciones entry
se ejecutan para StateA
y StateA1
. Se produce una unidad de tiempo nueva y el gráfico se activa.
En esta unidad de tiempo, x = 5
, y = 2
y z = 0
.
Si sigue Flujo de trabajo de ejecución de gráficos de Stateflow, los pasos de ejecución para ejecutar el gráfico siguen este orden:
El gráfico tiene un subestado activo,
StateA
.StateA
tiene una transición saliente aStateB
. Si sigue Workflow for Evaluating Transitions, se determina que la transición es válida.StateB
se marca para entradaentry
yStateA
se marca para salidaexit
.
Para completar la unidad de tiempo, siga Flujo de trabajo para salir de un estado para StateA
y Workflow for Entering a Chart or State para StateB
.
Ejecución de un gráfico sin una transición válida
En este ejemplo, el gráfico de Stateflow se inicializa y las acciones entry
se ejecutan para StateA
y StateA1
. Se produce una unidad de tiempo nueva y el gráfico se activa.
En esta unidad de tiempo, x = 3
, y = 0
y z = 0
.
Si sigue Flujo de trabajo de ejecución de gráficos de Stateflow hasta que el gráfico se desactive, los pasos de ejecución para ejecutar el gráfico siguen este orden:
El gráfico tiene un subestado activo,
StateA
.StateA
tiene una transición saliente aStateB
. Si sigue Workflow for Evaluating Transitions, se determina que la transición no es válida.Ejecute las acciones
during
paraStateA
. Ahora,y = 1
.StateA
no tiene ninguna transición interna.El subestado activo de
StateA
esStateA1
.StateA1
tiene una transición saliente aStateA2
. Si sigue Workflow for Evaluating Transitions, se determina que la transición no es válida.Ejecute las acciones
during
paraStateA1
. Ahora,x = 4
.StateA1
no tiene ningún subestado activo.El gráfico se desactiva.
Los pasos 1 a 9 se realizan durante la segunda unidad de tiempo.