Comunicacion serial Labview - pic 16f877A

HOLA amigos, soy RACH de Mexico, estoy haciendo un proyecto de controlar un modulo mediante Labview y una tarjeta de adquisicion de datos con un PIC 16F877A y bueno tras pelearme con la comunicacion serial entre mi pic y LAbview soy nueva utilizando labview y no tengo muchos conocimientos sobre esto, estoy realmente DESESPERADA!!! quisiera ver si podrian mandarme información q tengan sobre esto, realmente me seria de muchisima utilidad...

POR FAVOR!!!!!!

agradezco d ante mano su respuesta :LOL:
 
Hola RACH, con la información que me facilitas lo único que te puedo hacer es guiar para hacer que el labview te lea la cadena d bytes que haya en el puerto serie. Si puedieses concretar un poco mas o detallar mas podría ser mas concreto. ¿Qué versión del labview utilizas?

Te explico:

1º El programa ha de inicializar el puerto serie "VISA Configure Serial Port", en el que se le indica el bitrate, el puerto com, paridad... Si utilizas el COM1 se ha de poner un 0 en el conector de Visa Resouce Name, si usas el COM2 un 1 y así sucesivamente. Para un programa óptimo, este bloque solo debe ser llamado una sola vez cuando se ejecuta tu programa. La velocidad que selecciones aquí ha de ser la misma que la del PIC ej. 9600

2º Neceseitas indicarle al programa el numero de bytes que tienes que leer del puerto serie. Para ello necesitas crear un "Property Node", y con el boton derecho seleccionas Select Class->Visa->I/O Session->Instr. Despues con el boton derecho vas a Properties->Serial Settings->Number of bytes at serial port.

3º Incorporas a tu programa la funcion VISA Read

Y despues uniendo correctamente los bloques ya tienes la aplicación de lectura. Después ya solo queda el tratamiento.

El bloque VISA Read lo que proporciona es una cadena de caractares, lo que el labview le llama string, tal como proporciona estos datos no se puede operar con ellos, los hay que convertir en numéricos. Para ello utiliza una función que es "String to byte array", y a la salida de este bloque tendras un array con toda la información.

Ahora la forma de tratar este array depende de tu aplicación.


Debes recordar que el puerto COM que utilices no debe ser utilizado por otro programa, pues dará un error en labview. Si el puerto que usas no lo utiliza ninguna aplicación y te da un error la aplicación, se debe a que no tienes los drivers adecuados, como me pasó a mi cuando me pasé de la versión 6 a la 7. Para ello descarga el VISA 4.0 (no el VISA RUN TIME)de la página ni.com

Supongo que no conectarías el PIC al puerto serie del ordenador, que lo pasarías por un MAX232, que se encarga de adaptar los niveles TTL, y que conectarias el TX del PIC al pin 2 del puerto serie.

Cuando tengas tu programa hecho, asegúrate que tu PIC no te pierda datos, como me ha ocurrido a mi con un PIC 16f876, como publiqué en un post "Pérdida de datos en la UART del PIC16f876", ya que sería desastroso en tu aplicación.

Puedes encontrar mucha mas ayuda en la propia ayuda del labview y viendo los ejemplos que trae de comunicación con el puerto serie.

Un saludo. España.
 
hola rach, como lo planteas debes usar el modulo visa del programa labview, hay unos cuantos ejemplos de como configurarlo y usarlo debes tener en cuenta la velocidad de transmision normalmente 9600 baudios, la cantidad de bits que enviaras y el formato como enviaras la cadena, verificar sit tienes bit de paridad, stop, cuidar todos esos detalles, de cualquier forma revisa los ejemplos que estan en el software, de todos modos te anexo un ejemplo de comunicacion con un pic16f877, el formato de la cadena de bits recivida aqui es de la siguiente manera 25 bits intercalado entre ellos un espacio en blanco.
saludos. venezuela....
 

Adjuntos

  • escritura_131.rar
    150.4 KB · Visitas: 5,655
