Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

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 $x$ 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 $x$, 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 $x$, 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 $\pi/2$. 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 $\pi/2$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.

Temas relacionados