¿Cómo puedo determinar la longitud máxima de ejecución para CANbus?

5

Estoy usando CANbus para comunicarme entre dos placas de circuito. Resistencias de terminación de 120 ohmios en cada extremo. Los transceptores son MCP2561 y ISO1050 . La velocidad de bits está en los cientos de kilobits / segundo. El medio es un cable trenzado 22AWG de cuatro conductores, con los otros dos conductores que llevan 9V y señal / potencia común. No me preocupa la caída de voltaje en las líneas eléctricas, solo la integridad de la señal.

¿Hay algún medio por el cual se podría estimar la longitud máxima de ejecución de una configuración como esta? No necesito una respuesta a pulgadas; una respuesta de orden de magnitud es lo suficientemente cercana para mis propósitos. Pero no tengo idea de por dónde empezar.

    
pregunta Stephen Collings

1 respuesta

5

Dependo principalmente de tu tasa de bits requerida. CAN funciona por el nodo transmisor comprobando que sus bits están correctamente en el bus. Hay dos razones en el protocolo para que esto no suceda intencionalmente:

  • Si otro transmisor está intentando transmitir, sobrescribe algunos de los bits y se retiene el mensaje de prioridad más baja.
  • Los nodos receptores pueden marcar errores al sobrescribir los bits.

Por lo tanto, el retraso total en el bus (incluido el retraso a través de la PHY y el controlador en ambos extremos, el retraso del cableado y cualquier optoaislante) debe ser significativamente menor que el tiempo de bit. A menudo, el punto de muestreo de los receptores (incluido el del nodo que se está transmitiendo actualmente) se configura en aproximadamente el 70% del tiempo de bit, por lo que desea que su retraso sea más corto que eso.

Por ejemplo (y este es un cálculo de corte rápido con aproximaciones en), un bus de 500 kbit / s tiene un poco de tiempo de 2us.

70% de eso es 1.4us.

Suponiendo que 100 ns en cada sentido a través de la PHY y los controladores, se pierden 400 ns allí, por lo que tiene 1us para la propagación de la señal en el cable.

La señal tiene que salir y regresar, así que tenemos que reducir a la mitad eso, dando 500 ns.

La regla empírica para la propagación de coaxiales es de 6 pulgadas en 1ns (ugh, unidades no SI, digamos ~ 6ns / m!). (Como bien señala Olin, es probable que el par trenzado sea un poco más rápido). Eso daría una longitud de bus de unos 85m.

CiA tiene algunas recomendaciones que parecen menos conservadoras que eso, aunque se calcularon para un punto de muestreo posterior (87.5 % IIRC) :

Bit rate    Bus length       
1 Mbit/s    25 m         
800 kbit/s  50 m         
500 kbit/s  100 m   
250 kbit/s  250 m    
125 kbit/s  500 m        
50 kbit/s   1000 m   
20 kbit/s   2500 m  
10 kbit/s   5000 m  
    
respondido por el Martin Thompson

Lea otras preguntas en las etiquetas