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:
Añada un evento al gráfico de Stateflow, tal y como se describe en Definir eventos en un gráfico.
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.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 de función, configure la propiedad Trigger como
Function call
.
No puede mezclar eventos de entrada de llamada de funciones 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 emisió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 |
---|---|
| Activador de flancos creciente. El gráfico se activa cuando la señal de control pasa de cero o de un valor negativo a un valor positivo. |
| 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. |
| 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 creciente válido. Una señal que cambia de 1 a 2 no es un activador de flanco creciente 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 ascendiente 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 ascendiente en función de los números de sus puertos.
Activar un gráfico de Stateflow con llamadas de funciones
Un evento de llamada de 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 de funciones
Utilice un evento de entrada de llamada de funciones 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 de funciones 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 de funciones
Para los eventos de entrada de llamada de funciones, solo existe un evento de activación. 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.
No puede mezclar dos señales de entrada de tipos de datos diferentes, como boolean
y double
.