CANopen

Allikas: Vikipeedia
CANopeni paigutus OSI mudelis

CANopen on automatiseerimise manussüsteemides kasutatav sideprotokoll. Peamised CANopeni kasutusvaldkonnad on tööstusautomaatika, robootika, meditsiin ja autotööstus. CANopen põhineb Controller Area Network (CAN) siinil, kuid seda saab kasutada ka teiste avatud süsteemide sidumise arhitektuuri (OSI mudel) madalama kihi protokollidega nagu EtherCAT, Modbus ja Powerlink.[1] CANopen vastutab OSI mudeli ülemise kahe kihi eest: rakenduskiht ja esitluskiht (ühtne andmete struktuur ja esitlus) ning see rakendab mõnesid alumiste kihtide funktsioone: seansikiht (sünkroonimine), transpordikiht (otspunktide vaheline ühendus ja usaldatavus) ja võrgukiht (adresseerimine ja marsruutimine).[2] CANopeni arendamist ja standardiseerimist haldab selle kasutajaid ja arendajaid ühendav 1992. aasta märtsis loodud organisatsioon CAN in Automation (CiA).[3]

Disain[muuda | muuda lähteteksti]

CANopeni peamine funktsionaalsus on standardiseeritud CiA 301 dokumendiga, selle lisa funktsionaalsus on kirjeldatud muude CiA 3xx seeria dokumentidega ning selle kasutus eri otstarveteks on standarditud CiA 4xx seeria seadme profiilidega.[4] Kõige levinumad CiA 4xx seeria seadme profiilid on CiA 401 sisend-väljund seadmete profiil[5] ja CiA 402 mootorite ja liikumise juhtimise profiil[6]. Lisaks eksisteerib ka CANopen FD tehniline kirjeldus, mis võimaldab CANopeni kasutamist uuemate CAN versioonidega CAN Flexible Data-Rate (CAN FD) ja CAN Extra Long (CAN XL). Nende funktsionaalsus on kirjeldatud CiA 6xx seeria dokumentides.[7][8]

Objektisõnastik[muuda | muuda lähteteksti]

CANopeni objektisõnastik (ingl Object Dictionary (OD)) on tabel, mis hoiab endas seadme konfiguratsiooni ja protsesside andmeid. Kõik CANopeni seadmed peavad rakendama objektisõnastiku. Objektisõnastiku objektid on indekseeritavad kasutades 16-bittiseid indekseid ja 8-bittiseid alamindekseid. Seega sõnastikus saab olla kuni 65536 elementi ning iga elemendi saab olla kuni 256 alamelementi. Standardi järgi peavad kindlad aadressid ja aadressivahemikud sisaldama kindlaid väärtusi, näiteks standardi järgi peab sõnastiku indeksil 1008h alamindeksil 00h olema seadme nimi. Mõned objektisõnastiku elemendid nagu seadmetüüp (1000h) on kohustuslikud ja mõned nagu seadme tarkvara versioon (100Ah) on vabatahtlikud.[9]

Objektisõnastiku objekt on defineeritud järgmiste väljadega[1]:

  • Indeks – 16-bittine objekti aadress
  • Objekti nimi – objekti kirjeldav nimi
  • Objekti kood – tähistab, kas tegu on muutuja, massiivi või registriga
  • Andmetüüp – määrab, kas tegu on näiteks sõne, mittenegatiivse täisarvu või ujukomaarvuga
  • Juurdepääsu piirang – määrab, kas objekti saab nii kirjutada kui lugeda, ainult kirjutada või ainult lugeda
  • Kohustuslikkuse nõue – määrab, kas objekti olemasolu on kohustuslik või vabatahtlik

Objektisõnastik on vahelüli teiste CANopen võrgu sõlmede ja seadmel jooksva rakenduse vahel. Teised sõlmed saavad ligipääsu seadme objektisõnastikule kasutades CANopen SDO või PDO protokolle.[2]

Objektisõnastiku struktuur[10]:

