Ejecutando bus CAN con transceptor RS-485

6

Recientemente tuve una discusión sobre si se podrían usar transceptores RS-485 para una red de bus CAN para obtener la flexibilidad de usar el mismo hardware en un entorno CAN o en una red RS-485 semidúplex, aunque Con software diferente.

simular este circuito : esquema creado usando CircuitLab

La idea es utilizar un controlador de bus RS-485 como de costumbre cuando se utiliza la placa en la configuración RS-485. Que este transmisor es habilitado por DEN cuando uno quiere transmitir y los bits se presentan en la entrada D como de costumbre. Se proporcionan pull-up y pull-down adicionales para garantizar un nivel de bus válido en las líneas de bus abiertas.

Cuando está en modo CAN, la entrada D está atada a un nivel bajo (dominante) y la entrada DEN se utiliza para presentar el flujo de bits cuando se transmite. Cuando DEN = 1 (controlador habilitado), el bus se mueve hacia abajo (dominante), de lo contrario la línea permanece recesiva. Esto debería imitar la naturaleza de colector abierto del bus CAN, ya que solo un estado se activa de forma activa, mientras que el otro solo se arrastra de forma pasiva por las resistencias de pull-up.

La parte que considero es la SN64HVD11 y la SN65HVD230 como referencia para un transceptor CAN 3V3.

Los tiempos de activación del controlador del SN64HVD11 se indican como máx. 55ns y el tiempo de caída se limita a 30 ns, que es inferior a las cifras comparativas del controlador CAN "real".

¿Alguien ha intentado esto antes? ¿Hay problemas que pueda pasar por alto?

Aclaración: todo el sistema está destinado a un control de vehículos no tripulados a pequeña escala en el dominio académico, por lo que la interoperabilidad con componentes de terceros no se considera importante.

    
pregunta Arne

3 respuestas

2

¡Probablemente se pueda hacer funcionar, aunque yo no lo llamaría una "solución de producción"!

Una cosa que deberás hacer es invertir la señal DEN ya que CAN es de baja dominancia, no de alta dominante.

También deberá ajustar la terminación, ya que aunque CAN y RS485 están diseñados para ser terminados por un solo resistor de 120ohm en cada extremo del bus, los resistores de polarización adicionales que RS485 generalmente incluye tirarán de las líneas del bus a voltajes ligeramente "a cada lado del punto central", mientras que CAN debe estar inactivo recesivamente a ~ 2.5V en ambas líneas.

IIRC, hay aproximadamente 0.5V de voltaje diferencial permitido antes de que se detecte un bit dominante.

    
respondido por el Martin Thompson
2

Esto funcionaría, pero reduciría el margen de ruido contra RS485 correcto o CAN apropiado.

El gran problema está en el extremo de recepción. El umbral de CAN está en 700mV típico (+ 500 a + 900mV). El umbral RS485 es a 0V típico (-200 a + 200mV).

La red de terminación está solo en cada extremo del bus RS-485. Esto está diseñado para proporcionar una diferencia de alrededor de 200 mV entre A y B (que necesitan los transceptores RS485 para garantizar una salida "1").

Para el receptor RS-485, usted obtiene un margen de ruido negativo cuando busca el estado no dominante en un bus CAN (en el peor de los casos), ya que los receptores RS485 con bog estándar tienen un umbral especificado como +/- 200mV, Donde solo puede prometer 500mV. Algunos transceptores RS485 más nuevos son de 50 mV, 0 mV en el peor de los casos, pero estos aún no detectan 500 mV como.

Usando un transceptor más nuevo, y cambiando la "B" y la "A" para que CANL sea RS485A y CANH es RS485B, obtendría un sesgo adicional de -200mV en el bus, por lo que el receptor RS485 tendría una mejor oportunidad de detectar el estado no dominante (las resistencias de polarización estarían tirando opuestas al bit dominante, por lo que el transceptor RS485 tendrá una mejor oportunidad de ver el cruce).

Tomará algo de trabajo en el CPLD para invertir en todos los lugares correctos.

Cuando miré esto, decidí ajustar tanto los transceptores CAN como los 485, ambos conectados al bus, y agregar lógica para asegurar que solo uno estuviera activo a la vez.

    
respondido por el harry courtice
0

En algún lugar escuché que algunas de las primeras aplicaciones CAN utilizaban rs485. No estoy seguro de si la CAN moderna sigue siendo compatible, pero en la superficie se ven similares. El problema que veo es que el transceptor RS485 puede tener un retraso de activación después de habilitar el controlador, pero eso se mencionaría en la hoja de datos.

Pero si los protocolos realmente son lo suficientemente similares, ¿por qué no simplemente agrega pull up / downs al bus rs485 y usa un Transciever CAN para ambas tareas? Los pasajeros de CAN tienen el mismo precio o son más baratos y parecen tener una mejor protección contra fallas que los transceptores RS485 del mismo costo.

Eso es si son realmente compatibles, de lo que no estoy seguro.

    
respondido por el EternityForest

Lea otras preguntas en las etiquetas