Diagnosi CANbus
Diagnosi dei guasti hardware
La maggior parte dei problemi CAN è dovuta a cablaggi errati o dispositivi CAN difettosi. Tra i possibili errori rientrano:
Resistori terminali mancanti o dimensionati in modo errato
Il bus deve essere terminato esattamente con una resistenza terminale di 120 Ω all'inizio e alla fine.
Diverse velocità di trasmissione
Tutti gli abbonati devono utilizzare la stessa velocità in baud.
Cortocircuito tra CANLow, CANHigh, CANGround, V+
CANLow e CANHigh scambiati
Diverse lunghezze di CANHigh e CANLow
CANHigh e CANLow non sono doppini intrecciati. Di conseguenza, i segnali possono essere interrotti più facilmente.
Diverse fonti di messa a terra per CANGround
Messa a terra bilaterale del cavo bus CAN
Quando entrambe le estremità della schermatura del cavo del bus CAN sono collegate a terra, possono formarsi dei loop di messa a terra che possono causare interruzioni.
Cavo bus troppo lungo
La lunghezza massima del bus dipende dalla velocità in baud impostata (vedere tabella).
Velocità in bit | Lunghezza del cavo |
|---|---|
10 kbps | 6,7 chilometri |
20 kbps | 3,3 chilometri |
50 kbps | 1,0 chilometri |
125 kbps | 500 metri |
250 kbps | 250 metri |
500 kbps | 125 metri |
1 Mbps | 25 metri |
Rilevamento di guasti hardware

La resistenza terminale viene utilizzata per adattare l'impedenza di un nodo all'impedenza del cavo di trasmissione utilizzato. In caso di discrepanza tra l'impedenza e quella del cavo di trasmissione, il segnale trasmesso non viene completamente assorbito dal carico e parte di esso viene riflesso nel cavo di trasmissione. Se le impedenze di sorgente, cavo di trasmissione e carico sono uguali, queste riflessioni vengono eliminate. In questo test, viene misurata la resistenza seriale dei cavi dati CAN e delle resistenze terminali collegate.
Disattivare l'alimentazione di tutti i nodi CAN.
Misurare la resistenza tra CAN_H e CAN_L al centro e alla fine della rete.
Il valore misurato dovrebbe essere compreso tra 50 Ω e 70 Ω. Il valore dovrebbe essere lo stesso in tutti i punti della rete.
Se il valore è inferiore a 50 Ω, accertarsi di quanto segue:
Non c'è alcun cortocircuito tra i cavi CAN_H e CAN_L.
Non esistono più di due resistori terminali.
I nodi non hanno ricetrasmettitori difettosi.
Se il valore è maggiore di 70 Ω, accertarsi di quanto segue:
Non esiste alcun circuito aperto nel cablaggio dei cavi CAN_H e CAN_L.
Il sistema bus è dotato di due resistori terminali, ciascuno da 120 Ω, uno a ciascuna estremità.

Ogni nodo contiene un transceiver CAN che invia segnali diversi. Quando la comunicazione di rete è inattiva, le tensioni CAN_H e CAN_L sono pari a circa 2,5 V. Transceiver difettosi possono causare variazioni delle tensioni a circuito aperto e interrompere la comunicazione di rete.
Disattivare l'alimentazione di tutti i nodi CAN.
Interrompere tutte le comunicazioni di rete.
Misurare la corrente continua tra CAN_H e GND.
Il valore misurato dovrebbe essere compreso tra 2,0 V e 4,0 V. Se è inferiore a 2,0 V o superiore a 4,0 V, è possibile che uno o più nodi abbiano un transceiver difettoso.
Con una tensione inferiore a 2,0 V, è necessario controllare la continuità dei cavi CAN_H e CAN_L.
Con una tensione superiore a 4,0 V, è necessario verificare la presenza di sovratensione.

La schermatura della rete CAN può essere collegata a terra in un solo punto. Questo test indica se la schermatura è collegata a terra in più punti.
Separare lo scudo dal terreno.
Misurare la resistenza della corrente continua tra lo schermo e la terra.
Collegare lo schermo a terra.
La resistenza dovrebbe essere maggiore di 1 MΩ. Se è inferiore, è necessario cercare una messa a terra aggiuntiva della schermatura.

I transceiver CAN hanno un circuito che controlla CAN_H e un altro circuito che controlla CAN_L. L'esperienza ha dimostrato che danni elettrici a uno o entrambi i circuiti possono aumentare la corrente di dispersione in questi circuiti.
Utilizzare uno strumento di misura della resistenza per misurare la corrente di dispersione.
Separare il nodo dalla rete. Lasciare il nodo senza corrente.
Misurare la resistenza della corrente continua tra CAN_H e CAN_GND.
Misurare la resistenza della corrente continua tra CAN_L e CAN_GND.
Normalmente la resistenza dovrebbe essere compresa tra 1 MΩ e 4 MΩ o superiore. Se è inferiore a questo intervallo, è probabile che il transceiver CAN sia difettoso.

Gestione degli errori di un controller CAN
La gestione degli errori è integrata nel protocollo CAN ed è estremamente importante per le prestazioni di un sistema CAN. La gestione degli errori mira a rilevare gli errori nei messaggi CAN in modo che il mittente possa reinviare un messaggio non riuscito. Ogni controller CAN cerca di rilevare gli errori all'interno di un messaggio. Quando viene rilevato un errore, il nodo che esegue il rilevamento invia un flag di errore e interrompe quindi il traffico sul bus. Gli altri nodi rileveranno l'errore causato dal flag di errore (se non hanno già rilevato l'errore originale). Adotteranno le misure appropriate e rifiuteranno il messaggio corrente.
Questi contatori e anche lo stato del bus spesso forniscono informazioni iniziali sulla causa dell'errore durante la diagnosi degli errori CAN. Queste informazioni possono essere lette in CODESYS sia tramite l'interfaccia utente che tramite l'applicazione.