miércoles, 18 de abril de 2012

Simulation Toolkit de LabVIEW

Simulacion de un sistema fĂ­sico con LabVIEW


El Toolkit de LabVIEW Control Desing & Simulation contiene un entorno basado en diagrama de bloques para la simulación de sistemas dinámicos lineales y no lineales en tiempo continuo y en tiempo discreto. Muchos algoritmos de simulación (es decir, métodos numéricos para la solución de las ecuaciones diferenciales subyacente) están disponibles, por ejemplo, diversos métodos de Runge-Kutta. El modelo matemático para simular debe estar representado en un bucle de simulación, que en muchos aspectos es similar al bucle While ordinaria en LabVIEW. Se puede ejecutar la simulación tan rápido como el equipo lo permite, o se puede hacer que se ejecute con un eje de tiempo real o escala, simulando el comportamiento en tiempo real, con la posibilidad de que el usuario interactúe con el proceso simulado. El bucle de simulación se puede ejecutar en paralelo con bucles While dentro del mismo VI.

El MĂłdulo de SimulaciĂłn permite no linealidades en la representaciĂłn del modelo. Otros comportamientos no lineales puede ser escrito en LabVIEW, MathScritp, y el Nodo de fĂłrmula LabVIEW, e integrado en el modelo como un subVI.

El proceso de optimizaciĂłn, por lo general, incluye varias interacciones entre el control del diseño y  simulaciĂłn para lograr el rendimiento deseado del sistema.

Se van a representar las simulaciones de tres formas diferentes, con mediante el mĂłdulo MatchScript, mediante Signal Arithmetic (anexo modelado) o como se realiza en el proyecto, mediante lainclusiĂłn de los valores deseados dentro del Transfer Function.vi. La simulaciĂłn se realiza, o bien, mediante de la FunciĂłn de Transferencia del sistema o ecuaciĂłn diferencial.

Para hacer las simulaciones necesitamos The Simulation Loop. El bucle de simulaciĂłn es el componente principal del MĂłdulo de SimulaciĂłn. Se trata de una versiĂłn "mejorada" de la versiĂłn del While Loop que integra potentes herramientas para resolver la ecuaciĂłn diferencial, caracterĂ­sticas de tiempo internas o externas. Con el MĂłdulo de SimulaciĂłn, los sistemas de tiempo continuo se puede ejecutar en el mundo digital discreto. El ciclo consta de tres partes principales:

-Nodo de entrada (izquierda) - Permite a los parámetros de simulaciĂłn ser definidas mediante programaciĂłn. De forma predeterminada, estos parámetros son estáticos y se puede  configurar con un doble clic en el nodo de entrada. Este nodo se puede expandir haciendo clic en el borde inferior del nodo para "tomar" el mango y arrastrando hacia abajo para mostrar adicionales parámetros.

-Bucle principal - El sistema a simular se coloca aquĂ­.

-Nodo de salida (Derecho) - Devuelve los errores que puedan haber ocurrido en el bucle, como una funciĂłn transferencia indebida.


Haciendo doble clic en el nodo de entrada nos aparece:

ConfiguraciĂłn de una simulaciĂłn:

Hay muchos parámetros que pueden configurarse para un circuito de simulación dado:

*Parámetros de simulación:

Simulation Time - Especifica para que en el perĂ­odo de “Simulation time” cuánto tiempo será la
simulación de ejecución. No necesario determinan el tiempo de cálculo de la simulación. Véase a continuación los parámetros de temporización.

Solver Method – MĂ©todo que se utiliza para resolver bloques tipo integral y diferencial en la
simulación. Hay una amplia variedad de métodos.

Dentro del Solver Method existen diferentes métodos resolutivos:

Runge-Kutta 1 (Euler) -Un paso de tamaño fijo, de un solo paso explícito de Runge-Kutta ODE de primer orden.

Runge-Kutta 2 -Un paso de tamaño fijo, de un solo paso explícito de Runge-Kutta ODE de segundo orden.

Runge-Kutta 3 -Un paso de tamaño fijo, de un solo paso explícito de Runge-Kutta ODE de tercer orden.

Runge-Kutta 4 -Un paso de tamaño fijo, de un solo paso explícito de Runge-Kutta ODE de cuarto orden.

Runge-Kutta 23 -A paso de tamaño variable, de un solo paso explícito de Runge-Kutta ODE de tercer orden.

Runge-Kutta 45 -Un paso de tamaño variable, de un solo paso explícito de Runge-Kutta ODE solver de quinto orden, que utiliza los coeficientes Dormand-Prince.

BDF-Un paso de tamaño variable, para ordenes variables (las Ăłrdenes de 1 a 5) la aplicaciĂłn de la multi-paso atrás fĂłrmula de diferencia (BDF), tambiĂ©n conocido como el MĂ©todo Gear´s. Este mĂ©todo es adecuado para los problemas moderadamente difĂ­ciles.

Adams-Moulton -Un paso de tamaño variable, paso variables para múltiples (del 1 al 12) la aplicación de la Adams-Moulton predictor-corrector en modo de predecir, evaluar, corregir, evaluar (PECE).

Rosenbrock -Un paso de tamaño variable, una resolución de un sólo paso explícito. Este método es adecuado para algunos problemas de rigidez.

Continuos Time Step and Tolerance - Son valores de control Step Size, es decir, el tiempo entre simulaciones utilizado por LabVIEW. Típicamente, el ajuste por defecto será suficiente, pero se puede ajustar si es necesario.
Discrete Time - Si bien el predeterminado Auto Discrete Time en general funciona para la mayoría de las simulaciones, se puede forzar LabVIEW para utilizar un tamaño de paso en especial.

*Parámetros de sincronización:

Enable Synchronized Timing - La opción de sincronización de software se utiliza siempre realizando simulaciones. Esto va a resolver la ecuación como más rápido que la CPU pueda o para realizar una simulación en "tiempo real".

Timing Source - Cuando la aplicaciĂłn de una simulaciĂłn en el hardware, cambiar la fuente de sincronizaciĂłn del bucle de una disposiciĂłn hardware de tiempo. Esta opciĂłn se puede utilizar para sincronizar la ejecuciĂłn de simulaciĂłn con un recurso de hora externo, como el reloj sistema operativo o un reloj, incluso una tarjeta de adquisiciĂłn de datos.

Loop Timing Attributes- Estas opciones controlan cĂłmo se ejecuta el bucle con respecto a la fuente de sincronizaciĂłn seleccionada.

Processor Assignment- Se puede asignar el microprocesador que queremos que ejecute este bucle, si es que el PC es multinúcleo. Los valores por defecto serán suficientes.


Las simulaciones pueden utilizar una amplia variedad de fuentes de señales. La simulación de señales son útiles para ver la respuesta del sistema característica.

Hay varios tipos de señales, por ejemplo; “Chirp” ofrece un barrido de frecuencia Ăştil, “Pulse” proporcionan buen paso respuesta de la informaciĂłn e “Indexer”, que es Ăştil para el uso de una señal predeterminada  arbitraria, y puede interpolar entre las muestras para una mejor resoluciĂłn.
Una vez que la simulaciĂłn se confirma, una señal del mundo real puede ser sustituida por la señal de  simulaciĂłn. En esta configuraciĂłn, la simulaciĂłn puede realizar cálculos basados en datos reales y es muy bueno para probar el sistema antes de controlar el producto.

Para poder ver los datos del sistema en gráficas debemos estudiar una nueva Waveform Chart llamado Simulation Time Waveform. Localizado en Funcctions-> Control Design &  Simulation-> Simulation-> Graph Utilities-> Sim Time Waveform palette.


Se puede mostrar una o varias formas de onda, cambiar los valores mínimos y máximos de cualquiera de los ejes X o Y haciendo doble clic sobre el valor y escribiendo el nuevo valor. Del mismo modo, puede cambiar la etiqueta del eje. También puede hacer clic derecho de la parcela leyenda y cambiar el estilo, forma y color de la traza que se muestra en el gráfico. Como el Waveform Chart tradicional.
Integra una señal de entrada continua utilizando la ecuación diferencial ordinario (ODE) que
resuelve specityspecity forma la simulaciĂłn.
Implementa el modelo del sistema desde la funciĂłn de transferencia. Se tiene que definir el
numerador y el denominador, asĂ­ como la entrada del sistema.
También existe la posibilidad de multiplicar-dividir o sumar-restar las señal generada por la
simulaciĂłn. Todo ello se realiza con los bloques de la IlustraciĂłn 99.
Limita el rango válido de la señal a la salida del subVI.

4.3.1-ConfiguraciĂłn de la simulaciĂłn

4.3.1.1-RepresentaciĂłn de los modelos state-Space utilizando el nodo de fĂłrmula y los integradores

Un modelo de espacio de estado es un conjunto de ecuaciones de primer orden diferenciales que  constituyen el modelo del sistema. Es comĂşn que los modelos matemáticos de sistemas dinámicos se escriban como los modelos state-space. Para ser un poco más especĂ­ficos, aquĂ­ tenemos un modelo general state-space de segundo orden:


Donde f1(•) y f2(•) son funciones que tienen en el lado derecho de la ecuaciĂłn un diferencial de primer orden. Estas funciones pueden ser lineal o no lineal. A veces se definen una o más variables de salida. Arriba, la variable de salida es y, y la funciĂłn de salida es g (•)(los puntos en los parĂ©ntesis nos indican una sucesiĂłn de valores).

Para implementar el diagrama de bloques de un modelo de state-space, se puede empezar por agregar un bloque integrador para cada una de las variables de estado en el diagrama de  bloques. La salida de los integradores son las variables de estado. Las entradas a los integradores son los derivados del tiempo, y la f1 (•) y f2 (•) funciones en el modelo representativo se muestran en estos derivados del tiempo. Para llevar a cabo las funciones se tienen las dos opciones siguientes (que tambiĂ©n se pueden combinar):

