El CANopen és un protocol de comunicacions i perfil de dispositius per a sistemes incrustats sobre busos del tipus CANbus (Controller Area Network) funcionant en temps real. En termes del model OSI implementa la capa de xarxa i superiors. Els seus protocols de comunicacions donen suport a la gestió de xarxa, monitoratge de dispositius i comunicació entre nodes. Les capes més baixes solen ser de CANbus encara que també s'implementa sobre altres sistemes com ara EtherCAT.

Els estàndards CANopen estan centralitzats al web CAN in Automation.Web dels estàndards CANopen

Es fa servir en diversos camps d'aplicació com ara l'automoció, l'industrial (ascensors, escales mecàniques), el mèdic (ratjos X, sales d'operacions) o l'agrícola.

CANopen és una represa de la capa d'aplicació CAL desenvolupada per Philips Medical Systems reprèn els sistemes de gestió de bus i de missatges de la capa CAL tot definint el contingut dels missatges i integrant la noció de sistema distribuït. Un element mestre de la xarxa coordina els esclaus. La velocitat de transmissió pot atènyer 1 Mbit/s.

El perfil bàsic dels dispositius CANopen es defineix a l'estàndard CiA301 de CAN in Automation. Dispositius com ara mòduls d'Entrada/Sortida (estàndard CiA401) i controladors de moviment (estàndard CiA402) són especialitzacions del perfil bàsic mencionat.

Model de dispositiu Cada dispositiu CANopen ha d'implementar determinades característiques estàndard en el seu software de control.

Una unitat de comunicació implementa el protocol de missatgeria amb altres nodes de la xarxa. La comunicació és d'un a molts. Els missatges que no siguin de control seran acceptats només si figuren en llistes inicials per tipus al seu diccionari, cercant a les llistes de missatges a rebre o a transmetre segons el bit RTR indiqui 'Lliurament' o 'Comanda'. Lengegada i posada a zero del dispositiu es controla amb una màquina d'estats finits. Ha d'incloure els estats Inicial, Pre-operacional, Operacional i Aturat. Les transicions entre estats es desencadenen mitjançant una ordre d'un objecte de comunicació del gestor de xarxa "Network Management" (NMT). El diccionari d'objectes parametritza tots els aspectes del dispositiu, permetent adreçar les variables, siguin de configuració o d'accés a l'entorn, per exemple dades de mesures. La part daplicació del dispositiu realitza la funció desitjada un cop la màquina d'estats està en situació Operacional. L'aplicació es configura per variables del directori d'objectes i les dades s'envien i es reben pels missatges de la capa de comunicació.

Diccionari d'objectes Els dispositius CANopen han de disposar d'un diccionari d'objectes que relaciona els elements a transmetre.

El diccionari consta d'entrades consistents en una descripció de lObjecte i una llista d'elements adreçables (Valor) que contindrà un sol element en cas de variables simples o, en cas d'estructures, el nombre d'entrades de la llista seguit dels components.

Ens referirem a un element del diccionari pel parell (índex, subíndex). L'índex indica la posició (l'ordre, no l'adreça) de l'objecte en el diccionari. Un subíndex de 8 bits ens permetrà indicar la posició (en la llista d'elements de l'objecte al diccionari).

