Controller Area Network: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
 
(17 versioni intermedie di 11 utenti non mostrate)
Riga 1:
Il '''Controller Area Network''', noto anche come '''CAN-bus''', è uno standard [[Porta seriale|seriale]] per [[Bus (informatica)|bus]] di campo (principalmente in ambiente automotive), di tipo [[multicast]], introdotto negli [[anni 1980|anni ottanta]] dalla [[Robert Bosch GmbH]], per collegare diverse [[Unità di controllo elettronico (elettromeccanica)|unità di controllo elettronico]] (ECU). Il CAN è stato espressamente progettato per funzionare senza problemi anche in ambienti fortemente disturbati dalla presenza di [[onde elettromagnetiche]] e può utilizzare come [[mezzo trasmissivo]] una linea a differenza di potenziale bilanciata come la [[RS-485]]. L'immunità ai disturbi EMC può essere ulteriormente aumentata utilizzando cavi di tipoa [[twisteddoppino pair]] (''ritorto|doppino intrecciato'')]].
 
Sebbene inizialmente applicata in ambito [[automotive]], come bus per autoveicoli, attualmente è usata in molte applicazioni industriali di tipo [[Sistema embedded|embedded]], dove è richiesto un alto livello di immunità ai disturbi. Il [[bit rate]] può raggiungere {{M|1 |u=Mbit/s}} per reti lunghe meno di {{M|40 |u=m}}. Velocità inferiori consentono di raggiungere distanze maggiori (ad es. {{M|125 |u=kbit/s}} per {{M|500 |u=m}}). Il protocollo di comunicazione del CAN è standardizzato come ISO 11898-1 (2015). Questo standard descrive principalmente lo strato (''layer'') di scambio dati (''data link layer''), composto dallo strato sottostante (''sublayer'') "logico" (''Logical Link Control, LLC'') e dallo strato sottostante del ''Media Access Control, (MAC)'' e da alcuni aspetti dello strato "fisico" (''physical layer'') descritto dal modello [[ISO/OSI]] (''ISO/OSI Reference Model''). I protocolli di tutti gli altri layer sono lasciati alla libera scelta del progettista della rete.
 
== Trasmissione dati ==
Il CAN trasmette dati secondo un modello basato su [[Bit (informatica)|bit]] "dominanti" e "recessivi", in cui i bit dominanti sono gli '''0''' ''logici'' e i bit recessivi sono gli '''1''' ''logici''. Se un nodo trasmette un bit dominante e un altro un bit recessivo, allora il bit "dominante" "vince" fra i due (realizzando una combinazione [[Algebra di Boole|AND logico]]).
 
