Controller Area Network CAN

1.       Storia

 
Lo sviluppo del CAN bus ha inizio nel 1983 al Robert Bosch GmbH. Il primo chip CAN controller, prodotto da Intel e Philips, è immesso sul mercato nel 1987. Nel ’91 il primo veicolo la Mercedes-Benz W140.
 
 
 
 

 2.       Tecnica di accesso: CSMA/CD+AMP

Nel mondo Automotive la topologia usata è la bus. La vera ragione per cui questa topologia è applicata sono principalmente i costi, dovuti nella fattispecie alla semplicità di implementazione, ovvero la duttilità nel cablaggio veicolare. Per aumentare la robustezza della rete, si applicano delle resistenze di terminazione pilotando il segnale e non facendolo ridondare dove non è necessario. 
La tecnica di accesso al CAN BUS è la Carrier Sense Multiple Access with Collition Detection and Arbitration on Message Priority (CSMA/CD+AMP).
  1. Carrier Sense: un nodo trasmette solo se il CAN Bus è libero ed attende quando è occupato;
  2. Multiple Access: ogni nodo legge sempre lo stato del CAN Bus anche quando è in fase di scrittura;
  3. Collition Detection: se rileva una fase di contesa, ovvero una collisione, la trasmissione da parte del nodo che ha una priorità inferiore è bloccata ma non distrutta sul CAN Bus;
  4. Arbitration on Message Priority: la fase di contesa è schedulata seguendo un meccanismo di arbitraggio basato sulla priorità che permette ad un nodo di proseguire con la trasmissione grazie alla maggiore priorità del proprio univoco identificativo (ID).

 

Fase di contesa

La CAN Bus è regolata dall'assioma 0 logico Dominante e di 1 logico Recessivo. In fase di contesa la priorità maggiore è legata al frame con priorità prossima allo 0.
Sul CAN BUS un nodo scrive il proprio ID, un bit per volta, e lo confronta con lo stato dal CAN Bus attraverso un wired-AND bit a bit tra il bit ricevuto con quello trasmesso. In questo stato qualunque nodo si trova ad analizzare i seguenti casi:
  1. Cambiamento di stato: ovvero un nodo rileva che il bit letto e non è quello che ha scritto e l'azione che compie il nodo è quella di sospendere la trasmissione del frame e di conseguenza salta, in questa fase, la possibilità di trasmettere attendendo una fase successiva;
  2. Nessun cambiamo di stato: ovvero un nodo legge lo stesso valore di quello che ha scritto sul CAN Bus e l'azione di scrittura dell’ID sul bus terminerà quando sarà trasmesso l'intero ID e risultando abilitato, in quanto non ha rilevato collisioni, alla trasmissione.

Inoltre per i nodi coinvolti nella fase di contesa che hanno perso l'arbitraggio, sospenderanno la trasmissione dell’ID e ritenteranno successivamente in un’altra fase di trasmissione, permettendo così al nodo trasmittente di trasmettere sul CAN Bus senza conflitti.
 
Per gli amanti del para-visivo, la tabella sotto esplicherà il contenuto sopra descritto.



 
START BIT
IDENTIFICATOR
10
9
8
7
6
5
4
3
2
1
0
Node A ID: 0x10
0
0
0
0
0
0
0
1
0
0
0
0
Node B ID: 0x14
0
0
0
0
0
0
0
1
0
1
  -
  -
Node C ID: 0x1C
0
0
0
0
0
0
0
1
1
  -
  -
  -
 
CAN BUS
0
0
0
0
0
0
0
1
0
0
0
0


   3.     Date Frame

Il protocollo CAN prevede due formati per la trasmissione dei dati. I frame possono avere due formati:
  • Base frame format o CAN Standard: con 11 bit di identificazione.
  • Extended frame format o CAN Extended: con 29 bit di identificazione.
Lo standard CAN obbligatoriamente riconoscere il formato base frame e può opzionalmente riconoscere il formato extended frame format. Per la politica di gestione dei messaggi lo standard vigente per veicoli off road e commerciali è la SAE J1939.
CAN Standard
CAN Extended
 
  • Start of frame bit – indica l'inizio di un frame con valore dominante 0 logico.
  •  Arbitration ID – identifica e indica la priorità del frame. Il CAN standard usa 11 bit come identifier mentre il CAN extended usa 29 bit come identifier, ovvero 11 bit per identifier A + 18 bit identifier B.
  •  IDE (identifier extension) bit – permette la differenzazione tra i frame standard and extended.
  •  RTR (remote transmission request) bit – permette di differenziare i tipi di frame. Il valore dominante (RTR = 0) indica un data frame mentre il valore recessivo (RTR = 1) indica un remote frame.
  • DLC (data length code) – indica il numero di byte contenuto nel campo DATA.
  •  Data Field – può contenere da 0 a 8 bytes di informazioni.
  •  CRC (cyclic redundancy check) – Usato come error detectio
  • ACK (ACKnowledgement) slot – quando il messaggio è transmesso correttamente

Commenti

Post popolari in questo blog

AUTOSAR

LIN Local Interconnect Network

Automotive safety-ISO 26262