Main Content

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

  1. Abra el gráfico haciendo clic en la flecha situada en la esquina inferior izquierda.

  2. En el panel Symbols, seleccione greenLightRequested. A continuación, en Property Inspector, en Logging, seleccione Log signal data.

  3. Repita el paso anterior para greenLightLocked, Light1 y Light2.

  4. En la pestaña Simulation, haga clic en Run.

  5. En la pestaña Simulation, en Review Results, haga clic en Data Inspector.

  6. En Simulation Data Inspector, muestre las señales registradas en ejes separados. Las señales booleanas greenLightRequested y greenLightLocked aparecen como valores numéricos cero o uno. Las señales de actividad de estados Light1 y Light2 son datos enumerados con valores de Green, Yellow, Red y None.

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:

  • $t = 0$: al inicio de la simulación, ambos semáforos están en rojo. Light1 y Light2 están en Red, greenLightRequested es false y greenLightLocked es false.

  • $t = 6$: 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 y Light2 siguen estando en Red, greenLightRequested es true y greenLightLocked es false.

  • $t = 12$: después de otros 6 segundos, el valor predeterminado de REDDELAY, Light1 se pone en verde, cancela la solicitud de luz verde y establece greenLightLocked en true. Después, Light2 solicita una luz verde. Light1 está en Green, Light2 está en Red, greenLightRequested se convierte en false y, después, en true, y greenLightLocked es true.

  • $t = 132$: después de 120 segundos, el valor predeterminado de MINGREENDELAY, Light1 se pone en amarillo. Light1 está en Yellow, Light2 está en Red, greenLightRequested es true y greenLightLocked es true.

  • $t = 147$: después de 15 segundos, el valor predeterminado de YELLOWDELAY, Light1 se pone en rojo y establece greenLightLocked en false. Después, Light2 se pone en verde, cancela la solicitud de luz verde y establece greenLightLocked en true. Light1 está en Red, Light2 está en Green, greenLightRequested es false y greenLightLocked se convierte en false y, después, en true.

  • $t = 153$: después de 6 segundos, el valor predeterminado de REDDELAY, Light1 solicita una luz verde. Light1 está en Red, Light2 está en Green, greenLightRequested es true y greenLightLocked es true.

  • $t = 267$: después de que Light2 esté en verde durante 120 segundos, el valor predeterminado de MINGREENDELAY, Light2 se pone en amarillo. Light1 está en Red, Light2 está en Yellow, greenLightRequested es true y greenLightLocked es true.

  • $t = 282$: después de 15 segundos, el valor predeterminado de YELLOWDELAY, Light2 se pone en rojo y establece greenLightLocked en false. Después, Light1 se pone en verde, cancela la solicitud de luz verde y establece greenLightLocked en true. Light1 está en Green, Light2 está en Red, greenLightRequested es false y greenLightLocked se convierte en false y, después, en true.

  • $t = 288$: después de 6 segundos, el valor predeterminado de REDDELAY, Light2 solicita una luz verde. Light1 está en Green, Light2 está en Red, greenLightRequested es true y greenLightLocked es true.

El ciclo se repite hasta que la simulación termina en $t = 1000$ segundos.

Temas relacionados