Autor Tema: comunicacion full duplex 16f628  (Leído 3016 veces)

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

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
comunicacion full duplex 16f628
« en: 19 de Abril de 2004, 20:49:00 »
Aver este tema tannnnn solicitado... si lo podemos desenrredar..
Bueno requiero no una mano si no varias manos...

Requiero comunicar varios modulos sobre una linea rx y tx para que se comunique con una computadora... Esto Tiene que ser full duplex en tiempo real y RS485.
Entonces....
El micro que uso es el 16F628 y quiero usar el Usart de este micro los dos pines que tiene el micro.
Los Modulos deben transmitir la informacion a medida que generan el evento sobre el bus que comunica con la computadora  por su puesto la informacion de los modulos no debe chocar ni perderse esto es que antes de que transmita uno espere que el otro termine etc ... despues de recibir la data el computador debe enviar un calculo a los modulos para que cumplan una funcion XX igual sin chocar las datas y sin que se pierdan. Toda esta informacion Via RS485 ya que las distancias pueden superar los 20 metros.
Quien me ayuda con esto por que estoy mas enrredado que pollo comiendo pellejo...... jajaja y yo creo que asi muchos tambien interesados en esto podran encontrar respuesta a sus problemas..
Gracias..

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: comunicacion full duplex 16f628
« Respuesta #1 en: 23 de Abril de 2004, 22:10:00 »
Hola psicopic,

He trabajado frecuentemente con bus 485, incluso con 100 nodos en un mismo cable, pero nunca he funcionado de forma tan eficiente como la que pretendes. La experiencia que tengo es de hacer pooling desde el PC hasta los nodos consecutivamente y estos van respondiendo de su estado. Para aproximadamente 100 nodos a 9600 vengo tardando unos 4 segundos en hacer una ronda por todos los nodos. Esto n es tiempo real, pero para muchas aplicaciones podría ser tiempo real. Si el número de nodos desciende el tiempo de muestreo desciende y nos aproximamos más al llamado tiempo real.

En primer lugar planteas el tema de full duplex. Esto va a encarecer tu hardware, ya que necesitas 2 MAX485 o uno doble, también el cableado y la instalación es más cara. Pero si es necesario, pues se hace y ya está. Circuito Full Duplex lo encuentras en el Data Sheet de Maxim.

En segundo lugar el modo de funcionamiento debe ser multimaster, es decir, cada uno transmite cuando tiene algo que decir. Esto produce momentos que la red está sin tráfico y otras que se satura. Es el precio que hay que pagar por el desorden y la inmediatez. Nunca he ensayado algo así, pero lo veo del siguiente modo: creo quehabría que implementar un comando de "cojo línea" y "libero línea". De este modo supongamos que la linea está en reposo, entonces sucede un evento en un nodo, ese nodo antes de transmitir info manda un "cojo linea" despues transmite la información a una dirección y cuando termina dice "libero línea" De este modo todos los nodos saben que la línea está cojgida o no y si la pueden usar. El problema son las colisiones que las habrá, pero esto se puede hacer con un pequeño retardo aleatorio en cada nodo de modo que es muy dificil que coincidan dos, pero aun así habrá colisiones. Tambien hay que tener en cuenta si se van a enviar grandes cantidades de información fijar unos tiempos máximos de ocupación consecutivos para impedir monopolizar la línea.

Creo que el mayor trabajo que hay que hacer aquí es en un protocolo robusto con un control de acceso al medio por soft.

Pienso que habría que definir bien las necesidades reales:

1.- Numero máximo de nodos en el sistema.
2.- Cantidad de información a enviar
3.- Velocidad necesaria para transmitir esa información.
4.- Definición del protocolo y control de acceso al medio

Bueno, esto que se escribe tan pronto puede llevar varias semanas de desarrollo y pruebas. Es una idea para empezar.

Saludos
Ricky
Madrid - España.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: comunicacion full duplex 16f628
« Respuesta #2 en: 24 de Abril de 2004, 00:48:00 »
Hola Ricky.

Me llama la atención tu proyecto de comunicación de 100 nodos. ¿Puedes contarnos en qué consiste y para qué sirve?

Gracias

Desconectado pikman

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 679
RE: comunicacion full duplex 16f628
« Respuesta #3 en: 24 de Abril de 2004, 15:19:00 »
Hola piscopic, mira creo que lo que tienes que implementar es un protocolo, ya sea standart o algo de tu propio diseño, para el caso especifico del RS485, como dice RGL, tendras que usar 2 pares, para esto yo he porbado el sn75159 de texas, de cualquier modo tambien tu software debera estar preparado para esto, pues el 16F628 no puede transmitir y recibir a la vez, entonces tu protocolo debera inhibir ( no se si esta bien escrito ) con algun indicador en la trama de datos que nadie transmita en ese momento, puedes usar las interrupciones del puerto para gestionarlo, de cualquier manera no se cuantos datos vas a manejar pero creo que usando un solo par en modo half-duplex a 9600, puedes interrogar una gran cantidad de nodos, mi pregunta es porque debe ser fullduplex.

