Autor Tema: Comunicación rs485 en c  (Leído 11244 veces)

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

Desconectado Palomino86

  • PIC16
  • ***
  • Mensajes: 180
Comunicación rs485 en c
« en: 21 de Enero de 2010, 15:45:46 »
Que tal?

Alguien de por aqui no tendrá un ejemplo de comunicación rs485 por medio de la pc en c :shock:?

Ya que actualmente ocupo realizar una comunicacion así entre la pc y un micro y no he hayado un ejemplo que pueda ayudarme.

Ojala por aqui caiga un poco de informacion. Cualquier ayuda es bien recibida

Saludos :-/
Lo que no me destruye, me fortalece

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Comunicación rs485 en c
« Respuesta #1 en: 21 de Enero de 2010, 16:45:40 »
Que es lo que necesitas realizar, una comunicación Ful Duplex o Half, ya que dependiendo lo que requieras de ahi podemos empezar.

Otra la pc que estara realizando la comunicacion con tu pic contiene puerto Serial.

Usaras algun pic para comunicarte con la maquina y de ahi con ese mismo a otros pic ?

Desconectado Palomino86

  • PIC16
  • ***
  • Mensajes: 180
Re: Comunicación rs485 en c
« Respuesta #2 en: 21 de Enero de 2010, 20:59:20 »
Que tal darck_khronos

Lo que necesito es una comunicación half duplex (transmitir en ambos sentidos pero no de forma simultanea).

La Pc con la que pretendo realizar la comunicacion con el pic si contiene puerto serial

Pues primeramente solamente pretendo lograr comunicar un microcontrolador con la PC y de ahi partir. Ya que para microcontroladores si hay demasiada informacion acerca de la conmunicacion con rs485

Acaso habra librerías en C para el protocolo de comunicacion RS485? porque hasta ahorita no he encontrado ninguna. Te has de preguntar el porque de las librerias y en c, pero pues es que despues pienso migrar a liinux pero primero quiero hacer mis pininos en  windows.


Gracias quedo a la espera de respuestas
Lo que no me destruye, me fortalece

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Comunicación rs485 en c
« Respuesta #3 en: 22 de Enero de 2010, 00:48:39 »
en realidad la 485 no es mas que la misma 232, con la diferencia que puedes conectar mas de 2 perifericos.

si es Half en este caso solo neceitas agregar tu max232 y despues ya sea tu max485 o el sn75176 al max y uno al pic y listo.

pero una de las ventajas que tienes es que podrias conectar mas o menos hasta 56 pic en paralelo cada uno con su transseiver.


Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comunicación rs485 en c
« Respuesta #4 en: 22 de Enero de 2010, 01:12:53 »
Como dice Dark, desde la PC trata los datos como si fueran RS232, pero con el adicional de tener que controlar si estamos enviando o recibiendo datos. El RS485 y el sn75176 tienen 2 pines dedicados para el control de dirección, entonces deberás buscar un conversor de rs232/rs485 half-duplex para que implemente ese control.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado willie_rosario_salsa

  • PIC12
  • **
  • Mensajes: 75
Re: Comunicación rs485 en c
« Respuesta #5 en: 08 de Septiembre de 2010, 14:55:22 »
Saludos foreros,

Respecto al tema que han publicado, me encuentro con la misma duda, el control de datos desde los periféricos a la PC ya lo tengo realizado y funciona muy bien (ya que yo controlo el flujo desde cada micro), pero aquí viene el problema:

¿Cómo logro controlar el flujo (habilitar la transmisión) desde la PC, ya que actualmente solo tengo TX, RX y GND y necesito el 4to pin para comunicar?

Gracias
"Es chévere ser grande, pero... Más grande es ser chévere." --- Héctor Lavoe.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comunicación rs485 en c
« Respuesta #6 en: 08 de Septiembre de 2010, 15:47:58 »
Exacto! Fijate aquí:
http://www.neoteo.com/rs485-domotica-al-alcance-de-tu-mano-15810.neo

Mario explica y da un esquemático para utilizar la PC.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado willie_rosario_salsa

  • PIC12
  • **
  • Mensajes: 75
Re: Comunicación rs485 en c
« Respuesta #7 en: 08 de Septiembre de 2010, 16:25:29 »

Mario explica y da un esquemático para utilizar la PC.


Yo intenté hacer eso, pero la señal RTS nunca cambia de estado antes de entrar al MAX232..

Hay que configurar algo más en el puerto serie de la PC para que esta señal cambie automáticamente antes de mandar las tramas por el TX ????

Gracias
"Es chévere ser grande, pero... Más grande es ser chévere." --- Héctor Lavoe.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Comunicación rs485 en c
« Respuesta #8 en: 08 de Septiembre de 2010, 18:00:58 »
Seguramente hay que habilitar el control de flujo por hardware. Leer el articulo, seguro lo dice.  :?


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado willie_rosario_salsa

  • PIC12
  • **
  • Mensajes: 75
Re: Comunicación rs485 en c
« Respuesta #9 en: 09 de Septiembre de 2010, 00:48:33 »
Saludos Suky,

leí todo el documento asi como todos los comentarios de los usuarios con dudas, pero no encontré la configuración de control de flujo por hardware desde la PC...

Según lo que he probado, este no cambia, y no sé si haya algo más que deba conectar, pero como está en el diagrama no funciona..

Una mano plis... :? :? :?
"Es chévere ser grande, pero... Más grande es ser chévere." --- Héctor Lavoe.

Desconectado Marioguillote

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: Comunicación rs485 en c
« Respuesta #10 en: 09 de Septiembre de 2010, 11:46:38 »
Hola willie!

