¿Bus de comunicación de acoplamiento activo resistente al ruido a través de cables largos?

1

Estoy trabajando en una configuración, donde necesitamos comunicación entre un dispositivo maestro y varios microcontroladores esclavos distribuidos en diferentes cajas conectadas por cables cat5e "largos" (3-10 metros) Las cajas de microcontroladores (cajas MC) deben ser de acoplamiento activo, de modo que el dispositivo maestro pueda comunicarse con lo que esté conectado en cualquier momento. Los MC-boxes no necesitan comunicarse entre sí.

Lo hemos logrado en el entorno cómodo y controlable de nuestra oficina en una configuración basada en I2C, utilizando los extensores I2C P82B715 de TI. Sin embargo, hemos observado que esta solución no es confiable en entornos ruidosos donde el bus I2C se bloquea en cuestión de horas o días que requieren un restablecimiento completo.

Por lo tanto, he comenzado a buscar en los protocolos de señalización diferencial debido a su resistencia al ruido inherente. El bus CAN parece especialmente interesante debido a sus capacidades de manejo de errores. Y, por lo que he leído, debería ser posible hacer dispositivos en un bus CAN conectable en caliente (varios comentarios en esta publicación también así lo indica). Sin embargo, en nuestra aplicación, el bus no puede colocarse de antemano, pero debe extenderse a medida que se agregan dinámicamente MC-boxes. La especificación CAN indica que el bus debe terminarse con dos resistencias de 120Ω, lo que hace que la expansión dinámica sea problemática. Entonces, ¿cómo puedo lograr algo como eso, que he tratado de describir a continuación?

simular este circuito : esquema creado usando CircuitLab (PD: las cajas no tienen que estar encadenadas como se muestra arriba)

Por lo tanto, mis preguntas son:

  • ¿Cómo puedo lograr un bus CAN extensible, que retenga la impedancia constante en las líneas de señal como lo requiere la especificación, cuando se agregan o eliminan nuevas 'cajas'?
  • ¿Puedo lograr lo anterior con un protocolo completamente diferente?

¡Espero que puedas ayudar!

Editar - Aclaraciones:  - La unidad maestra se conectará a Internet, por lo que tengo algunos problemas de seguridad con el uso de protocolos basados en IP como TCP y UDP.  - Las cajas deben ser a prueba de agua, por lo que todos los componentes electrónicos deben mantenerse dentro de las cajas.

    
pregunta Johan E. T.

2 respuestas

0

Aclaración importante: los protocolos tienen una capa de hardware y lo que llamaré una capa de mensaje (a veces es la capa de enlace de datos u otros nombres). La capa física define los niveles de terminación y señalización. La capa de mensajes solo puede hablar sobre direccionar un dispositivo y averiguar quién puede enviar un mensaje, o puede llegar a detallar qué tipo de mensajes están permitidos y cómo manejar la verificación de errores. CAN tiene una capa física y creo que hay algunas capas de mensajes que puedes usar. CANopen es una capa de mensaje popular, pero las empresas automotrices también tienen su propio nombre.

Dependiendo de la inteligencia del transceptor que utilice, puede ejecutar cualquier protocolo de mensaje en cualquier capa física. No hay reglas. Puede usar un transceptor CAN y simplemente enviar los mensajes que desee.

Con respecto a la capa física CAN, la terminación final es importante. Hay dos formas de manejar la terminación, y parece que la mejor para usted será no tener terminación en los dispositivos, pero tiene un conector de terminación separado que se enchufa al principio y al final. Así que en el dibujo que tiene, simplemente mueva los terminadores de 120 ohmios fuera de las cajas, la terminación puede ser simplemente un conector y una resistencia.

La capa de mensajes CAN es un protocolo sólido, muy simple y resistente al ruido, pero es bastante lento, y los protocolos que se diseñan están diseñados para automóviles donde solo necesitan enviar cantidades muy pequeñas de datos, de manera segura y ocasionalmente.

RS485 es otra capa física asíncrona, diferencial múltiple, multipunto, común. Creo que puede ejecutarse a velocidades más altas que CAN, pero está menos especificada y realmente no hay una capa de mensaje dominante.

Mencionas I2C, por lo que debes saber que es realmente inadecuado como capa física de larga distancia. Si intenta conducir I2C demasiado tiempo, comenzará a funcionar en el reloj y las líneas de datos quedarán desalineadas.

Imagina que envío mi reloj a t = 0, viaja a 6 pulgadas por nanosegundo y llega a 20 pies de distancia a t = 40 ns. El receptor ahora me envía los datos de vuelta, e incluso sin tener en cuenta ningún retraso interno o capacidad, ya han pasado 80 ns. I2C, SPI y otros protocolos síncronos están diseñados para distancias cortas.

Los protocolos Ethernet, como UDP o potencialmente EtherCAT, son realmente excelentes para mensajes de larga distancia. Ethernet está aislada magnéticamente, por lo que no hay que preocuparse por los problemas de aislamiento, lo que hace la vida mucho más fácil. Los problemas de conexión a tierra son otra bestia que merece su propio hilo.

La capa física de Ethernet tiene detección de error CRC en los paquetes, por lo que los errores se identifican, aunque no se corrigen. UDP no tiene detección de errores incorporada, pero es mucho más simple en comparación con TCP, que tiene paquetes re-transmitidos cuando hay un error.

    
respondido por el pscheidler
0
  

¿Cómo puedo lograr un bus CAN extensible, que retenga la impedancia constante en las líneas de señal como lo requiere la especificación, cuando se agregan o eliminan nuevas 'cajas'?

No puedes de la manera estándar. El bus CAN no es adecuado para topologías aleatorias. Es el bus CAN y requiere una topología de bus con longitud de colector corta * o una tasa de bits baja.
Combinado con la terminación, el bus can no se puede convertir en el conector hot , se puede conectar, pero la comunicación se detendrá al agregar o quitar un nodo, ya que tendrá que dividir el bus o eliminar la terminación.

Sin embargo , puede hacerlo haciendo concentradores CAN, repetidores simples con un par de transceptor, por lo que cada apéndice tendrá resistencias de terminación y sus propios tranceivers 1 a 1. Tendrá un impacto en su longitud máxima.

  

¿Puedo lograr lo anterior con un protocolo completamente diferente?

Sí, puedes usar una capa de hardware que tenga tranceivers para cada apéndice. Por ejemplo: USB o Ethernet. Pero necesitarás conmutadores o hubs.
Ha dibujado un nodo master , tal vez Modbus TCP / IP es una solución.

* longitud desde el cable del bus al nodo en T-split.

Estas son todas las consideraciones de la capa 1. Todavía hay desafíos de capa 2 con posibles problemas de arbitraje. Deberá usar la asignación dinámica de ID de nodo. Por ejemplo, j1939 hace esto, pero también lo hace DHCP.

    
respondido por el Jeroen3

Lea otras preguntas en las etiquetas