Hola a todos que tal?
Oye estoy mas o menos en el mismo problema que Rach. Estamos armando unos amigos y yo una tarjeta de adquisición de datos para varias materias de la universidad, así como tambien para parte de nuestra tesis de ingenieria. Quisiera que me ayudaran un poco en este asunto, de ser posible. La primera pregunta que se me viene es: ¿Es correcto pasar la señal serial de salida del pic por un MAX 232 y luego de ahí al puerto serial?. En cuanto la emisión de la señal serial desde el pic, hay que (entre otras cosas) seleccionar la velocidad que puede ser 9600, pero existe la opción necesaria de escojer entre el estado: driven true, driven inverted, open true y open inverted. ¿Sabes algo de esto? ¿Hay alguno que deba estar normalmente seleccionado?
 
hola u2okn, no entiendo muy bien la ultima parte de tu pregunta. en cuanto al MAX232 es correcto lo que planteas, ya que el MAX232 lo que hace es convertirnos los niveles TTL del pic a niveles CMOS. Tambien convierte los bits a logica negativa o invertida, la cual maneja el pc. en pocas palabras, es imprescindible usar el MAX232. En este momento estoy realizando un proyectico para sensar temperatura de un tanque usando labview, con un pic16f84A mediante el MAX232.
 
ola amigos tambem estou tentando comunicar um pic 16f877a com labview mas nao consigo estou usando cristal 20mhz ,max232, pc,labview7.1 mas nao sei como devo fazer
 
Aqui les dejo la conexion basica con max232 con el PIC y labview si desean mas de esto lo podemos compartir solo lo debo de buscar en mis archivos viejos. :LOL:
 

Adjuntos

  • conexion_serial_rs232_137.png
    conexion_serial_rs232_137.png
    16.5 KB · Visitas: 2,638
Hola a todos, estoy realizando unos trabajos en una empresa, en el cual tengo que adquirir 480 datos algo mas, estoy usando un PIC para la conversion ADC y transmitir los datos por serial al LabView, pero necesito rapidez es muy lenta la comunicacion a pesar de aumentar al máximo la velocidad en baudios, que recomendaciones me pueden dar. gracias, esperando su pronta respuesta. cuidense, bye
 
hola, yo tambien estoy utilizando labview con una tarjeta de adquisicion de datos con un pic pero no solo envio datos sino q tambien los recivo desde el labview al pic para un proceso de control posterior, mi duda esta en q en el registro del pic RCREG q es donde se almacenan los datos recividos; cada vez q se llena este registro con los datos recividos se ejecuta una interrupcion en el pic indicando lo anterior pero si en ese momento el pic aun no lee el registro porq aun se encuentra realizando otra operacion y mientras esto ocurre el labview envia otra serie de datos, estos datos son sobreescritos en los q anteriormente fueron recividos pero nunca utilizados o se mantienen los datos con los q ocurrio la interrupcion hasta q se vacie el registro para recien almacenar los datos q posteriormente se enviaran???? y tambien en viceversa del pic al labview????......ya q lo q necesito comunicar entre el pic y el labview no es un unico dato de 8 bits sino muchos mas datos q posteriormente los tendre q multiplexar en el pic y en el labview pero primero necesito resolver el problema anterior¡¡¡¡...en espera de su respuesta........antony
 
Hola a todos

agradeceria si me colaboraran con información para realizar un control pid desde labview, es para un levitador electromagnetico, ya esta funcionando analogamente y pues hasta ahora empiezo a trabajar en labview para realizar el control digital, agradeceria su ayuda!!!
 
Hola con relación ala comunicación serial MICRO - LABVIEW
fui a la ayuda de Labview busque por serial, pero no entendí muy bien el diagrama de bloques, ¡alguien me podría ayudar?
 
Hola que tal, es mi primer comentario en este forum y quisiera ver si me pueden ayudar, lo que pretendo hacer es un brazo robotico con 2 servos y un motor DC, el problema es que no estoy aun muy familiarizado con el Labview, he realizado un pequeño programa en labview lo cual es mandar una seria de datos de 9 bits, por ejemplo 030020060 en los cuales los 3 primeros bits serán el movimiento en grados de mi primer motor, los siguientes 3 bits serán el movimiento del segundo motor y el los restantes del tercer motor, pues mi duda es que no se como mandarle esos datos al PIC 18f o 16f para que de ahi pueda ya controlar mis motores.
Espero me puedan ayudar con lo que necesito y de antemano muchas Gracias.
 
