CANopen

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

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, monitorització 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.[1]

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.[1] 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[modifica | modifica el codi]

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'.
  • L'engegada 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 d'aplicació 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[modifica | modifica el codi]

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 l'Objecte 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 l'objecte (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ó[modifica | modifica el codi]

Objectes de Comunicació[modifica | modifica el codi]

CANbus, la capa física i d'enllaç sobre la que 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 de 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:

Inici
de trama
COB-ID RTR Control Dades CRC
(dígits de
comprovació)
Ack
(rebut)
Fi de
trama
Codi de
Funció
0:mestre
/ ID Node esclau
1:Comanda
0:Lliurament
ID simple
/ ampliat
Reservat Llargada
de 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ó[modifica | modifica el codi]

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[modifica | modifica el codi]

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)[modifica | modifica el codi]

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 monitoritzar els nodes de la xarxa i saber si estan vius.

El protocol d'Engegada (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[modifica | modifica el codi]

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[modifica | modifica el codi]

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 nusos de la xarxa.

Protocol SYNC - Objectes de Sincronització[modifica | modifica el codi]

L'objecte Sync és radiat 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)[modifica | modifica el codi]

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[modifica | modifica el codi]

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ó[modifica | modifica el codi]

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), llegint una pressió de 0x0182CD(99021) Pascals
0x182 4 E5 83 01 00 Node amb ID 2 (CID-0x180), llegint una pressió de 0x0183E5(99301) Pascals

Glossari d'acrònims CANopen[modifica | modifica el codi]

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[modifica | modifica el codi]

Mòduls d'Entrada/Sortida[modifica | modifica el codi]

Els dispositius d'Entrada/ Sortida[2] 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.

En el primer Transmit-PDO es maparan un màxim de 8x8 entrades digitals. El primer Receive-PDO contindrà un màxim de 8x8 sortides digitals. Aquests PDO's predefinits es reben o transmeten asíncronament. Opcionalment el dispositiu pot suportar altres modes de transmissió. En particular les entrades es poden transmetre síncronament a la recepció d'un missatge SYNC. Per estalviar amplada de banda les entrades amb menor variació es poden transmetre a la recepció d'un de cada enèsim missatge SYNC. Alguns dispositius suporten la transmissió PDO acíclica; en aquest cas el PDO només s'envia, a la recepció del SYNC, si el valor ha canviat.

Quan el dispositiu entra en estat operacional comença a transmetre tots els PDO's asíncrons.

El mapeig de les variables d'entrada / sortida als PDO és configurable.

Dispositius de tracció i control de moviment[modifica | modifica el codi]

Aquest perfil[3] defineix el comportament de servos, inversors de freqüència i motors pas a pas.

S'hi descriuen diversos modes operacionals.

  • Mode Cap a Casa (ang. Homing) que descriu els mètodes per a trobar la posició de partida, punt de referència, o punt zero.
  • Mode Perfil de Posició que defineix el posicionament del tractor. Velocitat, Posició i Acceleració poden ser limitats i també es poden perfilar moviments seguint una trajectoria.
  • Mode Posició Interpolada que descriu la interpolació temporal dels eixos simples o la interpolació espaial dels eixos de coordenades.
  • Mode Perfil de Velocitat es fa servir per controlar la velocitat independentment de la posició. Proporciona funcions de límit i generació de trajectòries.
  • Mode Perfil de Torsió que defineix el control de torsió i paràmetres relacionats.
  • Mode Velocitat és un mode simple emprat per molts convertidors de freqüència. Proporciona funcions de límit i rampa.

Dispositius de mesura i controladors retroalimentats[modifica | modifica el codi]

Aquest perfil[4] està dedicat a

  • sensors analògics i actuadors que poden proporcionar a més entrada/sortida digital.
  • controladors retroalimentats que recullen senyals de sensors i proveeixen valors als actuadors.

Els dispositius d'aquest perfil poden implementar algunes de les funcions següents:

  • Entrada analògica
  • Sortida Analògica
  • Controlador retroalimentat
  • Entrada digital
  • Sortida digital

Aquest dispositiu pot suportar fins a 199 canals, cadascun dels quals pot admetre diverses o totes les funcions mencionades.

L'entrada analògica distingeix entre valor de camp i valor de procés. El valor de camp pot ser un valor no escalat d'una entrada del conversor A/D i el valor de procés seria el valor de camp convertit al domini de treball.

Per a la conversió del valor de camp al valor de procés es proveeixen funcions de

  • transformació lineal, a partir de dos punts de calibració.
  • transformació no lineal, segons el tipus de sensor.

Controladors de Lògica Programable[modifica | modifica el codi]

Aquest perfil[5] per als Controladors Programables defineix dos mètodes perquè els PLC accedeixin a la xarxa CANopen: variables de xarxa i blocs de funció.

  • Les variables de xarxa normalment es mapen a objectes PDO per a ser transmeses o rebudes.
  • El perfil defineix alguns blocs de funció específics per a SDO, NMT i missatges d'emergència.

Codificadors de posició lineal i rotativa[modifica | modifica el codi]

Aquest perfil[6] cobreix codificadors incrementals i absoluts, lineals i rotatius.

A part la lectura de posició i velocitat el perfil defineix també acceleració i brusquedat.

Dispositius hidràulics i pneumàtics[modifica | modifica el codi]

Aquest perfil[7] descriu la funcionalitat de vàlvules proporcionals interconnectables, i bombes i transmissions hidroestàtiques.

Referències[modifica | modifica el codi]

  1. 1,0 1,1 Web dels estàndards CANopen (anglès)
  2. Perfil CANopen per a dispositius genèrics d'Entrada / Sortida (anglès)
  3. Perfil CANopen per a dispositius de tracció i control de moviment (anglès)
  4. Perfil CANopen per a dispositius de mesura i controladors retroalimentats (anglès)
  5. Perfil CANopen i interfase per a Controladors de Lògica Programable (anglès)
  6. Perfil CANopen per a Codificadors de posició lineal i rotativa (anglès)
  7. Perfil CANopen per a Dispositius hidràulics i pneumàtics (anglès)

Enllaços externs[modifica | modifica el codi]