-La construcciĂłn de las funciones, f1(•) y f2(•), utilizando bloques de funciones como suma, ganancia, multiplicaciĂłn, etc, que están en la simulaciĂłn de la Paleta de Funciones.
-Escribir las funciones f1(•) y f2(•) en un nodo de formulas. El Formula Node está en Mathematics / Scripts & Formulas Palette (y en la paleta de Structure). Con el Formula Node las funciones son más fáciles de modificar, y el diagrama de bloques puede parecer sencillo. Sin embargo, puede ser difĂ­cil de  implementar funciones no lineales como histĂ©resis, reacciĂłn, etc .

AquĂ­ tenemos un ejemplo sencillo para usar el Formula Node:

Donde “u” es la variable de entrada, e “y” es la variable de salida. Un nodo formula se utiliza para  representar el lado derecho de las ecuaciones diferenciales. La integraciĂłn de se realizan con bloques integradores de Continuos palette.




Utilizando el Formula Node en lugar de funciones en bloques para el calculo de los derivados, nos puede dar un diagrama de bloques más simple. Sin embargo, si las expresiones de las derivadas respecto al tiempo contiene funciones no lineales, puede ser más difícil de aplicar éstos en el Formula Node que con las funciones en bloques.

Una vez indicado que se puede realizar de dos formas diferentes, durante la ejecuciĂłn del proyecto se van a implementar las dos formas de simulaciĂłn.


Aparte del Formula Node, también se puede usar el MathScript Node, el cual mejora mediante la adición de un idioma nativo basado en texto para implementación del algoritmo matemático en el entorno de programación gráfica.

El MathScript Node permite que se escoja la sintaxis que se sienta más cómodo para resolver el problema. Las ecuaciones pueden ser instrumentadas con el MathScript Node para la exploración de parámetros, simulación, o el despliegue de una aplicación final.

Ubicado en el subpalette ProgramaciĂłn »Estructuras.

La ventana de MathScript ofrece un entorno interactivo en el que las ecuaciones pueden ser los prototipos y se pueden hacer cálculos.



CaracterĂ­sticas de la ventana interactiva MathScript:

Prototipo de ecuaciones y fórmulas a través de la ventana de comandos.
Acceda fácilmente función de ayuda escribiendo Ayuda en la ventana de comandos.
Seleccione una variable para mostrar sus datos en el panel de vista previa e incluso escuchar el resultado.
Escribir, guardar, cargar, archivos de ejecución a través de la ficha de secuencias de comandos.
Compartir datos entre el Nodo MathScript en LabVIEW y la ventana de MathScript utilizando variables globales.
Avanzada trazado caracterĂ­sticas y caracterĂ­sticas de la imagen de exportaciĂłn.


4.3.1.2-ConfiguraciĂłn del subVI Transfer Function y Zero-Pole-Gain

Haciendo doble clic en el subVI Transfer Function.vi, se accede a un menĂş en el que configura el subVI. Esta configuraciĂłn se puede seleccionar si el sistema es SISO o MISO en “Polymorphic instance”, en “Parameter Information” tenemos un box(“Parameter sorce”), se puede seleccionar dos opciones; ”Configuration Dialog Box” en donde se introducen los vectores de las funciĂłn de transferencia a calcular, o “Terminal”, que se introduce la FDT mediante un terminal. Si está en modo “Terminal”, existe la opciĂłn de elegir entre un “Feedthrough” “Direct” o “Indirect”.


En el anexo de control se introduce la funciĂłn de transferencia mediante un terminal y MathScript para la comparaciĂłn de la FDT obtenida con la herramienta de identificaciĂłn y la ecuaciĂłn diferencial.
El Zero-Pole-Gain es una herramienta muy similar al Transfer Function.vi. Haciendo doble clic en el icono, emergerá un cuadro de diálogo para la configuración del mismo.

Se puede usar este subVI para sistemas SISO y MISO, según convenga, también puede configurar para introducir los valores del subVI o bien por cuadro de dialogo o por terminar.

También se pueden simular el comportamiento del sistema usando controladores como por ejemplo el PID.

Ejemplo: SimulaciĂłn del comportamiento de un motor elĂ©ctrico         

En la imagen siguiente se observa el diagrama de bloques que utilicé en la entrada anterior para comprobar la correcta identificación del sistema físico.

La lógica que se implementa a la izquierda de Simulation Loop es para poder controlar el tiempo de simulación, es decir, si la FDT corresponde a un sistema lento, se puede acelerar la simulación y si es rápido, se puede ralentizar.

El MathScript Node lo uso para introducir la FDT identificada anteriormente en el subVI Transfer Function.

El sistema físico primario, sobre el cual se realizó la identificación (cuyo diagrama es el de la imagen anterior) se le ha reducido el tamaño usando la opción que se encuentra en Edit->Create Simulation Subsistem para un mejor aprovechamiento del espacio de trabajo.

Para finalizar se crea un array con las dos salidas del sistema y se muestran los resultados en una gráfica.






No hay comentarios:

Publicar un comentario