La descripció de lobjecte (adreçat per l'índex) incorpora els camps següents Nom Codi de l'objecte tipus codificat de l'objecte tal com NULL, DOMAIN, DEFTYPE, DEFSTRUCT, VAR, ARRAY, RECORD Nombre d'elements Tipus de l'element o de l'estructura

La descripció dels elements o valor de l'objecte (adreçats pel subíndex) incorpora Descripció de l'element Classe d'objecte (opcionalitat) un de {Mandatory, Optional} Accés un de {read/write, read-only, write-only, read only constant}. PDO Mapping (pot ser mapejat a un PDO ?) un de No, Opcional, Per defecte. Value Range (Tipus de dada) tal com UNSIGNED32, SIGNED16, ... Mandatory Range n/a o màxim i mínim. Valor per defecte

Zones del diccionari: El diccionari d'objectes consta de zones amb índexs reservats per funcionalitat. Aquestes són zones de definició de dades i estructures, i zones d'objectes de comunicacions (anomenades perfils). Les més emprades són:

Àrea de Tipus de dades simples Àrea de Tipus de dades complexos Àrea de Tipus de dades específics del fabricant Àrea de Tipus de dades simples específics del perfil Àrea de Tipus de dades complexos específics del perfil Àrea del Perfil de Comunicacions (ang: Communication Profile Area) Àrea del Perfil Específic del Fabricant (ang: Manufacturer Specific Profile Area) Àrea del Perfil de Dispositiu Estàndard (ang: Standardised Device Profile Area)

Valors inicials: Els valors inicials del diccionari d'objectes es mantenen en un fitxer de configuració del dispositiu (DCF) en format Electronic Data Sheet que és un format de fitxer de text de tipus .Ini detallat a l'estàndard.

Comunicació Objectes de Comunicació CANbus, la capa física i d'enllaç sobre la qual s'estableix CANopen, només pot transmetre missatges curts consistents en un marc amb un identificador d'11 bits i un bit RTR (Remote Transmission Request) i de 0 a 8 Octets de dades. Els 11 bits de la identificació es componen d'un codi de funció (4 bits) i número de node emissor (7 bits). Això limita el nombre de dispositius a 127. Una extensió de l'estàndard CANbus 2.0B permet identificadors de 29 bits però és rarament utilitzada a la pràctica.

L'identificador d'11 bits del marc s'anomena COB-ID (Communication Object Identifier). En cas de col·lisió en la transmissió, el sistema d'arbitratge permet que es retransmeti primer i sense retards el missatge amb l'identificador més petit. Ja que els 4 bits del codi de funció són més significatius que el node, això permet donar preferència als missatges amb codi de funció més baix que reservarem a les funcions més crítiques. L'identificador del node esclau també permetrà establir prioritats entre els dispositius amb preferència a l'identificador més baix.

El contingut d'un marc de missatge estàndard (no l'ampliat) es veu a la següent taula:

Inicide trama COB-ID RTR Control Dades CRC(dígits decomprovació) Ack(rebut) Fi detrama Codi deFunció 0:mestre/ ID Node esclau 1:Comanda0:Lliurament ID simple/ ampliat Reservat Llargadade dades Llargada 1 bit 4 bits 7 bits 1 bit 1 bit 1 bit 4 bits 0-8 octets 16 bits 2 bits 7 bits

L'estàndard reserva alguns COB_ID's per a la gestió de xarxa i transferències SDO. Alguns codis de funció COB-ID s'han de fer correspondre a funcionalitat estàndard després de la inicialització, però més tard poden ser mapejats a altres usos.

Models de Comunicació Hi ha diferents models:

En una relació mestre/esclau un node és designat el mestre i envia ordres o demana dades als esclaus. El protocol NMT n'és un exemple.

Una relació client/servidor s'estableix en el protocol SDO on el client demana dades del directori d'objectes del servidor i aquest les hi torna, o el client envia valors a canviar i el servidor li torna el resultat de l'operació.

El model productor/consumidor es fa servir en el protocol Heartbeat i el protocol Node Guarding. En la modalitat push (cat: empènyer) el productor envia dades als consumidors sense que les demanin; en la modalitat pull (cat: estirar) els consumidors reben les dades prèvia requesta al productor.

Protocols Els protocols s'articulen a l'entorn del missatge principal, definit al Diccionari per un Objecte de Comunicacions que relaciona els objectes a transmetre.

Protocols NMT de gestió de xarxa (Network Management) Els protocols de xarxa permeten enviar ordres de canvi d'estat de màquina (engegar i aturar dispositius), detectar l'engagada d'un sistema remot o condicions d'error.

El protocol de Control de mòduls l'utilitza el mestre NMT per canviar l'estat dels esclaus.

