Al comparar la capa física de CAN y RS485, estoy tratando de encontrar las ventajas de uno sobre el otro. Descubrí que son bastante similares. Ambos son buenos en términos de rechazo de modo común y ambos necesitan protección contra ESD y sobretensión. Encontré solo una ventaja significativa de CAN sobre RS485 (con respecto a la capa física) en la que CAN tiene un modo tolerante a fallas que le permite mantener la conexión entre los nodos CANbus a través de solo 1 cable de datos, incluso si hay un cable de datos en cortocircuito o abierto o ambos cables de datos están en cortocircuito juntos.
Lejos de la prevención de colisiones y el sistema de prioridad de mensajes que tiene CAN,
1. ¿RS485 tiene el mismo mecanismo tolerante a fallas?
2. ¿Existen otras ventajas o diferencias importantes entre CAN y RS485 con respecto a la capa física?
Al comparar solo la capa física , CAN y RS-485 son similares en el sentido de que ambos usan señalización diferencial. Esto les da a ambos una buena inmunidad al ruido de modo común.
La principal diferencia es que RS-485 usa señalización simétrica. Una línea es de 5 V y la otra de 0 V para indicar un estado, luego cambia a 0 V y 5 V para el otro estado. Esto hace que detectar el estado sea muy fácil (un comparador simple, tal vez con un poco de histéresis), pero presenta un desafío al terminar el bus.
Si cree que el par trenzado que transporta las señales tiene una impedancia característica de 120 Ω, lo ideal es colocar 120 Ω entre las dos líneas. Eso sería un total de 60 Ω entre las dos líneas. (5 V)/(60 Ω) = 83 mA. Eso es mucha corriente para el autobús, y se consumiría todo el tiempo. Eso equivale a casi medio vatio de potencia inactiva. Tenga en cuenta que cada resistencia de terminación de 120 Ω disiparía 208 mW, lo que significa que tendrían que ser resistencias de "¼ W" como mínimo. El montaje en superficie 0805, por ejemplo, no necesita aplicarse.
Probablemente debido a estas consideraciones, los requisitos de terminación para RS-485 se relajan un poco. Eso da como resultado una velocidad de bus utilizable reducida. Eso está bien para la mayoría de las aplicaciones RS-485, ya que normalmente se ejecutan a velocidades de transmisión comunes, rara vez por encima de 115,2 kbaudios.
CAN, por otro lado, aborda la terminación correctamente. Asume que se utiliza un par trenzado de 120 Ω para las diferentes señales y especifica una resistencia de terminación de 120 Ω en cada extremo del bus. Hay entonces dos diferencias importantes para evitar los problemas descritos anteriormente:
La potencia para mantener un bus CAN en el estado dominante es de solo 54 mW, y ninguna para mantenerlo en el estado recesivo (inactivo). CAN está diseñado para velocidades de hasta 1 Mbaud, lo que es posible gracias a una mejor terminación que RS-485.
Otra diferencia importante entre CAN y RS-485 a la que ya se ha aludido es que RS-485 se dirige activamente a ambos estados, mientras que CAN solo se dirige al estado dominante, mientras que el propio bus se relaja hasta el estado recesivo. Esto hace una diferencia significativa en los niveles de protocolo más altos para el arbitraje de bus.
Entonces, ¿qué usar? CAN es la elección clara para nuevos diseños en la mayoría de los casos porque:
Por el contrario, con RS-485 obtienes un UART y el resto es tu problema. Si bien es ciertamente posible implementar un protocolo robusto por encima de RS-485, no es tan fácil hacer bien todos los casos de esquina como piensan los ingenieros ingenuos.
Una limitación de CAN que puede requerir solución para algunas aplicaciones es el límite de 8 bytes de datos por paquete. Esto también es bueno para el mecanismo de colisión/reintento, pero es algo que debe tener en cuenta si tiene la intención de pasar datos de transmisión a través de CAN. Sin embargo, hacer lo mismo con RS-485 tampoco es tan trivial como podría parecer a primera vista.
RS485 usa +/- 400 mV, no 0-5 V, por lo que la resistencia de terminación tiene una potencia menor que el bus CAN. Hay una ventaja que muchos (todos) parecen pasar por alto. Debido a que RS485 en realidad es bidireccional alrededor de 0V, es decir, debe ser un puente H completo, esto significa que la corriente fluye de una forma u otra. No se trata de los niveles de voltaje sino de la dirección real de la corriente. Entonces, esto difiere de CAN, donde efectivamente está mirando 2 señales diferentes en relación con GND. Desea ver que existe este nivel de 2,5 V RELATIVO a GND y que estas dos líneas tienen el mismo voltaje en relación a GND o que una está por encima y la otra está por debajo de 2,5 V en relación a GND.
Estas son dos cosas muy diferentes. CAN solo funciona cuando hay un GND al que referirse, por lo que GND tiene que seguir la señal en todas partes. Esto significa que si desea utilizar CAN aislado, necesita esa referencia GND.
Ahora RS485 es básicamente una unidad de CA de un puente H, los electrones fluyen de una forma u otra, el voltaje relativo a GND es totalmente irrelevante. el voltaje no se compara con GND, es la dirección del flujo de electrones lo que se observa, por lo que no necesita un GND. Esto significa que en situaciones en las que desea unir dos sistemas que no comparten una conexión a tierra o no es necesario, está bien y donde las conexiones a tierra no son comunes pero difieren, está bien porque la medición no es relativa a GND y tomando out significa que se puede evitar el aislamiento donde CAN lo requiera.
La razón principal para usar CAN es que siempre que no use la misma ID para dos dispositivos, ningún dispositivo necesita saber acerca de cualquier otro dispositivo y los dispositivos pueden agregarse al bus.
Andy alias
macit
Lundin
Lundin