TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: ogris en 20 de Mayo de 2007, 13:59:36
-
Hola a todos,
a ver si me podéis solucionar una duda sobre la comunicación RS485, no tengo muy claro si el RS485 es un protocolo o si es solo un tipo de conexion. Me explico, en el protocolo I2C esta definido las conexiones y tramas del protocolo (hay por ejemplo 7 bit para direccionar los dispositivos), pero para el RS485 no encuentro nada de las tramas,
¿sabeis si hay algo normalizado para la tramas, direccionamiento, etc?
gracias y un saludo
-
Hola, no hay una restricción en la comunicación, puedes enviar cualquier tipo de trama por el RS485, este actua a nivel físico modificando las señales de 0 y 5v a voltajes diferenciales para que puedan transmitirse con más inmunidad al ruido a largas distancias, puedes hacer un I2C y transmitirlo por 485.
Te dejo este documento.
Saludos
-
ogris si vas a comunicar solo equipos hechos y diseñados por tí no habrá problemas, si quieres comunicarte con dispositivos de terceros ahí se suele usar por ejemplo MODBUS que es un protocolo de más alto nivel, también hay otros menos conocidos o populares.
Saludos
-
Sí, voy a mirar como va el MOSBUS, creo que tambien el PROFIBUS se usa sobre RS485, ¿cual recomendais? en principio es solo para comunicar equipos hechos por mi, pero seguro que estos protocolos estarán muy bien pensados y ademas asi aprendo y dejo abierta la posibilidad de usar otros equipos.
muchas gracias y un saludo
-
Sobre ese tema, hace unos días tuve una disucsión bastante interesante con mi hermano.
Me pedía un convertidor de medios RS-485 a Ethernet, como si eso fuera tan fácil.
Bien, RS-485 no define un protocolo de comunicación, sino un medio físico para el transporte de datos, es decir que solamente define cómo deben realizarse las conexiones, las características del cable a utilizar, distancias que soporta la comunicación, tensiones, y otro conjunto de definiciones de crácter eléctrico.
La confusión de muchos, entre ellos mi hermano, viene dada porque como RS-485 o también EIA-485, es un estándar, se piensa que implementa una interfaz completa con la parte eléctrica y el protocolo de comunicación, pero no es así.
El protocolo lo pone el diseñador del sistema, no el estánar EIA-485, así que tendrás que crear tu estándar propio o utilizar alguno ya existente como MODBUS, HDLC, SDLC, FIELDBUS u otro que te guste o utilice el equipo con el cual te vas a comunicar.
Es por eso que yo le decía a mi hermano, un convertidor de medios RS-485+(protocolo que se implementa) a Ethernet.
Un saludo Reinier
-
Sí, voy a mirar como va el MOSBUS, creo que tambien el PROFIBUS se usa sobre RS485, ¿cual recomendais? en principio es solo para comunicar equipos hechos por mi, pero seguro que estos protocolos estarán muy bien pensados y ademas asi aprendo y dejo abierta la posibilidad de usar otros equipos.
muchas gracias y un saludo
MODBUS es tremendamente más fácil que PROFIBUS... MODBUS está muy documentado PROFIBUS no... o mejor dicho 'no gratuitamente'. El Profibus requiere un manejo de las señales bastante importante lo que obliga en casi todos los casos a usar un integrado para el modo esclavo y el modo maestro... bueno, no tengo ni la más pálida idea de cómo hacerlo y que leyendo y leyendo lo poco que pude bajar, nada se comentaba más que "comprar la placa xxx con el soft xxx" de siemens... y asunto solucionado.
-
Uno muy sencillo, tal vez por lo añejo es SDLC (Serial Data Link Contro) desarrolaldo por IBM, que tiene versiones más actuales como HDLC, básicamente tiene la siguiente estructura
Flag | address | command | data | CRC | Flag
En google pones SDLC y te salen una pila de páginas que lo explican de maravillas
Es muy sencillo pero eficaz, a tal punto que muchas centrales telefónicas lo implementan
un Saludo Reinier
-
Uno muy sencillo, tal vez por lo añejo es SDLC (Serial Data Link Contro) desarrolaldo por IBM, que tiene versiones más actuales como HDLC, básicamente tiene la siguiente estructura
Reinier, el HDLC tiene varias décadas, de hecho es lo que se usa en Ethernet.
-
Una razón más para aprender a utilizarlo, no lo cree usted mease maunix?
-
Muchas gracias por la ayuda, desconocia mucho el tema.
Estoy indeciso, el HDLC tiene muy buena pinta, aunque no me llega a gustar demasiado los Flags de inicio y fin q obligan a introducir un bit de relleno en algunos bytes para no confundirlos con los flags.
El Modbus parece muy sencillo, lo que no acabo de ver es el tema del acceso al medio, ya que es un sistema maestro-esclavo y yo necesito q a veces los esclavos tienen que hacer llamadas al maestro sin que haya un polling.
el Profibus queda descartado por lo que me habeis comentado.
saludos
-
Una razón más para aprender a utilizarlo, no lo cree usted mease maunix?
Maese Reinier... por supuesto. De hecho yo lo uso desde mi primer comunicación 485 hasta hoy en día. :)
El espíritu de mi post fue el de agregar un comentario o información al tema, más no corregirlo. Espero no haya pensado que fue para corregir... un abrazo.
PD: siempre tengo que revisar como 3 veces cuando escribo tu nombre!!! tantas vocales y encima... me acabo de dar cuenta que tu nombre es capicúa!! ¿estoy en lo cierto?
-
Completamente CORRECTO respecto al nombre
Y por supuesto que nunca pensé que la nota era para rectificar nada en particular, simplemente contesté para reafirmar que era una excelente opción implementar HDLC o SDLC, más aún cuando es el mismo protocolo usado en Ethernet, cosa que no conocía.
Por cierto el problema del byte de flag se puede evitar codificándolo como una combinación de otros bytes, puede inventarte el código que desees. Por ejemplo si en la trama aparece un byte igual al flag lo puedes convertir en "\F\" o cualquier otro código, así te evitas tener que meter la serie de unos y ceros para resolver el problema. Claro cuando recibas una trama deberás sustituir el código por el valor adecuado.
Un saludo Reinier
-
PD: siempre tengo que revisar como 3 veces cuando escribo tu nombre!!! tantas vocales y encima... me acabo de dar cuenta que tu nombre es capicúa!! ¿estoy en lo cierto?
¡Qué curioso!, un nombre capicúa. Yo sólo conocía el de Ana :mrgreen:
-
Yo sabia de Ada :mrgreen: :mrgreen:
-
Dejando un poco el asunto del nombre capicúa y retomando el de este hilo, recomendaría a este amigo utilizar el protoclo MODBUS porque en la última versión de CCS ya viene un driver para este protocolo.
Ya me estuve quemando las pestañas con SDLC y he comprobado que para implementarlo tal y como viene en el estándar voy a tener que escribir un programa en VHDL para meterlo dentro de un PLD, porque la USART no me sirve para ello, y hacer que el uC se encargue de emularlo sería demasiada carga para el uC o muy ineficiente.
Un saludo Reinier
-
No es capicua, ya que solo se aplica a los números, para las frases se llama "palíndromo", cuando se lee igual de derecha a izquierda que de izquierda a derecha.
Un saludo
-
Yo te recomendaría modbus ya que gran parte de los equipos industriales lo soportan y tb puedes conseguir programitas que te permiten conectar a la PC. En cuanto a la librería de CCS, no cumple con todas las especificaciones del Standard Modbus, principalmente lo referido a los temporizadores, si quieres algo qu sea standart tendras que hacer algunas modificaciones en #INT_TIMER2. Además hay que tener en cuenta que sólo las versiones muy nuevas de CCS lo traen completa, las anteriores tienen muchos huecos