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