Indeks Objekt
0000h Ei ole kasutuses
0001h – 001Fh Staatilised andmetüübid
0020h – 003Fh Keerulised andmetüübid
0040h – 005Fh Tootja spetsiifilised keerulised andmetüübid
0060h – 025Fh Seadme profiili spetsiifilised andmetüübid
0260h – 0FFFh Reserveeritud
1000h – 1FFFh Suhtlusprofiili andmed
2000h – 5FFFh Tootja spetsiifilised andmed
6000h – 9FFFh Seadme profiili spetsiifilised andmed
A000h – BFFFh Liidese profiili spetsiifilised andmed
C000h – FFFFh Reserveeritud

Elektrooniline andmeleht[muuda | muuda lähteteksti]

Elektrooniline andmeleht (ingl Electronic Data Sheet (EDS)) on abivahend objektisõnastiku kasutamiseks, mida defineerib CiA 306 dokument. See pakub inimloetavas vormingus faili, mis kujutab endast malli kõikide seadme objektisõnastiku objektide jaoks, kuid see ei sisalda nende väärtusi. Üldiselt seadme tootjad pakkuvad komplektis seadmega valmis elektroonilist andmelehte. Samuti eksisteerib palju tarkvaralahendusi, mis aitavad mugavalt töödelda elektroonilisi andmelehti.[1]

Seadme konfiguratsiooni fail[muuda | muuda lähteteksti]

Seadme konfiguratsiooni faili (ingl Device Configuration File (DCF)) saadakse andes elektroonilises andmelehes defineeritud väljadele reaalsed väärtused. See defineerib üksikute seadmete käitumist CANopen võrgus.[1]

Suhtlus[muuda | muuda lähteteksti]

Suhtluse protokollid[muuda | muuda lähteteksti]

Võrguhaldus[muuda | muuda lähteteksti]

CANopen võrguhalduse (ingl Network Management (NMT)) protokollis on võrgus üks ülem, mis saab kontrollida teiste seadmete staatust. Võimalikud staatused on operatsioonieelne, kus sõlme saab seadistada, töötav ja peatunud. NMT protokolli sõnumi andmeväli on kaks baiti pikk, millest esimene bait sisaldab NMT käsku ja teine bait konfigureeritava seadme identifikaatorit.[1]

NMT käsud[10]:

Väärtus Käsk
01h Mine töö režiimi
02h Peata töö
80h Mine operatsioonieelsesse režiimi
81h Taaskäivitu
82h Taaskäivita suhtlus

Sünkroonimine[muuda | muuda lähteteksti]

CANopen sünkroonimiseprotokollis (ingl Synchronization (SYNC)) saadab üks seade välja sünkroonimissõnumi ja teised sõlmed saavad olla seadistatud saatma oma sensorite andmeid, kui nad näevad sünkrooni signaali.[1]

Hädaolukord[muuda | muuda lähteteksti]

CANopen hädaolukorra (ingl Emergency (EMCY)) protokollis, kui seadme operatsioonis tekib tõrge, saab see teavitada sellest teisi sõlmi saates hädaolukorra sõnumi, kus andmeväljal on toodud välja standardiseeritud tõrge kood.[1]

Tõrgete koodide tüübid on[10]:

Veakood Kirjeldus
0XXXh Seadme taaskäivitus või pole viga
1XXXh Geneeriline viga
2XXXh Sisend/väljund voolu probleem
3XXXh Sisend/väljund pinge probleem
4XXXh Temperatuuri probleem
5XXXh Seadme riistvara viga
6XXXh Seadme tarkvara viga
7XXXh Lisamoodulite viga
8XXXh Seadme jälgimise, suhtluse või protokolli viga
9XXXh Väline viga
F0XXh Lisa funktsioonide viga
FFXXh Seadme spetsiifiline viga

Ajatempel[muuda | muuda lähteteksti]

CANopen ajatempli (ingl Timestamp (TIME)) protokolli kasutades kasutades saavad sõlmed ühtlustada oma kellasid, kui seadmetel on vajadus täita ajakriitilisi ülesandeid. TIME protokolli sõnumi andmeväli esimesed neli baiti sisaldavad aega millisekundites alates keskööst ja järgmised kaks baiti sisaldavad päevade arvu 1. jaanuarist 1984.[1]

