Elettronica digitale

Rete di comunicazione CAN

Introduzione ai sistemi Controller Area Network

La rete di comunicazione CAN (Controller Area Network) è stata sviluppata dalla Robert Bosch GmbH su richiesta di Mercedes e si tratta di un sistema bus seriale multicast che permette la comunicazione sicura tra centraline di controllo ECU (Electronic Control Unit). Sebbene il protocollo sia nato per il campo automotive, la comunicazione CAN si è diventata in breve tempo uno standard affermato anche nel campo dell’automazione industriale grazie alle sue caratteristiche e alla sua versatilità. Il  sistema di comunicazione è stato pensato su due cavi, identificati con il nome di CAN_H (high) e CAN_L (low), intrecciati tra loro e in controfasce, ovvero trasportano la stessa informazione uguale ma opposta: mentre nel cavo CAN_H vi è l’informazione binaria 0 sul cavo CAN_L vi è l’informazione binaria 1. Tipicamente entrambe i segnali hanno ampiezza 1V e sono centrati su di una tensione pari a 2,5V (ovvero lo stato HIGH del canale CAN_L e lo stato LOW del canale CAN_H si trovano a 2,5V come riportato in figura).

La rete CAN, pertanto, è basata sulla differenza tra il segnale CAN_H e il segnale CAN_L e il risultato può essere solamente 0V o 2V generando quindi l’informazione binaria finale. Questa tecnica porta con sé un grande vantaggio: l’immunità ai disturbi di natura elettromagnetica. Infatti, essendo i due cavi intrecciati tra loro, se vi è presenza di un disturbo questo si ripercuote in modo uguale su entrambe i canali e di conseguenza, la differenza porterà sempre a 0V o 2V come riportato in figura. Questa caratteristica ha portato la rete CAN ad essere utilizzata in tutti quei contesti dove c’è possibilità di disturbi elettromagnetici.

Un’altra importante caratteristica di questo sistema è l’adattamento di impedenza con due resistenze da 120Ω poste una a monte e una a valle del circuito. Tutte le unità ausiliarie verranno connesse in parallelo, pertanto se si mette un tester in modalità ohmmetro tra i due canali CAN_H e CAN_L avremo una delle seguenti situazioni:

  • CIRCUITO SANO: le due resistenze risultano in parallelo, pertanto la resistenza equivalente è di 60Ω.
  • CIRCUITO GUASTO: una delle due resistenze non chiude il circuito, pertanto la resistenza equivalente è di 120Ω.

Tale prova si può eseguire facilmente sulla presa OBD (presa di diagnosi) degli autoveicoli andando a misurare la resistenza tra il pin 6 (CAN_H) e il pin 14 (CAN_L) a batteria scollegata. Inoltre, prelevando il segnale da questi due terminali con un oscilloscopio opportunamente configurato è possibile visualizzare quanto descritto fino ad ora.

Si indicherà lo stato logico LOW (bit 0) come bit dominante, mentre si definirà lo stato logico HIGH (bit 1) come bit recessivo. Per quanto riguarda invece la velocità di trasmissione si ha uno stretto legame con la lunghezza dei cavi (più corti sono, maggiore sarà la velocità). In ogni caso si può passare da un minimo di 125kbit/s a 1Mbit/s.

L’unico metodo per rendere interdetta la comunicazione CAN, infatti, è ritrovarsi in una delle seguenti casistiche:

  • bus CAN_H in cortocircuito verso massa
  • bus CAN_L in cortocircuito verso massa
  • bus CAN_H in cortocircuito verso alimentazione
  • bus CAN_L in cortocircuito verso alimentazione
  • bus CAN_H interrotto
  • bus CAN_L interrotto
  • bus CAN_H in cortocircuito con il bus CAN_L

Dal punto di vista costruttivo, invece, il frame che compone un messaggio completo è strutturato come segue (immagine prelevata dalle CAN SPECIFICATION).

START OF FRAME
È il bit responsabile di dichiarare l’inizio di una comunicazione. Se esso assume valore binario 0 (cioè bit dominante) una comunicazione sta per iniziare.

ARBITRATION FIELD
È un insieme di 12 bit (11 dedicati alla sezione Identifier e 1 RTR) atti a definire la priorità del messaggio. Essendo il bit 0 quello dominante, più basso sarà il valore binario maggiore sarà la priorità del messaggio.

CONTROL FIELD
È composto da 6 bit che descrivono il controllo del pacchetto dati e permette di decodificare se il messaggio è un frame standard o esteso. In questa sezione viene anche definita la dimensione del DATA FIELD.

DATA FIELD
Può essere lungo massimo 8 byte (cioè 64bit) e contiene l’informazione.

CRC FIELD
È composto da 16 bit che interessano il nodo ricevente, il quale può dedurre se il messaggio inviato è corretto o se si sono presentati errori durante la trasmissione.

ACK FIELD
È composto da 2 bit e indica se il messaggio è stato ricevuto correttamente oppure no.

END OF FRAME
È composto da 7 bit recessivi (bit 1) consecutivi.

MST-Admin

Appassionato di elettronica, elettrotecnica generale e programmazione. Fondatore del progetto MST-tutorial, desideroso di condividere con voi l'entusiasmo per l'innovazione tecnologica e la sperimentazione di novità tecniche in questi campi.

Articoli Correlati

Pulsante per tornare all'inizio