El protocol Batec de cor (ang. Heartbeat) es fa servir per monitorar els nodes de la xarxa i saber si estan vius.

El protocol dEngegada (ang. Boot-Up). Un dispositiu esclau notifica al mestre NMT que ha assolit l'estat pre-operacional després de l'engegada inicial o de la recuperació d'una manca de corrent.

Protocol SDO - Objectes de Servei de Dades El protocol SDO permet llegir i desar valors al diccionari d'objectes d'un dispositiu remot. El model de comunicació és el client/servidor.

El client demana llegir o desar un valor adreçat mitjançant el parell (índex, subíndex) al diccionari d'objectes i el servidor retorna el valor demanat o el resultat de l'operació.

Protocol PDO - Objectes de Procés de Dades L'Objecte de procés de dades es fa servir per a transmetre les dades d'aplicació en temps real.

Aquest protocol permet incloure en un mateix missatge diversos camps del diccionari d'objectes, reduint així la sobrecàrrega de transmissió (bits de transport sobre bits de dades).

L'altre avantatge del PDO és que la lectura es fa a través d'un missatge síncron o asíncron que pot ser llegit simultàniament per tots els nodes de la xarxa.

Protocol SYNC - Objectes de Sincronització L'objecte Sync és transmès periòdicament per l'emissor amb una freqüència configurable a la variable Communication Cycle Period.

Les aplicacions poden sincronitzar les trameses d'objectes PDO amb aquests missatges.

Hi pot haver petites desviacions en el temps d'entrega del missatge degut a una col·lisió amb un missatge més prioritari o degut a un missatge de dades precedent.

Protocol TIME - Objecte de registre horari (Time Stamp Object) Permet enviar a les aplicacions dels dispositius un valor del tipus Hora del dia.

La transmissió d'aquest objecte segueix la modalitat push de productor/consumidor.

Protocol EMCY - Objecte d'Emergències Un missatge d'emergència es dispara per un error intern d'un dispositiu. Això els fa idonis per a alertes d'interrupció.

Un missatge d'error es transmet un únic cop. Zero o més consumidors poden rebre el missatge.

Inicialització Mostra de traça de comunicacions entre un mestre i dos esclaus "transductors de pressió" als nodes 1 i 2.

CAN ID DATA LENGTH DATA Description 0x0 2 1 0 El Mestre posa el bus en mode operacional 0x80 0 El Mestre envia un missatge SYNC que dispara en els dispositius la tramesa de dades. 0x181 4 CD 82 01 00 Node amb ID 1 (CID-0x180), ha llegit una pressió de 0x0182CD(99021) Pascals 0x182 4 E5 83 01 00 Node amb ID 2 (CID-0x180), ha llegit una pressió de 0x0183E5(99301) Pascals

Glossari d'acrònims CANopen PDO Objecte de Procés de dades. SDO Objecte de Servei de dades. COB-ID Identificador d'Objecte de Comunicacions CAN CAN ID Identificador de missatge CAN EDS Electronic Data Sheet (fitxer tipus .Ini) DCF Device Configuration File, EDS modificat amb les dades del node i velocitat de transmissió.

Dispositius CANopen Mòduls d'Entrada/Sortida Els dispositius d'Entrada/ SortidaPerfil CANopen per a dispositius genèrics d'Entrada / Sortida solen tenir ports digitals o analògics per a sensors i actuadors. El perfil de dispositiu defineix els objectes de Comunicació, Configuració i Aplicació però també el comportament predeterminat després de l'Engegada i la Posada a zero.

En cas de problemes de comunicació seriosos (pèrdua de missatges) o fallada del dispositiu (ex.: curt-circuit a la sortida) el dispositiu passa a l'estat Pre-operacional i emet un missatge d'Emergència. En l'estat Pre-operacional els PDO estan inactius. Tanmateix el dispositiu es pot configurar xq en cas de fallada commuti a l'estat Aturat o romangui en el mateix estat.

Aquests dispositius indiquen en el Tipus de Dispositiu la funcionalitat suportada.