Autor Tema: Eco en una línea RS232 -> RS485 ¿como eliminarlo?  (Leído 6737 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5500
    • Picmania by Redraven
Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« en: 09 de Junio de 2006, 06:10:06 »
Amigos Técnicos, Sabios y Ocurrentes:

Trabajo habitualmente con redes de dispositivos RS485. El PC siempre actúa como "master" y todos los demás dispositivos como "slaves".

La conexión mínima es la compuesta por un PC, con su soft específico, un conversor RS232 a RS485 ATEN IC-485SN unidos mediante un cable DB9-DB25 y uno de mis dispositivos esclavos unidos mediante dos hilos RS485.

La comunicación mínima que se establece entre el PC y los distintos dispositivos consiste en una llamada "broadcast" desde el PC, del estilo de "L000:#1..." (un string terminado en 0Dh) a la que cada dispositivo debe responder con un "R000:#1,ID,..." (otro string terminado en 0Dh), el PC al recibir esta respuesta del dispositivo lo identifica y desactiva sus nuevas respuestas con un "L000:#2,ID,..." (de nuevo un string terminado en 0Dh).

Esquemáticamente sería así:

PC ->  "L000:#1..."[0Dh]        (¿Hay algien ahí?)
Disp -> "R000:#1,ID,..."[0Dh]  (Estoy yo y me llamo ID)
PC -> "L000:#2,ID,..." [0Dh]   (ID, te he oído asi que cállate ya)

Esto funciona de forma absolutamente correcta, perfecta, rápida y completa ... pero ....

Hay dos mundos distintos cuya frontera se establece en el conector DB9 del PC. Éste, su S.O., su software de aplicación y su puerto COM es el "primer mundo", el conversor RS232 a RS485, la linea de dos hilos de la red RS485 y todos y cada uno de los dispositivos colgados de ella son el "segundo mundo".

Me han encargado que realice dispositivo que sea capaz de emular la respuesta de la red para comprobar efectivamente que el "primer mundo", el PC, funciona correctamente.

Debe ser posible desconectar el cable DB9-DB25 del puerto COM del PC, conectar mi emulador a dicho puerto COM y realizar exactamente la comunicación descrita mas arriba, tal y como se establecería con el conexionado original.

Ante un fallo generalizado de la conexión con los distintos dispositivos este invento debería ser capaz de descartar cualquier fallo en el buen funcionamiento del PC, con cada uno de los elementos que intervienen en éste, desde el S.O. hasta el puerto COM del mismo. Si mi dispositivo contesta correctamente el error debe estar desde dicho puerto COM hacia afuera.

Hasta aquí todo está claro ....

-----------------------------------------------

Para detectar exactamente cuál es el protocolo de la comunicación anterior me he hecho un montaje "espía" de puerto COM, así puedo conocer en detalle qué envía el PC y qué es lo que debe recibir éste desde el dispositivo. Eso es lo que debo implementar en mi invento.

El montaje espia consiste en dos conectores DB9, hembra y macho, conectados pin a pin, que inserto entre el PC y el conversor RS232 a RS485. De este puente saco las líneas Tx y Rx que envía a dos nuevos conectores RB9 pero ambas unidas a los pines Rx de cada uno de ellos.

De esta forma con dos puertos COM adicionales puedo "escuchar" lo que se envía y lo que se recibe por un tercer puerto COM.

El esquema queda como sigue:

COM1.Tx -> CONVERSOR.Rx
COM1.Tx -> COM2.Rx

COM1.Rx -> CONVERSOR.Tx
COM1.Rx -> COM3.Rx

Por el puerto COM1 realizo la comunicacion normal entre PC y el dispositivo. Abro dos monitores serie conectados a COM2 y COM3 y "veo" todo lo que se envia y recibe por el COM1.

----------------------------------------------------------

Y ahí tengo el problema:

TODO lo que envío desde el PC por la linea COM1.Tx lo recibo por la línea COM1.Rx ...  :shock:
Si el dispositivo es el que habla lo recibo por COM1.RX sin problemas de ningun tipo ...  :shock:

Con lo que la comunicación descrita al principo la monitorizo de la siguiente forma:

Tx ->  "L000:#1..."[0Dh]
Rx -> "L000:#1..."[0Dh] "R000:#1,ID,..."[0Dh]
Tx -> "L000:#2,ID,..." [0Dh]
Rx -> "L000:#2,ID,..." [0Dh]

Como véis lo que tengo es un eco por Rx de todo lo que envío por Tx ... y esto me tiene desconcertado ...  :shock:

Para realizar mi invento me dá un poco igual todo esto porque puedo filtrar perfectamente toda esta "basura" pero soy un perfeccionista :P y me gustaría poder eliminar este insidioso eco ...

¿Se os ocurre algo?

P.D. He probado a ponerle una resistencia de carga de final de línea RS485 de 120 Ohms con los mismos y frustrantes resultados ecográficos.

« Última modificación: 09 de Junio de 2006, 06:16:39 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #1 en: 09 de Junio de 2006, 06:33:55 »
No tendras habilitado el eco local del terminal.

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5500
    • Picmania by Redraven
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #2 en: 09 de Junio de 2006, 06:42:04 »
No, no nada de ecos locales. Comprobado y recomprobado.  :lol:

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #3 en: 09 de Junio de 2006, 08:12:10 »
Bueno, pues creo recordar que los puertos, también se puden configurar con eco o sin eco, ahora mismo no se como se puede deshabilitar, si consigo averiguarlo te lo digo. El eco en las lines de transmision lo que hace es introducir ruido y no recibir nada, nunca produce el efecto que tu dices. Otro posible problema seria un eventual cruce entre las patiilas 2 y 3 del conector serie del pc que introduciria la información de salida por la entrada.

Un saludo
« Última modificación: 09 de Junio de 2006, 08:24:57 por jfh900 »
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #4 en: 09 de Junio de 2006, 08:28:52 »
Hola RedPic, veo por la lectura que solo as nombrado los 2 cables de la tranmicióm, pero es muy util usar un cable de masa común a todos los equipos, para evitar diferecia de tensiones entre ellos, incluso algunas comunicaciones de este tipo no funcionan de manera esperada si no esta esta masa en cuestion.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5500
    • Picmania by Redraven
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #5 en: 09 de Junio de 2006, 08:46:58 »
Amigo Chaly:

Si, las tres masas están conectadas (todos los pines 5 de los tres conectores) porque en caso contrario no hay comunicación de ningún tipo.

Amigo Jesús:

No es un problema de configuración del puerto, porque si intercambio los COM que muestrean los Tx y Rx sin tocar nada más, o sea que conecto lo que estaba en COM2 al COM3 y viceversa, el eco se produce ahora en el otro puerto. Y no es tampoco el dispositivo, ya que si lo apago para que no conteste nada de nada, lo que transmito por el COM1 lo recibo por el COM1 ...  :shock:

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #6 en: 09 de Junio de 2006, 08:58:21 »
Luego el COM1 es el que produce el eco, osease el puerto. Prueba a mirar la bios por que creo recordar que algunas placas permiten activar el eco a traves del puerto. Donde trabajo tenemos un programa echo en "C" para transmitir datos entre ordenadores, pues algunos lo hacen con eco y otro no, siendo el mismo programa y los mismos ordenadores (modelos), y creo no me hagas mucho caso que se soluciono en la bios.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #7 en: 09 de Junio de 2006, 10:55:34 »
Hola RedPic, perdona mi imprudencia, pero no tendras un corto realizado con los cables de Tx y Rx ya sea los que salen de la PC, o cualquiera de los otros, o incluso en la PCB del adaptador que as realizado.

Espero que puedas solucionar el problema.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #8 en: 09 de Junio de 2006, 11:41:30 »
Diego, ¿no has intentado antes que ese hardware usar un monitor de puerto serie?

Estos no solo te guardan todo lo que se envía recibe en TX/RX sino también la señalización de los pines CSR, RTS, DSR, etc.

Son ideales para hacer una ingeniería inversa de un protocolo de comunicación por un puerto serie.  Incluso te 'parsean' o 'enmarcan' la comunicación para que pueda ser más legible por un humano.

Te la muestran en binario y ASCII por las dudas que la comunicación sea de un tipo o del otro.

Respecto al tema de hardware, la verdad no alcanzo a entender bien tu problema porque no me imagino como es el circuito que mencionas, ¿es una conexión directa a otro COM dentro de tu mismo PC?

Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5500
    • Picmania by Redraven
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #9 en: 09 de Junio de 2006, 13:11:19 »
Maunix:

Esas son la herramientas que uso.



Esto corresponde a ...

PC ->  "L000:#1..."[0Dh]        (¿Hay algien ahí?)
Disp -> "R000:#1,ID,..."[0Dh]  (Estoy yo y me llamo ID)
PC -> "L000:#2,ID,..." [0Dh]   (ID, te he oído asi que cállate ya)

El conexionado para "espiar" es este :




« Última modificación: 05 de Marzo de 2014, 07:19:56 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #10 en: 09 de Junio de 2006, 13:17:49 »
Diego me he mareado un poco, en tu post pones COM1, COM2 y COM3 pero en la imagen aparecen el COM3 y COM4.




PD: A modo de aclaracion de mi post anterior, lo que te comenté del analizador del puerto serie es un programa que se coloca "en medio" entre tu aplicación y el hardware del puerto COM.  Es totalmente transparente y no necesitas tener ese otro hardware que estás utilizando.  Asi tuvieras un solo COM podrías hacer todo. 
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5500
    • Picmania by Redraven
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #11 en: 09 de Junio de 2006, 17:08:34 »
Maunix:

Entiendo entonces que tu usas un soft que "monitoriza" todo lo que ocurre en un puerto COM determinado. ¿Me puedes dar su nombre para buscarlo?

P.D. Al escribir mi post original lo hice con COM1, COM2 y COM3 pero en realidad en mi PC tengo el COM1 como único puerto COM de la Placa Base y un placa PCI con otros dos nombrados como COM3 y COM4 que son los que he utilizado para monitorizar lo que ocurre en el COM1.  :P


Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5500
    • Picmania by Redraven
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #12 en: 10 de Junio de 2006, 08:15:15 »
Es una lástima que no podáis ver mi cara de desconcierto y estupefacción ...  

Voy a intentar expresarlo con emoticones  :( :shock: :?

Me he descargado e intalado el Trial del Advanced Serial Port Monitor de AGGsfotware. (Un programa del estilo del que me hablaba maunix) y sin ayuda de hardware alguno, solo monitorizando lo que ocurre en el COM1 ...

He realizado un comunicación minima tal como describía antes y ...



Lo que transmisto (Tx del COM1) está marcado en amarillo .... Toda la comunicación se dispara al tranmistir el "L000#1...." ...

¿Como es posible que se reciba el eco ANTES de transmitir?  :( :shock: :?

« Última modificación: 05 de Marzo de 2014, 07:20:51 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5500
    • Picmania by Redraven
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #13 en: 10 de Junio de 2006, 08:52:17 »
¡¡¡ Que no cunda el pánico !!!
¡¡¡ Más pruebas y más datos !!!

El soft que envía y recibe tiene algo que ver en este supuesto malfuncionamiento ...

La prueba que he hecho ahora es con otro software, el anterior hacía una regunta broadcast y si había algun dispositivo vivo en la red éste contestaba ... este soft era del proveedor de los dispositivos y no tengo control alguno sobre él.

Ahora he utilizado un soft hecho por mí mismo en Delphi y que interroga a un dispositivo en concreto, preguntándole por su versión de firmware .... ahí si sé exactamente qué es lo que escribo en el COM1 y qué es lo que espero recibir ... el resultado es :



El insidioso eco sigue existiendo, pero al menos se produce cuando se deben producir los ecos, que es DESPUES de que su original haya sido enviado, y no al revés. Por ello sospecho fuertemente que eso de recibir ANTES el eco que el envío depende de lo que está haciendo ese soft en concreto ...





« Última modificación: 05 de Marzo de 2014, 07:21:27 por RedPic »
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Eco en una línea RS232 -> RS485 ¿como eliminarlo?
« Respuesta #14 en: 10 de Junio de 2006, 10:40:24 »
Diego estuve pensando que tal vez ese 'eco' sea producido por el dispositivo esclavo y no por el software de monitoreo y eso resolvería el misterio. 

Ese ECO podría ser una forma rudimentaria de control de que la transmisión fue realizada con éxito (más allá que luego nadie le responda).

¿Cabe la posibilidad de que sea esto?  Me hace recordar al funcionamiento de los modems cuando uno les activa el ECO, por eso te hago la pregunta.

La forma de comprobarlo sería con un osciloscopio en que puedas realmente 'ver' que el dispositivo esclavo está respondiendo con una trama que sea del largo igual al eco + rta.  Incluso hasta podría haber un delay entre el eco y la rta pero eso sería de dificil o imposible comprobación con la PC porque con los S.O. tan pesados se hace imposible medir tiempos aunque sean de pocos milisegundos.


Con respecto al otro software, si bien es raro eso que te mostraba el eco antes de la transmisión, tal vez pudiera ser un bug del software en cómo mostraba la información.


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)