Protsessi andmeobjekt[muuda | muuda lähteteksti]

CANopeni protsessi andmeobjekti (ingl Process Data Object (PDO)) protokoll on peamine andmevahetuse viis CANopeni võrgus. Kõiki kaheksat PDO sõnumi andmebaiti saab kasutada info edastuseks ning vastuvõtva sõlme objektisõnastikus saab määrata, mis infot teatud identifikaatoriga PDO sõnumi andmevälja baidid sisaldavad. PDO sõnumid jagatakse kaheks: saatmise PDO-ks (ingl Transmit PDO (TPDO)) ja vastuvõtmise PDO-ks (ingl Receive PDO (RPDO)). Info välja saatmisel kasutab seade TPDO aadressi ja vastu võtmisel kuulab RPDO aadressi.[1] PDO-sid saab seadistada, et neid saadetaks välja näiteks SYNC signaali tulemisel või iga kord, kui tuleb uus informatsioon.[2]

Teenuse andmeobjekt[muuda | muuda lähteteksti]

CANopeni teenuse andmeobjekti (ingl Service Data Object (SDO)) protokolli kasutatakse peamiselt CANopeni sõlmede seadistamiseks. SDO sõnumeid on võimalik saata ühekaupa, kus esimene andmevälja bait sisaldab käsu infot, järgmised kaks baiti sisaldavad objektisõnastiku indeksit, kuhu tahetakse infot kirjutada või kust tahetakse infot lugeda, ning neljas bait sisaldab objektisõnastiku alamindeksit. Ülejäänud neli baiti saavad sisaldada saadetavaid andmeid. Samuti on võimalik saata SDO sõnumeid sõnumite plokina, sel juhul esimese saadetava sõnumi struktuur on sarnane ühekaupa saadetavate sõnumite struktuuriga, aga järgmised sõnumid kasutavad sõnumi tähistamiseks ainult ühte andmevälja baiti, mis sisaldab sõnumi saatmise järjekorra numbrit, ja ülejäänud seitse baiti saavad sisaldada reaalseid andmeid. SDO sõnumitega saab saata protsesside andmeid samamoodi nagu PDO-dega, aga see pole otstarbekas, kuna SDO kasutab palju üleliigseid baite andmete sihtkoha määramiseks.[1]

Sõlme jälgimine (pulss)[muuda | muuda lähteteksti]

CANopeni sõlme jälgimise (pulssi) (ingl Node monitoring (HEARTBEAT)) kasutatakse sõlme töötamise kontrollimiseks, milleks on kaks teostust. Üks võimalus on see, et seade saadab perioodiliselt välja pulsi signaali tähistamaks, et ta on ikka veel elus. Kui võrgu ülem seade pole mingisuguselt sõlmelt saanud pulssi teatud aja tagant, siis see teab, et sõlmega on midagi valesti ning oskab sellega arvestada. Teine võimalus on see, et võrgu ülemseade ise küsib alluvatelt nende staatust ning kui nad ei vasta teatud aja tagant, siis see teab, et sõlmega on midagi valesti.[2] Sõlmed lisavad vastuse andmeväljale oma operatsiooni režiimi, need on[10]:

Väärtus Staatus
00h Seade teeb alglaadimist
04h Seade on peatunud
05h Seade töötab
7Fh Seade on operatsioonieelses režiimis

Suhtluse mudelid[muuda | muuda lähteteksti]

CANopeni suhtlusprotokollid kasutavad kolme suhtluse mudelit[1]:

  • Ülema-alluva suhtlus – üks seade täidab ülema rolli ning saadab/küsib alluvatelt seadmetelt andmeid. Sellist suhtlust kasutab NMT protokoll.
  • Kliendi-serveri suhtlus – klient kirjutab andmeid serverile või küsib neid lugemiseks. Sellist suhtlust kasutab SDO protokoll.
  • Tarbija-tootja suhtlus – tootja saadab andmed tervele võrgule ning tarbijad saavad neid andmeid vastu võtta. Sellist suhtlust kasutavad SYNC, EMCY, TIME, PDO ja HEARTBEAT protokollid.
