CAN komunikazio-protokolo

**CAN** (ingelesezko siglak: ***Controller** **Area** **Network***)  komunikazio-protokolo bat da Robert Bosch GmbH enpresa alemaniarrak garatutakoa, bus-topologia batean oinarritzen dena ingurune banatuetan mezuak transmititzeko. Gainera, irtenbide bat eskaintzen dio PUZ (prozesatzeko unitate zentralak) anitzen arteko komunikazioaren kudeaketari.

CAN komunikazio-protokoloak onura hauek dakartza:

* Interferentziekiko immunitate handia eskaintzen du, autodiagnostikorako eta datu-erroreak konpontzeko trebetasuna.
* Komunikazio-protokolo normalizatua da eta, beraz, erraztu egiten da fabrikatzaile desberdinen azpisistemak sare komun edo bus baten gainean komunikatzea.
* Prozesadore anfitrioiak (host) periferiko adimendun baten esku uzten du komunikazioen karga; beraz, prozesadore anfitrioiak denbora gehiago du bere zereginak gauzatzeko.
* Sare multiplexatua denez, kableatua nabarmen murrizten du eta puntutik punturako konexioak ezabatzen ditu.

## Historia eta bilakaera 
CAN protokoloaren garapena 1983an hasi zen Robert Bosch GmbH enpresan (normalean Bosch deritzona). Protokoloa 1986an kaleratu zen ofizialki, Detroiteko Automobilgintza Ingeniarien Elkartearen (SAE) kongresuan. Lehen CAN kontrolatzaileak 1987an iritsi ziren merkatura Intel eta Philipsen eskutik.

Ondoren, CAN zehaztapenaren hainbat bertsio argitaratu zituen Boschek, eta azkena CAN 2.0 zehaztapena izan zen, 1991n argitaratua. Zehaztapen horrek bi zati ditu: A zatia formatu estandarrerako eta B zatia formatu hedaturako. Formatu estandarra erabiltzen duen CAN gailu batek 11 biteko identifikatzaileak erabiltzen ditu eta CAN 2.0A gailu gisa adierazten da. Formatu hedatua erabiltzen duen CAN gailu batek 29 biteko identifikatzaileak erabiltzen ditu eta CAN 2.0B gailu gisa adierazten da. CAN 2.0A/B estandarrak eta CANekin lotutako erreferentziazko beste dokumentu batzuk Bosch-en bidez doan eskuratzekoak dira.

1993an CAN busaren ISO 11898 estandarra argitaratu zen, eta une horretatik aurrera Normalizaziorako Nazioarteko Erakundearen estandarra izan da. Gaur egun, arau hauek estandarizatzen dute CAN busa:

* ISO 11898-1:2015, *Part 1: Data link layer and physical signalling.*
* ISO 11898-2:2016, *Part 2: High-speed medium access unit.*
* ISO 11898-3:2006. *Part 3: Low-speed, fault-tolerant, medium-dependent interface. Estandar hori 2015ean berrikusi eta berretsi da.*
* ISO 11898-4:2004, *Part 4: Time-triggered communication. Estandar hori 2013an berrikusi eta berretsi da.*
* ISO 11898-5:2007, *Part 5: High-speed medium access unit with low power mode.*
* ISO 11898-6:2013, *Part 6: High-speed medium access unit with selective wake-up functionality.*
* ISO 16845:2016, *Conformance test plan.*

2011n, Bosch, automobil-fabrikatzaileekin eta CAN buseko beste aditu batzuekin lankidetzan, CANen hurrengo belaunaldia garatzen hasi zen: CAN FD protokoloa (*flexible data rate*). CAN FD atzerantz bateragarria da, hau da, CAN FD kontrolatzaile bat gai da CAN klasikoaren (edo CAN 2.0ren) mezu bat ulertzeko.

## Ezaugarri nagusiak 
CAN ekoizle/kontsumitzaile ereduan oinarritzen da; hau da, kontzeptu edo datuak komunikatzeko paradigma bat da, ekoizle baten eta kontsumitzaile baten edo gehiagoren arteko harremana deskribatzen duena. CAN mezuetara bideratutako protokolo bat da; hau da, trukatuko den informazioa mezuetan deskonposatzen da, eta mezu horiei identifikatzaile bat esleitzen zaie eta trametan kapsulatzen dira transmititzeko. Mezu bakoitzak identifikatzaile bakar bat du sarearen barruan, zeinarekin nodoek mezu hori onartzea edo ez onartzea erabakitzen duten. Ezaugarri nagusien artean honako hauek daude:

* Mezuen lehentasuna.
* Latentzia-denboren ziurtasuna.
* Malgutasuna konfigurazioan.
* Multidifusio bidezko harrera (multicast), denboren sinkronizazioarekin.
* Sistema sendoa.
* Nagusi anitzeko sistema.
* Erroreak hautematea eta seinaleztapena.
* Trama okerren birtransmisio automatikoa.
* Sareko nodoen aldi baterako erroreak eta akats iraunkorrak bereiztea, eta nodo akastunen deskonexio autonomoa egitea.

