Controller area network

De Viquipèdia
Dreceres ràpides: navegació, cerca

El bus CAN (Controller Area Network amb anglés) o CANbus és un bus estandard disenyat per vehicles per comunicar microcontroladors i dispositius per comunicar-se amb altres aplicacions sense un ordinador (host). És un protocol basat en missatges inicialment disenyat per a automobils tot i que s'utilitza en altres aplicacions.

És un bus sèrie desenvolupat per Robert Bosch GmbH per a l'automòbil. Va ésser presentat juntament amb Intel el 1985. L'objectiu era reduir la quantitat de cables dels vehicles (hi havia fins a 2 Km de cables en un vehicle) posant en comunicació diversos òrgans de comandament del vehicle amb un únic bus i no amb línies dedicades, reduint el pes del cablejat. Les normes CAN cobreixen del model OSI els nivells 1 (físic) i 2 (enllaç). El bus CAN ha estat normalitzat com a ISO 11898.

Hi ha dues normes. Aquestes dues normes són compatibles permetent que circulin missatges d'ambdues en un mateix bus.

El CAN estàndard o CAN 2.0 A 
L'Identificador d'Objecte és d'11 bits permetent vehicular 2048 tipus de missatges, reduïts a 2031 per raons històriques.
El CAN ampliat o CAN 2.0 B
L'Identificador d'Objecte és de 29 bits, cosa que permet vehicular 536.870.912 tipus de missatges.

L'accés al bus segueix l'estàndard CSMA/CD+AMP (Accés Múltiple per detecció de portadora (ang. Carrier Sense), Detecció de Col·lisió i Arbitratge de Prioritat dels Missatges). L'encapçalament de la trama reflecteix la prioritat del missatge, permetent l'ús del bus CAN en xarxes de Temps Real.

CANopen és l'estàndard per a aplicacions del bus CAN en les capes del model OSI per damunt de les del bus (de Xarxa a Aplicació).

Aplicacións[modifica | modifica el codi]

Automoció[modifica | modifica el codi]

Els cotxes d'avui dia tenen aproximadament unes 70 Unitats de Control Electrònic per diversos subsistemes, entre altres el ABS, la transmissió, l'airbag, les portes, finestres, etc. Per aquesta raó i perquè en els automòbils hi ha molt de soroll és va dissenyar el bus CAN expressament per automòbils.

Ciclisme[modifica | modifica el codi]

El protocol canBus s'utilitza desde el 2009 en el sistema de canvi de marxes del Shimano Di2.

Industria[modifica | modifica el codi]

Avui dia el bus CAN s'utilitza en els sistemes autònoms bàsicament perquè és barat.

Entreteniment[modifica | modifica el codi]

També s'utilitza en alguns videojocs de simulació de cotxes.

História[modifica | modifica el codi]

Al febrer de 1986 Robert Bosch introdueix el bus serie Controller Area Network(CAN) al congrés Society of Automotive Engineers (SAE). Aquest va ser el començament d'un dels millors protocols de comunicació de tots els temps. Avui dia tots els automòbils del món estan equipats amb un CANbus.

Cronologia[modifica | modifica el codi]

  • 1983: Bosch comença un projecte per desenvolupar un bus intern per vehicles.
  • 1986: Introducció oficial del protocol CAN.
  • 1987: Primer controlador CAN als chips d'Intel i Philips.
  • 1991: Bosch publica les especificacions 2.0 del CAN.
  • 1992: CAN entra en l'automoció (CiA).
  • 1992: Protocol de Capa d'aplicació del protocol CAN publicat per la CiA.
  • 1992: Els primers cotxes de Mercedes-Benz utilitzen CAN.
  • 1993: Es publica ISO 11898 estandard.
  • 1994: Primera conferencia internacional del CAN.
  • 1995: Es publica una versió extesa de ISO 11898.
  • 1995: La CiA publica el CANopen.
  • 2000: Desenvolupament del TTCAN.

Caraterístiques[modifica | modifica el codi]

  • Prioritat de missatges.
  • Temps de resposta garantit.
  • Configuració flexible.
  • Recepció per multidifusió (Multicast) amb sincronització.
  • Sistema robust, consistencia de dades.
  • Sistema multi-Master.
  • Detecció i señalització d'errors.
  • Detecció automàtica de trames erronias.
  • Detecció entre errors puntuals i fallades permanents dels nodes de la xarxa i desconnexió automàtica dels nodes defectuosos

Arquitectura[modifica | modifica el codi]

Bus CAN d'alta velocitat. ISO 11898-2
Bus CAN d'alta velocitat. ISO 11898-2
Bus can de baixa velocitat tolerant a fallades. ISO 11898-3
Bus can de baixa velocitat tolerant a fallades. ISO 11898-3

El bus CAN és un bus serial estandard multi-master per a connexions entre ECUs també anomedades nodes. És necessitem dos o més nodes en una xarxa CAN per poderse comunicar. La complexitat del node pot anar desde un simple dispositiu d'entrada sortida fins a un sistema encastat amb una interficie CAN i un software sofisticat.

Tots els nodes estan comunicats amb els altres amb 2 cables. Els cables son dos parells trenats.

La ISO 11898-2, també anomeda "high speed CAN" utilitza busos lineals acabats amb resistors de 120 oms.