CANopeni sõnumi struktuur CAN-siinil

Sõnumi struktuur[muuda | muuda lähteteksti]

CANopeni sõnumi struktuur põhineb CAN-siini sõnumi struktuuril. CANopeni sõnumi osad on[1][11]:

  • Suhtlusobjekti identifikaator (ingl Communication Object Identifier (COB-ID)) määrab sõnumi prioriteedi. Kui samal ajal saadetakse CAN-siinile kaks sõnumit, siis madalama prioriteediga sõnum peab info saatmise lõpetama. See koosneb kahest osast:
    • Funktsioonikood – tähistab, mis tüüpi suhtlusobjekti kasutatakse
    • Sõlme identifikaator – sõlme aadress, mis sõnumit saadab
  • Kaugedastustaotlus (ingl Remote Transmission Request (RTR)) – osa CAN-siini definitsioonist, CANopeni rakendustes alati 0
  • Identifikaatori pikendus (ingl Identifier Extension (IDE)) – määrab, kas tegu on 11-bitise või 29-bittise identifikaatoriga. CANopen üldiselt kasutab ainult 11-bitist identifikaatorit.
  • Andmete pikkus – andmeploki pikkus baitides
  • Andmed – saadetavad andmed
  • Tsükkelkontrollkood (ingl Cyclic Redundancy Check (CRC)) – sõnumi väärtuse põhjal arvutatud kood, mida kasutatakse sõnumi õige vastuvõtmise kontrollimiseks.
  • Vastuvõtu kinnitus (ingl Acknowledge (ACK)) – koht, kuhu teine siinil paiknev seade saadab dominantse bitti, et kinnitada sõnumi korrektne vastuvõtt.

Funktsioonikoodid[muuda | muuda lähteteksti]

Funktsioonikoodid määravad, mis tüüpi suhtlusprotokolliga on tegu, need on:

Protokoll Funktsiooni kood Sõlme identifikaatori vahemik
NMT 0000b 0000000b
SYNC 0001b 0000000b
EMCY 0001b 0000001b – 1111111b
TIME 0010b 0000000b
Transmit PDO 1 0011b 0000000b – 1111111b
Receive PDO 1 0100b 0000001b – 1111111b
Transmit PDO 2 0101b 0000001b – 1111111b
Receive PDO 2 0110b 0000001b – 1111111b
Transmit PDO 3 0111b 0000001b – 1111111b
Receive PDO 3 1000b 0000001b – 1111111b
Transmit PDO4 1001b 0000001b – 1111111b
Receive PDO4 1010b 0000001b – 1111111b
Transmit SDO 1011b 0000001b – 1111111b
Receive SDO 1100b 0000001b – 1111111b
HEARTBEAT 1110b 0000001b – 1111111b

Viited[muuda | muuda lähteteksti]

  1. 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 Martin Falch. "CANopen Explained - A Simple Intro [2022]". Vaadatud 27.04.2022.
  2. 2,0 2,1 2,2 2,3 "The Basics of CANopen". Vaadatud 27.04.2022.
  3. "CAN in Automation (CiA): About us". Vaadatud 27.04.2022.
  4. "Standardized higher-layer protocols". Vaadatud 27.04.2022.
  5. "CiA 401 series: Device profile for generic I/O modules". Vaadatud 01.05.2022.
  6. "CiA 402 series: CANopen device profile for drives and motion control".
  7. "CANopen FD- The art of embedded networking". Vaadatud 27.04.2022.
  8. "Controller Area Network Extra Long (CAN XL)". Vaadatud 27.04.2022.
  9. "CANopen internal device architecture". Vaadatud 27.04.2022.
  10. 10,0 10,1 10,2 10,3 CiA 301 CANopen application layer and communication profile (allalaaditav tasuta kasutajaga CiA lehel).
  11. "Introduction to the Controller Area Network (CAN)" (PDF).

Kirjandus[muuda | muuda lähteteksti]

  • "CAN system engineering". Koostanud Wolfhard Lawrenz. Springer, London 2013, 353 lk

Välislingid[muuda | muuda lähteteksti]