LabVIEW – TCP/IP.
1.7.1a.vi
Servidor TCP/IP.
Envía la onda generada a la IP y puerto especificados.
En primer lugar intenta, cada 100ms, establecer una comunicación a la IP y puerto especificados. Cuando se establece la conexión empieza a enviar los datos.
Para enviar la onda primero la transforma a formato cadena (que es lo que se puede enviar por TCP/IP). Luego envía, también en formato cadena, el tamaño de esa cadena. La cadena que contiene el tamaño es un cast de int a vector de chars. Son 4 bytes. A continuación envía la cadena con los datos.
Este proceso (de envío) se repite cada 100ms siempre y cuando no haya error en la comunicación ni se presione el botón STOP.
Al finalizar, cierra la conexión TCP/IP.


![]() |
OFF reset signal, if TRUE, resets the phase to the phase control value and the time stamp to zero. The default is FALSE. |
![]() |
OFFSET offset is the DC offset of the signal. The default is 0.0. |
![]() |
FRECUENCIA frequency is the frequency of the waveform in units of hertz. The default is 10. |
![]() |
AMPLITUD amplitude is the amplitude of the waveform. The amplitude is also the peak voltage. The default is 1.0. |
![]() |
FASE phase is the initial phase, in degrees, of the waveform. The default is 0. The VI ignores phase if reset signal is FALSE. |
![]() |
DUTY CICLE square wave duty cycle is the percentage of time a square wave remains high versus low over one period. The VI uses this parameter only if the signal type is a square wave. The default is 50. |
![]() |
Fs Fs is the sampling rate in samples per second. The default is 1000. |
![]() |
NRO. MUESTRAS #s is the number of samples in the waveform. The default is 1000. |
![]() |
SEÑAL |
![]() |
stop Se presiona este botón para salir. |
![]() |
Puerto Puerto remoto al que se enviarán los datos. |
![]() |
ip IP remota donde se enviarán los datos. |

![]() |
NI_MABase.lvlib:Basic Function Generator.vi
C:\Archivos de programa\National Instruments\LabVIEW 8.6\vi.lib\measure\masignal.llb\Basic Function Generator.vi |
1.7.1b.vi
Cliente TCP/IP.
Escucha por conexiones entrantes TCP/IP en el puerto 2056.
Cuando se establece una conexión (supone que quien la estableció es el servidor 1.7.1a), lee primero los 4 bytes, que se supone contienen el tamaño de los datos que van a ser recibidos (porque así los envió 1.7.1a). Luego lee esa cantidad de bytes y transforma la cadena leída en un dato tipo waveform, que era el tipo de datos original en el servidor. El tipo de datos (la constante waveform) se crea afuera del bucle, para que no se tenga que estar creando una constante en cada repetición del bucle (para optimizar nomás). Una vez obtenida la forma de onda se la muestra en el osciloscopio.
Esto se repite hasta que:
1- Falle la lectura del tamaño de los datos.
2- Falle la lectura de los datos.
3- Falle la conversión de los datos a formato waveform.
4- Se presione el botón stop (SALIR).
Cuando ocurre alguna de las 4 cosas arriba mencionadas se cierra la conexión y termina el programa.


![]() |
stop SALIR: Presionando este botón se termina el programa. |
![]() |
Ch1 VOLTS/DIV de CH1. |
![]() |
Tiempo SEG/DIV de ambos canales. |
![]() |
Ch1 CH1 ON. |
![]() |
Ch2 CH2 ON. |
![]() |
Ch2 VOLTS/DIV de CH2. |
![]() |
Waveform Graph Gráfico de la forma de onda recibida. |

![]() |
Osciloscopio.vi
C:\Documents and Settings\Daniel\Mis documentos\facu\5to\Digitales 3\1\Practico\Osciloscopio.vi |
![]() |
TCP Listen.vi
C:\Archivos de programa\National Instruments\LabVIEW 8.6\vi.lib\Utility\tcp.llb\TCP Listen.vi |









20 octubre, 2009 - 17:50
I’ve doing this same application to control a robot, but now I need the client sends data to the server for acomplish a condition to stop, do you know how to do this?
20 octubre, 2009 - 17:55
De acuerdo a mi aplicación, el servidor enviará un valor de distancia, el cliente lee los encoders y creara un dato “distancia”, cunado esta distancia sea igual a la enviada entonces debe regresar al servidor para detener la operacion. Es por eso que necesito que el cliente envie este dato al servidor, como una retroalimentacion.
20 octubre, 2009 - 21:19
You can send a cluster instead of a waveform. You bundle together a waveform and a boolean signal for example. And put it (the new cluster) on the “anything” input of the “Flatten To String” function (talking about 1.7.1a.vi). Then, on the other vi, where you reveive the data (1.7.1b) you unbundle it from the output of “Unflatten From String” using a constant the information (on the “type” input) of the cluster you created on 1.7.1a.vi. So you’ve sent both a waveform and a boolean signal (a cluster of both), and can use that boolean signal to send the stop order. If you don’t get it just leave me another reply here so I’ll attach here a modified VI of what I’ve just said. Good look!
31 octubre, 2009 - 01:08
Puede en el ambiente Labview convertir la información o data que adquiero por el puerto ethernet a una data Serial y esa data?, para luego presentarla en forma Grafica. Con cuales funciones podria hacer esto.
Saludos
1 noviembre, 2009 - 01:18
Mmm necesitaría más información acerca de lo que querés hacer. ¿Qué datos querés recibir por TCP/IP? ¿Qué tipo de gráfico necesitás? ¿Es en el tiempo? ¿Es una onda? ¿Una estadística? Además, no entiendo a que te referís con data Serial. Saludos.
3 noviembre, 2009 - 01:00
Tengo un modulo xport direct + conectado a un PC con Labview, éste tiene comunicación ethernet y rs232, la data que recibe y transmite este modulo, por el puerto serial (RS232) procede de un equipo zigbee xbee pro(WIFI), el cual a su vez recibe y transmite a un xbee pro remoto conectado a un PIC, con I/O preprogramadas como control de servos, entradas analogicas y otras. Se me especidica que la trama de la data del PIC es de 8 byte y esa data define la función que este ejecuta y la información que comunicará.
Lo que pretendo con Labview es controlar todas esas funciones del PIC, y por supuesto el medio para enviar y establecer esa comunicación entre Labview y el hardware, desde la PC es via ethernet a través de modulo xport, lo que me parece un tanto complicado como puedo interprertar esa data original desde el PIC hasta poderla visualizar en labview de manera correcta y manipularla. ¿Será que debo procesarla como tcp/ip inicialmente y llevarla luego a la forma de la trama original que maneja el PIC?
La cadena seria:
Labview(PC) TCP/IPXportRS232 XbeePro WIFI (Zigbee) >>>> <<<<< (Zigbee)WIFIRS232 PIC Sensores.
Te agradezco la información y ayuda.
Saludos
11 noviembre, 2009 - 10:37
Hola Jose, es difícil contestarte desde acá porque me tendría que meter un poco en lo que estás haciendo y probar para poder ayudarte y estoy sin tiempo. Espero que puedas conseguir alguna ayuda por ahí. Saludos.