Main Content

Activar un gráfico de Stateflow enviando eventos de entrada

Un evento de entrada se produce fuera de un gráfico de Stateflow®, pero solo es visible en ese gráfico. Este tipo de eventos permite que otros bloques de Simulink®, incluidos otros gráficos de Stateflow, envíen una notificación a un gráfico concreto los eventos que se producen fuera de él. Para definir un evento de entrada:

  1. Añada un evento al gráfico de Stateflow, tal y como se describe en Definir eventos en un gráfico.

  2. Defina la propiedad Scope del evento para Input from Simulink. En la parte superior del bloque Stateflow del modelo de Simulink aparece un único puerto activador.

  3. Un evento de entrada puede activar un gráfico de Stateflow con un cambio en una señal de control (un activador de flanco) o una llamada de función desde un bloque de Simulink.

    • Para especificar un evento de entrada activado por flancos, configure la propiedad Trigger como una de estas opciones:

      • Rising

      • Falling

      • Either

    • Para especificar un evento de entrada de llamada a función, configure la propiedad Trigger como Function call.

    No puede mezclar eventos de entrada de llamada a función y activados por flancos en el mismo gráfico de Stateflow. La mezcla de estos eventos de entrada genera un error en tiempo de compilación.

Para obtener más información, consulte Sincronizar los componentes del modelo con la transmisión de eventos.

Activar un gráfico de Stateflow con activadores de flancos

Un evento de entrada activado por flancos causa que un gráfico de Stateflow se ejecute durante la unidad de tiempo actual de la simulación. Con este tipo de evento de entrada, un cambio en una señal de control actúa como activador.

Tipo de activador de flancos

Descripción

Rising

Activador de flancos ascendentes. El gráfico se activa cuando la señal de control pasa de cero o de un valor negativo a un valor positivo.

Falling

Activador de flancos descendiente. El gráfico se activa cuando la señal de control pasa de un valor positivo a cero o un valor negativo.

Either

Activador de flancos descendiente o creciente. El gráfico se activa cuando la señal de control pasa del cero ya que cambia en cualquier dirección.

En todos los casos, el valor de la señal de control debe pasar por el cero para que sea un activador de flancos válido. Por ejemplo, una señal que cambia de -1 a 1 es un activador de flanco de subida válido. Una señal que cambia de 1 a 2 no es un activador de flanco de subida válido.

Cuándo utilizar eventos de entrada activados por flancos

Utilice un evento de entrada activado por flanco para activar un gráfico cuando su modelo requiera una ejecución del gráfico regular o periódica. Por ejemplo, en este modelo, un evento de entrada activado por flanco activa el gráfico de Flanco a función a intervalos regulares. Para obtener más información, consulte Programar un subsistema varias veces en una sola unidad de tiempo.

Comportamiento de varios eventos de entrada activados por flancos

En cualquier unidad de tiempo, los eventos de entrada se comprueban en orden ascendente en función de los números de sus puertos. El gráfico se activa una vez para cada evento válido. Para los eventos de entrada activados por flancos, pueden producirse múltiples flancos en la misma unidad de tiempo, activando así el gráfico más de una vez en dicha unidad de tiempo. En esta situación, los eventos activan el gráfico en orden ascendente en función de los números de sus puertos.

Activar un gráfico de Stateflow con llamadas de funciones

Un evento de llamada a funciones causa que un gráfico de Stateflow se ejecute durante la unidad de tiempo actual de la simulación. Con este tipo de evento de entrada, también debe definir un evento de salida de llamada de función para el bloque que realiza una llamada al gráfico de Stateflow.

Cuándo utilizar eventos de entrada de llamada a funciones

Utilice un evento de entrada de llamada a función para activar un gráfico cuando su modelo tenga que acceder a datos de salida del gráfico en la misma unidad de tiempo que la llamada de funciones. Por ejemplo, en este modelo, un evento de entrada de llamada a función activa el gráfico de Planificador en bucle. Para obtener más información, consulte Programar un subsistema varias veces en una sola unidad de tiempo.

Comportamiento de varios eventos de entrada de llamada a función

Para los eventos de entrada de llamada a función, solo existe un evento activador. El elemento que llama al evento, llama al gráfico y lo ejecuta de forma explícita. Solo una llamada de función es válida en una unidad de tiempo única.

Asociación de eventos de entrada con señales de control

Cuando define uno o más eventos de entrada en un gráfico, aparece un único puerto de activación en la parte superior del bloque del gráfico. Múltiples bloques externos de Simulink pueden activar los eventos de entrada a través de un vector de señales conectado con el puerto de activación. La propiedad Puerto de un evento de entrada especifica el índice en el vector de la señal de control que conecta con el puerto de activación.

De forma predeterminada, los valores Port aparecen en el orden en el que añade los eventos de entrada. Puede modificar estas asignaciones modificando la propiedad Puerto de los eventos. Cuando cambia la propiedad Port por un evento de entrada, los valores Puerto de los otros eventos de entrada vuelven a enumerarse automáticamente.

Tipos de datos compatibles con los eventos de entrada

Para múltiples eventos de entrada en un puerto de activación, todas las señales deben tener el mismo tipo de datos. El uso de señales de diferentes tipos de datos como eventos de entrada provoca un error durante la simulación. Por ejemplo, puede mezclar dos señales de entrada del tipo double para usarlas como eventos de entrada en un gráfico.

Simulink model that uses two signals of type double as input events to a Stateflow chart.

No puede mezclar dos señales de entrada de tipos de datos diferentes, como boolean y double.

Simulink model that uses a signal of type boolean and a signal of type double as input events to a Stateflow chart. This configuration produces a run-time error.

Temas relacionados