CAN hasieran automobiletan aplikatzeko garatu zen eta, beraz, protokoloaren plataforma automobilgintzaren arloan dauden beharren emaitza da.

## CAN bus motak 
CAN busen zehaztapena ISO 11898 estandarren multzoan jasota dago. Zehaztapen horrek sistemen interkonexiorako OSI ereduaren lehenengo bi geruzak definitzen ditu, geruza fisikoa eta datuen lotura-geruza. Estandar horietan oinarrituta, CAN busak bi motatan sailka daitezke.

* Abiadura handiko CAN (gehienez 1 Mbit/s).

* Abiadura txikiko CAN hutsegite-toleratzailea (gehienez 125 kbit/s).

### Abiadura handiko CAN 
**ISO 11898-2** edo abiadura handiko CANak mutur bakoitzean amaitutako bus lineal bakarra erabiltzen du, 120 Ω-eko erresistentziekin. Garrantzitsua da amaiera-erresistentzien balioa busaren inpedantzia bereizgarriarekin bat etortzea (120 Ω), linean komunikazioa nahas dezaketen islapenak saihesteko. Konfigurazio horrekin, busaren abiadura gehienez 1 Mbit/s-koa da.
erdian|thumb|633x633px|Abiadura handiko CAN busa. ISO 11898-2

### Abiadura txikiko CAN hutsegite-toleratzailea 
**ISO 11898-3** edo abiadura txikiko CAN hutsegite-toleratzaileak bus lineal bat, izarreko bus bat edo bus lineal baten bidez konektatutako izar-busak erabil ditzake. Busa amaiera totaleko erresistentziaren frakzio batek amaitzen du nodo bakoitzean. Guztizko amaiera-erresistentziak 100 Ω  inguruko balioa izan beharko luke, baina ez 100 Ω-etik beherakoa. Estandar honek 125 kbit/s-rainoko abiadurak ahalbidetzen ditu.
erdian|thumb|425x425px|Abiadura txikiko CAN hutsegite-toleratzailea. ISO 11898-3

### CAN FD (*flexible data-rate*) 
2011n, Bosch CANaren bilakaera lantzen hasi zen. 2012an CAN FD 1.0 merkaturatu zuen, arbitrajearen ondoren transferentzia-tasa handitzea eskaintzen duena. Oraingoz (2015), CAN FDren datuen lotura-geruza bakarrik definitu da. Maiztasuna 8rekin biderkatu daiteke, eta trama bakoitzeko gehieneko byte-kopurua handitu egiten da eta, era berean, posible da denbora berean datu-kopuru handiagoa transmititzea. Zehaztapena ISO/DIS 11898-1: 2015 arauaren zirriborroan jasota dago.
erdian|thumb|602x602px|Bit CAN baten kuantifikazioaren adibidea

## Datu-lotura geruza 
### Komunikabideetarako sarbidea (arbitrajea) 
Arbitrajea trama edo mezu baten lehen bitetan gertatzen da, mezuaren identifikatzaile deritzona transmititzen den bitartean. Arbitraje-prozesuaren amaieran nodo bakarra geratu behar da busaren kontrolarekin. Nodo batek arbitrajea galtzen duenean, bere tramaren transmisioa atzeratzen du, egungo trama amaitzen denean berriro saiatzeko. Identifikadore baxuagoa duen CAN trama batek lehentasun handiagoa du identifikadore altuagoa duen trama batek baino.

### Trama motak 
Lau CAN trama mota daude:

* Datu trama (*data frame*)

* Urruneko trama (*remote frame*)

* Errore-trama (*error frame*)

* Gainkarga trama (*overload frame*)

### Datu trama 
CAN datu-trama bat bi formatu hauetako batekoa izan daiteke:

* Oinarrizko formatua: 11 biteko identifikatzailearekin.

* Formatu hedatua: 29 biteko identifikatzailearekin.

#### Oinarrizko formatua 
#### Formatu hedatua 
### Urruneko trama 
### Errore-trama 
### Gainkarga trama 
### Tramen tartea 
### Betegarri bitsak (*bit stuffing*) 
## CANen oinarritutako protokoloak 
## Erreferentziak 
## Ikus, gainera 
* IEC 62196

##### Automobilerako komunikazio-protokoloak 
* FlexRay
* LIN
* MOST

##### Komunikazio-protokolo generikoak 
* RS-232
* RS-485

## Kanpo estekak 
* Wikimedia Commonsek Bus CANi buruzko multimedia-kategoria bat du.
* https://web.archive.org/web/20040604161544/http://canbus.galeon.com/electronica/canbus.htm
* http://www.can-cia.org/
* CANLIST eztabaidaren plataforma independentea (ingelesez)
* CAN protokolo-tutorial (ingelesez)