Subsistemas de Simulink como estados
Con un subsistema de Simulink® dentro de un estado de Stateflow®, puede modelizar sistemas dinámicos híbridos o sistemas que cambian entre dinámicas periódicas y continuas. En su gráfico de Stateflow, puede utilizar estados basados en Simulink para modelizar un sistema dinámico periódico o continuo combinado con una lógica de conmutación que utilice transiciones. Puede acceder a las entradas y salidas de su gráfico dentro de cada estado basado en Simulink. Los estados basados en Simulink no son compatibles con los gráficos de Stateflow independientes en MATLAB®.
Para inicializar los bloques de Simulink cuando se cambia entre los estados basados en Simulink, utilice la notación textual de Stateflow o los bloques State Reader y State Writer de Simulink.
Para crear estados enlazados basados en Simulink, utilice las bibliotecas para guardar los subsistemas de acción. Cuando se copia un subsistema de acción de un modelo de biblioteca en un gráfico de Stateflow, aparece como un estado enlazado basado en Simulink. Cuando actualiza el bloque de la biblioteca, los cambios se reflejan en todos los gráficos de Stateflow que contienen el bloque.
El uso de estados basados en Simulink significa que no es necesario utilizar una sintaxis textual compleja en Stateflow para modelizar sistemas híbridos.
Cuándo utilizar los estados basados en Simulink
Los estados basados en Simulink se pueden usar en los siguientes casos:
Si desea modelizar sistemas dinámicos híbridos que incluyen dinámicas continuas o periódicas.
Si la estructura de las dinámicas del sistema cambia sustancialmente entre los distintos modos de funcionamiento. Por ejemplo, modelizando controladores PID.
En los sistemas en los que llama a la lógica de forma intermitente, utilice funciones de Simulink.
Cuando la estructura del algoritmo de Simulink permanece sustancialmente sin cambios, pero ciertas ganancias o parámetros cambian entre varios modelos, utilice la lógica de Simulink fuera de Stateflow. Un ejemplo de este tipo de algoritmo es la programación de ganancias. Consulte Model Gain-Scheduled Control Systems in Simulink (Simulink Control Design).
Modelar un salto de pértiga mediante estados basados en Simulink
Este gráfico de Stateflow modeliza una persona que se mueve a través de las fases del salto con pértiga utilizando estados basados en Simulink.
La primera fase es la carrera de aproximación del saltador, que se modeliza en el estado Run_up
basado en Simulink. En la segunda fase, el saltador clava la pértiga y despega, lo que se modeliza mediante el estado Take_off
basado en Simulink. La fase final ocurre cuando el saltador pasa el listón y suelta la pértiga, lo que se modeliza con el estado Fly
basado en Simulink.
Los estados Run_up
y Fly
son más fáciles de modelizar mediante coordenadas cartesianas. El estado Take_off
es más fácil de modelizar con coordenadas polares. Para pasar de un sistema de coordenadas a otro, utilice las funciones InitTakeOff
y InitFly
de Simulink.
Modelizar la aproximación del salto de pértiga
El estado predeterminado en el gráfico PoleVaulter
es Run_up
. Este estado modeliza la carrera del saltador de pértiga hacia el salto. El saltador de pértiga comienza en -10 en el eje y corre hacia el cero. A medida que el saltador avanza por la pista, su posición en el plano xy cambia continuamente, pero el estado de la carrera sigue siendo el mismo. En este modelo, los bloques de integrador Position
y Velocity
son los bloques propietarios de estado de los bloques State Reader en la función InitTakeOff
de Simulink. Este subsistema genera las coordenadas cartesianas del saltador de pértiga.
Convertir coordenadas cartesianas en coordenadas polares
La transición de Run_up
a Take_off
ocurre cuando la posición del saltador de pértiga a lo largo del eje , Run_up.p(1)
, es mayor que -4. Durante la transición, InitTakeOff
se inicializa, el bloque State Reader se conecta a su bloque propietario y se ejecuta la función. Esta función convierte las coordenadas cartesianas de Position
y Velocity
en coordenadas polares, r
, theta
, rdot
y theta_dot
. Estas coordenadas se representan como bloques State Writer, que se conectan a bloques propietarios en el estado Take_off
. La función InitTakeOff
de Simulink contiene esta lógica:
Modelizar el despegue del saltador de pértiga
Cuando la posición del saltador de pértiga a lo largo del eje , Run_up.p(1)
, es mayor que -4, el estado Take_off
basado en Simulink se convierte en el estado activo. Este estado modeliza al saltador de pértiga durante la fase de despegue del salto. Este subsistema genera las coordenadas cartesianas del saltador de pértiga.
Convertir coordenadas polares en coordenadas cartesianas
La transición de Take_off
a Fly
ocurre cuando el ángulo del saltador de pértiga, theta
, es menor que . Durante la transición, se inicializa InitFly
, el bloque State Reader se conecta a su bloque propietario y se ejecuta la función. Esta función convierte las coordenadas polares r
, theta
y rdot
en coordenadas cartesianas, theta_dot
, xy_integ
y xydot
. Estas coordenadas se representan como bloques State Writer, que se conectan a bloques propietarios en el estado Fly
. La función InitFly
de Simulink contiene esta lógica:
Modelizar la caída libre del saltador de pértiga
Cuando el ángulo del saltador de pértiga, theta
, es menor que se convierte en el estado activo. Este estado modeliza al saltador de pértiga mientras está cayendo a la colchoneta después de haber superado el listón. A medida que el saltador cae, su posición en el plano xy cambia continuamente, pero el estado de la caída sigue siendo el mismo. En este modelo, los bloques de integrador xydot y xy_integ son los bloques propietarios de estado de State Writer en la función InitFly de Simulink. Este subsistema genera las coordenadas cartesianas del saltador de pértiga.
El bloque Record muestra los resultados de esta simulación.
Limitaciones
Los estados basados en Simulink no se pueden usar en los siguientes casos:
Diagramas de Moore
Gráficos de eventos discretos
HDL Coder
PLC Coder
Inspector de código de Simulink
Transiciones super step
Los estados basados en Simulink no admiten depuración.