Entre 485 y 232

Atendiendo a la pregunta de :

> Hola, estoy leyendo el foro buscando información sobre programar una rutina en Visual Basic, para conectar con unos dispositivos que trabajan con RS485.

En una conexión serie, estamos intercambiando información a través de una conexión de Tu a Tu (Peer To Peer) en Ingles. Ello significa que cada trama enviada por un DCE es recibida en el otro extremo por un DCE o DTE y viceversa, electrónicamente las señales estan diseñadas como entradas/salidas, por lo que una salida de un extremo se corresponde a la entrada en el otro, en una topología 485 la primera distinción es la característica de utilizar dos hilos conectados a la electrónica a través de unas Entradas/Salidas triestado, ello significa que utilizando las mismas patillas podemos enviar y recibir datos. La señal del puerto serie trasmite la información por diferencial de voltaje entre el GND y el correspondiente transmisor/receptor, el 485 distingue los niveles por diferencial de voltaje entre sus dos hilos (+) y (-), por lo que es mas inmune a las interferencias, su comportamiento es mucho mejor que el 232 en entornos industriales y evidentemente su cableado mucho mas sencillo.

Por sus características de impedancia, el 485 permite la conexión de hasta 32 dispositivos y creo que hasta 100m, mientras el 232 solo permite la conexión de 1 dispositivo y creo que el máximo según la especificación es de 15m.

La primera particularidad de cualquier dispositivo 485 es que debe estar preparado para configurarse como un único dispositivo dentro de la red y además solo uno de los dispositivos deberá disponer del rol de “Host” o anfitrión de manera que el resto de dispositivos solo participaran en el intercambio de datos respondiendo a las solicitudes del anfitrión.

Por poner un ejemplo, imaginemos un PC con un conversor USB/485 configurado a través de un puerto serie, y este tiene conectadas 4 basculas numeradas del  ’01’ al ‘04’… el software del PC, para leer el peso de todas las basculas deberá componer las tramas direccionando a cada una de ellas y recibiendo la información de una en una…

Imaginemos el formato de la trama de petición : PPUN
Donde PP = “Pedir Peso” y UN = Numero Unidad de Bascula

PC -> enviara : PP01
PP01 -> Respondera :  RB011,500

Donde RB = “Resultado Bascula”, 01 es la unidad de bascula que responde y 1,500 los Kilos.

En la siguiente operación el PC deberá enviar : PP02.. Para recibir el peso de la segunda bascula y así sucesivamente.

Espero vuestras preguntas para ir matizando sobre el tema… pues es mas amplio y espefico de lo que parece.

Saludos,
Pep Lluis,

Published Mon, Feb 9 2009 5:03 by peplluis
Filed under:

Comments

# re: Entre 485 y 232

Wednesday, March 31, 2010 11:12 AM by Araxhiel Khy

Hola PepLuis... he estado siguiendo el blog desde hace días, sobretodo viendo los posts referentes a la comunicación serial =D creeme que me han servido de mucho.

Ahora bien, tengo unas cuantas dificultades técnica y quisiera saber si podrías, si no explicarme tan ampliamente como queda demostrado que lo haces, al menos medio orientarme en que pudiera estar mi error.

En mi proyecto estoy realizando una aplicación de Control y Monitoreo, la cual se enlaza a un dispositivo vía RS485. Constantemente tiene que estar enviando solicitudes de información del estado de dispositivo y recibiendo y ordenando/interpretando dicha información.

El problema radica en que, como hay que estar enviando/recibiendo datos muy seguido, no se por que razón, al 'x' tiempo de estar funcionando la aplicación, esta se congela y ya no da señales de vida.

Habia implementado que, a base de Timers, cada 'x' tiempo solicitara la información, pero pues, llegaba a un punto en que las diferentes consultas coincidían en tiempo y pues la aplicación 'tronaba', después decidí unificar todo en un solo Timer y bajo condicionales (IF...) ir desplegando los demás métodos cuando fuera necesario (cada 45 segundos, cada 3 minutos, etc...) y además detener y reiniciar el ciclo del contador para evitar una congestión en el proceso de Envío/Recepción, pero aun así (y ante mi incredulidad absoluta, ya que, según yo, eso proporcionaría un mayor control al ciclo de consultas del que ya existía) la aplicación, después de algunos cuantos ciclos, se daba el lujo de tronar.

Así que pues, viendo el panorama, que seria lo que, dado tu ojo experto, me esta dando problemas? O que recomendación tienes para tales situaciones =S ya que la verdad, pues aun soy bastante inexperto en esto y no creo que (honestamente hablando) a estas alturas haga bien las cosas xD

Pero bueno, agradezco de antemano toda la ayuda que has brindado con tus posts y tambien la atencion recibida =D para cualquier cosa quedo a tus ordenes.

Saludos!

# re: Entre 485 y 232

Friday, April 23, 2010 4:57 AM by peplluis

Hola Araxhiel Khy,

Por favor enviame una nota a traves de [Contact] y revisamos tu tema en privado.

Saludos,

Pep Lluis,

# re: Entre 485 y 232

Tuesday, November 02, 2010 4:48 AM by Leo

Hola, soy novato en esto de la programación y tengo unas dudillas con el asunto de la comunicación serie. Se me ha encargado comunicar el PC con un equipo mediante puerto serie rs485. Para comunicarme con dicho equipo debo enviarle una trama con la siguiente estructura:

Inicio|Longitud|Aparato|Comando|Datos|Suma de chequeo

Un ejemplo de la trama rellena sería:

Inicio: 0x80 (3 byts iguales)

Longitud: 0x03 (Nº de byts en campo - Datos)

Aparato: 0x01 (1byt)

Comando: 0xBF (1byt)

Datos: Según el datasheete del fabricante "Contiene el valor del comando consultado (máx. 127 bytes)"  - Aun no sé muy bien de que va esto y cómo sacar su longitud.

Suma de Chequeo: ¿Cómo hago para sumar todos los campos de la trama? y que se actualice en la trama.

En resumen, necesito enviar esa trama y mirando los ejemplo de otros hílos, de su blogs, podría hacer lo del array buffer, pero como hago si quiero cambiar el contenido de dicha trama durante el proceso de ejecucón del programa. ¿y en cuanto a la recepción de la información desde el equipo?

Si conoce alguna web o tutorial que me pueda ayudar le agradecería que me la facilitara.

Un saludo y gracias por todo.

Enhorabuena por su web.

PD: En principio se va a emplear Visual Basic.

# re: Entre 485 y 232

Tuesday, November 09, 2010 12:04 PM by peplluis

Hola Leo!

Creo que como en otras ocasiones, lo mas adecuado es aconsejarte el libro gratuito que tengo para descargar en :

msmvps.com/.../robot-dispensador-de-msdn-video.aspx

Tambien disponenes de un ajemplos para enviar/recibir tramas variables asi como realizar las tareas de suma de chequeo en :

msmvps.com/.../default.aspx

No dues en contactar de nuevo si tienes alguna pregunta concreta.

Saludos,

Pep lluis,

Leave a Comment

(required) 
(required) 
(optional)
(required) 
If you can't read this number refresh your screen
Enter the numbers above: