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.