Autor Tema: Falla comunicacion RS485 con Pic 16f877A  (Leído 5769 veces)

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

Desconectado scrwld

  • PIC12
  • **
  • Mensajes: 56
Falla comunicacion RS485 con Pic 16f877A
« en: 28 de Junio de 2010, 18:59:14 »
hola a todos, espero me puedan ayudar.

el punto tengo una rutina de comunicacion que funciona correctamente con RS232, pero al cambiar el interfase a RS485 deja de funcionar.

he leido todos los post sobre RS485 y por lo que veo a todos ler funciona, pero en mi caso nada que ver. luego de leer de nuevo las especificaciones de los max232 y max485 saque en conclusion que el problema esta en que los max232 son inversores pero los max485 no, por lo que tome una compuerta 7414 para ver si no estaba errado y funciona, pero comienzo a tener errores, se cae la comunicacion. para leer el puerto lo hago  desde una interupcion lo ocaciona una pausa que agregue luego de activar los pines DE/RE del MAX485 en el momento de responder al master:

porte.2 = 1
pause 2
for i = 1 to 6
txreg = bufer
next
pause 2
porte.2 = 0


mi pregunta a  todos aquellos que usan el RS485 utilizando los Max485 que fue lo que hicieron, quizas no veo donde debo realizar el cambio, me inclino mas al hardware que al software.

adjunto imagen de las conexiones.

 
http://www.subirimagenes.com/otros-pic16f877232485-4728280.html


Desconectado mbufarini

  • PIC10
  • *
  • Mensajes: 5
Re: Falla comunicacion RS485 con Pic 16f877A
« Respuesta #1 en: 28 de Junio de 2010, 21:24:42 »
La conexión por hardware que hay en el esquema es correcta, es la misma que utilizo yo, sin inversores ni nada por el estilo.
Lo que tienes que tener en cuenta es en mantener siempre en bajo la señal que va a las patas 2 y 3 del MAX485 y una vez recibida la trama y antes de responder pasarla a alto, esperar un ratito (yo espero unos 5 bit time) y luego si enviar la respuesta (simpre con la señal DE/RE en alto) y al terminarla volver a ponerla en bajo para poder recibir.
La interrupción que tenés que usar es la de recepción.

Otra cosa que tenés que tener en cuenta y que no nos contás es la distancia y velocidad del enlace, para probarlo te conviene que sea en corta distancia y en unos 9600bps. Además tenés que adaptar la impedancia de la línea, es decir, colocar resistencias de 120ohm en los extremos del enlace (una entre los pines 6 y 7 del MAX485 del transmisor y otra en el del receptor).

Espero que sea de tu ayuda.
Un abrazo.

Mauro

Desconectado scrwld

  • PIC12
  • **
  • Mensajes: 56
Re: Falla comunicacion RS485 con Pic 16f877A
« Respuesta #2 en: 30 de Junio de 2010, 03:08:40 »
gracias mauro por tu respuesta.

hice una prueba invirtiendo las conexiones del lado rs485 antes y es lo correcto A-A B-B, ahora A-B B-A y funciono esto me lo recomendaron en otro foro hay una persona con un problema similar y postee mi solucion con el inversor; todavia estoy buscando porque funciona de esta manera aunque es ilogico en realidad tiene que ver con la polaridad de los hilos A y B siendo B positivo con respecto al A. Mañana lo probare al conectarlo a un PLC a ver como se comporta.

En relacion a las resistencias de fin de linea la norma indica que se deben usar cuando las redes son largas 50,100 o mas metros. Yo hasta la fecha no he tenido problemas de colocar o no esas resistencias, tengo unos cuantos años trabajando con modbus y esta es la primera vez que uso un microcontrolador para emplearlo en una aplicacion industrial. Todavia me faltan dos cosas por implementar la primera el cambiar la paridad y la otra el resetear el micro a voluntad via software si tienes alguna idea sera bienvenida.

tengo implementado el cambio develocidad entre 9600 y 19200, ademas del cambio de la direccion del esclavo, el llevar una cuenta de las veces que ocurren errores de comunicacion todo esto lo guardo en la eeprom .

luego que realize las pruebas con el PLC posteare los resultados.

saludos

luis lopez


Desconectado andresm48

  • PIC10
  • *
  • Mensajes: 5
Re: Falla comunicacion RS485 con Pic 16f877A
« Respuesta #3 en: 03 de Julio de 2010, 09:51:49 »
Hola a todos
un detalle que agrego por propia experiencia sobre este tema.
la linea RX del 485 ( la patita1) debe ir polarizada a +5v a travez de una r de 1K
las lineas A y B ( patitas 6 y 7 ) deben ir seriadas con unas resistencias de 54 ohms cada una, amen de la de 120 ohm en paralelo entre ellas.
esto me dio buenos resultados ya que tenia malas recepciones.
saludos
andres.

Desconectado scrwld

  • PIC12
  • **
  • Mensajes: 56
Re: Falla comunicacion RS485 con Pic 16f877A
« Respuesta #4 en: 08 de Julio de 2010, 02:06:21 »
hola a todos.

gracias por sus respuestas. La tarjeta funciona perfectamente, la probe conectada a una red con 20 esclavos modbus utilizados en un sistema de ahorro energetico instalados por la empresa para la cuyal trabajo.
el proximo paso es la implementracion del cambio de paridad.

les dejo unos enlaces que les seran de utilidad para ampliar informacion sobre las normas rs485 y el protocolo modbus.

http://alciro.org/alciro/RS-485_16/EIA-RS-485-especificaciones-norma_328.htm

http://www.bb-elec.com/technical_library.asp

saludos

luis lopez