Esta tarde (o noche) me doy una vuelta por aquí para charlar en profundidad sobre el tema si quieres ampliar.
Por lo pronto puedes leer ESTE ejemplo y ESTE otro que utilizan RS485 para controlar dispositivos desde el ordenador. También ESTE.
Al final de uno de los artículos (el de la estación meteorológica) encontrarás código fuente para leer y ver bien "cómo y cuando" se habilita RTS para comandar la transmisión en el IC que maneja el RS485. En los otros la explicación está en el cuerpo del artículo.

Luego de leer esos artículos y ver como es el mecanismo del soft, esta noche la seguimos.

Saludos!
Mario

PD: También puedes encontrarme AQUÍ
PD2: Te aclaro que sólo trabajo en BASIC

Desconectado willie_rosario_salsa

  • PIC12
  • **
  • Mensajes: 75
Re: Comunicación rs485 en c
« Respuesta #11 en: 09 de Septiembre de 2010, 13:38:05 »
Listo Marioguillote,

Voy a revisar la información, y más tarde comento lo que ocurre..

Esta mañana estuve haciendo unas pruebas en mi oficina con el emulador que utilizo (PROCOM PLUS), habilité el "hardware flowcontrol", gice las conexiones sugeridas en el texto tuyo, pero nada  :( :( :(, pienso que hay algo más que hacer..

Pero bueno, leeré la info, y luego seguimos

Gracias por tu ayuda  :mrgreen: :mrgreen:
"Es chévere ser grande, pero... Más grande es ser chévere." --- Héctor Lavoe.

Desconectado Marioguillote

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1926
    • Servisystem
Re: Comunicación rs485 en c
« Respuesta #12 en: 10 de Septiembre de 2010, 01:00:15 »
OK willie!

No sé que software utilizarás para el programa en el ordenador. En mi caso uso VB6 y sólo basta con habilitar o deshabilitar RTS para que ese pin (4 en un DB9) del conector de salida del ordenador cambie de estado durante la transmisión (Tx). Es decir, armo la estructura del programa de modo tal que cuando transmito un dato, primero "activo el RTS" y luego de enviar el dato "lo desactivo".

En mi caso, como utilizo un MAX232 y luego un MAX485 coloco en estado bajo la línea RTS para transmitir y en estado alto para recibir. Esto lo hago así porque el RS232 invierte el estado. De este modo, cuando en el programa pasa la instrucción :

MSCOMM1.RTSEnable = True el MAX485 está a la "escucha" ya que un 1 lógico a la entrada del MAX232 será un 0 TTL en la salida.

En cambio cuando coloco:

MSCOMM1.RTSEnable = False el MAX485 entra en modo transmisión porque un 0 lógico en la entrada del MAX232 será un 1 TTL en la salida.

Con esos valores TTL manejo los pines 2 y 3 del MAX485.
Además, uso dos secciones (una Tx y una Rx) del MAX232 para los datos.

Ten cuidado con:
No utilizo Hardware Control en el seteo del puerto (Inicio => Configuración => Panel de Control => Sistema => Administrador de dispositivos ....) Allí hay 3 opciones, yo utilizo "Ninguno"
Esta misma configuración debes respetar en el programa que utilices para la interfaz (en mi caso VB6, donde configuro el MSCOMM1)

Mañana (que es hoy) me doy una vuelta por aquí a ver cómo te ha ido.

Saludos!
Mario

Desconectado willie_rosario_salsa

  • PIC12
  • **
  • Mensajes: 75
Re: Comunicación rs485 en c
« Respuesta #13 en: 10 de Septiembre de 2010, 02:24:51 »
OK willie!

No sé que software utilizarás para el programa en el ordenador. En mi caso uso VB6 y sólo basta con habilitar o deshabilitar RTS para que ese pin (4 en un DB9) del conector de salida del ordenador cambie de estado durante la transmisión (Tx). Es decir, armo la estructura del programa de modo tal que cuando transmito un dato, primero "activo el RTS" y luego de enviar el dato "lo desactivo".



Saludos Mario,

Gracias por responder, el software que pretendo usa es VB 2010 y asumo que este tendrá las mismas opciones que usaste tú para la comunicación por el puerto serie con RTS  ;-)

Pero, el programa que estoy usando por ahora para hacer pruebas en el proto es el PROCOM PLUS de Symantec, conél hago todas las pruebas preliminares y afino todos los detalles como si fuera una prueba real antes de montarlo donde debe ir ubicado el proyecto, pero lo que ocurre es que por ahora no dispongo del programita en VB para hacerlo funcionar como lo has descrito en el foro que me sugeriste.

El ejemplo está muy concreto, y te felicito por compartirlo, es más el mismo principio utilizo en las sentencias del software del PIC (programo en CCS y este lo hace todo por mi, solo defino ENABLE=PIN_BX y listo, se activa RTS en el PIC) las cuales son HABILITAR LA TRANSMISION => TRANSMITIR => DESHABILITAR LA TRANSMISION PARA QUEDARSE ESCUCHANDO.

Mañana buscaré la forma de hacer funcionar el emulador serial que tengo con control de flujo, y apenas estén realizadas todas las pruebas empezaré a seguir la sugerencia tuya con RTS en el VB 2010.

Saludos, gracias y si conoces o te enteras como hacerlo pero mandando el dato desde hyperterminal u otro emulador serie, avisame  ;-) ;-) ;-)

"Es chévere ser grande, pero... Más grande es ser chévere." --- Héctor Lavoe.