Discusiones sobre Productos NI

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

procesamiento de datos a traves de rs 232

Tengan todos un cordial saludo, estoy haciendo un proyecto donde mido voltaje a traves de un microcontrolador pic16f877a, los valores medidos los tranmito a LabVIEW 8.6 mediante un adaptador USB-RS232, no tengo problemas en la transmisión, necesito graficar los datos leidos en labVIEW pero mientras transmito los datos, no he podido graficarlos correctamente, la palabra transmitida por ejemplo es de la siguiente forma 3.456V o 2.345mV, bueno los números varian segun la medición, ahora el problema es que al transmitir los datos, el graficador que estoy usando que por cierto es el waveform chart, grafica constantemente y eso implica que mientras la palabra está incompleta es decir puede ser 23V de la completa que es 3.423V, en el graficador aparece como si fuera 23 voltios coando en realidad es 3.423 voltios, no se si me explico bien, he intentado usar VI de la paleta string, y temporizar la lectura usando while loop, pero no he tenido exito, les rogaría una ayuda o una pauta para usar un VI o algo para poder ejecutar correctamente la realización de la gráfica en el labview. Esperando una ayuda, con mucho afecto Gustauro gracias.

0 kudos
Mensaje 1 de 6
4.063 Vistas

Hola Gustauro

 

-          Podrías usar alguna condición de espera hasta que sepamos que el dato está completo, algo como una estructura de case. Ahora tal vez con una imagen de cómo está implementado esta parte del código podría ayudar para darle una respuesta más precisa.

 

Saludos

0 kudos
Mensaje 2 de 6
4.036 Vistas

Opino lo mismo que fromm8 es necesario observar como Gustauro lo esta implementando.



Ing. Jonathan E. Cruz Ortiz

ENERGÍA PROACTIVA S.A.S

Cel : (+57) 3173669343 - (+57) 3124451894

0 kudos
Mensaje 3 de 6
4.030 Vistas

Hola,

 

          Si vas a transmitir numeros, puedes pasarlo directamente como un IEEE float, que son 4 bytes y luego los unes y casteas a un single. De esta manera usas la condicion numero de bytes at port y cuando sea mayor a 4 haces una lectura de 4 bytes. Si por el contrario estas transmitiendo como numeros ascii tambien seria aconsejable que uses la misma cantidad de bytes para cualquier numero completando con 0 los espacios sobrantes, o si tambien transfieres las unidades pues vayas recibiendo los datos de uno en uno y concatenando como string hasta que llegue la V, y luego que llega la V asumes que ya llego ese numero y lo graficas, claro que tambien tendras q revisar el penultimo caracter para diferenciar V de mV.

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
0 kudos
Mensaje 4 de 6
4.023 Vistas

Hola Fromm8, gracias por responder a ti y todos los demás interesados en colaborarme, bueno, mi programación está en lo siguiente:

 

 

Gustauro panel de control.png

 

lo que he hecho es, cambiar la palabra transmitida, el microcontrolador envia los valores de voltaje de la siguiente forma: V2.345 o mV3.456, para diferenciar, bueno con esto he logrado que Search/split string, busque la palabra V y si lo encuentra sale por substring before match el número restante mas la V, es decir el mismo V2.245, entonces si no encuentra V no sale nada por substring before match, entonces Search and Replace String también busca V y si lo encuentra lo suprime y solo salen los números restantes por Result String, y como verás eso lo convierto en número con coma flotante, y esto a Waveform chart, con esto la graficación ya no es tan disparatada como antes, ahora el problema que sigo teniendo es que a madida que van llegando mas datos los decimales van reduciendo y la gráfica se altera, y en un momento se hace cero y la gráfica se altera aun mas, bueno asi es como se afecta:

 

Gustauro frontal 1.png

 

Gustauro frontal 2.png

 

 

Como puedes observar, hay isntantes en que el valor se hace cero y eso hace que la gráfica no este clara. (la imagen de fondo nada que ver, mil disculpas, copie la imagen sin querer), sigo intentando eliminar este inconveniente, la solucion que me han recomendado los estoy tomando en cuenta y voy a intentarlo, pero como me han dicho que querian ver como estaba encarando mi proyecto, aqui se los muestro, bueno muy agradecido con su ayuda estaré esperando una pauta, Saludos a ti Fromm8 y a los demás que me han dado nuevas ideas...

0 kudos
Mensaje 5 de 6
4.006 Vistas

Hola,

 

        Estas leyendo de 6 en 6 caracteres, cuando transmites V2.345 son 6 pero cuando transmites mV3.456 son 7.

 

        Veo que te funciona te fuiste por unas cajas de VISA mas genericas y tienes varias cajas intermedias que normalmente no se usan, en caso de transmisión RS-232 por lo general se acostumbra a usar las que estan en la paleta Serial y no VISA, aunque igual pertenecen a VISA.

 

         Haces la lectura cuando llega algún byte, pero no lees 6 bytes, puede ocurrir que no hayan llegado los 6 bytes cuando mandas a leer y solo obtengas parte del valor, eso luego te descuadraria todos los siguientes valores. Para evitar eso puedes usar Bytes at port y esperar que sea mayor o igual a el numero de bytes que deseas leer.

 

Saludos,

 

 

     

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
0 kudos
Mensaje 6 de 6
3.997 Vistas