# 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.

### 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.

### 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.

## Geruza fisikoa
### Bus tentsio-mailak

CAN bus batean seinaleak gurutzaturiko bi kableren bidez transmititzen dira. Kable horien seinaleei CAN_H (CAN high) eta CAN_L (CAN low) deritze. Busak bi egoera ditu definituta: egoera menderatzailea eta egoera atzerakorra. Atzerakako egoeran, busaren bi kableak tentsio-maila berean daude (common-mode voltage), eta egoera menderatzailean, berriz, CAN_H-ren eta CAN_L-ren arteko potentzial-diferentzia gutxienez 1,5 V-ekoa da. Seinaleak tentsio diferentzial moduan transmititzeak interferentzia elektromagnetikoen aurrean babesa ematen du.

### Kablea eta konektoreak

CAN bus baten nodoak konektatuta egon behar dira, 120 Ω-eko inpedantzia bereizgarriarekin pare bihurritu baten bidez, eta pantailatu edo pantailatu gabeko kablea izan daiteke. Kable gurutzatuak kanpoko interferentzia elektromagnetikoen aurkako babesa ematen du.
CAN estandarrak ez du buserako inolako konektorerik zehazten eta, beraz, aplikazio bakoitzak konektore desberdina izan dezake.
Transmisio-linearen propietateek datuen banda-zabalera mugatzen dute.

### Bit sinkronizazioa

CAN bus bateko nodo guztiek transferentzia-tasa nominal berarekin lan egin behar dute. CAN busak ez duenez erloju bereiziaren seinalerik erabiltzen, diferentzia bat dago nodo desberdinen transferentzia-tasa errealaren artean. Horregatik, beharrezkoa da nodoen arteko sinkronizazio-metodo bat.
CAN kontrolatzaileak atzerakorratik dominanterako busaren trantsizioa denbora-tarte jakin batean gertatzea espero du. Trantsizioa ez bada itxarondako tartean gertatzen, kontrolatzaileak birdoitu egingo du hurrengo bit horren iraupena. Doikuntza hori egiteko, bit bakoitza denbora-tarteetan edo kuantu-denboretan zatitzen da, eta tarteak bit bakoitzeko lau segmentuei esleitzen zaizkie: sinkronizazioa, hedapena, 1. faseko segmentua eta 2. faseko segmentua.

## 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.

#### Formatu hedatua
### Urruneko trama
### Betegarri bitsak (bit stuffing)
## CANen oinarritutako protokoloak
## Erreferentziak

* ↑ «CAN in Automation (CiA): History of the CAN technology» www.can-cia.org (Noiz kontsultatua: 2022-11-29).
* ↑ «CAN in Automation (CiA): CAN knowledge» www.can-cia.org (Noiz kontsultatua: 2022-11-29).
* 1 2 «CAN in Automation (CiA): CAN FD - The basic idea» www.can-cia.org (Noiz kontsultatua: 2022-11-29).
* ↑ (Ingelesez) AN1798: CAN Bit Timing Requirements. .

## 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)
* Datuak: Q728183
* Multimedia: CAN bus / Q728183