Comunicación RS-422/RS485 con pic familia 16f8XX

Luis Eduardo Sánchez

Vacuum Tube Moderator
#1
Hola a todos!

Si alguno de ustedes tiene información de como implementar el protocolo de comunicación MODBUS al pic 16f8xx y de como generar las rutinas para las direcciones en este sistema, les quedaría agradecido.

Saludos
 
#3
tweetydj dijo:
Por que no pruebas con un pic que tenga incorporado el protocolo modbus en el hard?
¿Existe tal pic? Hasta donde yo sé el modbus es un protocolo de nivel de enlace , transporte y aplicación y no de capa física, pero siempre se aprende algo nuevo.

¿Puedes aclarar tu punto?
 
#5
respecto a modbus, no existe un pic dedicado para modbus, pero existe varios codigos q lo hacen trabajar con las funciones de lectura y escritura de bit, y de palabras. estube trabajando para la generacion de un codigo propio, pero con algunas erratas. ops: en especial con los esclavos (ya q estoy armando una red)se puede implementar facilmente en un F877, pero prefiero en un F648, ya q en pocos pines (iguales q el F84) tienen las mismas funciones q el F877, incluyendo USART, hasta con el F84 se puede hacer. (Con algo de trabajo extra, pero se puede)
Apenas tenga algun fruto, les aviso.
 
#7
hola quisiera saber si me pueden ayudar, tengo que comunicar 2 pics separados por una distancia de 50m, tengo que mandarle la información de 15 entradas de uno al otro para asi accionar una serie de salidas en el otro extremo, en forma paralelo son demaciados cables y no es viable, por RS-232 es mucha la distancia, como implementaria un sistema de RS-485 para este caso?
 
#8
Hola Juanbenitez27

Si operas la RS232 a baja velocidad, es decir 4800, por ejemplo, no vas a tener problemas de distancia.

Otra solución, mejor que la anterior, es emplear RS-422, la cual es una RS-232 en modo diferencial, solo cambia el circuito integrado que debes colocar en la salida del PIC, el programa es el mismo.

En vez de un MAX232, debes utilizar un MAX1487 (o similar, hay versiones de National mas economicas). Si necesitas comunicación bidireccional (sería conveniente confirmar que los datos llegaron bien) utiliza 2 de estos integrados y te evitas el programar para entrada y/o salida y es full duplex.

Suerte y comentá como te fué. Saludos
 

Adjuntos

#9
juanbenitez27 dijo:
hola quisiera saber si me pueden ayudar, tengo que comunicar 2 pics separados por una distancia de 50m, tengo que mandarle la información de 15 entradas de uno al otro para asi accionar una serie de salidas en el otro extremo, en forma paralelo son demaciados cables y no es viable, por RS-232 es mucha la distancia, como implementaria un sistema de RS-485 para este caso?
mira man lo puedes hacer con un max 232 y con un pic 16F84 en cada extremo :cool: es relativamente facil solo tienes q saber el diagrama de tiempos y listo yo hise uno si kieres contactame me gustaria ayudarte
 
#10
Saludos. es sistema modbus es muy facil de implementar, yo tengo una red con 7 controladores hablando modbus y conectados a Wonderware Intouch. Uso RS-485 Half duplex. El pic que utilizo es el PIC18F252.

Te recomiendo utilizes modbus en modo ASCII Ya que es mas facil de trabajar.
Te recuerdo que el RS485 utiliza 2 resistencias de polarizacion (2.2K) y una resistencia de terminacion (120) en cada estremo del bus.

Pues listo, a utilizar modbus, si qusieras leer una entrada digital del pic con la direccion 05 la trama seria esta.

:05010200001FB

: empieza una trama
05 es la direccion del esclavo
01 es la funcion para leer una entrada digital
0200 es una direccion de referencia de entrada
0001 es la cantidad de entradas que quieres leer
FB es la comprobacion que se transmitio bien (LRC) que no es mas que la suma de los bytes enviados restados de 255 mas 1.

Suerte! Yo tuve exito en una semana y tras 6 meses de pruebas en campo industrial eh logrado pulirlo.
 
