Vamos a crear un canal analógico de entrada para medir tensión. Tomaremos las muestras en modo continuo. Comprobaremos el funcionamiento del buffer del DAQ y su desbordamiento.
Creamos un canal analógico de entrada para medir tensión, creamos constantes de:
- La configuración de la entrada en modo RSE (referenciado a masa).
- El rango de mediada entre -5 y 5. Este rango deberá ser lo más parecido a la tensión máxima que queramos medir para obtener mayor precisión, y no superar el rango máximo entre -10 y 10 voltios.
- Elegimos el canal físico ai0.
- Las unidades en voltios.
Con la instrucción timing configuramos las muestras que el DAQ va a tomar. Creamos constantes de:
- El rate son las muestras por segundo que el buffer del DAQ va almacenando, cada segundo se van introduciendo ese número de muestras.
- El samples per channel es el tamaño del buffer. En modo continuo el valor mínimo es 10.000.
- Elegimos el modo de muestreo en modo continuo.
Si elegimos 5000 muestras por segundo con el tamaño mínimo del buffer (10.000), tras pasar 2 segundos se nos desbordará el buffer y perderemos las muestras, por lo que tendremos que leerlas con un intervalo menor de 2 segundos.
Solo nos saltará el error de desbordamiento si vamos a leerlas. Se nos puede estar desbordando el buffer y si no las leemos, no nos aparecerá ningún error aun estándolas perdiendo.
Vamos a arrancar la tarea y comprobar como se nos desborda el buffer y no nos salta el error, volveremos a arrancar la tarea y leeremos el buffer sin que se desborde.
Utilizaremos la instrucción read node para comprobar el número de muestras. Deberá tener la siguiente configuración:
Tarea con desbordamiento:
- Creamos un frame para controlar las ejecuciones de las instrucciones.
- Arrancamos la tarea.
- Creamos un while, el retardo le introducimos con la instrucción Elapsed Time, ya que al finalizar el tiempo nos detiene el while. Le crearemos un control y un indicador para controlar el tiempo. Esta instrucción se encuentra en: Programming>> Timing.
- Con la instrucción read node comprobamos el número de muestras que hay en el buffer mostrándolas en un indicador.
- Paramos la tarea.
Tarea sin desbordamiento:
- Volvemos a arrancar la tarea.
- Creamos la misma temporización salvo que esta vez el tiempo de retardo es 1 segundo, con lo que el buffer no se desbordará.
- Fuera del frame, leemos el canal. Al ser una entrada analógica, seleccionamos: Analógica, un canal, múltiples muestras, 1D DBL. Creamos un indicador para mostrar las medidas tomadas. Creamos un control para controlar el número de muestras por canal, es decir, cada cuantas muestras vamos a leer, si es -1 lee por defecto. En el time out creamos una constante con -1.
- Finalmente cerramos el recurso.
Al ejecutar el VI, comprobamos que poniendo 4 segundos en el primer retardo, se desborda el buffer y perdemos las muestras, como no leemos el canal, no nos salta el error.
La segunda vez que arrancamos la tarea no se desborda el buffer y leemos las muestras sin saltar el error. Las 1000 muestras que tomo son de 1,4 voltios ya que tengo los pines al aire.
No hay comentarios:
Publicar un comentario