RS-485: mecanismo de detección/corrección de errores

¿El estándar RS-485 incluye un esquema de detección/corrección de errores?

RS-232 tiene un bit de paridad para la detección de errores, pero no sé nada relacionado con la detección/corrección de errores en la interfaz RS-485.

Respuestas (2)

RS-485 y RS-232 son estándares solo eléctricos. El mismo esquema de codificación de datos se suele utilizar en ambos. La diferencia es que RS-232 usa un solo cable para la señal con niveles por debajo de -5 V y por encima de +5 V, mientras que RS-485 usa un par diferencial con niveles de 0-5 V. RS-485 también está diseñado para ser multipunto, mientras que RS-232 es punto a punto.

Puede elegir usar un bit de paridad o no, en cualquiera de las capas físicas.

En la práctica, los bits de paridad no se usan mucho ya que brindan un bajo nivel de protección para la cantidad de bits gastados. Cuando la confiabilidad es importante, los fragmentos de datos generalmente se envuelven en paquetes con sumas de verificación más sofisticadas, luego con un esquema de ACK/reintento en el nivel superior a los paquetes.

@Pipe: si no recuerdo mal, RS-232 tiene un mínimo de -5 a +5 voltios al enviar, pero un receptor debe aceptar -3 a +3 V.

RS-485 tiene varias ventajas sobre RS-232.

  • Multipunto de un maestro a múltiples nodos esclavos.
  • Señales diferenciales para una mayor inmunidad al ruido.
  • Los voltajes más bajos significan que se puede usar una fuente de alimentación de 5 V.

Con la función multipunto, es necesario que el transmisor y los receptores sean un poco más inteligentes de lo que se requiere para las comunicaciones RS-232, ya que se debe manejar el direccionamiento. Una vez que un micro está involucrado, no es demasiado difícil agregar cálculos de suma de verificación también.

Los bits de paridad son una protección muy básica y detectarán un número único o impar de errores de bit en un carácter. Un número par de errores de bit pasarán desapercibidos. Por el contrario, una suma de comprobación de un byte tiene 256 valores posibles y la probabilidad de un error no detectado es mucho menor. Para mayor seguridad, se puede utilizar una suma de comprobación de dos bytes y 16 bits.

¿El estándar RS-485 incluye un esquema de detección/corrección de errores?

No, eso depende del diseñador del sistema.

Para una pregunta reciente sobre el tema, consulte Cómo calcular la suma de comprobación a mano .

Mi favorito absoluto aquí es Fletcher-16 . Es trivial calcular con el micro más pequeño de 8 bits si tiene un add-with-carry (sin tablas costosas), mientras ofrece casi la misma protección que CRC-16. (No confundas esto con Adler, quien en realidad logró estropearlo)
Gracias, nunca antes me había encontrado con Fletcher-16. Otro para la caja de herramientas!
No me gusta 255 como módulo, ya que cada tercer byte solo aporta una opción de uno en 85, cada quinto byte una opción de uno en 51, cada decimoquinto byte una opción de uno en 17 y cada decimoséptimo byte una elección de uno en 15. Por el contrario, en una suma de Adler, cada byte contribuye con una elección de uno en 251. Un enfoque alternativo es mantener dos sumas de verificación en ejecución y multiplicar una de ellas por 3 con cada byte (por lo que el penúltimo byte tiene una contribución de 3x, el penúltimo byte tiene una contribución de 9x, etc.) El patrón de contribuciones se repite cada 64, pero hay formas de lidiar con eso.
Por cierto, creo que también es importante tener en cuenta que, para bien o para mal, la suma de comprobación de Fletcher considera que 00 y FF son idénticos.