Lectura de comunicación RS-485

Buenos días,

Me gustaría exponer mi duda, para ver si me podéis echar una mano. Mi problema es que no sé por dónde empezar...

Tengo 2 equipos de mi empresa, que se comunican entre sí vía RS485 con un protocolo propietario. Los equipos son muy antiguos, y no queda nadie en la empresa que sepa de esto.

Me gustaría poder pinchar el bus 485 por el que se comunican ambos equipos y leer los datos a través de mi pc, y después, si hiciera falta escribir.

No sé cómo empezar, qué tecnología usar, lenguajes de programación, etc...

Muchas gracias!
 
En principio el 485 es asíncrono como el 232 pero multipunto, una primera opción es poner un osciloscopio y ver la señal, es balanceada así que un 1 lógico será "+ -" y un cero será "- +" en los dos hilos (o al revés) de ahí seguramente puedas ver el baudrate. Luego buscar un circuito adaptador tipo max232 pero para el 485 y conectar una uart de un PC con un terminal y fisgar mas.

Destripar un protocolo puede ser tremendamente complejo.
 
Como dice Scooter, destripar un protocolo puede ser muy complicado.

Yo te diria que averigues de herramientas del tipo analizadores de RS 485 que te den directamente en la PC los conteinidos de las tramas, porque hacerlo a ojo en el osciloscopio... despues de tres tramas, si no usabas anteojos de antes... los vas a empezar a necesitar.

Hay muchas de esas herramientas y algunas (para una empresa) son muy accesibles, alrededor de 500 dolares.
 
Última edición por un moderador:
Hola scooter y chclau, muchas gracias por vuestros comentarios.

Tengo claro que es una tarea complicada analizar un protocolo, una a una las peticiones y respuestas que los equipos intercambian, pero mi pregunta iba más encaminada a la tecnología a usar. Me explico:

El protocolo de comunicaciones lo tengo documentado, que es propietario de mi empresa y sobre un bus RS485, lo que me gustaría saber es qué tecnología sería la más apropiada para pinchar ese bus y tener una lectura de los datos que se intercambian ambos equipos. Si usar algún micro con este interfaz programando en Labview o algo por el estilo, o utilizar Arduino, etc...estoy despistado en este aspecto

Esto lo quiero para saber si están intercambiando correctamente los datos, y poder verificarlo, puesto que de antemano conozco qué se deben intercambiar.

Muchas gracias
 
Hola amigos. Este es mi primer post, si infrinjo una norma de antemano una disculpa. He estado analizando un sistema de barras contadoras de pasajeros de camiones. Se comunican con el bus RS485. Con un osciloscopio de dos canales he identificado las señales + y - (estas no están conectadas a gnd del osciloscopio) del bus y he obtenido lo que se muestra a continuación. La señal + esta conectada al canal 1 (amarillo) y la señal - al canal 2 (azul). Cabe mencionar que se replica la trama, aunque los voltajes se elevan.
IMG_20200806_173401.jpg
Saque el periodo de la misma y obtuve 104 uS (Adjunto imagen).
IMG_20200806_160226.jpg
Mi problema viene al momento de querer monitorear las señales en mi PC. Me arroja caracteres raros:

▒▒▒▒'▒▒▒▒▒▒▒▒▒▒;~▒▒▒▒▒▒~▒▒▒▒▒▒▒▒▒▒▒▒▒▒~▒▒▒~▒▒▒▒▒?~▒▒▒▒<~▒▒▒▒~▒▒▒▒▒▒▒▒▒▒'▒▒▒▒▒▒▒▒▒▒;~▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒O▒▒▒▒▒▒▒▒▒▒▒▒=~▒▒▒~▒▒▒▒▒▒▒▒▒▒<~▒▒▒▒~▒▒▒▒▒▒▒▒▒▒'▒▒▒▒▒▒▒▒▒▒

Ademas de que solo arroja la misma "trama" cada 500 mS. He intentado cambiar en mi PC cambiar parámetros tales como baud rate, paridad, bits de datos, stop, etc... Pero no logro tener resultados coherentes.
Para el "monitoreo en pc" utilizo PuTTy y un modulo USB-485 CH340.

También anexo la conexión que realice al momento de querer analizar los datos del bus.
Captura.PNG

La verdad no se que otra prueba pueda realizar para obtener lecturas. El equipo solo tiene dos leds indicadores y solo uno esta constantemente parpadeando (quiero pensar que es por la trama que esta constantemente enviando).
Otra duda que tengo, al querer obtener la señal diferencial ¿Debo restar A-B o B-A?

Espero puedan ayudarme. De antemano, gracias.
 
La tarjetas vienen con integrados convertidores 232-485, ademas de que las borneras tienen serigrafiado que se comunican con RS485. ¿Que otro protocolo podría ser de acuerdo a las formas de onda?
 
Si todo indica que es 485, asi lo será, si mal no recuerdo en el 485 tenias que tener los parametros similares al rs232, con el agrado del nodo, de esa manera recibias o transmitias al dispositivo correcto, eso esta bien?
Si el baud rate no coinciden es obvio que no se van a enteder entre transmisor y receptor.
Otra cosa que no recuerdo es si los dos cables se colocan mal, en el 232 obvio no funciona, pero en el 485 no lo recuerdo.
 
Si todo indica que es 485, asi lo será, si mal no recuerdo en el 485 tenias que tener los parametros similares al rs232, con el agrado del nodo, de esa manera recibias o transmitias al dispositivo correcto, eso esta bien?
Si el baud rate no coinciden es obvio que no se van a enteder entre transmisor y receptor.
Otra cosa que no recuerdo es si los dos cables se colocan mal, en el 232 obvio no funciona, pero en el 485 no lo recuerdo.

Realmente no se si los equipos estén funcionando como debieran, debido a que en osciloscopio no veo que las ondas cambien de forma o algo si bloqueo un sensor. Tengo entendido que si se iniverten los cables, simplemente la informacion no llega como se debiera. Adjunto imagen de una de las tarjetas receptoras.
IMG_20200814_123256.jpg
 
Bueno, esa es entonces la primer cuestión a resolver, estar seguros que las conexiones esten correctas, busca la info del chip para saber cual es rx y tx, y lo mismo en tu recepción
 

Dr. Zoidberg

Well-known-Papá Pitufo
Otra duda que tengo, al querer obtener la señal diferencial ¿Debo restar A-B o B-A?
Vas a tener que probar uno u otro hasta dar con el correcto, aunque lo lógico sería seguir la especificacion de la 485.

Ahora bien, esos 10kHz que has medido no significan nada, en particular por que el segmento donde has medido parece ser un tren de estados lógicos iguales.
 
Así a bulto, de la imagen yo diría que ronda 1kbs
Si las tramas completas son un byte, la escala de tiempos son 2ms/div, más o menos cada bit ocupa 1ms.
 
Última edición:
Hola, el protocolo RS485, utiliza señales diferenciales.
Lo que hay que probar de forma empírica es:
Intercambiar las señales A por B, si no estás seguro cuál es cuál. Hasta acá sólo es capa física.
Ahora viene la siguiente capa que trata sobre el formato del dato.
Debes conocer el baudrate del Maestro.
Verificar el tamaño del dato, 6, 7, 8 y hasta 9 bits.
Verificar si utiliza bit de paridad o no.
Ver si utiliza 1 o 2 bits de stop.
El único problema de todo ésto, es que si algo no es correcto, la comunicación NO funcionará, acá nunca vas a saber si te acercas o no a la solución.
 
Última edición:
Arriba