Cos'e' la CAN?
CAN sta per Controller Area Network. La CAN e' quindi un metodo di comunicazione seriale utilizzato principalmente in ambiente Automotive introdotto negli anni 80 dalla Bosch (iniziando a divenire lo standard intorno agli anni 2000); viene utilizzato per collegare diversi moduli di controllo (ECU - Electronic Control Unit, da non confondere con la ECU motore - Engine Control Unit). Questo metodo di comunicazione viene utilizzato nell'ambiente automotive principalmente per la buona affidabilita' e l'immunita' ai disturbi di tipo EMC (Elettromagnetici) che potrebbero essere generati dalle componenti motore (candele, motori, alternatore, lampadine, ecc.). Per ridurre ulteriormente i disturbi, vengono utilizzati cavi intrecciati (twisted pair). La semplicita' del metodo CAN lo ha reso uno standard ai giorni d'oggi, infatti e' presente su quasi tutte le auto in commercio (ed e' utilizzato addirittura sugli aerei e in ambito spaziale!).
Se vi state chiedendo cosa si intende per semplicita', ecco a voi un esempio. Quali opzioni abbiamo per trasferire dati all'interno di un veicolo?
Chiaramente con l'opzione 1, la complessita' dell'impianto aumenta esponenzialmente all'aumentare del volume di informazioni da trasferire. Quindi piu' informazioni dobbiamo scambiare e piu' cavi saranno presenti. Mentre con la linea CAN possiamo scambiare quante informazioni vogliamo (rimanendo ovviamente nei limiti di capacita' della velocita' di trasferimento dei dati). Nell'immagine qui a destra potete invece osservare il concetto precedente con la linea CAN applicata. Quindi invece di avere 5 fili (come nell'esempio precedente) ne avremo solo 2. Questo rende la linea CAN un metodo di comunicazione semplice ed efficace, oltre a ridurre drasticamente l'ingombro delle componenti. Ovviamente l'utilizzo della linea CAN ha senso laddove c'e' bisogno di scambiare grandi quantita' di dati tra piu' moduli. Inoltre l'impiego della linea CAN rende l'aggiunta di unita' di controllo aggiuntive (e optionals) piu' semplice. |
Come potete osservare dall'immagine qui sopra, se ogni informazione venisse scambiata utilizzando un filo dedicato per ogni cosa, avremo svariati fili (nel caso dell'immagine sono 5). Mentre con la linea CAN abbiamo bisogno di 2 soli fili in tutto.
|
Da cosa e' formata la linea CAN?
La linea CAN e' composta da:
Processo di trasferimento dati:
Osservate l'immagine qui a destra. Potete osservare un totale di 4 unita' di controllo. L'unita' trasmittente e' la Control Unit 2, le altre Control Unit rimangono in ascolto. Le immagini qui sotto descrivono il processo completo per il trasferimento dati sulla linea CAN. In queste immagini viene preso come esempio il sensore di velocita' del motore (RPM). Vediamo quindi il processo completo di acquisizione dal sensore, elaborazione dati, invio, ricezione e visualizzazione sul quadro strumenti. Per prima cosa, il sensore di velocita' del motore acquisisce il valore. Tale valore viene salvato nella memoria del microcontrollore ad intervalli regolari (ciclici). Dato che il valore della velocita' del motore viene richiesto anche da altre unita' di controllo, e' necessario che venga inviato sul CAN Bus. Il valore viene copiato nella memoria di trasmissione della ECU (Engine Control Unit). Da qui, l'informazione arriva nella transmit mailbox del controller CAN (o CAN Module). |
Una volta che il messaggio viene inviato al CAN Module, la ECU completa il suo lavoro (per quanto riguarda il processo corrente). Il valore della velocita' del motore viene prima convertito in un messaggio motore tramite un form specifico CAN in accordo con il protocollo. I componenti di un messaggio motore includono:
Poi il CAN Module controlla tramite la linea RX se il bus e' attivo e aspetta fino a quando il bus si libera. Quando il bus e' libero il messaggio motore viene inviato. Tutte unita' di controllo presenti sul CAN BUS ricevono il messaggio inviato dalla ECU. Il messaggio viaggia sulle linee RX nelle aree riceventi di tutti i moduli CAN. Come potete osservare nell'immagine "Receive Process", il messaggio viene accolto soltanto nella mailbox ricevente dell'unita' di controllo "Dash panel insert" perche' l'ha reputata un'informazione importante e di conseguenza l'ha accettata, a differenza dell'unita' di controllo "ABS control unit" che ha ignorato il messaggio.
- identifier=engine_1
- content= rpm.
- Il messaggio motore contiene anche altri valori come la coppia o la velocita' in idle, ecc.
Poi il CAN Module controlla tramite la linea RX se il bus e' attivo e aspetta fino a quando il bus si libera. Quando il bus e' libero il messaggio motore viene inviato. Tutte unita' di controllo presenti sul CAN BUS ricevono il messaggio inviato dalla ECU. Il messaggio viaggia sulle linee RX nelle aree riceventi di tutti i moduli CAN. Come potete osservare nell'immagine "Receive Process", il messaggio viene accolto soltanto nella mailbox ricevente dell'unita' di controllo "Dash panel insert" perche' l'ha reputata un'informazione importante e di conseguenza l'ha accettata, a differenza dell'unita' di controllo "ABS control unit" che ha ignorato il messaggio.
Se due o piu' unita' di controllo tentano di inviare informazioni simultaneamente, si potrebbe verificare una collisione sul BUS dati. Per questo la linea CAN utilizza la seguente strategia:
Ogni messaggio ha un proprio livello di priorita'. Piu' e' basso il numero nell'identifier e piu' e' importante il messaggio. Queste procedura viene chiamata "arbitration". Nell'esempio dell'immagine qui a destra, il sensore dell'angolo di sterzata (wheel angle sensor) ha la proprita' piu' alta quando piu' unita' di controllo provano a trasmettere simultaneamente. Quindi il messaggio del sensore dell'angolo di sterzata viene inviato per primo. Quando la linea CAN si trova in stato di idle (o stato recessivo), troviamo una tensione di 2.5V sia su CAN High che CAN Low (quindi una differenza di 0V). Quando si inizia a dialogare (e si passa dallo stato recessivo a quello dominante), il CAN High sale a 3.5V e il CAN Low invece scende a 1.5V. In questo modo si viene a creare una differenza di 2.5V (idealmente, in pratica e' di 2V). Quindi in stato recessivo la differenza e' di 0V, in stato dominante di almeno 2V. |
Che cosa trasmette la linea CAN?
La linea CAN trasferisce un protocollo tra le unita' di controllo a piccoli intervalli. Essa e' suddivisa in 7 aree. Il protocollo contiene delle stringhe di bits. Il numero di bits nel protocollo dipende dalla grandezza del Data Field.
Descrizione delle 7 aree:
|
Diagnosi CAN
Il BUS CAN oltre ad essere semplice, efficace e con un'alta protezione contro la corruzione dei dati, ha anche capacita' di self-diagnosis. Infatti e' utilizzato come protocollo per effettuare le diagnosi mediante connettore OBD 2. Tramite apposita interfaccia sara' quindi possibile raggiungere ogni singola componente che forma l'impianto.
La tipologia di errore che puo' nascere, viene regolamentata grazie allo standard ISO (International Standards Organisation): A quanto pare all'interno di un veicolo VAG (Volkswagen/Audi Group) abbiamo piu' di una linea CAN BUS. Questo perche' ogni sezione ha bisogno di determinati requisiti per quanto riguarda la velocita' di scambio dati e la quantita'. Chiaramente, dispositivi come il quadro strumenti, richiedono una velocita' di trasmissione elevata per mostrare i valori in tempo reale, mentre dispositivi come i finestrini, le serrature, ecc. non hanno bisogno di dati in tempo reale, quindi non avranno bisogno di una comunicazione piu' veloce. In totale abbiamo 3 linee CAN (Qui a destra potete osservare una mappa delle linee e i relativi dispositivi):
La velocita' massima che puo' raggiungere la linea CAN e' di 1000kbps (1 mbps). Ovviamente la linea CAN BUS del DriveTrain non puo' essere unita a quella Infotainment/Convenience per via dei requisiti differenti (velocita' di trasmissione e quantita' dati). Quindi per farle comunicare insieme bisogna effettuare una conversione. Questo compito viene affidato alla Gateway CAN, che funziona anche da interfaccia diagnosi. Infatti se osservate la mappa piu' sopra a destra potete osservare che il connettore OBDII passa prima per la CAN Gateway. |
Risorse utili:
|
|
|