From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discusiones sobre Productos NI

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

control de un equipo a traves de un puerto serie RS 232

Hola,
 
Estoy haciendo una adquisicion de datos de un equipo de ultrasonidos con una tarjeja DAQ pero para ello necesito crear  un bucle de control que vaya modificando los parametros del equipo a lo largo del tiempo.EL equipo tiene su propio software de control a  traves del ordenador que trabaja con un codigo que el programa transforma en ASCII(usa el puerto RS 232,por lo que se q hay conmunicacion entre el equipo y el ordenador,ya que funciona),
Mi pregunta es la siguiente :
 
     ¿Como debo hacer el bucle de control?
      Escribiendo directamente en el puerto en cuyo caso en que lenguaje debo escribir en el string (mediante el uso de VISA)o hacer una llamada al software propio del equipo.
      Si necesitais mas información para haceros a la idea del problema que planteo no dudeis en pedirmela.
Muchas gracias por vuestra atención y un saludo.
 
 
0 kudos
Mensaje 1 de 9
7.045 Vistas

Hola Juanete para hacer el bucle de control la estructura que mas te conviene es el uso de una maquina de estados (viene un témplate en los témplates de LabVIEW y puedes encontrar mas info aquí http://zone.ni.com/devzone/cda/tut/p/id/3024) ya que es una arquitectura secuencial y escalable. En esta puedes agregar estados si después te es necesario.

Para escribir al puerto puedes usar la parte de VISA, nada mas es necesario que conozcas los comandos que vas a enviar y las respuestas que estas esperando. Para llamar al software propio de tu aparato necesitarías saber si tiene una interfase active X para poder trabajar con el o estarlo llamado desde líneas de comando para que trabaje. espero que esto te sirva de ayuda.

Saludos

Benjamin C
Principal Systems Engineer // CLA // CLED
Mensaje 2 de 9
7.035 Vistas
deseo cumunicarme con un analizador de redes electricas con labview, que trae implementado modbus, quisiera saber que opciones tengo para hacerlo y cual seria la recomendada, adicionalmente quisiera saber como podria desarrollar vis o aplicaciones que me permitan cambiar de ventanas empleando botones o algo similar,,


gracias

javier armando cruz rodriguez
tocayo.cruz@gmail.com
tocayo_cruz@yahoo.com
0 kudos
Mensaje 3 de 9
7.033 Vistas

Hola,

hay una libreria gratuita para Modbus serie o ethernet descargable del siguiente link:

http://zone.ni.com/devzone/cda/epd/p/id/4756

Para el uso de distintas ventanas o abrir subvis a traves de los eventos de un raton, puedes emplear como referencia el ejemplo que viene con LabVIEW en Find Examples llamado Dialog Box Demo.vi

Un saludo,

0 kudos
Mensaje 4 de 9
6.995 Vistas
Hola
 
Yo creo que he utilizando uno de los ejemplos de la libreria de labview 8.2 y ajustando los parametros al equipo de ultrasonidos deberia ser capaz de comunicarme con este pero no se como comprobar si esa comunicacion se esta llevando a cabo. Podriais decirme si eso es posible ya que no se que debo escribir en el string.
Respecto a utilizar active X se que no es posible(el programa es del año 87),asi que me pregunto si habria alguna forma de ejecutarlo desde labview.
 
Un Saludo.
0 kudos
Mensaje 5 de 9
6.980 Vistas

Hola he estado tratando de escribir en un puerto serie pero mi problema no es tan sencillo, lo que pasa es lo siguiente:

 

Primero que nada por medio de una comunicacion modbus adquiri los datos de un medidor de voltajes trifasicos y estos datos obtenidos los mostre en un VI de labview, hasta ahi todo iba a la perfeccion, pero ahora resulta que este dato debo enviarlo por el puerto serial de labview a otro puerto serie que se encuentra configurado dentro de otro programa, para esto tengo un cable db9-db9 female de ambos lados cruzado, lo que hago para mandar el dato es enviar el dato por el puerto COM3 y en mi otro programa configuro mi puerto COM1 pero sin embargo no logra llegar nada.

 

Anexo mi programa . AYUUUUUUUDAAAAAAAA  ya estoy en el desespere. 

0 kudos
Mensaje 6 de 9
5.818 Vistas

Lo primero que se me ocurre es sacar al VISA Configure Serial Port del bucle y ponerlo antes de éste: de otra manera cada vez que se ejecuta el bucle se intenta abrir un puerto que ya està abierto; otra cosa muy importante es poner un Simple error handler al final del bucle para ser avisados si ha habido un error.

 

De paso te comento que no entiendo porqué pasar del cluster  Modbus command a un arreglo de un elemento para después pasarlo a un for loop para estraer el elemento original...



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 7 de 9
5.798 Vistas
De antemano gracias pero ya e resuelto el problema, solo se trataba de que enviaba una cadena demasiado corta para que el otro programa lo entendiera, es decir, programa que recibia los datos esperaba 4 bytes y yo solo mandaba 3. Pero bueno ahora me encuentro en otro dilema, es caso es que no creo estar mandando los datos de manera adecuada puesto que el programa a donde envio los datos no recibe lo que yo espero por ejemplo , envio un 300 pero me muestra un 7256 o cosas asi, y lo que pasa es que nose como mandar ascii por el puerto serial alguien puede ayudarme?????
0 kudos
Mensaje 8 de 9
5.795 Vistas

Hola,

 

        Lo primero que debes tener claro, es en que formato estas viendo la data. Las trasmisiones por el puerto serial se hacen byte a byte, y un byte no son mas que 8 bits. Si lo visualizas en formato decimal un byte es un numero entero que puede tener un valor de 0 a 255, si lo visualizas en formato hexadecimal ese mismo byte obtiene valores entre 0x00 y 0xFF (el 0x es para indicar que estoy hablando de un número hexadecimal), y de igual forma si lo visualizas como ascii obtienes el caracter ascii correspondiente http://www.asciitable.com/. De esta forma es igual enviar el caracter 'A' o el número hexadecimal '0x41' o el número decimal '65', ya que en cualquiera de esos casos se transmiten los mismos 8 bits '01000001' .

 

       Desde LabVIEW dependiendo de tu aplicación puedes escribir un string (conjunto de caracteres ascii) y escribirlos al puerto, si seleccionas al string la opción de Hex Display entonces debes ingresar cadenas de caracteres correspondientes a numeros hexadecimales, o también puedes tomar un arreglo de bytes (U8) y usar el convertidor byte array to string.

 

       Por otra parte debes conocer como interpreta tu programa receptor las cadenas de datos que le envias, ya que el numero 300 lo puedes representar como los 3 caracteres ascii '3' '0' y '0' (en hexadecimal es 0x333030), o pudieses verlo como una variable formada por dos bytes 0x012C (si utilizas la calculadora de windows en vista cientifica, e ingresas 300 en decimal, al cambiar a hexadecimal te muestra este numero, complete con un 0 a la izquierda porque un byte son dos digitos hexadecimales).

 

      Espero que esto te ayude a poder buscar donde puede estar tu problema.

 

                  Saludos. 

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