saludos

Ariel
saludos
PikMan

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: comunicacion full duplex 16f628
« Respuesta #4 en: 24 de Abril de 2004, 18:27:00 »
hola nocturno,

En lineas generales los equipos miden ciertos parametros ambientales en un recinto y toda esta informacion se envia al PC. No son muchos datos los que se transmiten y tampoco es muy importante el tiempo que se tarda en hacerlo.

La informacion se analiza en el PC y se sacan estadisticas.

Saludos
Ricky
Madrid-Espa~a

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
RE: comunicacion full duplex 16f628
« Respuesta #5 en: 25 de Abril de 2004, 08:16:00 »
EPALE GENTE como estan un millon por los comentarios creo que mas de uno esta mosca de este tema....
Bueno....
En realidad no se que hare.. si hago que la pc pregunte a cada pic si tiene informacion nueva o si cada pic que tenga informacion la transmita...
Esta ultima es la que mas me gusta pero... tendre que usar el pin RTS de la computadora asi como un pin adicional en la red de pic que verifique esta linea antes de transmitir y si esta ocupada pues tendra que esperar que se libere...
esta comunicacion la quiero hacer a 9600 lo que si no me cuadra es lo siguiente...
como hago el rs 485 solo transmitiendo ya que uno de los dispositivos que le conectare a este pic es un lcd serial que solo recibe no transmite data. que distancia podria cubrir si uso solo el USAR de el pic sin max 485 0 max 232 o que otro medio puedo usar para comunicar la salida del usart serialmente que no sea tan traumatica de hacer...

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: comunicacion full duplex 16f628
« Respuesta #6 en: 25 de Abril de 2004, 13:12:00 »
Si el LCD solo recibe debes cerciorarte de que lo que recibe es bueno y no basura, con lo que necesitas poner algo (un Pic entre medias que analice el protocolo y compruebe que los datos están lllegando bien. También en bus 485 tienes que tener los dispositivos (nodos) identificados con una dirección para saber a cual va la info que mandas. Si solo tienes un nodo no necesitas la direccion pues siempre transmites al mismo.

Si usas salida de la USART directa no conseguira´s más de unos metros y el ruido afectará sobremanera, además el micro no está diseñado para excitar líneas lagas. Eso sería un diseño ´contra natura" entiendo yo. No te lo recomiendo. Si necesitas varios dispositivos enm una linea necesitas 485, u otro tipo de bus como CAN bus...... Lo mismo sucede si necesitas distancia.

Pero antes de hacer nada creo que el primer paso es pensar lo que uno quiere y necesita. Si los requerimientos cambian de un día para otro no se puede llegar a buen puerto.

Saludos
Ricky
Madrid-España.

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
RE: comunicacion full duplex 16f628
« Respuesta #7 en: 26 de Abril de 2004, 18:13:00 »
te comento...
la comunicacion con el lcd se hara por un pin del pic que no es usart pero requiero poner algo que me aumente la distancia por ejemplo 30 metros eso es lo que ma srequiero pero con el 485 no se si se puede a una sola direccion io usar el 75xxx que se ofrece como solucion pero en realidad no se que me recomiendas.
gracias....

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: comunicacion full duplex 16f628
« Respuesta #8 en: 29 de Abril de 2004, 19:59:00 »
Hola Nocturno,
Para 30m necesitas o 232 (y estarias al limite) o pasar a 485 (que te sobraria mucha distancia.  El CI de 232 es mas barato que el 485 y necesitas un pin menos porque no tiene control. En ambos casos puedes usar un pin que no sea USART.

La clave de elegir uno o el otro es si vas a conectar uno o mas dispositivos en la misma linea. Si solo usas el display te valen ambas soluciones. Si vas a tener el display, y otros dispositivos necesitas el 485 y no te vale el 232.

Por otro lado lo de hacerlo bidireccional y que el te responda es simplemente un tema de seguridad, es para que tu sepas que la informacion que le mandas y que el esta visualizando es correcta y no esta mostrando basura por errores en la linea. Depende de la aplicacion te puedes permitir ciertas tolerancias o no.

Saludos
Ricky
Madrid-Espa~a

Desconectado psicopic

  • PIC12
  • **
  • Mensajes: 93
RE: comunicacion full duplex 16f628
« Respuesta #9 en: 16 de Mayo de 2004, 07:30:00 »
Bueno... en realidad solo pondre un solo visor pero la distancia 30 metros puede ser superado pero me gustaria poner el 485 lo que pasa es que siempre que miro alguna descripcion de instalacion me enrredan todo...
Pero..... seguire en la busqueda de todas maneras la ayuda que me presten por aqui sera bien recibida....

si sabes de diagramas de conexion 485 me pasas el dato o algun otro protocolo que sea efectivo para superar la barrera de los 30...


 

anything