El bus CAN ultraràpid s'utilitza habitualment en l'automoció i l'industria on els bus va d'un medi a un altre. La tolerància a fallades del bus CAN fa que sovint s'utilitzi quan grups de nodes han de comunicar-se.

Cada node ha de tindre com a mínim:

  • Una unitat central de procés, ja sigui un microprocessador o un host.
    • Els sensors i actuadors poden ser connectats al processador host.
  • Un controlador CAN, sovint incorporat al microcontrolador.
    • El controlador guardara els missatges que rep per parts fins que tingui el missatge sencer.
    • Després enviara el missatge al controlador CAN pel bus quan el BUS estigui disponible.
  • Un transceptor, definit per la ISO 11898-2/3.
    • Transforma les dades del nivell de BUScan al nivell del controlador CAN perquè aquest ho pugui llegir.
    • També fa el process invers, transforma les dades del nivell del controlador CAN al nivell del BUScan.

Cada node està capacitat per enviar i rebre missatges, però no ho pot fer simultàniament. Cada missatge consisteix en una id que representa la prioritat del missatge, les dades, un CRC, uns slot per al ACK i alguna sobrecàrrega més que també forma part del missatge. Un missatge es posat al bus per un node i rebut per tots els altres.

Capes[modifica | modifica el codi]

Capa d'aplicació.[modifica | modifica el codi]

Capa objecte.[modifica | modifica el codi]

  • Filtratge de missatges.
  • Maneig de l'estat i dels missatges.

Capa de transferéncia.[modifica | modifica el codi]

La majoria dels estàndards CAN estan aplicats a la capa de transferència. La capa de transferència rep les dades de la capa física i les transmet a la capa objecte. La capa de transferència és responsable de les següents qüestions:

  • Confinament de fallades.
  • Detecció d'errors.
  • Validació dels missatges.
  • Acknowledgement.
  • Arbitratge.
  • Enquadrament dels missatges.
  • Tassa de transferència i temporització.
  • Informació de l'enrutament.

Capa física.[modifica | modifica el codi]

És la capa de més baixa nivell del bus CAN, en el seu estàndard ISO 11898 s'especifiquen totes les seves característiques detalladament.

Trames[modifica | modifica el codi]

La xarxa CAN pot ser configurada amb dos tipus de formats per als missatges (Trames): el estàndard o format base (descrit al CAN 2.0 A i al CAN 2.0 B) i el format extés (descrit només en el CAN 2.0 B). La única diferència entre els dos formats és que el estàndard suporta una longitud de 11 bits per l'identificador mentre que el format extès suporta fins a 29 bits per l'identificador, 11 bits per l'identificador base i 18 per l'identificador extès.

El bus CAN té 4 tipus de frames:

Trama de dades[modifica | modifica el codi]

Té dos formats:

  • Format base: amb 11 bits per l'identificador.
  • Format extès: amb 29 bits per l'identificador.

El bus CAN requereix la implementació del format estàndard i pot acceptar el format extès.

Format base
Format base

Trama remota[modifica | modifica el codi]

  • Hi ha dos diferéncies entre la trama de dades i la trama remota, la primera és que el RTR-BIT és transmes com a un bit dominant en la trama de dades i la segona és que la trama remota no té el camp per a les dades.

RTR = 0 ; Dominant en la trama de dades.

RTR = 1 ; Recisiu en l trama remota.

Trama d'error[modifica | modifica el codi]

La trama d'error consisteix en dos camps diferents:

  • El primer camp ve donat per la superposició de l'ERROR FLAG (6-12 bits dominants/recissius) contribuïts de diferents nodes.
  • El segon camp és el ERROR DELIMITER (8 bits recissius).

Hi hi dos tipus de flags d'erros:

  • Indicador d'error actiu: sis bits dominants transmesos pel node que ha detectat un error a la xarxa amb l'estat d'error actiu.
  • Indicador d'error passiu: sis bits recisius transmesos pel node que ha detectat un error a la xarxa amb l'estat d'error passiu,

Trama de sobrecarga[modifica | modifica el codi]

La trama de sobrecarga conté dos camps el flag de sobrecàrrega i el delimitador de sobrecàrrega. Hi ha dos tipus de condició de sobrecarrega:

  1. Les condicions internes d'un receptor que requereix una espera per la pròxima trama de dades o la pròxima trama remota.
  2. Detecció d'un bit dominant durant l'intermedi.

Estandards[modifica | modifica el codi]

  • ISO 11898-1: Capa de dades i senyalització física CAN.
  • ISO 11898-2: Control d'acces ultraràpid CAN.
  • ISO 11898-3: Interficie de baixa velocitat i tolerant a fallades CAN.
  • ISO 11898-4: temps de comunicació CAN.
  • ISO 11898-5: Alta velocitat amb acces mig i mode de baix consum CAN.
  • ISO 11898-6: Acces d'alta velocitat amb funcions d'atenció sel·lectiva CAN.
  • ISO 11992-1: Transport tolerant a fallades CAN.
  • ISO 11783-2: 250 kbit/s, estandard d'agricultura.
  • ISO 15765-2: També anomenat ISO-TP, es un estandard per control i maneig de missatges més llargs de 8 bits.
  • SAE J1939-11: 250 kbit/s, Parell trenat apantallat (STP).
  • SAE J1939-15: 250 kbit/s, parell trenat no apantallat (UTP)
  • SAE J2411: CAN d'un sol fil (SWC).