hola, yo tambien estoy utilizando labview con una tarjeta de adquisicion de datos con un pic pero no solo envio datos sino q tambien los recivo desde el labview al pic para un proceso de control posterior, mi duda esta en q en el registro del pic RCREG q es donde se almacenan los datos recividos; cada vez q se llena este registro con los datos recividos se ejecuta una interrupcion en el pic indicando lo anterior pero si en ese momento el pic aun no lee el registro porq aun se encuentra realizando otra operacion y mientras esto ocurre el labview envia otra serie de datos, estos datos son sobreescritos en los q anteriormente fueron recividos pero nunca utilizados o se mantienen los datos con los q ocurrio la interrupcion hasta q se vacie el registro para recien almacenar los datos q posteriormente se enviaran???? y tambien en viceversa del pic al labview????......ya q lo q necesito comunicar entre el pic y el labview no es un unico dato de 8 bits sino muchos mas datos q posteriormente los tendre q multiplexar en el pic y en el labview pero primero necesito resolver el problema anterior¡¡¡¡...en espera de su respuesta........antony

Hola amigo, no se si comprendo muy bien tu problema, pero, por lo que que entiendo, es que hay informacion que estas recibiendo y por estar el micro en otros procesos la pierde. Si es así te cuento que tuve un problem similar un día, recibiendo datos de un receptor gps, lo que hay que hacer es establecer prioridades y saber que cuando llega un dato hay q procesarlo sin otra duda. u otro truco que fue el que yo utilice y me dio frutos buenos, fue en la interrupcion de recepcion de datos siempre que se recibía uno se tomaba y cree una pila y lo almacenaba en mi pila, y despes cuando tenía tiempo o el pic estaba libre lo procesaba con lo cual pude hacer una pila de datos de hasta 50 datos, solo debes tener en cuenta de manejar bien los punteros para direccionar la pila. Espero te ayude...

Saludos.
Electrofuncion
 
Yo tambien estoy empezando con esto del lab view y quisiera saber si en el pic tambien hay que realizar un programa que permita la comunicacion entre el lab view y el pic aver si ponen un ejemplo de programa en el pic.
 
Hola a todos,

Yo llevo ya unos meses trabajando en comunicación serial con LabVIEW para controlar un dispositivo, el cual, tiene un PIC que gestiona la transmisión de datos. Yo no estoy utilizando una MAX232 como dicen en el foro, y en realidad no me queda claro para que me serviría, y quizás sea el "el no uso" de ésta la causa de mi problema. Del PIC sale directamente la conexión serial con el cable RS-232 hacia mi PC.

Estoy trabajando con las siguientes configuraciones de comunicación:

Baud:57600
Data Bits:8
Parity:None
Stop Bits:1
Flow Control:None

El problema es que cuando hago correr mi programa este funciona por algunos segundos y luego obtengo un error de sobre escritura proveniente desde la lectura de LabVIEW (error hex 0xBFFF006c). He probado con las cosas que en el foro de la National Instrument me aconsejan. Entre estas, regular la velocidad de FIFO de mi COM, poner retardos antes de leer, disminuir la velocidad de muestreo, etc. Pero no he obtenido buenos resultados y el error persiste...

Probando sólo con un programa de lectura, incluyendo los de ejemplo del LabVIEW, como también probando la lectura con la MAX de LabVIEW (Measurement & Automation Explorer), obtengo el mismo error.

En cuanto a la escritura no tengo problemas, ya que probé sólo con un programa de este tipo.
Con todo esto me he dado cuenta que el PIC es capaz de recibir la información desde el LabVIEW sin problemas a la velocidad que estoy trabajando, pero el LabVIEW no puede recibir con la rapidez suficiente que requiere mi sistema.

Debo usar algún módulo Real-Time? A caso es este tarjeta de adquisición de datos que yo no uso la que me faltaría para recibir la información desde mi dispositivo de forma rápida?

Por favor, necesito ayuda en esto, llevo un mes ya buscando una solución y no la encuentro...

Saludos
 
Hola a todos, tengo el siguiente problema necesito hacer una comunicacion serial entre 2 pc por medio de labview, no lo se utilizar muy bien, ya tengo la comunicacion serial transmite y recibe pero no logro hacer que realize las dos tareas al tiempo, y no logro hacer que la comunicacion dure el tiempo que necesito por favor si alguien me pudiera colaborar estaria muy agradecido
 
Hola a todos,

