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.