Autor Tema: RS485  (Leído 4779 veces)

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

Desconectado _Canito_

  • PIC12
  • **
  • Mensajes: 74
RS485
« en: 13 de Febrero de 2004, 17:53:00 »
Hola a todos,

Estoy intentando realizar comunicaciones RS485 con el DS75176.

Me está   en-lo-que-cien-do ....  

Estoy utilizando un F873 como master y un F84 como escalvo.

El master se inicia en modo "Envío" (pin DE a 1) dado que va a comenzar interrogando a los esclavos enviandoles un numero.

Una vez enviado el dato conmuta a modo "Recepción" (Pin DE a 0) hasta recibir la respuesta.

El esclavo se inicia como modo "Recepción" (Pin DE a 0).
El esclavo al recibir el dato, responde al master. Para esto conmuta a modo "Envio" (pin DE a 1). Envia el dato y vuelve a modo "Recepcion".

El problema que tengo es que las comunicacion solo funciona desde master a esclavo.

Para verificar que no es un problema electronico hice algunas pruebas donde el esclavo solo envia datos al master cada 1 segundo y el master solo recibe los datos y los envia a una PC y funciono bien.

Cuando pongo en marcha el sistema completo solo funciona desde master hacia esclavo.

¿Alguien sabe que estoy haciendo mal?

Algo mas. Los pines 2 y 3  RE y DE del DS75176 estan puenteados.
¿Esto esta bien asi?

A ver si alguien puede darme una mano.
Gracias.
Canito

Desconectado elreypic

  • PIC12
  • **
  • Mensajes: 79
RE: RS485
« Respuesta #1 en: 13 de Febrero de 2004, 18:50:00 »
Que tal Canito, déjame ver si entendí. Mencionas que tienes problemas cuando conectas el sistema completo, o sea que tienes un sitema multipunto (un master y varios esclavos) correcto?.

Ya colocaste las resistencias de terminación en cada extremo de la línea de transmisión?
Si no, entonces debes agregar dos resistencia, una en cada extremo del par trenzado de los cables. Estas resistencias deben ser de 120 ohms.

Estás utilizando alambre o cable de par trenzado?

Me podrías especificar mejor el protocolo de comunicación, es decir la forma de mandar los datos, porque para mí parece que existe una colosión de datos, pareciera ser que envías el dato a un esclavo, este lo reconoce, y transmite sus datos. La pregunta es, entre esos datos que envía el esclavo, no es un dato que active a otro de los esclavos?

Espero te sirva esto.

Mandame un mensaje privado y con gusto te ayudaré si hay mas dudas.
Yo te expreso las mías y espero mas información de tu parte.

Saludos.

....No busques pretextos para no hacer las cosas, mejor busca razones para hacerlas.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: RS485
« Respuesta #2 en: 14 de Febrero de 2004, 00:34:00 »
Podríais seguir la cadena de forma visible para todos?

Me interesa el tema de comunicaciones 485 con un maestro y varios esclavos, estoy bastante verde y me gustaría aprender.

Un saludo

Desconectado _Canito_

  • PIC12
  • **
  • Mensajes: 74
RE: RS485
« Respuesta #3 en: 14 de Febrero de 2004, 09:43:00 »
Hola,

Lo que quiero realizar es una red formada por 1 master y varios esclavos (aproximadamente 30).

Por el momento solo estoy armando en el protoboard el master con 1 solo esclavo.
Ahora estoy utilizando alambre pero en el montaje final utilizaré cable par trenzado.
¿Esto puede estar afectando en algo?.
¿En que difiere que este utilizando cable o par trenzado?.

Las resistencias las tengo colocadas de la siguiente manera:

En ambos extremos coloqué una resistencia de 150 ohms entre los pines 6 y 7 del 75176, es decir, entre los 2 cables del par diferencial.

Y solo en el extremo del esclavo, coloque 2 resistencias de 650 ohms: una en el pin 7 a masa y la otra en el pin 6 a positivo.
(tengo entendido que solo se colocaban en un extremo).
¿Esto es correcto?

