Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Muestrear y operar senales

¡Resuelto!
Ir a solución

Hola a todos, he estado leyendo el foro y no he encontrado (o no he buscado bien) una respuesta adecuada a mi problema, por lo que siguendo este hilo:

http://forums.ni.com/t5/Discusiones-sobre-Productos-NI/adquisicion-de-datos/td-p/423834/highlight/tr...

Pone que cree nuevos hilos y por eso no he continuado allì.

 

Esto generando senales con un DAQassistants y un simulador de senal dentro de un while para que se haga de manera contìnua en el tiempo, pero necesito obtener una muestra cada cierto tiempo que yo le ponga como arbitrario y con eso operar despuès sin que se reinicie la generaciòn de la senales de nuevo. Para ello he utilizado una estructura de "generate ocurrence", "Set occurrence" y "Wait ocurrence" que creo que podrìa funcionar para operar sòlo cuando tome la muestra. El problema es que no sè como muestrearla, pues con el AI Acquire Waveform podrìa muestrear las senales de entrada, pero no me reconoce la salida del generador de funciones ni del DAQAssistant como vàlidas. Les mando una imagen para ver la composiciòn. Querrìa muestrear la senal (incluso antes del DAQ assistant de màs arriba y la ùltima de todas que es uan senal que recibo de un sensor de presiòn. 

Muchas gracias por todo.

Un saludo,

Miguel.

 

 

0 kudos
Mensaje 1 de 13
5.206 Vistas

Hola Miguel_Torino,

 

Estoy mirando la captura de pantalla que has adjuntado pero no entiendo una cosa, para que utilizas los registros de desplazamiento del bucle salida señal digital control relé. Podrias hacer una captura de pantalla de todo el diagrama de bloques o, mejor, adjuntar el codigo del VI para poder verlo con mayor detalle y de esta manera conseguir ayudarte. Gracias

 

Un saludo, que pases un buen día

______________________________
Certified LabVIEW Developer (CLD)
0 kudos
Mensaje 2 de 13
5.187 Vistas

Muchas gracias!!!!!!! Aquì te lo adjunto, lo utilizo solo para que se sincronicen las senales digital y analògica...

Muchas gracias de nuevo.

Un saludo,

Miguel.

0 kudos
Mensaje 3 de 13
5.158 Vistas

Asi la sincronización no se realiza, para hacer una sincronización mirate los ejemplos de labVIEW puesto que vienen bien explicados y conseguiras entenderlo. Para encontrar estos ejemplos mira en Help > Find Examples... Ademas tambien puedes acceder a la página de ni.com/examples para encontrar mas ejemplos. 

 

Un saludo, que pases un buen día

______________________________
Certified LabVIEW Developer (CLD)
0 kudos
Mensaje 4 de 13
5.150 Vistas

Ya he conseguido muestrearlas. Ya hice lo de los ejemplos y no me quedò del todo claro, pero volveré a hacerlo este fin de semana. Ahora el problema que tengo es que uso whiles dentro de una "flat sequence" pero por la forma de los whiles no me pasa al siguiente "piso" de la secuencia...supongo que serà por el problema de sincronizaciòn que me dices, pero si crees que puedo hacerlo de alguna manera mejor, te agradecerìa la mano ;), he probado a hacerlo con timing loops y con occurences, pero ninguna me va bien 😞

Muchas gracias por la ayuda,

Un saludo,

Miguel.

0 kudos
Mensaje 5 de 13
5.143 Vistas

Hola Miguel_Torino,

 

Me alegro que hayas conseguido avanzar con tu proyecto. En referencia al problema que tienes con los bucles while, necesitaria ver una captura de pantalla para comprender mejor el problema y poder ayudarte.

 

Un saludo

______________________________
Certified LabVIEW Developer (CLD)
0 kudos
Mensaje 6 de 13
5.123 Vistas

Hola, lo primero voy a comentar còmo he solucionado lo del muestreo por si a alguien le puede servir: he utilizado un "relay" dentro de un case con un contador de iteraciones gobernado y actualizado por variables globales y con eso puedo tomar un valor segùn me interese en un momento u otro.
El problema que tengo es que (te adjunto la captura de pantalla) he pensado en meter los "whiles" dentro de un case que llegado a un contador pase con una comparaciòn al otro caso del case que es en el que quiero operar. El contador veo que se actualiza de valor (con el indicador que he puesto para ver los cambios) pero el hecho es que no se pasa al otro caso... 

Muchas gracias de nuevo,

Miguel.

0 kudos
Mensaje 7 de 13
5.120 Vistas

Hola Miguel_Torino,

 

Puedes pasarme el VI para poder testearlo en mi ordenador. Gracias.

 

Un saludo, que pases un buen día.

______________________________
Certified LabVIEW Developer (CLD)
0 kudos
Mensaje 8 de 13
5.077 Vistas

Hola, te paso también un esquema hecho a mano del cto a implementar con Labview. Con la variable global no se actualiza cada vez y eso es un problema. el objetivo es que se tomen los valores muy ràpidamente (mustreo my continuado y denso, lo del valor 15 es sòlo por ver si funcionaba). No sè si serìa posible que se muestreara cada poco (contador hasta 2) y pareciera que la senal que se manda por el BNC2120 (que serìa lo mejor).

 

Por otro lado, creo que para que esto  funcionase bien deberìa estar el DAQmx que se utiliza para la salida analògica estar fuera del While...me equivoco?

Gracias de nuevo por toda la ayuda que me estàn dando.

 

Un saludo,

Miguel.

Descargar todos
0 kudos
Mensaje 9 de 13
5.062 Vistas
Solución
Aceptado por el autor del tema Miguel_Torino

Hola!

 


Por otro lado, creo que para que esto  funcionase bien deberìa estar el DAQmx que se utiliza para la salida analògica estar fuera del While...me equivoco?


A esta pregunta: lo puedes dejar dentro del bucle para que de este modo se este escribiendo continuamente.

 

 

El posible problema puede ser la variable: enable señal cuadrada, puesto que dentro de la estructura case no sabes cual se ejecuta primero, si el relay o poner false dicha variable. Revisalo y haz que se ejecute en el orden correcto, puesto que LabVIEW ejecuta las acciones cuando tiene todas sus entradas, y en este caso ambas funciones tendrían las entradas a la vez, con lo que no podemos conocer cual se ejecuta primero.

Tambien te diría que inicializaras las variables, porque sino no sabras con que valor se ejecutan al principio.

 

Si quieres controlar el tiempo con el que se ejecuta un bucle while, te recomiendo que utilices la función "wait until next", de este modo el bucle se ejecutara en el tiempo que le estipules (siempre que ese tiempo sea mayor al tiempo que tarda en ejecutarse) y no consumiras tantos recursos del microprocesador.

 

Espero que la información te sirva. Comenta cuando revises.

 

Un saludo, que pases un buen día.

 

______________________________
Certified LabVIEW Developer (CLD)
0 kudos
Mensaje 10 de 13
5.046 Vistas