Yo llevo ya unos meses trabajando en comunicación serial con LabVIEW para controlar un dispositivo, el cual, tiene un PIC que gestiona la transmisión de datos. Yo no estoy utilizando una MAX232 como dicen en el foro, y en realidad no me queda claro para que me serviría, y quizás sea el "el no uso" de ésta la causa de mi problema. Del PIC sale directamente la conexión serial con el cable RS-232 hacia mi PC.

Estoy trabajando con las siguientes configuraciones de comunicación:

Baud:57600
Data Bits:8
Parity:None
Stop Bits:1
Flow Control:None

El problema es que cuando hago correr mi programa este funciona por algunos segundos y luego obtengo un error de sobre escritura proveniente desde la lectura de LabVIEW (error hex 0xBFFF006c). He probado con las cosas que en el foro de la National Instrument me aconsejan. Entre estas, regular la velocidad de FIFO de mi COM, poner retardos antes de leer, disminuir la velocidad de muestreo, etc. Pero no he obtenido buenos resultados y el error persiste...

Probando sólo con un programa de lectura, incluyendo los de ejemplo del LabVIEW, como también probando la lectura con la MAX de LabVIEW (Measurement & Automation Explorer), obtengo el mismo error.

En cuanto a la escritura no tengo problemas, ya que probé sólo con un programa de este tipo.
Con todo esto me he dado cuenta que el PIC es capaz de recibir la información desde el LabVIEW sin problemas a la velocidad que estoy trabajando, pero el LabVIEW no puede recibir con la rapidez suficiente que requiere mi sistema.

Debo usar algún módulo Real-Time? A caso es este tarjeta de adquisición de datos que yo no uso la que me faltaría para recibir la información desde mi dispositivo de forma rápida?

Por favor, necesito ayuda en esto, llevo un mes ya buscando una solución y no la encuentro...

Saludos

Yo te recomendaría que utilizaras el MAX232, ya que lo que hace este IC es ajustar los niveles de voltaje de TTL que maneja el PIC, a los +12V/-12V que utiliza el puerto serial de la PC.

Yo tambien estoy empezando con esto del lab view y quisiera saber si en el pic tambien hay que realizar un programa que permita la comunicacion entre el lab view y el pic aver si ponen un ejemplo de programa en el pic.

Para utilizar el puerto serial en el PIC puedes empezar con instrucciones tan simples como:

Dim dato as Byte 'declara la variable dato de tipo byte
Hseropen 9600 'abre el puerto serial a 9600 baudios
WaitMs 500 'espera de medio segundo para estabilizar el puerto después de abrirlo

inicio:
Hserin dato 'espera recibir un dato por el puerto serial y lo guarda en la variable dato
Hserout "EL DATO LEIDO ES: ", #dato 'envía el mensaje textual que está entre comillas, 'seguido del valor decimal contenido en la variable dato al puerto serial
Goto inicio 'cicla el programa infinitamente


Este tipo de programa es básicamente un espejo, tú le envías un dato al PIC y éste lo lee y te lo regresa a la PC. Claro, todo esto es en BASIC y de manera simple, conforme conozcas y experimentes con el puerto, podrás hacer cosas más complejas.

Recuerda que debes configurar tu puerto serial al mismo baudrate desde el administrador de dispositivos.
 
Última edición:
Hola a todos, yo tengo un problema estoy haciendo una comunicacion desde labview al pic18f4550 por via USB utilizando las librerias CDC. Yo envio los datos de una archivo .txt el cual contiene en una fila un par de coordenadas X e Y, mi problema es que se e pierden datos al transmitir la informacion, me gustaria saber si alguno ha realizado un handshake en labview para poder sincronizar los datos, seria de gran ayuda en la finalizacion de mi proyecto, muchas gracias de antemano.
un saludo desde Venezuela
 
hola a todos mi nombre es isabel y tengo un problema, necesito hacer la comunicacion serial entre un pic y labview en labview la comunicacion funciona bien si la hago entre dos pc pero al momento de conectar el pic solo lee y escribe dos caracteres no tengo idea de porque, ademas necesito sacar del pic un valor entero que incrementa o decrementa para hacer mi base de datos en labview y no lo he podido hacer porfavor si me pudieran colaborar se los agradeceria estoy enrealidad desesperara he hecho de todo y no sale nada el pic lo estoy programando en pic c por medio de interrupciones
 
Atrás
Arriba