Discusiones sobre Productos NI

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

Gestionar correctamente conexion TCP-IP

Hola de nuevo. Me ha salido un problema al utilizar la conexion ethernet entre dos PC situados en una misma red. El caso es que cuando tengo un solo programa dedicado a enviar y otro a recibir no hay ningun problema, todo funciona perfectamente, con un PC mando variables y con el otro las recibo, el problema viene cuando tengo que hacer el tratamiento de los datos recibidos, entonces el programa se relentiza horrorosamente y deja de cumplir su funcion, tendria que estar recibiendo datos constantemente, y recibe uno cada medio minuto. El programa cliente tambien se ve afectado ya que al conectar, se ralentiza muchisimo y tambien deja de hacer su función. Mi sospecha es que no estoy tratando adecuadamente la recepcion de datos, lo que pasa es que como me he basado en los ejemplos de comunicacion de Labview y no funciona ando un poco perdido. Espero sepan orientarme. Adjunto el programa en cuestion.

 

Saludos y gracias

0 kudos
Mensaje 1 de 23
5.129 Vistas
Con cualquiera de los dos que se alente, tanto el que manda como el que recibe, va a parecer que se alentan los dos, en este VI que mandaste no encontre nada que pudiera hacer que se alente tanto tiempo como mencionas, posiblemente en el otro VI este el problema.
Rodrigo Cuenca
www.cidesi.com

0 kudos
Mensaje 2 de 23
5.121 Vistas

Hola rodrigo muchas gracias por tu ayuda otra vez, adjunto la otra parte del programa a ver si puedes ver alguna cosa extraña.

 

Saludos

0 kudos
Mensaje 3 de 23
5.117 Vistas

Cheque el VI del cliente y veo que estas escribiendo pero tambien leyendo del puerto, y en el otro VI tambien lees entonces ahi hay un problema porque uno de los dos se va a quedar esperando datos y hasta que no se active el timeout que son 25 segundos va a continuar, creo que ese es el problema.

Cual es la razon de leer en el VI del cliente, si el otro VI no esta escribiendo nada, cualquier dato que necesites lo puedes obtener de manera local sin tener que leer el puerto.

 

Rodrigo Cuenca
www.cidesi.com

Mensaje 4 de 23
5.113 Vistas

Pues que cuanta razon tienes! la razon de que el cliente este esperando unos datos es que el servidor tiene que adquirirlos y mandarlos, lo que pasa es que aun no lo he programado. Aqui está el fallo en que está esperando unos datos que nunca llegan.

 

Gracias por la ayuda, hace apenas un mes que uso Labview y se me hace un poco complicado hacer el programa. A lo mejor hago preguntas un poco tontas, pero gracias a vuestra ayuda estoy aprendiendo a programar y sacando adelante mi proyecto de fin de carrera.

 

Saludos 

0 kudos
Mensaje 5 de 23
5.110 Vistas

Hola. Hoy he dedicado el dia entero a hacer pruebas de conexion ethernet entre dos pc, con los programas adjuntados en mensajes anteriores, con la modificacion de que el cliente no reciba nada, solo envie. Y el problema de la lentitud persiste, si bien no son 25 segundos como era anteriormente, si que se demora un tiempo entre 5 y 15 segundos des de que muevo el joystic hasta que se reciven los datos referentes ha dicho movimiento, tambien he observado que al hacer movimientos rapidos con las palancas del joystic, al final quedaba totalmente descoordinados los datos de la posicion del joystic con lo que se recivia.

 

Para intentar acotar mas el problema, he probado con un programa que simplemente envia una variable por ethernet en un pc y la recive por otro. Mi sorpresa ha sido que el tiempo transcurrido entre envio y recepción parecia totalmente aleatorio, algunas veces era instantanio y otras veces tardaba unos 20 segundos. Es importante decir que la red es exclusivamente para esta aplicación, no hay nada mas, ni PC ni internet ni nada, simplemente la conexion que estoy intentando hacer.

 

Esta oscilacion de tiempos es totalmente inaceptable para mi aplicacion ya que puede suponer que el robot se estrelle o en el peor de los casos que se pierda y sea imposible recuperarlo. La fiabilidad de la conexion es un tema muy prioritario en esta aplicacion.

 

¿Alguien tiene alguna idea de lo que puede estar ocurriendo?

 

Saludos

0 kudos
Mensaje 6 de 23
5.082 Vistas
Tienes los nuevos VIs con los que estas haciendo las pruebas?
Rodrigo Cuenca
www.cidesi.com

0 kudos
Mensaje 7 de 23
5.080 Vistas

Claro que los tengo, te los adjunto a ver si ves algun problema. Creo que es algo extraño esto que me ocurre.

 

Saludos

Descargar todos
0 kudos
Mensaje 8 de 23
5.072 Vistas

Que tal Piries, agrega un "wait" o un "wait until next ms multiple" en cada uno de los whiles y con eso debe quedar.

Rodrigo Cuenca
www.cidesi.com

0 kudos
Mensaje 9 de 23
5.066 Vistas

Añadiendo los wait until next ms, con el programita sencillo funciona a la perfección es rápido y eficaz. Al hacer la misma operación con los dos programas mas complejos, ha mejorado muchisimo la velocidad de ejecución del programa pero los datos del movimiento del joystic con lo que recive el servidor siguen sin estar sincronizados. Si hago unos movimientos con el joystic des de que muevo hasta que recivo, pasa un tiempo que hace que al final se descordine todo. 

 

Al fijarme en el cliente, cuando muevo el joystic y las barras indicadoras de movimiento van a la par no hay problema, pero hay momentos que muevo el joystic y las barras indicadoras no se mueven y ahi es donde se lia la cosa. Me he fijado en la grafica de windows que representa el trafico de red inalámbrica, va enviando a picos con un tiempo variable entre ellos y no continuamente. Creo que este puede ser el problema. En los wait he puesto 10ms con 100 se relentizaba bastante la ejecución del programa.

 

Adjunto una grafica del trafico de wireless para que veas a que me refiero. A ver si da alguna información de donde puede estar el problema.

 

Saludos

0 kudos
Mensaje 10 de 23
5.064 Vistas