Discusiones sobre Productos NI

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

leer 2 o mas canales analógicos conLabwindows

¡Resuelto!
Ir a solución

Hola a todos,

estoy realizando una aplicación donde requiero leer 8 canales analógicos de una tarjeta USB-6008 con labWindows/CVI.

he revisado en los ejemplos que vienen como leer estos canales analógicos, sin embargo el ejemplo que viene aunque puedes leer multiples canales, solo muestra como graficar uno solo de ellos.

soy un novato con respecto a CVI y quizas no se como debe ser la sintaxis correcta para accesar a cada canal, por ejemplo, con la instrucción:

DAQmxErrChk (DAQmxReadAnalogF64(taskHandle,nSamples,10.0,DAQmx_Val_GroupByScanNumber,gData,nSamples*gNumChannels,&numRead,NULL));

leo los canales analógicos y guardo los datos intercalados en en el arreglo gData.

Sin embargo, yo quiero desplegar en un Ring el valor de cada canal, si yo hago por ejemplo

speed=*gData;

entonces si puedo desplegar en un Ring el valor del apuntador, pero solo en el caso de que se trate de un canal.

sin embargo cuando estoy leyendo 2 o mas canales, como le hago para leer la información correspondiente al canal 0. 1, 2, etc.

alguien me puede ayudar?

si no soy claro en la explicación por favor una disculpa y cualquier duda estoy para aclararla.

Saludos!

0 kudos
Mensaje 1 de 5
4.208 Vistas

Hola,

ya he resuelto mi duda...

al ser un vector que esta guardando intercaladamente los valores, el bit 0 corresponde al canal 0, el 1 al canal 1 y así sucesivamente.

no sabía como hacerlo y le puse un marcador en cada que ejecutaba el comando, después vi el valor guardado en el arreglo y así lo identifique.

de cualquier forma muchas gracias.

Saludos!

0 kudos
Mensaje 2 de 5
4.203 Vistas

Hola miguelo,

me alegra que ayas resuelto tu problema.

Te comento que raramente yo he usado el GroupByScanNumber, sino que normalmente leo los valores agrupandolos segun los canales. De esta manera resulta simple extraer todos los datos de un canal con un simple Copy1D.

De todas maneras, mucho depende de qué debes hacer con los datos, si procesarlos uno por uno u hacer operaciones masivas. Por ejemplo, el GroupByScanNumber resulta muy útil si quyeres graficar tus mediciones en un Strip Chart ya que puedes pasar directamente el arreglo al PlotStripChart.

Suerte con tu aplicación



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 3 de 5
4.191 Vistas

Hola Roberto,

efectivamente use GroupByScanNumber, por que grafico cada canal en un stripchart y además los guardo en un archivo TDMS. ya estoy listo para comenzar las pruebas en la máquina estoy muy contento por que es la primera vez que desarrollo algo que va a ser de mucha utilidad en la empresa donde trabajo.

por cierto y aprovechando tu atención.

estoy interesado ahora en realzar comunicación con un PLC Siemens, la idea es crear una HMI done existan recetas para cargarlas en el PLC y a su vez leer información del estado de la máquina.

me puedes decir si ya hay ejemplos que me ayuden a entender como hacerlo?

esta comunicación deberá ser ethernet para poder recibir paquetes de datos y enviar también... cierto??

disculpa que revuelva temas, pero como dije quiero aprovechar tu atención.

Saludos!

0 kudos
Mensaje 4 de 5
4.185 Vistas
Solución
Aceptado por miguelo78

La comunicación con PLC puede hacerse por ethernet u serial RS232 / RS485.

Normalmente Siemens utiliza el protocolo Modbus por el que hay ejemplos en el foro, aunque la mayoría sean para LbVIEW; puedes mirar al ejemplo que publiqué yo que es listo para CVI, que trata comunicación por serial.



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 kudos
Mensaje 5 de 5
4.183 Vistas