#13
Gregory, es mas facil implementar un RS485 con Max485 a implementar un RS232 con MAX232, ya que el ultimo requiere capacitores y 3 cables de comunicacion. EL MAX485 es muy manejable con PICS, no requiere capacitores ni resistencias (en un montaje sencillo claro) y puedes alcanzar el kilometro de transmision con solo 2 cables. Yo te recomiendo ampliamente el RS485 en HALF DUPLES (Asi ahorras cables). En internet puedes encontrar muchas referencias de PICS con MAX485
 
#14
que tal muchachos, alguien tendra información "tutoriales" ejemplos lo que sea sobre los distintos protocolos de comunicacacion tales como spi,i2c, rs-232 y rs-485..............esta bien juan benitez nunca he trabajado con rs-485 no sabia que era mas facil de implementar con max-485.. tambien he leido de un convertidor de rs-232 a rs -485. si no me equivoco es el 75176. que opinas al respecto
 
#16
maritov dijo:
Yo utilizo a menudo el 75176 en conversores 232-485 y funciona a la perfeccion, nunca un problema.Saludos y coraje
Hola, estoy intentando realizar una comunicación entre dos pic 16f877 a unos 80 mts de distancia y para eso estoy utilizando el ds75176 pero no puedo lograr una buena comunicación.
Alguién podría darme una mano con el tema?
 
#17
Hola itvboy, en estos momentos estoy realizando mi trabajo especial de grado y estoy creando un sistema de monitoreo con pics pero necesito comunicarlos por protocolo Modbus, creeme que es estado tiempo ya tratando de hacerlo pero nada..., he leido tu comentario y dices que ya tienes varios pics con modbus y hasta los comunicas a un Wonderware Intouch. Apreciaria mucho tu ayuda para realizar esta comunicacion modbus, para que sepas estoy usando el PIC16F877. De ante mani muchas gracias por futuras ayudas!!

Saludos. es sistema modbus es muy facil de implementar, yo tengo una red con 7 controladores hablando modbus y conectados a Wonderware Intouch. Uso RS-485 Half duplex. El pic que utilizo es el PIC18F252.

Te recomiendo utilizes modbus en modo ASCII Ya que es mas facil de trabajar.
Te recuerdo que el RS485 utiliza 2 resistencias de polarizacion (2.2K) y una resistencia de terminacion (120) en cada estremo del bus.

Pues listo, a utilizar modbus, si qusieras leer una entrada digital del pic con la direccion 05 la trama seria esta.

:05010200001FB

: empieza una trama
05 es la direccion del esclavo
01 es la funcion para leer una entrada digital
0200 es una direccion de referencia de entrada
0001 es la cantidad de entradas que quieres leer
FB es la comprobacion que se transmitio bien (LRC) que no es mas que la suma de los bytes enviados restados de 255 mas 1.

Suerte! Yo tuve exito en una semana y tras 6 meses de pruebas en campo industrial eh logrado pulirlo.
Hola itvboy, en estos momentos estoy realizando mi trabajo especial de grado y estoy creando un sistema de monitoreo con pics pero necesito comunicarlos por protocolo Modbus, creeme que es estado tiempo ya tratando de hacerlo pero nada..., he leido tu comentario y dices que ya tienes varios pics con modbus y hasta los comunicas a un Wonderware Intouch. Apreciaria mucho tu ayuda para realizar esta comunicacion modbus, para que sepas estoy usando el PIC16F877. De ante mani muchas gracias por futuras ayudas!!
 
Última edición:
#18
Saludo a todos.:apreton:
Ya que estan hablando del tema..necesito saber sobre este protocolo"rs422"
diagrama de tiempos como es la trama de la señal
y bits de control.. para un trabajo que debo hacer en la u
Gracias por la ayuda..:confused:
 
#20
Hola ItvBoy te agradecería si me pudieras ayudar....necesito comunicar una HMI (6070iH) a un PIC 16F877. Para esto utilizo el 75176. El problema que tengo es que: inicie el USART como en el datasheet, (modo recepción) y una rutina que monitoree el RCSTA,RCIF , que es el que se activa cuando se llena el RCREG.
El tema seria que cuando energizo todo el circuito y sin enviar ningún byte desde el hmi se setea este bit (RCIF=1) es decir que adquiere un dato sin que se lo envie. luego mando las lineas A y B del 75176 a 0 V y no sucede esta interrupcion. Te sucedio algo similar cuando realizabas tu proyecto???

Desde ya muchas gracias.
 

Temas similares