Autor Tema: Enviar datos con RS485  (Leído 4683 veces)

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

Desconectado nicodonte

  • PIC10
  • *
  • Mensajes: 2
Enviar datos con RS485
« en: 27 de Noviembre de 2009, 06:07:08 »
Hola, soy nuevo en el foro y nuevo también en la programación de PICs, llegue a Niple buscando info acerca de un proyecto que quiero armar. Por lo que estuve viendo, desde Niple se puede configurar un PIC como maestro y otro PIC como esclavo desde la interfaz RS485, vi que el maestro puede mandar comandos, pero me encontré que sólo puede enviar 5 registros (bytes?), yo estaría necesitando enviar alrededor de 20 bytes entre el maestro y los esclavos (a cada uno de ellos), los datos a enviar serían una comando que le diga a cada esclavo que va a llegar un paquete de 20 bytes con un nombre que tiene que poner en un display de LCD (aunque si hay forma que sea PLED o VFD(Vacuum Fluorescent Displays) mucho mejor). Estos datos de 20bytes vienen desde un programa que pienso armar en visual basic desde una PC por RS232, que por lo que vi es mas facil para enviar los datos desde la PC al PIC. O sea el PIC maestro tiene que tomar el dato desde la PC por RS232 y enviarlo a cada PIC esclavo por RS485. Es muy dificil enviar mas de 5 bytes por RS485 con Niple o es una limitación de la DEMO?

Por otro lado, en ciertas ocaciones necesitaría enviar el mismo dato a todos los esclavos (un paquete de 32 bits), se puede hacer de alguna manera? (la forma que estoy pensado es hacer un comando llamemoslo "X" que obligue a todos los esclavos llamarse de la misma manera y que de esta manera todos reaccionen cuando les llega el paquete de 32 bits, y otro comando "Y" para que vuelvan al estado de identificación única y se puedan volver a comunicar punto a punto entre el maestro y cada esclavo, estoy delirando o se puede hacer eso?)

Alguien me puede decir el costo de Niple? porque en la página no figura.


Ah! El micro que estoy queriendo usar es el PIC16F873 tanto para el maestro como para los esclavos.

Gracias de antemano!!
Saludos.
Nico. :P

Desconectado Mike79

  • PIC12
  • **
  • Mensajes: 72
    • Mike79
Re: Enviar datos con RS485
« Respuesta #1 en: 30 de Noviembre de 2009, 15:17:01 »
He, he trabajado con proyectos parecidos, yo te aconsejo, que mejor uses un convertidor de 232 a 485 ó de USB a 485, también venden tarjetas PCI de 485 y tarjetas PCMCIA para laps, igualmente de 485.

Si no tienes dinero, busca en internet y arma un convertidor. De esta forma, te olvidas de tener un maestro de intermediario y tienes puros esclavos.

Si, hasta donde se, la limitante de 5 paquetes solo es en el demo.

Por otro lado, en Redes (TCP/IP), cuando deseeas enviar un mismo paquete a todos los esclavos, simplemente usas una dirección "Magica", por ejemplo 255.
Entonces cuando digas la dirección 255, todos los esclavos tienen obligación de hacer ese comando. Pero.... ten cuidado si los esclavos contestan, por que si todos contestan al mismo tiempo, tendrás lo que conocemos como coliciones de paquetes, es decir, como todos intentan hablar al mismo tiempo, solo escuchas ruido.

Obviamente, nadie podría tener la dirección 255.

Por ejemplo en tcp/ip usamos: ping -b 192.168.0.255, para hacer pings a todas las computadoras dentro de una red local, claro, suponiendo que tu red local empieza con 192.168.0.    Pero en las redes locales, no importa que todos contesten al mismo tiempo, el protocolo lo soporta y no se hacen pelotas.

En una conexión 485, si 2 ó más quieren contestar, entonces se hace un ruidero enorme, y no se entiende nada.

Espero haber respondido tus dudas.
Saludos!
-
Mike79

Desconectado nicodonte

  • PIC10
  • *
  • Mensajes: 2
Re: Enviar datos con RS485
« Respuesta #2 en: 30 de Noviembre de 2009, 15:31:16 »
Hola, gracias por responder. El maestro lo necesito tener, ya que toma la señal de 32 relés y las tengo que enviar a todos los displays, el display que coincida con el relé activado se debe encender un led en el display indicando que ese relé fue accionado. De ahí mi necesidad de tener un maestro, para no estar dependiendo de una pc que haga el barrido de los 32 relés. Tengo pensado hacer un barrido con el PIC utilizando 4 latchs octales para almacenar el estado de relé y así almacenarlos en 4 registros del PIC, luego estos 4 registros trasmitirlos a todos los esclavos. No tengo bien el claro como hacer desde el Niple para que los esclavos respondan a 2 números identificatorios distintos.

Por eso pensaba usar el maestro para hacer el vinculo entre la pc y los esclavos, pero crees que sea mejor  adaptar el 232 de la pc a 485 y hablar directamente con los esclavos? Se puede tener 2 maestros? No tengo necesidad que los esclavos contesten, solo tienen que tomar los datos y procesarlos.
gracias!!
saludos.

Desconectado Mike79

  • PIC12
  • **
  • Mensajes: 72
    • Mike79
Re: Enviar datos con RS485
« Respuesta #3 en: 30 de Noviembre de 2009, 21:07:20 »
Puedes tener los esclavos, el maestro y la PC conectados por 485 al mismo tiempo.

Pero de nuevo te repito, si dos o más intentan hablar al mismo tiempo, eso te va a dar ruido.

Por otro lado, el 485, solo permite tener conectado un máximo de 32 dispositivos por cada canal 485, esto es debido a la impedancia.
Si la distancia entre los dispositivos es muy corta, pudieras tener más de 32 dispositivos, pero igual y te empiezan a dar problemas
en la comunicación, así que ten cuidado.

Creo que tu idea esta bien, conectar el maestro que hable con los esclavos, eso no hay problema.
Yo he usado, dipswitchs para decir la dirección, hago que mi micro al prender, lea los dipswitchs y de esta forma se la dirección.
También puedes crear un comando para darle la dirección, y entonces, conectas dispositivo por dispositivo, mandándole uno por uno la dirección y ayudándote con la eeprom del micro, para guardar en esta, la dirección del esclavo, así la próxima vez que prendas el esclavo, ya sabe cual es su dirección.
También podrias, cuando programas el micro, indicarla la dirección directamente desde el programador, llenando para esto, el buffer del eeprom.

En fín, creo que hay varias formas de hacerlo, incluyendo poner la dirección directamente en el progrma del micro, y compilar 32 vecez el programa, para cada esclavo.

Si tienes más dudas, pregunta
Saludos!
-
Mike79