¿Puede funcionar una red 485 si el pin DE (habilitación del controlador) del transceptor está siempre encendido?

1

Estamos utilizando un Beaglebone Black con el cabo Osso ( enlace ) para comunicarnos con otros equipos mediante una conexión 485 y Modbus RTU .

El pin de habilitación del conductor (DE) del chip DS485 de la capa está vinculado al GPIO 2_24, mientras que los pines RO y DI se conectaron al RX y TX UART1 respectivamente.

No hemos escrito ningún código para actuar en el GPIO2_24, excepto una capa superpuesta que lo establece como salida y modo GPIO en modo pin.

Estábamos solucionando algunos problemas de comunicación cuando notamos algo extraño: utilizando un osciloscopio, vimos que el pin de habilitación del controlador (DE) siempre era alto, pero de alguna manera el Beaglebone podía enviar solicitudes normalmente y recibir las respuestas correctas de los demás equipo.

Normalmente, esperaría que las 485 comunicaciones solo funcionaran con el pin DE ALTO cuando se transmitía y BAJA cuando se terminara, para evitar conducir el autobús cuando otros equipos responden.

En otras capas que usamos, esto se controló mediante UART4 RTS, pero no pude explicar por qué parece funcionar en este caso.

¿Hay alguna explicación sobre por qué funciona siempre con el DE?

EDITAR: La hoja de datos ( enlace ) dice:

  

Debido a la naturaleza multipunto del bus, puede producirse una contención entre los conductores. Esto no causará daño a la   Los conductores, ya que cuentan con protección contra cortocircuitos y también con protección térmica de apagado. Apagado térmico   detecta la temperatura de la matriz y coloca las salidas del controlador en TRI-ESTADO si ocurre una condición de falla que causa   Disipación excesiva de energía que puede elevar la temperatura de la unión a + 150 ° C.

¿Quizás el chip detecta la contención y pasa al estado de alta impedancia, para luego recibir la respuesta del otro equipo?

    
pregunta SuperGeo

2 respuestas

4

Es muy posible que el estado con el controlador siempre activado permita que las comunicaciones funcionen en ambas direcciones debido al límite de corriente general y la impedancia de salida efectiva del controlador.

Sin embargo, desea corregir esto porque el conductor en esta condición estará bajo una tensión innecesaria y tomará mucha más corriente de sus fuentes de energía de lo necesario. Un chip de conductor estresado puede tener una vida más corta. La corrección, por supuesto, es diseñar la programación necesaria para que el GPIO apague el controlador una vez que se complete la transmisión.

En algunos casos, apagar el controlador en el momento correcto puede requerir un trabajo cuidadoso. Debido al hecho de que el puerto UART de envío pasará tiempo enviando los últimos bytes de datos cargados después de que se carguen los datos finales, es necesario comprender cuándo se completa el envío. Algunas consideraciones ...

  1. Algunos UART son capaces de generar una interrupción cuando se ha enviado la tubería de datos serie real más cualquier dato FIFO almacenado en búfer. Esto puede aprovecharse como el tiempo para apagar el UART.
  2. Si no hay un indicador UART EMPTY real, es posible que deba usar un retardo de tiempo en el software para llegar a la hora de apagar el controlador. Esto podría ser un retraso de la interrupción del temporizador o un retraso del software en línea.
  3. En las aplicaciones prácticas de las interfaces RS485, a menudo es la mejor práctica asignar un dispositivo como el iniciador maestro de paquetes de transacciones en la interfaz. Todos los demás dispositivos son dispositivos esclavos de respuesta. Es una buena idea que un dispositivo respondedor esclavo demore un poco la recepción de un paquete de transacción hasta el envío del inicio de su paquete de respuesta. Este retraso permite que el iniciador maestro salga del bus antes de que el esclavo intente enviar. Del mismo modo, el maestro debe demorar entre la recepción de un paquete de respuesta y el inicio del envío del siguiente paquete de iniciador para permitir que el dispositivo esclavo salga del bus.
respondido por el Michael Karas
1
  

Usando un osciloscopio, vimos que el pin de habilitación del conductor (DE) siempre era alto, pero de alguna manera el Beaglebone podía enviar solicitudes normalmente y recibir respuestas correctas del otro equipo.

Esto solo significa que el controlador RS485 del otro equipo podría sobrepasar la potencia de su tranceiver conectado al BBB; los dos controladores de línea trabajan uno contra el otro.

Esto provoca un alto flujo de corriente en las líneas de bus y puede que no funcione en el campo con otros equipos o con cables de bus más largos.

  

Tal vez el chip detecta la contención y pasa al estado de alta impedancia

No. De la hoja de datos:

  

The driver is short-circuit current limited [...]

Esto significa que solo limitará la corriente a los valores indicados en la hoja de datos. Podría entrar en estado desesperado solo cuando el chip se sobrecalienta, pero es bastante improbable y fácil de verificar.

    
respondido por el Turbo J

Lea otras preguntas en las etiquetas