{| style="margin-left:auto; margin-right:auto;"
{| align="center" cellpadding="20" border="0"
|colspan="2"|+ '''[[Tabella della verità]] dei bit dominanti/recessivi (AND logico):'''
|-
|-
|colspan="2"| '''[[Tabella della verità]] dei bit dominanti/recessivi (AND logico)'''
{| class="wikitable" style="margin-left:auto; margin-right:auto;"
|+ ''<div align="center">Stato del bus quando due nodi trasmettono</div>''
|-
! !! dominante !! recessivo
| ''<div align="center">Stato del bus quando due nodi trasmettono</div>''
{| align="center" border="1" cellpadding="10"
|-
|! || '''dominante''' || '''recessivo'''
| ''dominante'' || '''''dominante''''' || ''dominante''
|-
! recessivo
| ''dominante'' || '''''dominante''''' || ''dominante''
| ''recessivo'' || '''dominante''' || '''''recessivo'''''
|-
| ''recessivo'' || '''dominante''' || '''''recessivo'''''
|}
|
|| ''<div align="center">AND logico</div>''
{| class="wikitable" style="margin-left:auto; margin-right:auto;"
{| align="center" border="1" cellpadding="10"
|+ AND logico
|-
|! !! ||0|| !! 1
|-
|0||0||! 0
| 0 || 0
|-
|! 1|
| 0 || 1
|}
|}
Line 33 ⟶ 38:
 
Solitamente, quando usata in un bus differenziale, si applica lo schema [[CSMA/BA]] ''(Carrier Sense Multiple Access/Bitwise Arbitration)'': se due o più dispositivi incominciano a trasmettere contemporaneamente, si applica un meccanismo di arbitrato basato sulla priorità per decidere a quale dispositivo permettere di proseguire la trasmissione. Durante la trasmissione, ogni nodo in trasmissione controlla lo stato del bus e confronta il bit ricevuto con il bit trasmesso. Se un bit dominante è ricevuto mentre un bit recessivo è trasmesso il nodo interrompe la trasmissione (ossia ''perde l'arbitrato''). L'arbitrato è eseguito durante la trasmissione del pacchetto dei dati di identificazione del nodo. I nodi che incominciano contemporaneamente a trasmettere inviano un ID dominante a 0 binario, che incomincia con il bit alto. Non appena il loro ID è rappresentato da un numero più grande (quindi a priorità minore) i nodi stessi inviano un bit 1 (recessivo) e aspettano la risposta di uno 0 (dominante), quindi interrompono la trasmissione. Al termine dell'invio degli ID, tutti i nodi sono tornati allo stato di OFF, e il messaggio con la priorità corrente massima può liberamente transitare.
 
'''Vi insegno a bestemmiare:parole sacre dio porcellino.'''
 
<br />
 
== I frame ==
Line 55 ⟶ 56:
Lo standard CAN ''deve'' obbligatoriamente riconoscere il formato ''base frame'' e ''può'' opzionalmente riconoscere il formato ''extended frame format'' (che, tuttavia, deve essere tollerato).
 
Il CAN ''base'' permette 2<sup>11</sup> = {{formatnum:2048}} tipi di messaggi diversi, ma da specifiche Bosch se ne possono usare solo {{formatnum:2031}}. Nella versione ''extended'' si possono avere fino a 2<sup>29</sup> = 536&nbsp;870&nbsp;912{{formatnum:536870912}} tipi di messaggi.
 
==== Formato del Base frame ====
 
Il formato del baseBase frame ha la seguente struttura:
 
{| class="wikitable"
|- bgcolor="#ccccccCCCCCC"
! Nome del campo !! Lunghezza (numero di bit) !! Funzione
|-
| Start-of-frame || 1 || Indica l'avvio della sequenza di trasmissione
|-
| Identificatore || 11 || Identificatore (unico) dei dati
|-
| Richiesta remota di trasmissione (RTR) || 1 || Deve essere un bit dominante
|-
| Bit aggiuntivo di identificazione (IDE) || 1 || Deve essere un bit dominante
|-
| Bit riservato (r0) || 1 || Riservato
|-
| Codice di lunghezza dati (DLC) || 4 || Numero di byte per codificare ciascun dato (0-8 byte)
|-
| Campo dati || 0-8 byte || Dati da trasmettere (la lunghezza è specificata dal campo DLC)
|-
| CRC || 15 || [[Controllo di parità a ridondanza]]
|-
| delimitatore CRC || 1 || Deve essere un bit recessivo
|-
| Slot ACK || 1 || Il trasmettitore invia un bit recessivo e ogni ricevitore può confermare la ricezione con un bit dominante
|-
| Delimitatore ACK || 1 || Deve essere un bit recessivo
|-
| End-of-frame (EOF) || 7 || Devono essere bit recessivi
Line 97 ⟶ 98:
 
{| class="wikitable"
|- bgcolor="#ccccccCCCCCC"
! Nome del campo !! Lunghezza (numero di bit) !! Funzione
|-
| Start-of-frame || 1 || Indica l'avvio della sequenza di trasmissione
|-
| Identificatore A || 11 || Prima parte dell'identificatore (unico) dei dati
|-
| Richiesta remota sostitutiva (SRR) || 1 || Deve essere un bit recessivo
|-
| Bit aggiuntivo di identificazione (IDE) || 1 || Deve essere un bit recessivo
|-
| Identificatore B || 18 || Seconda parte dell'identificatore (unico) dei dati
|-
| Richiesta remota di trasmissione (RTR) || 1 || Deve essere un bit dominante
Line 116 ⟶ 117:
| Codice di lunghezza dati (DLC) || 4 || Numero di byte del dato (0-8 byte)
|-
| Campo dati || 0-8 byte || Dati da trasmettere (lunghezza specificata dal campo DLC)
|-
| CRC || 15 || [[Controllo di parità a ridondanza]]
|-
| Delimitatore CRC || 1 || Deve essere un bit recessivo
|-
| Slot ACK || 1 || Il trasmettitore invia un bit recessivo e ogni ricevitore può confermare la ricezione con un bit dominante
|-
| Delimitatore ACK || 1 || Deve essere un bit recessivo
|-
| End-of-frame (EOF) || 7 || Devono essere bit recessivi
Line 156 ⟶ 157:
:2. Viene rilevato un bit dominante durante un intervallo nella trasmissione.
 
Un overload frame dovuto al caso 1 è consentito solo per essere avviato al momento del primo bit di un intervallo previsto, mentre un overload frame dovuto al caso 2 incomincia un bit dopo aver rilevato il bit dominante. L'Overload Flag è costituito da sei bit dominanti (tutti pari a 0). La forma complessiva è come quella di un active error flag, che azzera i campi intervalli. Conseguentemente, anche gli altri nodi della rete rilevano una condizione di overload e trasmettono un overload flag. L'overload Delimiter è costituito da [[8 bit]] recessivi (tutti pari a 1) e ha la stessa forma di un "delimitatore di errore" (''Error Delimiter'').
 
== Bit stuffing ==
Line 170 ⟶ 171:
* '''SAE J2411''': CAN single-wire CAN (SWC)
 
Lo standard '''ISO 11898-2''' utilizza per i segnali una [[linea bilanciata]] a due fili. È il layer fisico più usato in applicazioni per autotrazione e controlli industriali.
 
Lo standard '''ISO 11898-4''' definisce il tipo di comunicazione del CAN detto ''time-triggered'' (TTCAN), basato su un protocollo di layer fornito di un orologio di sistema per schedulare l'inoltro dei messaggi.
Line 191 ⟶ 192:
* {{cita web|http://www.can-wiki.info/|CAN-Wiki|lingua=en}}
* {{cita web|http://www.can-cia.org/|CAN nell'automazione (CiA) Gruppo internazionale utilizzatori e costruttori|lingua=en}}
* {{cita web|1=http://www.launch-techs.com/Support/Info/can-bus.htm|2=CAN DATA BUS della Mercedes Benz|lingua=en|accesso=5 febbraio 2006|urlarchivio=https://web.archive.org/web/20060301143401/http://www.launch-techs.com/Support/Info/can-bus.htm|dataarchivio=1 marzo 2006|urlmorto=sì}}
* {{cita web|1=http://www.yamar.com/DCAN250.html|2=CAN-BUS per controllo veicoli|lingua=en|accesso=5 febbraio 2006|urlarchivio=https://web.archive.org/web/20060311085648/http://www.yamar.com/DCAN250.html|dataarchivio=11 marzo 2006|urlmorto=sì}}
* {{cita web|1=http://www.interfacebus.com/Design_Connector_CAN.html|2=Descrizione dell'interfaccia CAN Bus, Pin Out e nomi dei segnali|lingua=en|accesso=5 febbraio 2006|urlarchivio=https://web.archive.org/web/20060205025135/http://www.interfacebus.com/Design_Connector_CAN.html|dataarchivio=5 febbraio 2006|urlmorto=sì}}
* {{cita web|httphttps://wwwtraining.cancapturedewesoft.com/online/course/automotive-buses-can-measurement|ExampleCAN ofBus and CAN NetworkFD AnalysisData ToolAcquisition and Analysis|lingua=en}}
* {{cita web|http://www.canlist.org|Piattaforma indipendente di discussione CANLIST|lingua=en}}
 
{{Bus computer}}