El protocolo que estoy utilizando es el protocolo RS232.
El master solo envia el nro de esclavo y el esclavo responde con solo un byte.

Para evitar la colision de datos entre esclavos estoy haciendo lo siguiente:
El master envia un byte de consulta y el esclavo correspondiente consulta el estado de unos sensores y responde con 1 byte, el resto de los esclavos permanecen temporizando 500 mS.  Por esto mientras temporizan, no "escuchan" el dato que esta siendo enviado por el esclavo correspondiente. Y luego vuelven a "escuhar".

(De todas maneras, en este momento estoy probando con solo 1 esclavo).

El master consulta cada 1 segundo. Tiempo mas que suficiente para que todos los esclavos vuelvan al modo "recepcion".

¿Alguien tiene experiencia en redes RS485  con PIC?

Un saludo
Canito

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: RS485
« Respuesta #4 en: 14 de Febrero de 2004, 11:06:00 »
Hola _Canito_  y elreypic.

Ese protocolo, que supongo que es casero es más o menos lo que yo pensaba implementar. Pero lo que nos gustaría saber a _Canito_ y a mí es como funciona el protocolo real para redes 485.

Yo tengo conectados ahora, un Maestro y un Esclavo. En los finales de línea tengo resistencias de 120 ohms entre A y B. Las dos resistencias de 650 ohms no las tengo.

He hecho una prueba mandando vía 485 los valores del PORTB de Master al PIC Esclavo y que este los refleje en LEDs conectados a su PORTB y funciona bien.

El siguiente paso creo que será comprarme un bifurcador para conectar un segundo esclavo a la línea.

Antes de implementar el protocolo casero me gustaría que alguién nos dijese como se debe de hacer exactamente.

Un saludo

PD. Se me olvidaba. Yo uso un MAX485 y los pines de control DE y RE no los tengo puenteados. Voy a probar eso que a tí no te funciona Canito, es decir la comunicación Esclavo-->Maestro

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: RS485
« Respuesta #5 en: 14 de Febrero de 2004, 11:57:00 »
Ni flores con este protocolo , pero parece ser que solamente los esclavos tienen que tener los pines 2 y 3 RE y DE punteados.
En el master pin 2 RE está a masa .

Una muestra (aunque con pcs)
http://www.lvr.com/files/485net.zip

un saludo .

Desconectado jorgeansuini

  • PIC18
  • ****
  • Mensajes: 340
RE: RS485
« Respuesta #6 en: 14 de Febrero de 2004, 13:33:00 »
Buenas:
Tal como plantea la conexión Canito, la comunicación 485 deberia funconar, yo tengo funcionando muchas conexiones de esa manera con cable mallado y lo hace sin problemas.-
Volviendo al tema de los micros ¿Canito tenes separado en cada micro TX y RX osea por pines diferentes? por otro lado si conectas directo los pines de lo micros ¿se comunican?.-
podes probar de dejar fijo el 485 del master como transmisor y el 485 del esclavo como receptor y ver si el receptor "recibe" lo que espera,en caso de ser válido,que prenda un led por eljemplo.-
Si que res publicar el código le pegamos una probada.-
Saludos
Jorge

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: RS485
« Respuesta #7 en: 14 de Febrero de 2004, 14:04:00 »
yo tengo los micros funcionando bajo RS485 sin problemas con el protocolo modbus...

Canito estas usando la Usart por hardware ???

que codigo usas??

Desconectado _Canito_

  • PIC12
  • **
  • Mensajes: 74
RE: RS485
« Respuesta #8 en: 14 de Febrero de 2004, 16:09:00 »
Hola a todos,

Por fin funcionó!!!!!!

El unico cambio que realicé fue, como dice pacalaconcurso, utilizar el modulo USART del F87x (master)  para recibir los datos desde los esclavos.

Antes lo estaba realizando por codigo. Esperando el bit de inicio.

