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:
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.[1]
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:
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.[2][3]
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:
CAN hasieran automobiletan aplikatzeko garatu zen eta, beraz, protokoloaren plataforma automobilgintzaren arloan dauden beharren emaitza da.
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.
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.
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.
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.[3]
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.
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.
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.[4]
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.
Lau CAN trama mota daude:
CAN datu-trama bat bi formatu hauetako batekoa izan daiteke: