Activar un gráfico de Stateflow enviando eventos de entrada
Los modelos de Simulink® contienen gráficos de Stateflow®, pero esos gráficos no están necesariamente activos mientras dura la ejecución del modelo. Una manera de que un gráfico se active es recibiendo un evento de entrada de Simulink. Una vez que los gráficos de Stateflow se activen, el gráfico ejecuta sus acciones.
Un evento de entrada se produce fuera de un gráfico de Stateflow. Un modelo de Simulink, una función de Simulink u otro gráfico de Stateflow pueden generar eventos de entrada.
Definir un evento de entrada
Para definir un evento de entrada:
Añada un evento al gráfico de Stateflow. Para obtener más información, consulte Definir eventos en un gráfico.
En Property Inspector, defina la propiedad Scope del evento como
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 o una llamada a función desde un bloque de Simulink. El cambio en una señal de control también se conoce como activador de flanco. No puede usar eventos de entrada de llamada a función y activados por flancos en el mismo gráfico de Stateflow. Usar estos eventos de entrada a la vez genera un error en tiempo de compilación.
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.
Para especificar un evento de entrada de llamada a función, configure la propiedad Trigger como Function call
.
Tipo de activador de flancos | Descripción |
---|---|
| 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. |
| Activador de flancos descendentes. 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 ascendentes o descendentes. 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 ser igual a cero o cruzar 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 ascendente válido. Una señal que cambia de 1 a 2 no es un activador de flanco ascendente válido. Una señal que cambia de 0 a 2 es un activador de flanco ascendente 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.
Comportamiento de varios eventos de entrada activados por flancos
En cada unidad de tiempo, Stateflow comprueba los eventos de entrada en orden ascendente en función de los números de sus puertos. El gráfico se activa una vez por 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.
Activar un gráfico de Stateflow con llamadas a función
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.
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 a función. Por ejemplo, en este modelo, un evento de entrada de llamada a función activa el gráfico de Planificador en bucle.
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 invocador de llamadas llama al gráfico y lo ejecuta de forma explícita.
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
.