Ahora activo la usart y quedo esperando por una bandera propia que indica que el dato ha sido recibido.
En la interrupcion por recepcion por usart pongo una bandera a 1 antes de volver de la interrupción.

El tema de recepcion por codigo deberia funcionar ya que si comunico los 2 pics directamente funciona perfectamente.

A todos Gracias
Un saludo
Canito

Desconectado elreypic

  • PIC12
  • **
  • Mensajes: 79
RE: RS485
« Respuesta #9 en: 15 de Febrero de 2004, 09:43:00 »
Que tal a todos. Canito, que bueno que ya te funcionó. Yo tengo experiencia en el uso de redes RS-485, esto debiso a que en la empresa donde laboro me tocó parrticipar en un proyecto bastante interesante, en el cual tenenos una PC como master y podemos tener hasta 255 dispositivos colgados en la red, en una distancia de 4000 pies (aproximadamente 1.2 K). El protocolo que se usó es la de detección de dirección, la cual usa un noveno bit, que es un protocolo infalible a las colisiones. El cableado se hizo full-duplex, aunque en relidad los datos viajan en forma half-duplex. El Baud rate del istema es de 57600 bps. Y ya está probado en una distancia de 1 K!!! y no tiene problemas. Como lo mensionaba antes es muy importante utilizar cable o alambre de par trenzado, Ya que las señales que viajan son diferenciales, lo que produce una alta inmunidad al ruido, el problema de usar cables en líneas paralelas se refleja una capacitancia parásita la cual se refleja en un retraso considerable del dato, por lo que es perjudicial en la transmisión de datos usando este protocolo RS-485.

Hoy en día el sistema se ha probado a un Baud rate de 1 Mpbs (un millón de bits por segundo!!!!), en una distancia de hasta 120m, debido a la restrición del RS-485, pero esa distancia se puede crecer usando repetidores, que son muy sensillos de construir.

Quisiera platicarles más del proyecto, pero como está protegido por la propiedad intelectual, resultaría peligroso para la empresa donde laboro. Pero lo que si puedo compartir al 100% es mi experiencia en el uso de las redes RS-485.

Yo les recomendaría si pudieran comprar el libro de SERIAL PORT COMPLETE de Jan Axelson, el cual tiene algunos capítulos que habla de las redes RS-485, su consideraciones físicas, de alambrado, etc. Tambén pueden vistar la página web de la editorial de este libro es www.lvr.com

Bueno pues espero le sea de ayuda esta información, pero sino, entonces me pongo a su disposición para ayudarles en este tema.

...No busques pretextos para no hacer las cosas, mejor busca razones para hacerlas.

Desconectado _Canito_

  • PIC12
  • **
  • Mensajes: 74
RE: RS485
« Respuesta #10 en: 15 de Febrero de 2004, 15:19:00 »
Hola elreypic,

Te comento que si bien puede hacer funcionar el 485 todavia hay algunas cosas que no me conforman. Recien pude dar el primer paso en este tema.
Ahora hay que corregir algunas cosas. Por ejemplo:

Estoy utilizando el 485 con 5V pero tengo entendido que el 485 trabaja con 12V. La pregunta es :
¿donde se conectan los 12 V?, ¿en la alimentacion del 75176?

Ademas estoy pensando utilizar un protocolo para los datos.
Estaba pensando en utilizar datos de 9 bits.
Lo que no tengo claro  es si el noveno bit puedo procesarlo a voluntad.
Tengo entendido que  el noveno bit se utiliza como "bit de paridad" para control de errores de comunicacion y, al enviar un dato, el estado de este bit depende de un calculo y la recibir el dato, se realiza otro calculo para determinar si hubo error de comunicacion.
Estos calculos lo realiza el driver del puerto y el usuario no tiene acceso a este bit, ni para leerlo, ni par aescribirlo.
La pregunta es: ¿como se utiliza el 9 no bit para armar un protocolo?

No tengo claro si, tanto el driver de la PC como la USART del PIC te permiten modificar el noveno bit o si lo procesan de manera automatica.

Un saludo
Canito