LabView - ITI

 
Vista:

ITI

Publicado por Near (76 intervenciones) el 09/06/2010 13:01:31
Hola:

Tengo un problema con un programa que estoy haciendo para LAbview...

...tengo un bloque de adquisición de datos que toma una serie de señales de forma continua. A parte de eso tengo un bloque que ejecuta una serie de instrucciones en el caso de que una variable sea TRUE... yo quisiera que esa orden se ejecutase cada cierto tiempo, por lo que puse un bloque TIME DELAY... el problema es que si configuro ese bloque a 1 segundo el programa me acaba dando error... pero si bajo el tiempo el programa sigue funcionando bien.

¿¿A que puede ser debido este error??

¿¿Como podira solucionarlo??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ITI

Publicado por untzilla (43 intervenciones) el 11/06/2010 10:32:46
Bueno Días Near.

¿Que error te da? En principio, el error no devería estar causado por el Time Delay. Cambia el time delay por un Wait. El "Wait" para la aplicación durante X tiempo.

Te puede pasar, que si tienes dos while loop ejecutandose en paralelo y uno de ellos no tiene temporización acapare todo el procesador y se te ejecute la segunda solo en una iteración. Creo que este no es el caso, ya que si pones el tiempo inferior a 1s te ejecuta bien, pero siempre pon una tenporización en cada while.

Indica que error de te, puedes utilizar el "Simple error handler" par visualizar la razón del error.

Si quieres sube una imagen del programa o el programa e intentaremos ayudar.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con TIME DELAY

Publicado por Near (76 intervenciones) el 13/06/2010 16:14:37
Esto es lo que ponia en el error...

"Error -200279 occurred at DAQmx Read (Analog 1D Wfm NChan NSamp).vi:1
Possible reason(s):
Measurements: Attempted to read samples that are no longer available. The requested sample was previously available, but has since been overwritten.
Increasing the buffer size, reading the data more frequently, or specifying a fixed number of samples to read instead of reading all available samples might correct the problem.
Property: RelativeTo
Corresponding Value: Current Read Position
Property: Offset
Corresponding Value:
Task Name: _unnamedTask<2>"

No he sido capaz de ver la forma de subir la imagen... basicamente se trata de un bucle while que abarca a todo el programa... en este bucle se encuentra el DAQ ASSISTANT el cual uso para leer señales de un circuito... a parte de unas operaciones de comparacio y de tratamiento de datos hay un CASE STRUCTURE que sólo hará cosas en el caso TRUE (se trata de una comparación de datos)

Dentro del CASE STRUCTURE hay otro que lo que hace en caso TRUE es modificar el valor de una variable que se encuentra en la comparacion del primer CASE

El TIME DELAY se encuentra dentro del último CASE... puede que el erro tenga que ver con la velocidad de muestreo del DAQ que aporte demasiados datos para un TIME DELAY muy lento... aunque no lo tengo claro.

¡¡Gracias por la ayuda!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con TIME DELAY

Publicado por untzilla (43 intervenciones) el 14/06/2010 16:44:25
Kaixo Near

Esto puede ser devido a que con la frecuencia de muestreo seleccionada y el numero de muestras no es posible conseguir. Intenta disminuir la frecuencia de muestreo a ver si te funciona.

Además tienes que ajustar el tiempo del whileloop con la frecuencia de muestreo. A ver si te funciona.

Si quieres sube una foto con : http://imageshack.us/

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con TIME DELAY

Publicado por Untzilla (43 intervenciones) el 15/06/2010 16:00:47
Bueno días Near:

Tienes que ajustar la frecuencia de adquisición a la frecuencia de ejecución del while loop.

Si la frecuencia de muestreo de tu tarjeta de adquisiciíon de de 1KHz y no tiene sentido que tu aplicación lea el tado a cada 10ms. Tambien tienes que ajustar el numero de muestras por canal.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con TIME DELAY

Publicado por Near (76 intervenciones) el 15/06/2010 16:30:31
No comprendo muy bien la relación entre la frecuencia de adquisición y el número de muestras... si tenemos 1kHz por ejemplo.. y 100 muestras... ¿¿¿significa que tomamos 100 datos cada 10 ms???

Aún me queda mucho camino que recorrer con Labview... gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con TIME DELAY

Publicado por Near (76 intervenciones) el 15/06/2010 16:25:13
http://img195.imageshack.us/img195/9489/dibujofly.jpg

¿Como ajusto el tiempo del whileloop con la frecuencia de muestreo?

Ya he comprendido que lo que ocurre es que muestreo mucho mas rapido que el tiempo que tengo para actualizar la variable...
...el caso es que me interesa muestrear rápido para captar la señal completa.
Pero la velocidad a la que cambie el valor de la variable debe ser mucho menor... necesitaria algun bloque que sirva como divisor de frecuencias o algo parecido.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con TIME DELAY

Publicado por untzilla (43 intervenciones) el 16/06/2010 10:22:40
Kaixo Near,

En primer lugar, yo no utilizaria los DaqAssistant, intentaria utilizar los Dacmx (se encuentran: click derecho en el planel block diagram → measurement I/O→Daqmx-Data adquisition), aunque el fallo no se encuentra aqui.

En primer lugar la frecuencia del while tiene que ser la misma que la frecuencia de adquisición. Si la frecuencia en el Daqassistant as pues que es de 100Hz, el while tiene que ejecutarse cada 10ms.

Luego utilizar un comparador para comprar el dato "presión inflado" con un dato dinamico (esto no es una simple comparación, anda con ojo) y si es TRUE, Realizar otra comparación con "Señal de Control" y si es TRUE recalculas la "Señal de control". Esto lo puedes hacer mediante un "Shift Register" evitando utilizar los property nodes.

Si quieres escribeme un email a [email protected] y te puedo ayudar a depurar tu programa.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con TIME DELAY

Publicado por untzilla (43 intervenciones) el 16/06/2010 14:45:15
Kaixo Near.

Se me ha olvidado. No puedes utilizar el Time Delay y wait en esa ocasión, el while tiene que tener solo una temporización. Lo que puedes hacer es utilizar un contador que se incremente en cada iteración y cuando este sea X se dé el cambio de "Señal Control" y reinicializar el contador.

Por ejemplo si temporizas el While Loop para que itere cada 10ms, comparando un constante 100 con el valor del contador conseguirías el cambio cada 1s como supongo que quieres hacer.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con TIME DELAY

Publicado por Near (76 intervenciones) el 16/06/2010 15:11:06
jejeje veo que le voy cogiendo las vueltas al Labview... había pensado una solución como la que me propones.
Creo que optaré por esa solución... de todos modos empezaré a mirarme lo de los "SHIFT" para ver si me pueden ser mas útiles a la hora de actualizar variables.
También barajare lo de cambiar el DAQ...

Gracias por la ayuda!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar