Monitorizar la actividad del gráfico usando los datos de estado activo
Si el gráfico de Stateflow® incluye datos correlacionados con la jerarquía del gráfico, puede simplificar el diseño utilizando datos de estado activo. Habilitar el uso de datos de estado activo permite:
Evitar actualizar datos manualmente para reflejar la actividad del gráfico.
Registrar y monitorizar la actividad del gráfico en Simulation Data Inspector.
Utilizar los datos de actividad del gráfico para controlar otros subsistemas.
Exportar los datos de actividad del gráfico a otros bloques de Simulink.
Por ejemplo, en este modelo de un semáforo, el estado que está activo determina el valor de la señal de salida color
. Puede simplificar el diseño del gráfico activando los datos de estado activo. En este caso, el gráfico de Stateflow puede proporcionar el color del semáforo realizando un seguimiento de la actividad de estados, de forma que no es necesario que actualice de manera explícita el valor de color
.
Para activar los datos de estado activo, seleccione el estado que desea monitorizar. Después, en Property Inspector:
1. Seleccione Create output for monitoring.
2. Seleccione uno de estos tipos de actividad:
Self activity
: valor booleano que indica si el estado está activo.Child activity
: valor enumerado que indica qué estado secundario está activo.Leaf state activity
: valor enumerado que indica qué estado de hoja está activo.
3. Introduzca el nombre Data name para el símbolo de datos de estado activo.
4. De forma opcional, en Child activity
o Leaf state activity
, introduzca el nombre Enum name para el tipo de datos de estado activo.
De forma predeterminada, los gráficos de Stateflow informan de la actividad de estados como datos de salida para el modelo de Simulink. Para cambiar el alcance de un símbolo de datos de estado activo a datos locales, utilice el panel Symbols.
Modelar un controlador de semáforos
Este ejemplo utiliza datos de estado activo para modelar el sistema de control de un par de semáforos.
En el gráfico Traffic Controller
, dos subgráficos paralelos gestionan la lógica que controla los semáforos. Los subgráficos tienen una jerarquía idéntica que consta de tres estados secundarios: Red
, Yellow
y Green
. Los datos de salida Light1
y Light2
se corresponden con los estados secundarios activos de los subgráficos. Estas señales:
Determinan la fase de los semáforos animados.
Contribuyen al número de automóviles que esperan en cada luz del semáforo.
Accionan un subsistema de reafirmación de la seguridad que verifica que los dos semáforos no estén nunca en verde simultáneamente.
Para ver los subgráficos del gráfico del controlador de tráfico, haga clic en la flecha en la esquina inferior izquierda del gráfico.
Cada controlador de tráfico pasa por sus estados secundarios, de Red
a Green
a Yellow
y de nuevo a Red
. Cada estado se corresponde con una fase del ciclo del semáforo. Las señales de salida Light1
y Light2
indican qué estado está activo en un momento dado.
Luz roja
El ciclo del semáforo comienza cuando el estado Red
se convierte en activo. Después de un breve retardo, el controlador comprueba si hay automóviles esperando en la intersección. Si detecta al menos un automóvil o si transcurre un periodo de tiempo fijo, el controlador solicita una luz verde estableciendo greenLightRequest
en true
. Después de realizar la solicitud, el controlador permanece en el estado Red
durante un periodo breve de tiempo hasta que detecta que el otro semáforo está en rojo. Entonces, el controlador realiza la transición a Green
.
Luz verde
Cuando el estado Green
se convierte en activo, el controlador cancela su solicitud de luz verde estableciendo greenLightRequest
en false
. El controlador establece greenLightLocked
en true
para evitar que el otro semáforo se ponga en verde. Después de un breve retardo, el controlador comprueba si hay una solicitud de luz verde del otro controlador. Si recibe una solicitud o si transcurre un periodo de tiempo fijo, el controlador cambia al estado Yellow
.
Luz amarilla
Cuando el estado Yellow
se convierte en inactivo, el controlador establece greenLightLocked
en false, lo que indica que el otro semáforo puede ponerse en verde de forma segura. El controlador permanece en el estado Yellow
durante un plazo de tiempo fijo antes de cambiar al estado Red
. Entonces, el ciclo del semáforo vuelve a comenzar.
Temporización de semáforos
Varios parámetros definen la temporización del ciclo de los semáforos. Para cambiar la temporización de los semáforos, haga doble clic en el gráfico Traffic Controller
y, en el cuadro de diálogo, introduzca valores nuevos para estos parámetros:
REDDELAY
: periodo de tiempo antes de que el controlador comprueba si hay automóviles en la intersección. Este valor también es el periodo de tiempo mínimo antes de que el semáforo se pueda poner en verde después de que el controlador solicita una luz verde. El valor predeterminado es 6 segundos.MAXREDDELAY
: periodo de tiempo máximo para que el controlador compruebe si hay automóviles antes de solicitar una luz verde. El valor predeterminado es 360 segundos.GREENDELAY
: periodo de tiempo máximo durante el que el semáforo permanece verde. El valor predeterminado es 180 segundos.MINGREENDELAY
: periodo de tiempo mínimo durante el que el semáforo permanece verde. El valor predeterminado es 120 segundos.YELLOWDELAY
: periodo de tiempo durante el que el semáforo permanece amarillo. El valor predeterminado es 15 segundos.
Explorar el ejemplo
Abra el gráfico haciendo clic en la flecha situada en la esquina inferior izquierda.
En el panel Symbols, seleccione
greenLightRequested
. A continuación, en Property Inspector, en Logging, seleccione Log signal data.Repita el paso anterior para
greenLightLocked
,Light1
yLight2
.En la pestaña Simulation, haga clic en Run.
En la pestaña Simulation, en Review Results, haga clic en Data Inspector.
En Simulation Data Inspector, muestre las señales registradas en ejes separados. Las señales booleanas
greenLightRequested
ygreenLightLocked
aparecen como valores numéricos cero o uno. Las señales de actividad de estadosLight1
yLight2
son datos enumerados con valores deGreen
,Yellow
,Red
yNone
.
Para realizar el seguimiento de actividad en el gráfico durante la simulación, puede usar los botones de zoom y el cursor de Simulation Data Inspector. Por ejemplo, estos son los momentos clave durante los primeros 300 segundos de la simulación:
: al inicio de la simulación, ambos semáforos están en rojo.
Light1
yLight2
están enRed
,greenLightRequested
esfalse
ygreenLightLocked
esfalse
.: después de 6 segundos, el valor predeterminado de
REDDELAY
, hay automóviles esperando en ambas calles, de modo que ambos semáforos solicitan una luz verde.Light1
yLight2
siguen estando enRed
,greenLightRequested
estrue
ygreenLightLocked
esfalse
.: después de otros 6 segundos, el valor predeterminado de
REDDELAY
, Light1 se pone en verde, cancela la solicitud de luz verde y establecegreenLightLocked
entrue
. Después, Light2 solicita una luz verde.Light1
está enGreen
,Light2
está enRed
,greenLightRequested
se convierte enfalse
y, después, entrue
, ygreenLightLocked
estrue
.: después de 120 segundos, el valor predeterminado de
MINGREENDELAY
, Light1 se pone en amarillo.Light1
está enYellow
,Light2
está enRed
,greenLightRequested
estrue
ygreenLightLocked
estrue
.: después de 15 segundos, el valor predeterminado de
YELLOWDELAY
, Light1 se pone en rojo y establecegreenLightLocked
enfalse
. Después, Light2 se pone en verde, cancela la solicitud de luz verde y establecegreenLightLocked
entrue
.Light1
está enRed
,Light2
está enGreen
,greenLightRequested
esfalse
ygreenLightLocked
se convierte enfalse
y, después, entrue
.: después de 6 segundos, el valor predeterminado de
REDDELAY
, Light1 solicita una luz verde.Light1
está enRed
,Light2
está enGreen
,greenLightRequested
estrue
ygreenLightLocked
estrue
.: después de que Light2 esté en verde durante 120 segundos, el valor predeterminado de
MINGREENDELAY
, Light2 se pone en amarillo.Light1
está enRed
,Light2
está enYellow
,greenLightRequested
estrue
ygreenLightLocked
estrue
.: después de 15 segundos, el valor predeterminado de
YELLOWDELAY
, Light2 se pone en rojo y establecegreenLightLocked
enfalse
. Después, Light1 se pone en verde, cancela la solicitud de luz verde y establecegreenLightLocked
entrue
.Light1
está enGreen
,Light2
está enRed
,greenLightRequested
esfalse
ygreenLightLocked
se convierte enfalse
y, después, entrue
.: después de 6 segundos, el valor predeterminado de
REDDELAY
, Light2 solicita una luz verde.Light1
está enGreen
,Light2
está enRed
,greenLightRequested
estrue
ygreenLightLocked
estrue
.
El ciclo se repite hasta que la simulación termina en segundos.