ˇ ESK E´ VYSOK E´ U CEN ˇ ´I TECHNICK E´ V P RAZE C FAKULTA ELEKTROTECHNICK A´
´ PRACE ´ DIPLOMOVA CANOpen komunikace pro mobiln´ıho robota
Praha, 2008
Autor: Jan Benda
Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady (literaturu, projekty, SW atd.) uvedené v přiloženém seznamu.
V Praze dne podpis
i
Podˇekov´an´ı Na tomto m´ıstˇe bych chtˇel zejm´ena podˇekovat vedouc´ımu diplomov´e pr´ace Ing. Michalu Sojkovi, kter´y mi poskytoval uˇziteˇcn´e rady k t´eto pr´aci, ale i k jin´ym projekt˚um, kter´ych jsem se na Katedˇre ˇr´ıdic´ı techniky bˇehem studia u´ cˇ astnil. M˚uj velik´y d´ık patˇr´ı tak´e m´e rodinˇe, kter´a mˇe po celou dobu studia trpˇelivˇe podporovala.
ii
Abstrakt Pˇredkl´adan´a pr´ace se zab´yv´a problematikou n´avrhu pohonu a mechanick´e konstrukce autonomn´ıho robota pro soutˇezˇ Eurobot 2007. V dalˇs´ı cˇ a´ sti pak popisuje problematiku komunikaˇcn´ıch technologi´ı pro distribuovan´e ˇr´ızen´ı mechanism˚u s vyuˇzit´ım CANOpen. Jsou zde pops´any vytvoˇren´e knihovny a aplikace, umoˇznˇ uj´ıc´ı ˇr´ızen´ı pohon˚u prostˇrednictv´ım sbˇernice CAN a protokolu CANOpen se standardizovan´ym profilem pro ˇr´ızen´ı pohon˚u (Motion Control Profile). Pr´ace je nav´az´ana na existuj´ıc´ı otevˇren´y softwarov´y projekt CanFestival, implementuj´ıc´ı protokol CANOpen. Pro vlastn´ı ˇr´ızen´ı motor˚u na platformˇe mikrokontrol´eru H8S/2638 je pouˇzita knihovna PXMC. Nadˇrazen´a ˇr´ıd´ıc´ı aplikace je vytvoˇrena pro operaˇcn´ı syst´em GNU/Linux.
iii
Abstract This diploma thesis focuses on drive design and mechanical construction of mobile robot for Eurobot 2007 competition. Another part is devoted to problematics of communication technologies used for distributed control systems. As a part of this thesis, libraries and applications allowing drive control using CAN bus and CANopen protocol were created and described. This work is based on an existing open source project CanFestival, which is an implementation of CANopen protocol. The drive control using an H8S/2638 microcontroller is realized by means of PXMC library. The high level control application was created for GNU/Linux operating system.
iv
České vysoké učení technické v Praze - Fakulta elektrotechnická
Katedra řídicí techniky
Školní rok: 2006/2007
ZADÁNÍ D I P L O M O V É Student:
Jan B e n d a
Obor:
Technická kybernetika
PRÁCE
Název tématu: CANOpen komunikace pro mobilního robota
Zásady pro vypracování:
1. Seznamte se pravidly soutěže Eurobot 2007, sběrnicí CAN a protokolem CANOpen. Dále prostudujte informace o použitých procesorech Renesas H8S/2638 a PPC5200. 2. Společně s ostatními členy týmu navrhněte mechaniku robotu pro soutěž Eurobot 2007. 3. Zvolte některou dostupnou implementaci CANOpen protokolu a použijte ji pro vytvoření CANOpen slave jednotky pro řízení motorů. Pro vlastní řízení motorů bude použita knihovna PXMC. 4. Zprovozněte CANOpen na "master" zařízení, které bude komunikovat s podřízenými jednotkami. 5. Vše otestujte a zdokumentujte.
Seznam odborné literatury: Dodá vedoucí práce. Vedoucí diplomové práce:
Ing. Michal Sojka
Termín zadání diplomové práce:
zimní semestr 2006/2007
Termín odevzdání diplomové práce:
leden 2008
prof. Ing. Michael Šebek, DrSc. vedoucí katedry
prof. Ing. Zbyněk Škvor, CSc. děkan
v V Praze dne 21.02.2007
vi
Obsah Seznam obr´azku˚
xi
Seznam tabulek
xiii
Seznam zkratek
xv
´ 1 Uvod
1
2
Mechanika
3
2.1
N´avrh pohonu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2
Kostra robota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3
Sbˇerac´ı mechanismus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.4
Z´asobn´ık . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.5
Lokalizaˇcn´ı maj´ak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3
Komunikace po sbˇernici CAN
13
3.1
Mikroprocesor H8S/2638 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2
MPC5200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3
Sbˇernice CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4
3.3.1
Fyzick´a vrstva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.2
Linkov´a vrstva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3.3
Datov´a zpr´ava . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3.4
Ostatn´ı typy zpr´av . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
CANOpen standard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.4.1
Model CANOpen zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . . 20
3.4.2
Slovn´ık zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4.3
Komunikaˇcn´ı objekty . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4.4
PDO zpr´avy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 vii
3.5
4
3.4.5
SDO zpr´avy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4.6
NMT zpr´avy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.7
Standardizovan´e profily v CANOpen . . . . . . . . . . . . . . . . . . 27
3.4.8
Komunikaˇcn´ı stavy CANOpen uzlu . . . . . . . . . . . . . . . . . . . 27
Motion Control Profile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.5.1
Mapov´an´ı PDO zpr´av . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.5.2 3.5.3
Obecn´e informace o pohonu . . . . . . . . . . . . . . . . . . . . . . . 31 ˇ ızen´ı stavu pohonu . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 R´
3.5.4
Pˇrevod fyzik´aln´ıch jednotek . . . . . . . . . . . . . . . . . . . . . . . 34
3.5.5
Zpˇetnovazebn´ı smyˇcka ˇr´ızen´ı pozice . . . . . . . . . . . . . . . . . . . 35
3.5.6
Operaˇcn´ı m´ody . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.5.6.1
M´od profilovan´eho ˇr´ızen´ı pozice . . . . . . . . . . . . . . . 36
3.5.6.2
M´od hled´an´ı referenˇcn´ı pozice . . . . . . . . . . . . . . . . 37
3.5.6.3
M´od interpolovan´eho ˇr´ızen´ı pozice . . . . . . . . . . . . . . 37
3.5.6.4
M´od profilovan´eho ˇr´ızen´ı rychlosti . . . . . . . . . . . . . . 38
3.5.6.5
M´od profilovan´eho ˇr´ızen´ı momentu . . . . . . . . . . . . . . 38
3.5.6.6
M´od ˇr´ızen´ı rychlosti . . . . . . . . . . . . . . . . . . . . . . 39
Implementace rˇ´ızen´ı pohonu˚ prostˇrednictv´ım CANOpen
41
4.1
PXMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.2
CanFestival . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.2.1
Vytvoˇren´ı slovn´ıku zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . 45
4.3
Popis funkce uk´azkov´ych aplikac´ı . . . . . . . . . . . . . . . . . . . . . . . . 50
4.4
Popis zdrojov´ych soubor˚u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.4.1
4.4.2
Adres´aˇr cf-common . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.4.1.1
Soubor cf mcp common DS3O1.h . . . . . . . . . . . . . 55
4.4.1.2
Soubor cf mcp common DSP402.h . . . . . . . . . . . . 55
4.4.1.3
Soubor cf mcp common def.h . . . . . . . . . . . . . . 56
4.4.1.4
Soubor cf mcp common fcn.h . . . . . . . . . . . . . . 56
4.4.1.5
Soubor cf mcp common fcn.c . . . . . . . . . . . . . . 56
4.4.1.6
Soubor cf mcp common struct.h . . . . . . . . . . . . 56
Adres´aˇr cf-master . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.2.1
Soubor cf mcp master cmd.c . . . . . . . . . . . . . . 56
4.4.2.2
Soubor cf mcp master def.h . . . . . . . . . . . . . . 56
4.4.2.3
Soubor cf mcp master demo.c . . . . . . . . . . . . . 56 viii
4.4.3
5
4.4.2.4
Soubor cf mcp master fcn.c . . . . . . . . . . . . . . 57
4.4.2.5
Soubor cf mcp master fsm.c . . . . . . . . . . . . . . 57
4.4.2.6
Soubor cf mcp master objdict.od . . . . . . . . . . 57
4.4.2.7
Soubor cf mcp master objdict.c . . . . . . . . . . . 57
4.4.2.8
Soubor cf mcp master objdict.h . . . . . . . . . . . 57
Adres´aˇr cf-pxmc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.4.3.1
Soubor cf mcp pxmc def.h . . . . . . . . . . . . . . . . 57
4.4.3.2
Soubor cf mcp pxmc fcn.c . . . . . . . . . . . . . . . . 57
4.4.3.3
Soubor cf mcp pxmc demo.c . . . . . . . . . . . . . . . 58
4.4.3.4
Soubor cf mcp pxmc fsm.c . . . . . . . . . . . . . . . . 58
4.4.3.5
Soubor cf mcp pxmc objdict.od . . . . . . . . . . . . 58
4.4.3.6
Soubor cf mcp pxmc objdict.c . . . . . . . . . . . . . 58
4.4.3.7
Soubor cf mcp pxmc objdict.h . . . . . . . . . . . . . 58
4.5
Pˇr´ıkazy termin´alu demonstraˇcn´ıho programu . . . . . . . . . . . . . . . . . . . 58
4.6
Spuˇstˇen´ı testovac´ı aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.6.1
Poloˇzky slovn´ık˚u zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . . 60
4.6.2
Pouˇzit´ı virtu´aln´ı sbˇernice CAN na OS Linux . . . . . . . . . . . . . . 62
4.6.3
Pˇreklad zdrojov´ych k´od˚u uk´azkov´ych aplikac´ı . . . . . . . . . . . . . 62
4.6.4
Spuˇstˇen´ı uk´azkov´ych aplikac´ı . . . . . . . . . . . . . . . . . . . . . . 62
4.6.5
Pˇreklad aplikace cf mcp pxmc demo pro H8S/2638 . . . . . . . . . 63
Z´avˇer
65
Literatura
68
A Protokol o v´ypoˇctu pohonu
I
B V´ykresy nˇekter´ych mechanick´ych souˇca´ st´ı C Obsah pˇriloˇzen´eho CD
VII XIX
ix
x
Seznam obr´azku˚ 2.1
Motor zabudovan´y v robotu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
Kostra robota s namontovan´ymi motory a cˇ a´ st´ı sbˇeraˇce . . . . . . . . . . . . .
6
2.3
Kompletnˇe sestaven´y sbˇerac´ı mechanismus na robotu . . . . . . . . . . . . . .
7
2.4
Z´asobn´ık pˇripevnˇen´y ke kostˇre robota . . . . . . . . . . . . . . . . . . . . . .
9
2.5
Lokalizaˇcn´ı maj´ak namontovan´y v horn´ı cˇ a´ sti robota . . . . . . . . . . . . . . 10
2.6
N´asˇ robot v koneˇcn´e podobˇe na soutˇezˇ i v Petrohradu . . . . . . . . . . . . . . 11
3.1
Blokov´e sch´ema poˇc´ıtaˇce MPC5200 . . . . . . . . . . . . . . . . . . . . . . . 17
3.2
Form´at datov´e zpr´avy sbˇernice CAN . . . . . . . . . . . . . . . . . . . . . . . 19
3.3
ISO/OSI model podle CANOpen standardu . . . . . . . . . . . . . . . . . . . 21
3.4
Blokov´e sch´ema CANOpen zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . 21
3.5
Nepotvrzovan´y pˇrenos PDO zpr´avy (Write PDO protocol) . . . . . . . . . . . 24
3.6
Potvrzovan´y pˇrenos PDO zpr´avy (Read PDO protocol) . . . . . . . . . . . . . 24
3.7
Pˇrenos SDO zpr´avy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.8
Pˇrenos NMT zpr´avy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.9
Komunikaˇcn´ı stavov´y diagram CANOpen zaˇr´ızen´ı . . . . . . . . . . . . . . . . 28
3.10 Blokov´e sch´ema se standardizovan´ym profilem pro ˇr´ızen´ı pohon˚u DS-402 . . . 29 3.11 Stavov´y diagram pohonu kaˇzd´e osy na CANOpen s profilem DSP402. Pˇrechod do stavu Fault Reaction Active (ˇc.13) probˇehne automaticky z libovoln´eho stavu v okamˇziku registrace chybov´e ud´alosti. . . . . . . . . . . . . . . . . . . 33 3.12 Pˇrep´ın´an´ı operaˇcn´ıch m´od˚u pohonu osy podle DS-402 . . . . . . . . . . . . . 34 3.13 Pˇrevod mezi s´ıt’ov´ymi a vnitˇrn´ımi fyzik´aln´ımi jednotkami podle DSP402 . . . . 35 3.14 Blok zpˇetnovazebn´ı smyˇcky ˇr´ızen´ı pozice . . . . . . . . . . . . . . . . . . . . 35 3.15 Blokov´e sch´ema m´odu profilovan´eho ˇr´ızen´ı pozice . . . . . . . . . . . . . . . 36 3.16 Rychlostn´ı profil pohybu pˇri zad´av´an´ı samostatn´ych c´ılov´ych bod˚u . . . . . . . 36 3.17 Rychlostn´ı profil pohybu pˇri zad´av´an´ı skupiny c´ılov´ych bod˚u . . . . . . . . . . 37 3.18 Prostorov´a a cˇ asov´a interpolace pohybu v m´odu interpolovan´eho ˇr´ızen´ı pohybu xi
38
3.19 Blokov´e sch´ema vyuˇzit´ı m´odu ˇr´ızen´ı rychlosti . . . . . . . . . . . . . . . . . . 39 4.1
Grafick´e zn´azornˇen´ı modularity PXMC knihovny . . . . . . . . . . . . . . . . 42
4.2
Blokov´e sch´ema aplikace a jej´ıch programov´ych jednotek CanFestivalu . . . . 45
4.3
Vytvoˇren´ı nov´eho slovn´ıku zaˇr´ızen´ı v programu Objdictedit . . . . . . . . . . . 48
4.4
Nastaven´ı poˇca´ teˇcn´ıch hodnot nov´eho slovn´ıku zaˇr´ızen´ı v programu Objdictedit
4.5
Vygenerov´an´ı zdrojov´ych soubor˚u nov´eho slovn´ıku zaˇr´ızen´ı v programu Obj-
49
dictedit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.6
Data ˇr´ızen´ych os ve slovn´ıku zaˇr´ızen´ı uzlu Master a v uzlech Slave . . . . . . . 52
4.7
V´azan´e stavov´e automaty pohonu os na uzlu Master a Slave . . . . . . . . . . . 53
4.8
Dialogov´e okno aplikace simul´atoru knihovny PXMC . . . . . . . . . . . . . . 61
B.1 Kostra robota s um´ıstˇen´ym pohonem, sestava . . . . . . . . . . . . . . . . . . VIII B.2 Spodn´ı deska kostry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IX B.3 Pˇredn´ı sbˇerac´ı mechanismus, sestava . . . . . . . . . . . . . . . . . . . . . . .
X
B.4 Pˇredn´ı sloupek r´amu kostry robota . . . . . . . . . . . . . . . . . . . . . . . . XI B.5 Pˇredn´ı v´yztuˇzn´y sloupek r´amu kostry robota . . . . . . . . . . . . . . . . . . . XII B.6 Pˇr´ıcˇ n´ık um´ıstˇen´y v pˇredn´ı cˇ a´ sti r´amu kostry . . . . . . . . . . . . . . . . . . . XIII B.7 Blok loˇziska pohonn´eho kola . . . . . . . . . . . . . . . . . . . . . . . . . . . XIV B.8 Blok pro pˇripevnˇen´ı pohonn´eho motoru . . . . . . . . . . . . . . . . . . . . . XV B.9 Pohonn´e koleˇcko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XVI B.10 Hˇr´ıdel pohonn´eho koleˇcka . . . . . . . . . . . . . . . . . . . . . . . . . . . . XVII B.11 N´akres lokalizaˇcn´ıho maj´aku . . . . . . . . . . . . . . . . . . . . . . . . . . . XVIII
xii
Seznam tabulek 4
2.1
Zvolen´e parametry pro v´ypoˇcet pohonu robota . . . . . . . . . . . . . . . . . .
3.1
Maxim´aln´ı d´elka sbˇernice v z´avislosti na poˇzadovan´e pˇrenosov´e rychlosti . . . 18
3.2
Skupiny index˚u ve slovn´ıku zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . 22
3.3
Pˇrechody mezi stavy v komunikaˇcn´ım stavov´em diagramu . . . . . . . . . . . 27
3.4
Rozsahy index˚u ve slovn´ıku pro jednotliv´e osy . . . . . . . . . . . . . . . . . 29
3.5
Mapov´an´ı pˇrij´ıman´ych PDO zpr´av podle DSP402 . . . . . . . . . . . . . . . . 30
3.6
Mapov´an´ı odes´ılan´ych PDO zpr´av podle DS-402 . . . . . . . . . . . . . . . . 31
3.7
V´yznamy jednotliv´ych bit˚u ˇr´ıd´ıc´ıho slova . . . . . . . . . . . . . . . . . . . . 32
3.8
V´yznamy jednotliv´ych bit˚u stavov´eho slova . . . . . . . . . . . . . . . . . . . 32
xiii
xiv
Seznam zkratek ANSI American National Standards Institute ATA Advanced Technology Attachment BLDC Brush-Less DC motor CAN Controller Area Network CiA CAN in Automation CNC Computer Numerical Control CRC Cyclic Redundancy Check DC Direct Current DDR Double Data Rate DMA Direct Memory Access GND electric Ground GPL General Public License HMI Human-Machine Interface HTML HyperText Markup Language I/O Input/Output IIC Inter-Integrated Circuit IDE Integrated Drive Electronics IEC International Engineering Consortium ISO International Organisation for Standartization LAN Local Area Network LLC Logical Link Control xv
MAC Medium Access Control MCL Monte Carlo Localization MIPS Million Instructions Per Second NMT Network Management OMK Ocera Make system OSI Open System Interconnection PDO Process Data Object PCI Peripheral Component Interconnect PID Proportional-Integral-Derivative controller PLC Programmable Logic Controller PXMC Pikron eXtensible Motion Control ROM Read-Only Memory RPDO Receive PDO RTR Remote Transmission Request SDO Service Data Object SDRAM Synchronous Dynamic Random Access Memory SPI Serial Peripheral Interface SRAM Static Random Access Memory SYNC Synchronisation Object TPDO Transmit PDO USB Universal Serial Bus XML Extensible Markup Language
xvi
Kapitola 1 ´ Uvod V Evropˇe je kaˇzdoroˇcnˇe poˇra´ d´ana mezin´arodn´ı soutˇezˇ autonomn´ıch robot˚u zvan´a Euroˇ bot [18]. C´ılem t´eto akce je popularizovat vˇedu a techniku mezi sˇirokou veˇrejnost´ı. Clenov´ e univerzitn´ıch, stˇredoˇskolsk´ych i mimoˇskoln´ıch t´ym˚u si mohou ovˇeˇrit sv´e technick´e dovednosti pˇri stavbˇe robota a v soutˇezˇ i zmˇeˇrit sv´e s´ıly s ostatn´ımi t´ymy. Soutˇezˇ m´a kaˇzdoroˇcnˇe jin´e zad´an´ı, ´ ale vˇetˇsinou se jedn´a o sbˇer nejr˚uznˇejˇs´ıch pˇredmˇet˚u na ploˇse hˇriˇstˇe. Ukolem robota je pak sebran´e pˇredmˇety roztˇr´ıdit a dov´ezt do pˇripraven´ych koˇsu˚ . Roboti mus´ı b´yt zcela autonomn´ı, to znamen´a, zˇ e vˇsechny pohonn´e, senzorick´e, nap´ajec´ı a ˇr´ıd´ıc´ı syst´emy mohou b´yt pouze uvnitˇr robota a nesm´ı komunikovat s okol´ım. V z´apasech se po hˇriˇsti pohybuj´ı vˇzdy dva roboti soupeˇr´ıc´ıch t´ym˚u. Soutˇezˇ Eurobot 2007 nesla n´azev Robot Recycling Rally. Konkr´etn´ı u´ kol robota byl sesb´ırat a do pˇripraven´ych koˇsu˚ roztˇr´ıdit plastov´e l´ahve 0.5l, plechovky 0.33l a baterie velikosti velk´eho monoˇcl´anku. Hˇriˇstˇe m´a rozmˇery 210 × 300 cm a v jeho roz´ıch jsou um´ıstˇeny koˇse na roztˇr´ıdˇen´e plechovky a l´ahve. B´ıl´a miska na barevnˇe roztˇr´ıdˇen´e baterie m´a na hˇriˇsti pohyblivou pozici.
1
´ KAPITOLA 1. UVOD
2
Na Katedˇre ˇr´ıdic´ı techniky vznikl t´ym student˚u, jehoˇz jsem cˇ lenem, kter´y se rozhodl autonomn´ıho robota podle pravidel postavit a soutˇezˇ e se z´ucˇ astnit. Pˇredkl´adan´a pr´ace se zab´yv´a nˇekolika t´ematy z oblasti ˇr´ızen´ı, pouˇziteln´ymi nejen v mobiln´ı robotice. Rozeb´ır´a zejm´ena problematiku n´avrhu pohonu a mechanick´e konstrukce robota, v dalˇs´ı cˇ a´ sti pak popisuje problematiku komunikaˇcn´ıch technologi´ı pro distribuovan´e ˇr´ızen´ı mechanism˚u. V kapitole 2 je detailnˇe pops´an postup n´avrhu a dimenzov´an´ı pohonu robota urˇcen´eho pro soutˇezˇ Eurobot. Popisuje a dokumentuje se zde stavba speci´aln´ıch mechanism˚u robota, jejichˇz u´ cˇ el vypl´yv´a ze zad´an´ı soutˇezˇ e. K t´eto kapitole je tak´e v pˇr´ıloze k dispozici protokol o v´ypoˇctu pohonu, obsahuj´ıc´ı jmenovit´e a maxim´aln´ı parametry vybran´eho motoru. K cˇ a´ sti kostry robota, u kter´e se pˇredpokl´ad´a i jej´ı pouˇzit´ı v dalˇs´ıch roˇcn´ıc´ıch soutˇezˇ e, je tak´e v pˇr´ıloze uvedena v´ykresov´a dokumentace. K ostatn´ım souˇca´ stem jsou zde uvedeny pouze situaˇcn´ı n´akresy. V kapitole 3 bude cˇ ten´aˇr sezn´amen s vlastnostmi sbˇernice CAN [1] a CANOpen [12] protokolem, definuj´ıc´ım aplikaˇcn´ı vrstvu komunikaˇcn´ıho modelu. Je zde pops´an mikrokontrol´er H8S/2638 [20], v robotu pouˇzit´y pro ˇr´ızen´ı pohonn´ych mechanism˚u a 32 bitov´y mikrokontrol´er MPC5200 s architekturou PowerPCTM [14]. Ten je v robotu pouˇzit pro hlavn´ı ˇr´ıd´ıc´ı aplikaci. Kapitola 3 pak bl´ızˇ e popisuje standardizovan´y profil zaˇr´ızen´ı, kter´y specializuje komunikaˇcn´ı protokol CANOpen pro ˇr´ızen´ı pohon˚u a polohovac´ıch mechanism˚u. Jsou zde pops´any promˇenn´e a funkce definovan´e standardem. Kapitola 4 popisuje univerz´aln´ı knihovnu PXMC, p˚uvodnˇe vyvinutou firmou PiKRON [5], urˇcenou pro zpˇetnovazebn´ı ˇr´ızen´ı nejr˚uznˇejˇs´ıch typ˚u motor˚u. V dalˇs´ı cˇ a´ sti je pops´an otevˇren´y softwarov´y projekt CanFestival [22], kter´y implementuje komunikaˇcn´ı protokol CANOpen a jeho standardizovan´e profily. Je zde uveden struˇcn´y n´avod na vytvoˇren´ı aplikace v tomto projektu. D´ale jsou zde pops´any aplikace, kter´e implementuj´ı v´ysˇe popsan´e hardwarov´e a softwarov´e prostˇredky komunikace po sbˇernici CAN, protokol CANOpen a profil distribuovan´eho ˇr´ızen´ı pohon˚u. Je zde pops´ana vytvoˇren´a uk´azkov´a hlavn´ı ˇr´ıd´ıc´ı aplikace, kter´a je ovl´ad´ana oper´atorem pomoc´ı jednoduch´ych pˇr´ıkaz˚u. Na podˇr´ızen´ych uzlech komunikaˇcn´ı s´ıtˇe je pak spuˇstˇena aplikace, kter´a komunikuje s nadˇrazen´ym uzlem a pˇr´ımo prov´ad´ı ˇr´ızen´ı nˇekolika pohonn´ych motor˚u. Je zde naznaˇcena konfigurace takov´eto s´ıtˇe a pops´any zdrojov´e k´ody. T´ım je d´an n´avod pro ˇreˇsen´ı podobn´e problematiky v dalˇs´ıch konkr´etn´ıch aplikac´ıch nejen z oblasti robotiky. K t´eto pr´aci je pˇriloˇzeno CD se zdrojov´ymi k´ody a v´ykresy, jehoˇz podrobnˇejˇs´ı obsah je uveden v pˇr´ıloze C.
Kapitola 2 Mechanika Jedn´ım z c´ıl˚u m´e diplomov´e pr´ace bylo zkonstruovat a postavit autonomn´ıho mobiln´ıho robota. Pot´e se s sn´ım spoleˇcnˇe s ostatn´ımi cˇ leny t´ymu z´ucˇ astnit soutˇezˇ e Eurobot 2007. Nejprve bylo nutn´e prostudovat detailnˇe pravidla soutˇezˇ e [18], kde je specifikov´an u´ kol robota. D´ale bylo nutno pˇrihl´ednout k technick´ym omezen´ım na rozmˇery robota a na pouˇzit´e technologie. Rozhodov´an´ı o funkci mechanick´ych souˇca´ st´ı robota, zejm´ena tˇech t´ykaj´ıc´ıch se hern´ı strategie, bylo diskutov´ano mezi vˇsemi cˇ leny t´ymu. Vˇetˇsina d´ıl˚u z hlin´ıkov´eho deskov´eho materi´alu byla vyfr´ezov´ana na CNC stroji. Plastov´e desky z´asobn´ıku a ostatn´ı drobn´e d´ıly byly vyrobeny na CNC fr´ezce vlastn´ı v´yroby. V´yrobn´ı pˇredpisy byly generov´any z elektronick´ych verz´ı v´ykres˚u uveden´ych v pˇr´ıloze B.
2.1
N´avrh pohonu
Vzhledem k tomu, zˇ e jsme pl´anovali pouˇz´ıt kostru1 robota i s pohonem v dalˇs´ıch roˇcn´ıc´ıch soutˇezˇ e, rozhodli jsme poloˇzit velk´y d˚uraz na kvalitu a zˇ ivotnost vybran´eho pohonu. Jako pohonn´e motory jsme vybrali bezkomut´atorov´e stejnosmˇern´e motory (BLDC – Brush– less DC motor) od firmy MAXONTM . Obecnˇe se stejnosmˇern´ymi motory tohoto v´yrobce m´ame na Katedˇre ˇr´ıdic´ı techniky velmi dobr´e zkuˇsenosti pro jejich vysokou kvalitu, dlouhou zˇ ivotnost a dobrou variabilitu ve v´yrobn´ıch ˇrad´ach pohon˚u a jejich pˇr´ısluˇsenstv´ı. V´ybˇer bezkomut´atorov´ych motor˚u byl jak´ysi nadstandard, ale rozhodli jsme se pro nˇe pro jejich vyˇssˇ´ı mechanickou odolnost a vyˇssˇ´ı pˇret´ızˇ itelnost. Jedinou nev´yhodou je nutnost vytvoˇren´ı tˇr´ıf´azov´eho elektrick´eho proudu pro vytvoˇren´ı rotaˇcn´ıho magnetick´eho pole ve statoru motoru. V dneˇsn´ı dobˇe 1
Kostru tvoˇr´ı z´akladna z 3 mm siln´e hlin´ıkov´e desky a r´am z profil˚u ITEM.
3
4
KAPITOLA 2. MECHANIKA
Tabulka 2.1: Zvolen´e parametry pro v´ypoˇcet pohonu robota
poˇcet pohonn´ych motor˚u (diferenˇcn´ı ˇr´ızen´ı) 2 celkov´a hmotnost robota
m = 10kg
maxim´aln´ı rychlost
v = 1ms−1
maxim´aln´ı zrychlen´ı
a = 5ms−2
pr˚umˇer pohonn´eho kola
D = 80 mm
je vˇsak dostatek elektronick´ych souˇca´ stek i ˇr´ıd´ıc´ıch obvod˚u pro podobn´e stˇr´ıdaˇce. Parametry pro dimenzov´an´ı pohonu jsou uvedeny v tabulce 2.1. N´avrh mezn´ıch hodnot jsem volil s ohledem na pˇredpokl´adanou hmotnost robota, na velikost hrac´ı plochy a rychlost, kterou lze na hˇriˇsti dos´ahnout. Volba vhodn´eho pr˚umˇeru a sˇ´ıˇrky pohonn´eho koleˇcka vych´azela z dostateˇcn´e styˇcn´e plochy s povrchem hrac´ı plochy. Pro parametry zadan´e v tabulce 2.1 lze spoˇc´ıtat maxim´aln´ı ot´acˇ ky kola jako nk =
v.60 = 238.7min−1 . π.D
S´ıla p˚usob´ıc´ı na robota pˇri akceleraci a pˇr´ım´e j´ızdˇe je F = m.a = 10kg.5ms−2 = 50N , z cˇ ehoˇz je pro kaˇzd´y ze dvou pohonn´ych motor˚u polovina, tedy F1/2 = 25N . Pˇri uvaˇzov´an´ı polomˇeru kola (ramena s´ıly) je krout´ıc´ı moment na hˇr´ıdeli kola Mk =
F1/2 .D = 1N m. 2
Pro vypoˇcten´e parametry nk a Mk jsem vyb´ıral vhodn´y motor s pˇrevodovkou. Ve v´yrobn´ı ˇradˇe poˇzadovan´ych v´ykon˚u maj´ı vˇsechny sestavy motor˚u s planetov´ymi pˇrevodovkami vˇetˇs´ı d´elku neˇz je polovina sˇ´ırˇky kostry robota. Z d˚uvodu tˇechto rozmˇer˚u sestavy enkod´er-motorpˇredovka bylo nutn´e osu tohoto pohonu um´ıstit mimo osu kola. Zvolil jsem proto ˇreˇsen´ı pouˇz´ıt motor s planetovou pˇrevodovkou a pˇrevodem ozuben´ym ˇremenem mezi hˇr´ıdel´ı kola a pˇrevodovky. Nespornou v´yhodou je i moˇznost cˇ a´ steˇcn´e zmˇeny pˇrevodov´eho pomˇeru volbou r˚uzn´eho pr˚umˇeru ozuben´ych ˇremenic (v pouˇzit´e sestavˇe nakonec v rozsahu cca 1:1 aˇz 1:4). Pˇrevod ozuben´ym ˇremenem neproklouzne a dovoluje kompenzovat m´ırnou r˚uznobˇezˇ nost hˇr´ıdel˚u a jin´e nepˇresnosti ve v´yrobˇe. K nalezen´ı vhodn´e sestavy pohonu mi velice dobˇre poslouˇzil Maxon Selection Program 1.2, kter´y je moˇzno volnˇe st´ahnout na internetov´ych str´ank´ach fy. Uzimex [9]. Dokumentace k sestavˇe pohonu vˇcetnˇe pracovn´ıch charakteristik je v pˇr´ıloze A t´eto pr´ace.
´ 2.1. NAVRH POHONU
5
Obr´azek 2.1: Motor zabudovan´y v robotu
Pˇri volbˇe vhodn´eho v´ykonu pohonn´e jednotky jsem vych´azel z pˇredpokladu, zˇ e robot se bude v pr˚ubˇehu z´apasu neust´ale rozj´ızˇ dˇet a zastavovat. N´avrhov´y krout´ıc´ı moment na hˇr´ıdeli kola Mk tedy bude vyvozov´an vˇetˇsinu pracovn´ıho cˇ asu. Nelze poˇc´ıtat s t´ım, zˇ e se motor po rozjet´ı robota na jmenovitou konstantn´ı rychlost odlehˇc´ı a bude pouze pˇrekon´avat j´ızdn´ı odpory. Pro vypoˇcten´e parametry nk a Mk jsem hledal parametry motoru jmenovit´e, ve kter´ych se pˇredpokl´ad´a nepˇretrˇzit´y provoz, nikoliv mezn´ı, kde je nutno uvaˇzovat i dobu pohybu pracovn´ıho bodu v oblasti nad jmenovit´ymi parametry. Jednoduˇse ˇreˇceno, maxim´aln´ı v´ykon potˇrebn´y k rozjezdu robota na navrhovan´ych parametrech nepˇrekroˇc´ı jmenovit´y v´ykon motoru a nemˇelo by tak pˇri provozu doj´ıt k jeho nadmˇern´emu tepeln´emu zatˇezˇ ov´an´ı. V pˇr´ıloze A je uvedena momentov´a charakteristika vybran´eho motoru. Hodnoty nk a Mk jsou poloˇzeny do jmenovit´ych hodnot sestavy motor-pˇrevodovka-ˇremenov´y pˇrevod. V´ypoˇcet vlastnost´ı ˇremenov´eho pˇrevodu jsem prov´adˇel pomoc´ı programu, kter´y pracuje pˇr´ımo s jednotliv´ymi v´yrobn´ımi ˇradami ozuben´ych ˇremen˚u a ˇremenic podle katalogu. Program pro v´ypoˇcet ˇremenov´ych pˇrevod˚u je zdarma ke staˇzen´ı na internetov´ych str´ank´ach firmy Tyma [7]. V´ykres cel´e sestavy pohonu je v pˇr´ıloze B na obr´azku B.1. Mal´a ˇremenice m´a 12 zub˚u a nese oznaˇcen´ı 12XL037, velk´a ˇremenice m´a 24 zub˚u a je oznaˇcena 24XL037. Pouˇzit´y ozuben´y ˇremen je 76XL037.
6
KAPITOLA 2. MECHANIKA
Obr´azek 2.2: Kostra robota s namontovan´ymi motory a cˇ a´ st´ı sbˇeraˇce
2.2
Kostra robota
Soutˇezˇ autonomn´ıch robot˚u Eurobot m´a dlouholetou tradici. N´asˇ t´ym by se chtˇel t´eto soutˇezˇ e u´ cˇ astnit nejen v roce 2007 ale i v roˇcn´ıc´ıch n´asleduj´ıc´ıch. Vzhledem k tomu, zˇ e pravidla se v omezen´ı na maxim´aln´ı rozmˇery robota rok od roku t´emˇeˇr nemˇen´ı, rozhodli jsme se sestrojit kostru univerz´aln´ı, pouˇzitelnou i v dalˇs´ıch letech. Pˇrirozenˇe, zˇ e vnitˇrn´ı mechanismy robota se kaˇzdoroˇcnˇe mˇen´ı podle u´ kolu a zad´an´ı soutˇezˇ e. Jako z´akladn´ı desku kostry jsem zvolil 3 mm siln´y plech z hlin´ıkov´e slitiny. Jej´ı velikost byla odvozena od pl´anovan´eho p˚udorysu robota. Na z´akladn´ı desce jsou pˇripevnˇeny oba pohonn´e motory, domky s loˇzisky pohonn´ych kol a dvˇe odvalovac´ı kovov´e kuliˇcky nahrazuj´ıc´ı pˇredn´ı kola. Na z´akladnˇe je potom vystavˇen r´am ze stavebnicov´ych hlin´ıkov´ych profil˚u ITEM, urˇcen´ych pro stavbu jedno´ucˇ elov´ych stroj˚u. V´yhodou je nespornˇe jednoduch´a mont´azˇ s pouˇzit´ım dod´avan´ych spojovac´ıch prvk˚u. Nahrazen´ı pˇredn´ıch kol kuliˇckami umoˇznˇ uje otoˇcit robota na m´ıstˇe pˇri diferenˇcn´ım ˇr´ızen´ı pohonu kol. Kuliˇcky se mohou v rovinˇe hrac´ı plochy odvalovat v libovoln´em smˇeru. Pohonn´a kola jsou vyrobena z hlin´ıkov´e slitiny, soustruˇzena a odvrt´ana pro odlehˇcen´ı. Na jejich obvod je nalepena 6 mm siln´a mechov´a guma zajiˇst’uj´ıc´ı pˇrilnavost k povrchu hˇriˇstˇe.
ˇ 2.3. SBERAC I´ MECHANISMUS
7
Obr´azek 2.3: Kompletnˇe sestaven´y sbˇerac´ı mechanismus na robotu
V m´ıstˇe kontaktu kola s plochou hˇriˇstˇe se guma na kole zm´acˇ kne na tlouˇst’ku cca 4 mm. Kaˇzd´e z kol m´a svoji hˇr´ıdel uloˇzenou ve dvou jednoˇrad´ych kuliˇckov´ych loˇzisk´ach s prachovkami proti neˇcistot´am. Loˇziskov´e domky jsou takt´ezˇ vyrobeny z hlin´ıkov´e slitiny. V´ykresy tˇechto souˇca´ st´ı jsou uvedeny v pˇr´ıloh´ach t´eto pr´ace. Na obr´azku B.1 je z´akladn´ı deska s namontovan´ym r´amem, obˇema pohony, koly a odvalovac´ımi kuliˇckami v pˇredn´ı cˇ a´ sti robota.
2.3
Sbˇerac´ı mechanismus
Jak jiˇz bylo ˇreˇceno v u´ vodu, u´ kolem robota v letoˇsn´ım kole soutˇezˇ e je sesb´ırat l´ahve, plechovky a baterie a roztˇr´ıdit tyto pˇredmˇety do koˇsu˚ v roz´ıch hˇriˇstˇe. Naˇse hern´ı strategie se op´ırala zejm´ena o sbˇer plechovek a l´ahv´ı. Sb´ır´an´ı a tˇr´ıdˇen´ı bateri´ı podle barvy je sice l´epe bodovˇe hodnoceno, ale odpov´ıd´a to samozˇrejmˇe vyˇssˇ´ım n´arok˚um na technologie spojen´e s jejich manipulac´ı. Baterie jsme se rozhodli nesb´ırat. Z´asadn´ım poznatkem pro sbˇer l´ahv´ı a plechovek je jejich stejn´y pr˚umˇer (60 mm). Nˇekolik
8
KAPITOLA 2. MECHANIKA
moˇzn´ych variant sbˇerac´ıch mechanism˚u jsme zkouˇseli na provizornˇe postaven´ych modelech. Jako nejl´epe funkˇcn´ı se jevil svisl´y p´asov´y dopravn´ık s napnut´ymi gumov´ymi oky mezi dvˇema rotuj´ıc´ımi v´alci. M´ym u´ kolem bylo tedy opˇet zvolen´y mechanismus realizovat, postavit a vyˇreˇsit jeho pˇripevnˇen´ı na kostru robota. Pravidla soutˇezˇ e tak´e hovoˇr´ı o dvoj´ıch maxim´aln´ıch rozmˇerech robota. Jeden z nich je maxim´aln´ı obvod robota v dobˇe startu z´apasu (max. 120 cm) a druh´y je maxim´aln´ı obvod robota v pr˚ubˇehu z´apasu (max. 140 cm). Vyuˇzil jsem t´eto skuteˇcnosti a volil sbˇerac´ı mechanismus jako vykl´apˇec´ı. Spodn´ı rotaˇcn´ı v´alec je poh´anˇen stejnosmˇern´ym model´aˇrsk´ym motorem pomoc´ı ozuben´eho ˇrem´ınku. Pohybem zar´azˇ ek je moˇzn´e volit v´ysˇku spodn´ıho sbˇerac´ıho v´alce nad povrchem hˇriˇstˇe. K vyklopen´ı sbˇeraˇce po startu z´apasu staˇc´ı gravitaˇcn´ı s´ıla, odjiˇstˇen´ı je ˇreˇseno mal´ym model´aˇrsk´ym servomotorem. Automaticky dojde k vyklopen´ı plechov´ych boˇcnic, vymezujc´ıch obd´eln´ıkov´y kan´al dopravn´ıkov´e cˇ a´ sti sbˇeraˇce. Funkce sbˇerac´ıho mechanismu je takov´a, zˇ e robot popoj´ızˇ d´ı pomalu vpˇred a pomoc´ı senzor˚u hled´a sb´ıran´y pˇredmˇet. Pokud dojde ke kontaktu l´ahve nebo plechovky se spodn´ım rotuj´ıc´ım v´alcem, je tento pˇredmˇet vtaˇzen na jazyk sbˇeraˇce. Ve chv´ıli, kdy senzory nataˇzen´ı pˇredmˇetu rozpoznaj´ı, jazyk sbˇeraˇce se naklon´ı pomoc´ı servomotoru. Jazyk je zhotoven´y z tenk´eho plechu a vynese sebran´y pˇredmˇet do prostoru, kde jej zachyt´ı p´as dopravn´ıku a vyveze jej do horn´ı cˇ a´ sti robota, kde je u´ st´ı z´asobn´ıku. Pokud se stane, zˇ e se plechovka, l´ahev nebo v´ıce ˇ sen´ı t´eto situace je ve zmˇenˇe pˇredmˇet˚u najednou ve sbˇeraˇci vzpˇr´ıcˇ´ı, nelze zvedout jazyk. Reˇ smˇeru rotace sbˇerac´ıch v´alc˚u. Dojde tak k vyhozen´ı vˇsech pˇredmˇet˚u ze sbˇeraˇce a po pootoˇcen´ı nebo popojet´ı robota do m´ırnˇe odliˇsn´e pozice se opakuje sbˇerac´ı man´evr znovu. Veˇsker´e mechanismy jsou ovl´ad´any z poˇc´ıtaˇce MPC5200 (pops´an v sekci 3.2), kde je spuˇstˇena ˇr´ıd´ıc´ı aplikace. Na obr´azku B.3 je n´akres sbˇeraˇce v otevˇren´em a uzavˇren´em stavu, na obr´azku 2.3 je fotografie sbˇeraˇce pˇr´ımo na robotu.
2.4
Z´asobn´ık
Po u´ spˇesˇn´em sbˇeru l´ahve nebo plechovky putuje tento pˇredmˇet do z´asobn´ıku. Ten m´a profil zahnut´eho kan´alu s obd´eln´ıkov´ym pr˚uˇrezem. Z boˇcn´ıho pohledu je z´asobn´ık zahnut t´emˇeˇr do prav´eho u´ hlu. Umoˇznˇ uje to pˇredmˇetu padaj´ıc´ımu z horn´ı cˇ a´ sti sbˇeraˇce srovnat se tak, aby se v z´asobn´ıku nevzpˇr´ıcˇ il. Pˇredmˇety jsou v z´asobn´ıku v poˇrad´ı, ve kter´em byly sebr´any. Z´asobn´ık pojme aˇz pˇet pˇredmˇet˚u. Potom je nutn´e dojet ke koˇsu˚ m a sebran´e pˇredmˇety roztˇr´ıdit do koˇsu˚ . Souˇca´ st´ı z´asobn´ıku je v zadn´ı cˇ a´ sti robota vyhazovac´ı mechanismus. Vzhledem k tomu,
ˇ I´ MAJAK ´ 2.5. LOKALIZACN
9
Obr´azek 2.4: Z´asobn´ık pˇripevnˇen´y ke kostˇre robota
zˇ e koˇse na odpad jsou ve dvou roz´ıch hˇriˇstˇe, zvolili jsme strategii hry tak, zˇ e robot do rohu s koˇsi zajede a bez nutnosti ot´acˇ en´ı bude moci vyhazovat z´aroveˇn plechovky dozadu a l´ahve do obou bok˚u robota. Pro vyhozen´ı plechovky jsou na konci z´asobn´ıku ze zadn´ı cˇ a´ sti robota dv´ırˇka. Jejich otevˇren´ım pomoc´ı servomotoru se m˚uzˇ e plechovka volnˇe vykut´alet do koˇse. Pro vyhozen´ı l´ahve do obou stran robota slouˇz´ı gumov´y p´as, poh´anˇen´y pˇres pˇrevodovku stejnosmˇern´ym motorem a um´ıstˇen´y na dnˇe zadn´ı cˇ a´ sti z´asobn´ıku. Aby pˇri vyhazov´an´ı l´ahve nebo plechovky nedoˇslo k vypadnut´ı i vˇsech ostatn´ıch pˇredmˇet˚u uloˇzen´ych v z´asobn´ıku, je tento vybaven pˇrep´azˇ kou ovl´adanou servomotorem. Sekvence ovl´adac´ıch pˇr´ıkaz˚u vˇsech mechanism˚u z´asobn´ıku je tak´e ˇr´ızena z hlavn´ı aplikace. Boˇcn´ı pohled na ˇrez z´asobn´ıkem je na obr´azku B.3.
2.5
Lokalizaˇcn´ı maj´ak
Pravidla soutˇezˇ e Eurobot umoˇznˇ uj´ı um´ıstˇen´ı tˇrech reflexn´ıch odrazov´ych v´alc˚u po obvodu obd´eln´ıkov´eho hˇriˇstˇe. S v´yhodou je tedy moˇzn´e pouˇz´ıt nˇejakou z absolutn´ıch optick´ych metod urˇcen´ı polohy. Lokalizace samostatnou odometri´ı vede na cˇ asem se zvˇetˇsuj´ıc´ı neurˇcitost polohy
10
KAPITOLA 2. MECHANIKA
Obr´azek 2.5: Lokalizaˇcn´ı maj´ak namontovan´y v horn´ı cˇ a´ sti robota
a zcela se ztr´ac´ı ve chv´ıli prokluzu kola po podloˇzce. Algoritmus MCL (Monte Carlo Lokalization) je pro kombinaci absolutn´ı a relativn´ı metody urˇcen´ı polohy cˇ asto pouˇz´ıvan´y. Z d˚uvod˚u velmi specifick´eho zad´an´ı, omezen´ı na rozmˇery a kompatibilitu s dalˇs´ımi technologiemi robota, nebylo moˇzn´e pouˇz´ıt zˇ a´ dn´e z dostupn´ych zaˇr´ızen´ı na trhu. Technick´a omezen´ı zaˇr´ızen´ı jsou pops´ana v pravidlech soutˇezˇ e [18]. Modul maj´aku je vybaven sbˇernic´ı CAN, kterou je pˇripojen k ˇr´ıd´ıc´ımu poˇc´ıtaˇci MPC5200, kde je prov´adˇena numerick´a filtrace a v´ypoˇcet polohy robota. Vlastn´ı laserov´y maj´ak se skl´ad´a z pevn´e a ot´acˇ ej´ıc´ı se cˇ a´ sti. Na pevn´e cˇ a´ sti je um´ıstˇen pohonn´y komut´atorov´y motor vybaven´y inkrement´aln´ım senzorem polohy. D´ale je zde instalov´ana infraˇcerven´a optick´a z´avora poskytuj´ı synchronizaˇcn´ı impuls jednou za kaˇzdou ot´acˇ ku destiˇcky s optikou. K pˇrenosu energie a sign´alu od laserov´eho pˇrij´ımaˇce slouˇz´ı tˇri sbˇerac´ı kart´acˇ e ze studiov´ych potenciometr˚u. Z´akladem rotaˇcn´ı cˇ a´ sti je cuprextitov´a deska s vyfr´ezovan´ymi sbˇerac´ımi krouˇzky. Na n´ı je um´ıstˇen laserov´y vys´ılaˇc s fokusaˇcn´ı optikou. V tˇesn´e bl´ızkosti je rovnobˇezˇ nˇe um´ıstˇen optick´y pˇrij´ımaˇc s fototranzistorem, takt´ezˇ s ostˇr´ıc´ı optikou. Rotaˇcn´ı cˇ a´ st je preciznˇe uloˇzena ve dvou kuliˇckov´ych loˇzisk´ach, tedy se zanedbatelnou v˚ul´ı. N´akres je na obr´azku B.11, na obr´azku 2.5 je fotografie maj´aku osazen´eho na robotu. V´yrobn´ı v´ykresy lokalizaˇcn´ıho maj´aku nejsou v t´eto pr´aci uvedeny, nebot’ jeˇstˇe pl´anujeme u´ pravy jeho mechaniky pro letoˇsn´ı roˇcn´ık soutˇezˇ e.
ˇ I´ MAJAK ´ 2.5. LOKALIZACN
11
V pr˚ubˇehu testov´an´ı tohoto laserov´eho maj´aku se uk´azalo jedno u´ skal´ı pouˇzit´eho technick´eho ˇreˇsen´ı. Mˇedˇen´e sbˇerac´ı krouˇzky postupem cˇ asu zoxidovaly a na kontaktu uhl´ıku kart´acˇ e a mˇedi vznikal nezanedbateln´y pˇrechodov´y odpor. Tento probl´em byl kr´atkodobˇe ˇreˇsen oˇciˇstˇen´ım mˇedˇen´e vrstvy. Pozdˇeji byla pˇrid´ana jeˇstˇe druh´a trojice kart´acˇ u˚ , kter´a zmenˇsila poˇcet ruˇsiv´ych impulz˚u v pˇren´asˇen´em sign´alu vlivem promˇenn´eho pˇrechodov´eho odporu po obvodu krouˇzk˚u. Pouˇzit´e ˇreˇsen´ı bylo rychl´e (v´yroba cel´eho maj´aku trvala m´enˇe neˇz dva dny), ale s kr´atkou zˇ ivotnost´ı. V souˇcasn´e dobˇe navrhujeme u´ pravu pro pˇrenos sign´alu z pˇrij´ımaˇce jinou cestou, napˇr. optickou. Uvaˇzovan´y je tak´e pˇresun cˇ a´ sti elektroniky z rotaˇcn´ı cˇ a´ sti na pevnou a pouˇzit´ı rotuj´ıc´ıho zrcadla.
Obr´azek 2.6: N´asˇ robot v koneˇcn´e podobˇe na soutˇezˇ i v Petrohradu
12
KAPITOLA 2. MECHANIKA
Kapitola 3 Komunikace po sbˇernici CAN V t´eto kapitole budou nejprve ve struˇcnosti pˇribl´ızˇ eny dva typy mikrokontrol´er˚u, kter´e jsou v robotu pouˇzit´e pro ˇr´ızen´ı. Jejich spoleˇcnou vlastnost´ı je jejich v´ybava rozhran´ım sbˇernice CAN (Controller Area Network), kter´a je v robotu ke komunikaci pouˇzita. D´ale je zde pops´an protokol CANOpen, definuj´ıc´ı aplikaˇcn´ı vrstvu komunikaˇcn´ıho ISO/OSI modelu sbˇernice CAN. Detailnˇeji je pak pˇribl´ızˇ en specializovan´y profil protokolu CANOpen pro ˇr´ızen´ı pohon˚u a polohovac´ıch mechanism˚u.
3.1
Mikroprocesor H8S/2638
H8S/2638 je 16 bitov´y mikroprocesor, zamˇeˇren´y na pouˇzit´ı v aplikac´ıch vyˇzaduj´ıc´ı sˇirokou v´ybavu periferiemi. Jeho v´yrobcem je firma Renesas. Pouˇzit´ı tohoto mikroprocesoru m´a na katedˇre ˇr´ıdic´ı techniky velkou tradici. Existuje pro nˇej kompil´ator jazyka C na platformˇe Linux s licenc´ı GNU a ˇrada jiˇz pˇripraven´ych v´yvojov´ych n´astroj˚u [2]. Na nˇekter´ych desk´ach ploˇsn´ych spoj˚u s t´ımto mikroprocesorem je osazena extern´ı pamˇet’ programu typu RAM. Pˇri ladˇen´ı ˇr´ıd´ıc´ıho programu je v´yhodnˇejˇs´ı nahr´avat program do t´eto RAM pamˇeti, nebot’ jednou z m´ala nev´yhod tohoto mikroprocesoru je mal´y poˇcet garantovan´ych pˇreps´an´ı pamˇeti FLASH vlivem starˇs´ı pouˇzit´e technologie cˇ ipu pamˇeti. Ve zkratce uved’me nˇekolik z´akladn´ıch parametr˚u a funkc´ı. • Operaˇcn´ı frekvence do 20MHz • Nap´ajec´ı napˇet´ı v rozmez´ı 4.5V – 5.5V • Velikost pamˇeti 256kB FLASH a 16kB RAM 13
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
14
• Adresn´ı prostor o velikosti do 16MB • Zabudovan´e n´asoben´ı dvou 16 bitov´ych registr˚u • 2 × ˇradiˇc sbˇernice CAN, splˇnuj´ıc´ı specifikaci CAN 2.0B ˇ 16 bitov´ych cˇ´ıtaˇcu˚ /ˇcasovaˇcu˚ • Sest • 16 kan´al˚u s v´ystupem PWM pro ˇr´ızen´ı motor˚u • Tˇri s´eriov´e kan´aly • 10 bitov´y A/D pˇrevodn´ık s 12 kan´aly • Osmi bitov´y D/A pˇrevodn´ık, 3 kan´aly • 55 intern´ıch a 7 extern´ıch zdroj˚u pˇreruˇsen´ı ˇ c rychl´eho pˇrenosu dat (DTC), 85 kan´al˚u • Radiˇ • Watchdog cˇ asovaˇc, 2 kan´aly • S´eriov´e komunikaˇcn´ı rozhran´ı SCI, 3 kan´aly • I 2 C komunikaˇcn´ı rozhran´ı, 2 kan´aly • 72 I/O pin˚u, 12 pouze jako vstupn´ıch Vzhledem k tomu, zˇ e jsem na tomto mikroprocesoru vyv´ıjel nadstavbu pro komunikaci CANOpen, pˇribl´ızˇ´ım v´ıce pouze funkci CAN ˇradiˇce. Mikroprocesor je vybaven dvˇema nez´avisl´ymi ˇradiˇci CAN sbˇernice. Kaˇzd´y z nich vyuˇz´ıv´a svoj´ı ˇradu konfiguraˇcn´ıch registr˚u a 16 schr´anek pro pˇr´ıjem cˇ i odesl´an´ı zpr´avy. Oba kan´aly jsou shodn´e, liˇs´ı se pouze polohou registr˚u v pamˇeti a v´ystupn´ımi piny. Kaˇzd´y kan´al lze oddˇelenˇe zapnout a je moˇzn´e vyuˇz´ıt i m´odu sn´ızˇ en´e spotˇreby. Jiˇz na hardwarov´e u´ rovni v ˇradiˇci sbˇernice je moˇzn´e prov´adˇet filtrov´an´ı pˇr´ıchoz´ıch zpr´av. Pˇri pˇr´ıjmu zpr´avy se nejdˇr´ıve vyhodnot´ı jej´ı bezchybn´y pˇrenos pomoc´ı CRC souˇctu. Pot´e se ˇradiˇc snaˇz´ı zpr´avu uloˇzit v nˇekter´e ze schr´anek, kter´e byly pˇri inicializaci nastaveny pro pˇr´ıchoz´ı ˇ c porovn´av´a identifik´ator pˇr´ıchoz´ı zpr´avy s identifik´atorem uloˇzen´em v registru zpr´avy. Radiˇ schr´anky. V pˇr´ıpadˇe shody identifik´ator˚u se pˇr´ıchoz´ı zpr´ava do schr´anky uloˇz´ı, v opaˇcn´em pˇr´ıpadˇe se proces porovn´an´ı identifik´ator˚u prov´ad´ı u dalˇs´ı schr´anky. Hled´an´ı voln´e schr´anky prob´ıh´a od t´e s cˇ´ıslem 15 aˇz po schr´anku s cˇ´ıslem 0, kter´a je nastavena pouze pro pˇr´ıjem.
3.2. MPC5200
15
Pokud je ve schr´ance nevyzvednut´a pˇr´ıchoz´ı zpr´ava a je pˇreps´ana dalˇs´ı pˇr´ıchoz´ı zpr´avou, inkrementuje je speci´aln´ı registr ˇradiˇce znaˇc´ıc´ı poˇcet nepˇreˇcten´ych pˇrepsan´ych zpr´av. Pokud se stane zˇ e zpr´ava je odm´ıtnuta vˇsemi vstupn´ımi schr´ankami, dojde se aˇz ke schr´ance 0. Zde se prov´ad´ı porovn´av´an´ı identifik´ator˚u nikoliv prostou shodou, ale podle bitov´e masky. Ve speci´aln´ım registru lze nastavit libovolnou masku a dovolit tak pˇr´ıjem zpr´av s urˇcit´ym rozsahem identifik´ator˚u. Metoda filtrov´an´ı zpr´av bitovou maskou se naz´yv´a Local Acceptance Filtering. Kompletn´ı technick´a specifikace mikrokontrol´eru H8S/2638 je k dispozici na internetov´ych str´ank´ach v´yrobce [20].
3.2
MPC5200
MPC5200 je mal´y, velice v´ykonn´y pr˚umyslov´y mikrokontrol´er zaloˇzen´y na architektuˇre procesorov´eho j´adra PowerPCTM . Na z´akladn´ı desce BOA5200, kter´a tvoˇr´ı konektorov´e rozhran´ı pro modul MPC5200, jej pouˇz´ıv´ame jako hlavn´ı ˇr´ıd´ıc´ı poˇc´ıtaˇc v autonomn´ım robotu pro soutˇezˇ Eurobot. Operaˇcn´ım syst´emem je Linux s j´adrem 2.6. Pomoc´ı sbˇernice CAN se cˇ tou senzory, ˇr´ıd´ı pohony a vnitˇrn´ı mechanismy robota. Pomoc´ı rozhran´ı LAN je k poˇc´ıtaˇci pˇripojeno zaˇr´ızen´ı pro bezdr´atovou komunikaci pomoc´ı WiFi, kterou je moˇzn´e pouˇz´ıt pro d´alkov´e ˇr´ızen´ı. Ke komunikaci pomoc´ı sbˇernice CAN je pouˇzito programov´e rozhran´ı Socket CAN [6]. CanFestival, popsan´y v sekci 4.2, um´ı s t´ımto rozhran´ım pracovat. Uved’me zde nˇekter´e z´akladn´ı vlastnosti poˇc´ıtaˇce MPC5200. • J´adro MPC603e ze s´erie G2 LE core – v´ykon 760 MIPS pˇri frekvenci 400MHz • SDRAM / DDR rozhran´ı pamˇet´ı – aˇz do frekvence sbˇernice 133MHz – 256MB adresn´ı prostor – 32 bitov´a datov´a sbˇernice • Multifunkˇcn´ı rozhran´ı sbˇernice – podpora ROM/Flash/SRAM pamˇet´ı – 8/16/32 bitov´y pˇr´ıstup pˇri 26 bitov´em adresov´an´ı
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
16
• Ovladaˇc sbˇernice PCI (Peripherial Component Interconnect) – 32 bitov´a adresov´a a datov´a sbˇernice – 33MHz a 66MHz frekvence • Ovladaˇc sbˇernice ATA – moˇznost pˇripojen´ı IDE disku • Best Comm DMA subsyst´em s ovladaˇcem pro pˇr´ım´y pˇr´ıstup do pamˇeti • 6 programovateln´ych s´eriov´ych rozhran´ı PSC (Programable Serial Controller) • Rozhran´ı ethernetu pro 10/100Mbit/s s´ıt’ • USB1.1 rozhran´ı • I 2 C (Inter-Integrated Circuit Interface), SPI (Serial Peripherial Interface) • Dvˇe rozhran´ı CAN2.0 A/B kompatibiln´ı Podrobn´y technick´y popis mikrokontrol´eru MPC5200 je v [14] odkud je pˇrevzato blokov´e sch´ema na obr´azku 3.1.
3.3
Sbˇernice CAN
CAN (Controller Area Network) je s´eriov´a sbˇernice, vyvinut´a firmou BOSCH pro automobilov´y pr˚umysl na zaˇca´ tku 90. let. V roce 1993 byl vyd´an standard ISO 11898, kter´y pod oznaˇcen´ım CAN 2.0A popisuje fyzickou a linkovou vrstvu ISO/OSI modelu. Pozdˇeji byla specifikace linkov´e vrstvy rozˇs´ıˇrena o CAN 2.0B. Od t´eto chv´ıle se rozliˇsuje mezi datov´ym r´amcem se standardn´ım identifik´atorem o d´elce 11 bit˚u a rozˇs´ıˇren´ym identifik´atorem o d´elce 29 bit˚u. CAN protokol byl navrˇzen tak, aby umoˇznˇ oval distribuovan´e ˇr´ızen´ı syst´em˚u v re´aln´em cˇ ase, s pˇrenosovou rychlost´ı do 1Mb/s a vysok´ym stupnˇem zabezpeˇcen´ı. Protokol je typu multimaster, coˇz umoˇznˇ uje iniciovat pˇrenos dat v´ıce uzl˚um. Vzhledem k snadn´emu nasazen´ı a vysok´e spolehlivosti se protokol CAN rozˇs´ıˇril i do jin´ych pr˚umyslov´ych odvˇetv´ı.
Reset / Clock Generation
JTAG / COP Interface
CommBus
G2_LE Core
603
SDRAM / DDR Memory Controller
SDRAM / DDR
ATA Host Controller
PCI Bus Controller
Local Plus Controller
GPIO/Timers
Interrupt Controller
System Functions
Real-Time Clock
Systems Interface Unit (SIU)
Local Bus
ˇ 3.3. SBERNICE CAN 17
MSCAN 2x
J1850
USB 2x
SPI
I2C 2x
BestComm DMA Ethernet
SRAM 16K PSC 6x
Obr´azek 3.1: Blokov´e sch´ema poˇc´ıtaˇce MPC5200
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
18
Tabulka 3.1: Maxim´aln´ı d´elka sbˇernice v z´avislosti na poˇzadovan´e pˇrenosov´e rychlosti
Pˇrenosov´a rychlost D´elka 1Mbit/s
30 m
800kbit/s
50 m
500kbit/s
100 m
250kbit/s
250 m
125kbit/s
500 m
62.5kbit/s
1000 m
20kbit/s
2500 m
10kbit/s
5000 m (s opakovaˇcem)
3.3.1 Fyzick´a vrstva Z´akladn´ı vlastnost´ı fyzick´eho pˇrenosov´eho m´edia je realizace logick´eho souˇcinu. Protokol CAN definuje dvˇe odliˇsn´e u´ rovnˇe na sbˇernici dominant a recessive. Stav na sbˇernici je v´ysledkem logick´eho souˇcinu u´ rovn´ı vys´ılan´ych vˇsemi uzly. Vys´ılaj´ı-li vˇsechny uzly u´ roveˇn recessive, je na sbˇernici u´ roveˇn recessive. Vys´ıl´a-li alespoˇn jeden uzel u´ roveˇn dominant, je na sbˇernici u´ roveˇn dominant. Veden´ı sbˇernice obsahuje vodiˇce s oznaˇcen´ım CAN-H (High), CAN-L (Low), zemn´ı vodiˇc GND, st´ınˇen´ı a volitelnˇe tak´e nap´ajen´ı 5V. Zm´ınˇen´a recesivn´ı u´ roveˇn je definov´ana tak, zˇ e napˇet´ı na vodiˇci CAN-H nen´ı vyˇssˇ´ı neˇz napˇet´ı na vodiˇci CAN-L + 0.5V. Dominantn´ı u´ roveˇn je pak urˇcena napˇet´ım v rozsahu 3.5V aˇz 5V na vodiˇci CAN-H a z´aroveˇn napˇet´ım menˇs´ım neˇz 1.5V na vodiˇci CAN-L, oboj´ı proti zemi GND. Veden´ı sbˇernice je na obou stran´ach zakonˇceno termin´atory 120 Ω. Diferenˇcn´ı uspoˇra´ d´an´ı sbˇernice zvyˇsuje odolnost proti souhlasn´emu napˇet’ov´emu ruˇsen´ı. Maxim´aln´ı pˇrenosovou rychlost pro r˚uzn´e d´elky fyzick´eho veden´ı popisuje tabulka 3.1. Omezen´ım je rychlost sˇ´ıˇren´ı elektrick´eho sign´alu ve veden´ı d´ana indukˇcnost´ı a kapacitou mezi vodiˇci. V´ıce v [11].
3.3.2
Linkov´a vrstva
Linkovou vrstvu lze rozdˇelit na dvˇe podvrstvy – MAC a LLC. MAC (Medium Acces Control) vrstva m´a na starosti k´odov´an´ı dat, vkl´ad´an´ı doplˇnkov´ych bit˚u do komunikace (Bit Stuffing), ˇr´ızen´ı pˇr´ıstupu k m´ediu s uv´azˇ en´ım priority zpr´avy, detekci a hl´asˇen´ı chyb a potvrzov´an´ı
ˇ 3.3. SBERNICE CAN
19
Obr´azek 3.2: Form´at datov´e zpr´avy sbˇernice CAN
spr´avnˇe pˇrijat´ych zpr´av. Vrstva LLC (Logical Link Control) filtruje pˇrijat´e zpr´avy (Acceptance Filtering) a prov´ad´ı hl´asˇen´ı o pˇret´ızˇ en´ı s´ıtˇe (Overload Notification).
3.3.3
Datov´a zpr´ava
Datov´a zpr´ava je z´akladn´ım prvkem komunikace uzl˚u po sbˇernici. Umoˇznˇ uje pˇren´est 0 aˇz 8 byt˚u dat. Protokol CAN definuje dva typy datov´ych zpr´av. Prvn´ı z nich je definov´an specifikac´ı CAN 2.0A a je oznaˇcov´an jako standardn´ı form´at zpr´avy s d´elkou identifik´atoru 11 bit˚u. Specifikace CAN 2.0B definuje nav´ıc tzv. rozˇs´ıˇren´y form´at zpr´avy, liˇs´ıc´ı se od standardn´ıho pouze ˇ c 29 bitov´ym identifik´atorem. Oba typy zpr´av mohou b´yt na sbˇernici pouˇz´ıv´any souˇcasnˇe. Radiˇ ˇ asti zpr´avy standardu 2.0A nem˚uzˇ e rozˇs´ıˇren´e zpr´avy pˇrij´ımat, ale neoznaˇcuje je za chybn´e. C´ s identifik´atorem a RTR bitem se ˇr´ık´a arbitr´azˇ n´ı pole (Arbitration field). Vysl´an´ı datov´e zpr´avy je moˇzn´e pouze tehdy, pokud je sbˇernice voln´a. Pokud je na sbˇernici v´ıce uzl˚u, kter´e chtˇej´ı odeslat datovou zpr´avu a detekuj´ı volnou sbˇernici ve stejn´em okamˇziku, prob´ıh´a rozhodov´an´ı podle priority zpr´av urˇcen´e identifik´atorem. Hodnota identifik´ator˚u zpr´av vys´ılan´ych v´ıce uzly je porovn´av´ana bit po bitu logick´ym souˇcinem, jenˇz poskytuje pˇr´ımo fyzick´a vrstva. Vyˇssˇ´ı prioritu na konkr´etn´ım bitu tedy m´a zpr´ava s dominantn´ı logickou u´ rovn´ı a uzel kter´y detekuje opaˇcnou u´ roveˇn neˇz s´am vys´ıl´a, ukonˇcuje dalˇs´ı vys´ıl´an´ı zpr´avy. Nejvyˇssˇ´ı dosaˇzitelnou prioritu ud´av´a identifik´ator 0h . Na obr´azku 3.2 pops´an form´at datov´e zpr´avy.
3.3.4
Ostatn´ı typy zpr´av
ˇ adost o data Z´
Prostˇrednictv´ım t´eto zpr´avy zˇ a´ d´a zaˇr´ızen´ı vzd´alen´y uzel o zasl´an´ı dat.
Od klasick´e datov´e zpr´avy se liˇs´ı nastaven´ym bitem RTR na u´ roveˇn recessive a neobsahuje datovou cˇ a´ st. Vzd´alen´y uzel odeˇsle zpˇet datovou zpr´avu o stejn´em identifik´atoru s jak´ym zˇ a´ dost o data pˇrijal. Datov´a zpr´ava m´a oproti zˇ a´ dosti o data se stejn´ym identifik´atorem vyˇssˇ´ı prioritu z d˚uvodu pˇr´ıtomnosti dominantn´ı u´ rovnˇe na pozici RTR bitu.
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
20
Chybov´a zpr´ava
Tuto zpr´avu1 generuje kter´ykoliv uzel, kter´y detekuje chybu v pˇren´a-
sˇen´e zpr´avˇe (napˇr. chyba bitu, chyba CRC, chyba vkl´ad´an´ı bit˚u, chyba r´amce). Na sbˇernici vyˇsle sˇestici recesivn´ıch nebo dominantn´ıch bit˚u. Poruˇs´ı se tak pravidlo o vkl´ad´an´ı bit˚u a vyvol´a se odesl´an´ı chybov´e zpr´avy i u ostatn´ıch uzl˚u. Po odesl´an´ı sˇestice bit˚u chybov´e zpr´avy kaˇzd´y uzel vys´ıl´a sedm recesivn´ıch bit˚u a d´av´a tak prostor k odeznˇen´ı indikace chyby od vˇsech uzl˚u. Pot´e se nˇekter´y z uzl˚u opˇet pokus´ı o standardn´ı vysl´an´ı datov´e zpr´avy. Zpr´ava o pˇret´ızˇ en´ı
Zpr´ava o pˇret´ızˇ en´ı slouˇz´ı k odd´alen´ı vys´ıl´an´ı dalˇs´ı datov´e zpr´avy
nebo zˇ a´ dosti o data. Zpravidla tento zp˚usob vyuˇz´ıvaj´ı zaˇr´ızen´ı, kter´a nejsou schopna kv˚uli sv´emu vyt´ızˇ en´ı pˇrij´ımat a zpracov´avat dalˇs´ı data. Struktura t´eto zpr´avy je podobn´a zpr´avˇe o chybˇe, ale jej´ı vys´ıl´an´ı m˚uzˇ e b´yt zah´ajeno aˇz po konci zpr´avy (End of Frame), konci oddˇelovaˇce chyb nebo pˇredch´azej´ıc´ıho oddˇelovaˇce zpr´av pˇret´ızˇ en´ı.
3.4
CANOpen standard
S fyzickou a linkovou vrstvou ISO/OSI s´ıt’ov´eho modelu sbˇernice CAN jsme se sezn´amili v kapitole 3.3. Aby byla umoˇznˇena interoperabilita v´ıce zaˇr´ızen´ı od r˚uzn´ych v´yrobc˚u i na programov´e u´ rovni, byl v devades´at´ych letech vyd´an standard CANOpen, definuj´ıc´ı aplikaˇcn´ı vrstvu ISO/OSI modelu. Norma CANOpen je definov´ana mezin´arodn´ı organizac´ı CiA (CAN in Automation), kter´a sdruˇzuje v´yrobce a uˇzivatele p˚usob´ıc´ı v automatizaˇcn´ım pr˚umyslu. Obr´azek 3.3 ukazuje spojen´ı dvou CANOpen zaˇr´ızen´ı s naznaˇcen´ım komunikaˇcn´ıch prostˇredk˚u na r˚uzn´ych u´ rovn´ıch zjednoduˇsen´eho ISO/OSI modelu.
3.4.1
Model CANOpen zaˇr´ızen´ı
Z´akladn´ı strukturu CANOpen zaˇr´ızen´ı lze rozdˇelit do tˇr´ı blok˚u, jak je uvedeno na obr´azku 3.4. • Komunikace – poskytuje prostˇredky pro pˇrenos dat po s´ıti. Vyuˇz´ıv´a k tomu procesn´ı datov´e objekty (PDO), servisn´ı datov´e objekty (SDO), servisn´ı objekty spr´avy s´ıtˇe (NMT) a objekty se speci´aln´ıch funkc´ı. 1
Nejedn´a se o zpr´avu v prav´em slova smyslu, jde pouze o sekvenci bit˚u stejn´e u´ rovnˇe, nepˇren´asˇej´ıc´ı zˇ a´ dn´a data
ani identifik´ator.
3.4. CANOPEN STANDARD
21
›
Prijímající uzel
Vysílající uzel Objekt na indexu
CANopen Aplikacní vrstva
...
CAN Linková vrstva
CAN Linková vrstva
ID + data
CAN Fyzická vrstva
CAN_L
›
›
CANopen Aplikacní vrstva
ID + data
CAN Fyzická vrstva
CAN_L
CAN_H
Obr´azek 3.3: ISO/OSI model podle CANOpen standardu
• Slovn´ık zaˇr´ızen´ı – (Object Dictionary) je glob´aln´ı datov´a struktura, pˇr´ıstupn´a prostˇrednictv´ım s´ıtˇe. Jsou zde uloˇzeny definice datov´ych typ˚u a parametry veˇsker´ych komunikaˇcn´ıch objekt˚u. • Aplikace – implementuje funkce pro pr´aci se slovn´ıkem zaˇr´ızen´ı a komunikaˇcn´ımi objekty, definuje tak´e funkce specifick´e pro pouˇzit´y profil zaˇr´ızen´ı.
›
Slovník zarízení
Aplikace
PDO SDO NMT
Datové typy
Aplikacní program
Indexy, subindexy
Implementace profilu zarízení
›
Komunikace CAN
›
Objekty speciálních funkcí
I/O
Obr´azek 3.4: Blokov´e sch´ema CANOpen zaˇr´ızen´ı
3.4.2
Slovn´ık zaˇr´ızen´ı
Nejd˚uleˇzitˇejˇs´ı cˇ a´ st´ı kaˇzd´eho CANOpen zaˇr´ızen´ı je jeho tzv. slovn´ık zaˇr´ızen´ı. Jak jiˇz bylo naznaˇceno v´ysˇe, sdruˇzuje veˇsker´e objekty pˇr´ıstupn´e pˇres s´ıt’, definuje jejich typ a poˇca´ teˇcn´ı nastaven´ı. Pˇr´ıstup do slovn´ıku je pomoc´ı 16 bitov´ych index˚u a osmibitov´ych subindex˚u. Rozloˇzen´ı
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
22
Tabulka 3.2: Skupiny index˚u ve slovn´ıku zaˇr´ızen´ı
Indexy
Objekty
0000h
nevyuˇzit
0001h – 001Fh
statick´e datov´e typy
0020h – 003Fh
komplexn´ı datov´e typy
0040h – 005Fh
komplexn´ı datov´e typy specifikovateln´e v´yrobcem
0060h – 007Fh
statick´e datov´e typy specifikovateln´e profilem zaˇr´ızen´ı
0080h – 009Fh
komplexn´ı datov´e typy specifikovateln´e profilem zaˇr´ızen´ı
00A0h – 0FFFh
rezervov´ano pro budouc´ı vyuˇzit´ı
1000h – 1FFFh
parametry komunikaˇcn´ıho profilu
2000h – 5FFFh
parametry komunikaˇcn´ıho profilu specifikovateln´e v´yrobcem
6000h – 9FFFh
parametry standardizovan´eho profilu zaˇr´ızen´ı
A000h – BFFFh
parametry standardizovan´eho rozhran´ı
C000h – FFFFh
rezervov´ano pro budouc´ı vyuˇzit´ı
informac´ı na indexech ukazuje tabulka 3.2. Indexy v rozsahu 0000h aˇz 0FFFh jsou urˇceny pro definice typ˚u a jsou pˇr´ıstupn´e pouze lok´alnˇe.
3.4.3
Komunikaˇcn´ı objekty
CANOpen pouˇz´ıv´a pro zpr´avu s´ıtˇe, zas´ıl´an´ı dat a ˇr´ızen´ı komunikace n´asleduj´ıc´ı komunikaˇcn´ı objekty. • Procesn´ı datov´e objekty (PDO) – slouˇz´ı pro pˇrenos procesn´ıch dat v re´aln´em cˇ ase • Servisn´ı datov´e objekty (SDO) – umoˇznˇ uj´ı z´apis a cˇ ten´ı poloˇzek slovn´ıku zaˇr´ızen´ı • Objekty pro zpr´avu s´ıtˇe (NMT) – NMT Message Object – slouˇz´ı k ovl´ad´an´ı komunikaˇcn´ıch stav˚u zaˇr´ızen´ı – Boot-up Object – zas´ıl´a zpr´avu o zapnut´ı zaˇr´ızen´ı – Error Control Object – pos´ıl´an´ı chybov´ych zpr´av • Objekty speci´aln´ıch funkc´ı – Synchronization (SYNC) – zajiˇst’uj´ı synchronizaci zaˇr´ızen´ı na s´ıti
3.4. CANOPEN STANDARD
23
– Time Stamp – umoˇznˇ uje zas´ıl´an´ı cˇ asov´ych znaˇcek – Emergency (EMCY) – pos´ıl´an´ı nouzov´ych zpr´av
3.4.4
PDO zpr´avy
Pˇrenos procesn´ıch dat v re´aln´em cˇ ase je uskuteˇcnˇ ov´an prostˇrednictv´ım PDO zpr´av. Tento zp˚usob komunikace je popisov´an modelem producent/konzument. Jedna PDO zpr´ava m˚uzˇ e n´est maxim´alnˇe 8 byt˚u dat a jej´ı form´at je shodn´y s datovou zpr´avou sbˇernice CAN. Z tohoto d˚uvodu zde nejsou zˇ a´ dn´e n´aroky na dalˇs´ı reˇzii pˇrenosu a tak je pˇrenos dat touto metodou velice efektivn´ı. Ke kaˇzd´e PDO zpr´avˇe je ve slovn´ıku zaˇr´ızen´ı uloˇzeno nˇekolik parametr˚u. V prvn´ı ˇradˇe je to tzv. mapov´an´ı, urˇcuj´ıc´ı kter´e poloˇzky slovn´ıku zaˇr´ızen´ı budou touto zpr´avou pˇren´asˇeny. Dalˇs´ımi parametry jsou identifik´atory zpr´avy, registrace ud´alosti iniciuj´ıc´ı jej´ı vysl´an´ı, doba platnosti a dalˇs´ı. PDO zpr´ava jedn´ım uzlem vys´ılan´a (TPDO) mus´ı b´yt nastavena jako pˇrij´ıman´a (RPDO) na jednom nebo v´ıce ostatn´ıch uzlech. I mapov´an´ı je zpravidla nastaveno tak, zˇ e poloˇzka slovn´ıku zaˇr´ızen´ı na jednom uzlu je po pˇrenesen´ı s´ıt´ı uloˇzena na stejnou poloˇzku uzlu jin´eho. Nen´ı to ale nutnou podm´ınkou. Odesl´an´ı PDO zpr´avy m˚uzˇ e b´yt zp˚usobeno synchronn´ı nebo asynchronn´ı ud´alost´ı. Synchronn´ı a zpravidla periodick´e odes´ıl´an´ı PDO zpr´av prob´ıh´a v z´avislosti na pˇrijet´ı synchronizaˇcn´ıho objektu (SYNC), kter´y m˚uzˇ e vys´ılat bud’to uzel s´am nebo jej pˇrij´ım´a od vzd´alen´eho uzlu pomoc´ı s´ıtˇe. Asynchronn´ı odesl´an´ı PDO zpr´avy m˚uzˇ e b´yt zp˚usobeno vnitˇrn´ı ud´alost´ı z programu pˇr´ısluˇsn´eho uzlu, jako je pˇreruˇsen´ı nebo zaps´an´ı aktu´aln´ı hodnoty do mapovan´e promˇenn´e. Moˇzn´e je tak´e odesl´an´ı PDO zpr´avy po vzd´alen´em poˇzadavku na data (RTR – Remote Transmittion Request). Pˇred´av´an´ı PDO zpr´av je na u´ rovni aplikaˇcn´ı vrstvy povaˇzov´ano za nepotvrzovan´y zp˚usob komunikace. M˚uzˇ e se st´at, zˇ e zˇ a´ dn´y vzd´alen´y uzel vyslanou zpr´avu nepˇrijme, protoˇze nem´a nastaveno mapov´an´ı a komunikaˇcn´ı parametry stejnˇe jako u odes´ılaj´ıc´ıho uzlu. Na u´ rovni linkov´e vrstvy komunikaˇcn´ıho modelu samozˇrejmˇe k potvrzen´ı pˇr´ıjmu vzd´alen´ymi uzly dojde po vyhodnocen´ı CRC k´odu zpr´avy. Aplikaˇcn´ı vrstva se toto dov´ıd´a pouze v pˇr´ıpadˇe chyby prostˇrednictv´ım chybov´eho hl´asˇen´ı. Pˇrijet´ı PDO zpr´avy je indikov´ano pouze na stranˇe pˇr´ıjemce. Odes´ıl´an´ı PDO zpr´avy je ve specifikaci DS-301 [12] oznaˇcov´ano jako Write PDO Protocol a situaci zn´azorˇnuje obr´azek 3.5. Druh´y zp˚usob pˇrenosu PDO zpr´avy je na vzd´alenou zˇ a´ dost (RTR – Remote Transmittion Request), oznaˇcovan´y ve specifikaci jako Read PDO Protocol. V tomto pˇr´ıpadˇe jeden nebo v´ıce
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
24 Producent
Konzumenti indikace
›
indikace
pozadavek
data
indikace
Obr´azek 3.5: Nepotvrzovan´y pˇrenos PDO zpr´avy (Write PDO protocol)
Producent
Konzumenti ›
indikace
pozadavek ›
objekt Remote Transmit Request
pozadavek ›
pozadavek odpoved'
data
potvrzeni´ indikace indikace
Obr´azek 3.6: Potvrzovan´y pˇrenos PDO zpr´avy (Read PDO protocol)
pˇr´ıjemc˚u PDO zpr´av odeˇsle do cel´e s´ıtˇe poˇzadavek na data. RTR objektem adresovan´y uzel na zˇ a´ dost odpov´ı odesl´an´ım PDO zpr´avy. Na stranˇe zˇ adatele o data je pˇrijet´ı zpr´avy indikov´ano a tak je tento zp˚usob povaˇzov´an za potvrzovan´y pˇrijet´ım zˇ a´ dan´ych dat. Pr˚ubˇeh pˇrenosu PDO zpr´avy t´ımto zp˚usobem zn´azorˇnuje obr´azek 3.6
3.4.5
SDO zpr´avy
Pomoc´ı SDO zpr´av je umoˇznˇen pˇr´ıstup k libovoln´e poloˇzce slovn´ıku zaˇr´ızen´ı, kter´a je pˇres s´ıt’ dostupn´a. SDO zpr´avy se vyuˇz´ıvaj´ı hlavnˇe ke konfiguraci vzd´alen´ych uzl˚u. Komunikaˇcn´ı model pˇrenosu tˇechto zpr´av je klient/server, kde klient iniciuje pˇrenos a server je uzel vlastn´ıc´ı slovn´ık zaˇr´ızen´ı na kter´y se pˇristupuje. SDO klientem je zpravidla ten uzel, kter´y konfiguruje jin´e uzly a cˇ te nebo nahr´av´a do jejich slovn´ık˚u zaˇr´ızen´ı konfiguraˇcn´ı parametry. SDO serverem je pak uzel konfigurovan´y. Jeden uzel m˚uzˇ e b´yt z´aroveˇn klientem i serverem pro r˚uzn´e SDO zpr´avy. D˚uleˇzitou vlastnost´ı tohoto typu zpr´av je moˇznost pˇrenosu vˇetˇs´ıho mnoˇzstv´ı dat v bloc´ıch, skl´adaj´ıc´ıch se z nˇekolika segment˚u. Z toho d˚uvodu pˇrenos vyˇzaduje velkou reˇzii, kdy se oba z´ucˇ astnˇen´e uzly navz´ajem pˇredem informuj´ı o poˇctu, d´elce a form´atu pˇren´asˇen´ych dat. Obr´azek 3.7 naznaˇcuje pˇrenos SDO zpr´avy.
3.4. CANOPEN STANDARD
25
Klient
Server
›
indikace
pozadavek
data
potvrzeni´
data
odpoved'
Obr´azek 3.7: Pˇrenos SDO zpr´avy
Pro pˇrenos jednoho bloku dat je situace o nˇeco jednoduˇssˇ´ı a sluˇzby nutn´e pro jeho uskuteˇcnˇen´ı lze rozdˇelit na n´asleduj´ıc´ı. • SDO Download – zah´ajen´ı SDO downloadu – download SDO segmentu • SDO Upload – zah´ajen´ı SDO uploadu – upload SDO segmentu • Ukonˇcen´ı SDO pˇrenosu Pro vˇetˇs´ı mnoˇzstv´ı dat je nutn´e pouˇz´ıt pˇrenos bloku po v´ıce segmentech. Sluˇzby pˇrenosu lze rozdˇelit na n´ızˇ e uveden´e. • SDO blokov´y download – zah´ajen´ı downloadu bloku – download bloku – ukonˇcen´ı downloadu bloku • SDO blokov´y upload – zah´ajen´ı uploadu bloku – upload bloku
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
26 – konec uploadu bloku
Pˇrenos SDO zpr´av je dosti komplikovan´y a jeho dalˇs´ı popis je nad r´amec t´eto kapitoly. Plnohodnotnou specifikaci lze nal´ezt napˇr´ıklad v [12].
3.4.6
NMT zpr´avy
NMT zpr´avy slouˇz´ı k ˇr´ızen´ı komunikaˇcn´ıch stav˚u podˇr´ızen´ych uzl˚u. Model komunikace je zde master/slave a podobnˇe jako samotn´a sbˇernice CAN je typu multimaster, tak i CANOpen umoˇznˇ uje pˇr´ıtomnost v´ıce master˚u v s´ıti. NMT zpr´avy maj´ı nulovou d´elku datov´e cˇ a´ sti a jejich v´yznam je urˇcen pouze identifik´atorem. Pˇrenos libovoln´e NMT zpr´avy je naznaˇcen na obr´azku 3.8. Uzel NMT master m´a k dispozici n´asleduj´ıc´ı sluˇzby. • Start Remote Node Protocol – uzel NMT master uvede vybran´e uzly NMT slave do komunikaˇcn´ıho stavu OPERATIONAL. • Stop Remote Node Protocol – uzel NMT master uvede vybran´e uzly NMT slave do komunikaˇcn´ıho stavu STOPPED. • Enter Pre-Operational Protocol – uzel NMT master uvede vybran´e uzly NMT slave do komunikaˇcn´ıho stavu PRE-OPERATIONAL. • Reset Node Protocol – NMT master resetuje aplikaci uzlu NMT slave. • Reset Communication Protocol – NMT master resetuje komunikaci uzlu NMT slave.
NMT Master ›
pozadavek
NMT uzly Slave 0 CS=X
1 2 Node-ID
COB-ID = 0
´ X .. podle vyznamu objektu NMT
Obr´azek 3.8: Pˇrenos NMT zpr´avy
indikace indikace indikace
3.4. CANOPEN STANDARD
3.4.7
27
Standardizovan´e profily v CANOpen
CANOpen poskytuje mnoho standardizovan´ych profil˚u a profil˚u rozhran´ı zvan´ych aplikaˇcn´ı profily zaˇr´ızen´ı. Jejich specifikace jsou znaˇceny DS-4XX. Standardy pro specificky zamˇeˇren´a zaˇr´ızen´ı umoˇznˇ uj´ı r˚uzn´ym v´yrobc˚um pouˇz´ıt jednotn´e metody komunikace a dovolit tak vz´ajemnou kompatibilitu sv´ych v´yrobk˚u. Ve slovn´ıku zaˇr´ızen´ı je standardizovan´ym profil˚um vyhrazen rozsah index˚u 6000h – 9FFFh , standardizovan´ym rozhran´ım A000h – BFFFh . Pˇribliˇzme ve struˇcnosti nˇekter´e profily: • DS-401 – pro obecn´e vstupnˇe/v´ystupn´ı moduly napˇr. vzd´alen´e I/O moduly PLC, • DS-402 – pro pohony a polohovac´ı mechanismy, pops´an v kapitole 3.5, • DS-403 – pro HMI (Human-Machine Interface) moduly, • DS-408 – pro ˇr´ızen´ı pneumatick´ych a hydraulick´ych syst´em˚u, • DS-412 – pro zdravotnick´a zaˇr´ızen´ı, a dalˇs´ı.
3.4.8
Komunikaˇcn´ı stavy CANOpen uzlu
Komunikaˇcn´ı stavy uzlu ukazuje obr´azek 3.9. Vlastnosti stav˚u a podm´ınky jejich pˇrechod˚u Tabulka 3.3: Pˇrechody mezi stavy v komunikaˇcn´ım stavov´em diagramu
ˇ ıslo pˇrechodu V´yznam C´ (1)
Automaticky po zapnut´ı nap´ajen´ı
(2)
Automaticky po ukonˇcen´ı inicializace
(3),(6)
Pˇrijata NMT zpr´ava Start Remote Node
(4),(7)
Pˇrijata NMT zpr´ava Enter Pre-Operational
(5),(8)
Pˇrijata NMT zpr´ava Stop Remote Node
(9),(10),(11)
Pˇrijata NMT zpr´ava Reset Node
(12),(13),(14)
Pˇrijata NMT zpr´ava Reset Communication
definuje DS-301 [12]. Pˇrechody mezi stavy popisuje tabulka 3.3 a vˇetˇsina z nich je ˇr´ızena z uzlu Master pomoc´ı NMT zpr´av. D˚uleˇzit´e je to, zˇ e pouze ve stavu OPERATIONAL je moˇzn´e komunikovat pomoc´ı PDO zpr´av. Stav PRE-OPERATIONAL slouˇz´ı ke vzd´alen´e konfiguraci
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
28
jin´ym uzlem pomoc´ı zpr´av SDO, kter´e lze v tomto stavu vys´ılat i pˇrij´ımat. Ve stavu STOPPED je zaˇr´ızen´ı doˇcasnˇe pozastavena komunikace na s´ıti. Zapnuti nebo HW reset (1) Initialisation (2) (14)
(11) Pre-Operational (7) (4)
(13) (3)
Stopped
(6) (8)
(12)
(10)
(5)
(9)
Operational
Obr´azek 3.9: Komunikaˇcn´ı stavov´y diagram CANOpen zaˇr´ızen´ı
3.5
Motion Control Profile
V t´eto sekci je pops´an standardizovan´y profil protokolu CANOpen, urˇcen´y pro ˇr´ızen´ı pohon˚u a polohovac´ıch mechanism˚u (MCP – Motion Control Profile). Jedn´a se o specializuj´ıc´ı se nadstavbu obecn´eho komunikaˇcn´ıho standardu CANOpen, popsan´eho v normˇe DS-301 [12]. Pˇri studiu specifikace jsem vych´azel z dokumentu DSP-402 [10], kter´y je ale pouze n´avrhem standardu DS-402. Aktu´aln´ı norma je dostupn´a pouze za poplatek cca 250 euro a tu jsem k dispozici nemˇel. Moˇzn´e odchylky mezi n´avrhem a aktu´aln´ım standardem jsem porovn´aval pomoc´ı aktu´aln´ı dokumentace k vyr´abˇen´ym modul˚um pro ˇr´ızen´ı pohon˚u od firmy ELMO [13]. Ve slovn´ıku je standardizovan´ym profil˚um vyhrazen rozsah index˚u od 6000h do 9FFFh . Kaˇzd´y CANOpen uzel vyuˇz´ıvaj´ıc´ı MCP m˚uzˇ e obsahovat aˇz 8 nez´avisle ˇr´ızen´ych os pohybu. Veˇsker´a konfiguraˇcn´ı i procesn´ı data vˇsech os jsou v oblasti vyhrazen´e profilu. Vˇetˇsina pˇred´avan´ych parametr˚u m´a znam´enkov´y nebo neznam´enkov´y celoˇc´ıseln´y form´at. Tabulka 3.4 ukazuje cˇ lenˇen´ı index˚u slovn´ıku pro jednotliv´e osy.
3.5. MOTION CONTROL PROFILE
29
›
CAN sbernice CAN uzel
›
Komunikacní profil DS-301
Osa 7
Osa 1
Osa 0
Standardizovaný profil zarízení DSP-402
Profile Torque Mode
Velocity Mode
Motor
Homing Mode
Profile Position Mode
Interpolated Position Mode
Profile Velocity Mode
Profile Torque Mode
Velocity Mode
›
›
Profile Velocity Mode
°
›
›
.....
´ Operacní mody
›
Interpolated Position Mode
Stavový automat, prepínání modu ´
Stavový automat, prepínání modu ´
´ Operacní mody
Profile Position Mode
Standardizovaný profil zarízení DSP-402
°
°
›
Stavový automat, prepínání modu ´
Homing Mode
›
›
›
Standardizovaný profil zarízení DSP-402
´ Operacní mody
Homing Mode
Profile Position Mode
Interpolated Position Mode
Profile Velocity Mode
Profile Torque Mode
Velocity Mode
Motor
Motor
Obr´azek 3.10: Blokov´e sch´ema se standardizovan´ym profilem pro ˇr´ızen´ı pohon˚u DS-402
V dalˇs´ım popisu jsou promˇenn´e a parametry uv´adˇeny s indexy v rozsahu 6000h do 67F Fh , tedy pro osu 0. Indexy stejn´ych parametr˚u dalˇs´ıch os lze jednoduˇse z´ıskat podle vztahu idxn = idx0 + n · 800h , kde idxn je index n-t´e osy, idx0 je index osy 0, jak je uveden ve specifikaci a n je poˇradov´e cˇ´ıslo osy od 0 do 7.
Tabulka 3.4: Rozsahy index˚u ve slovn´ıku pro jednotliv´e osy
indexy
osa
6000h – 67FFh
osa 0
6800h – 6FFFh
osa 1
7000h – 77FFh
osa 2
7800h – 7FFFh
osa 3
8000h – 87FFh
osa 4
8800h – 8FFFh
osa 5
9000h – 97FFh
osa 6
9800h – 9FFFh
osa 7
Na obr´azku 3.10 je blokov´e sch´ema uzlu CANOpen s profilem pro ˇr´ızen´ı pohon˚u. Je zde
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
30
Tabulka 3.5: Mapov´an´ı pˇrij´ıman´ych PDO zpr´av podle DSP402 ›
›
M/O Komentár: M (mandatory) povinný O (optional) volitelný
1
6040h
controlword
M
2
6040h 6060h
controlword modes_of_operation
O
3
6040h 607Ah
controlword target_position
O
4
6040h 60FFh
controlword target_velocity
O
5
6040h 6071h
controlword target_torque
O
6
6040h 6042h
controlword vl_target_velocity
O
7
6040 h 60FE h
controlword digital_outputs
O
8
6040 h 6060 h
controlword modes_of_operation
O
PDO
›
Mapování Jméno mapovaného na objektu indexu
Císlo
Rídící slovo stavu °
›
Prepínání módu ›
Mód profilovaného rízení pozice (pp) ›
Mód profilovaného rízení rychlosti (pv) ›
Mód profilovaného rízení momentu (tq) ›
Mód rízení rychlosti (vl) Digitální výstupy °
›
Prepínání módu (Broadcast PDO)
9 - 20
O
Rezervováno
21 - 64
O
Specifikovatelné výrobcem
naznaˇcena vazba mezi spoleˇcn´ymi objekty slovn´ıku zaˇr´ızen´ı a samostatn´ymi objekty kaˇzd´eho ˇr´ızen´eho motoru.
3.5.1
Mapov´an´ı PDO zpr´av
Pro kaˇzdou z osmi os je definov´ano um´ıstˇen´ı objekt˚u pro nastaven´ı mapov´an´ı nˇekolika z´akladn´ıch odes´ılan´ych a pˇrij´ıman´ych PDO zpr´av. Podobnˇe jako je interval index˚u 6000h aˇz 9F F Fh rozdˇelen na osm stejn´ych u´ sek˚u po 800h pro jednotliv´e osy, jsou i intervaly parametr˚u a mapov´an´ı TPDO a RPDO zpr´av rozdˇeleny na osm u´ sek˚u s offsetem2 40h . Napˇr´ıklad mapov´an´ı prvn´ı RPDO (pˇrij´ıman´e) zpr´avy pro osu 0 je ve slovn´ıku na indexu 1400h , mapov´an´ı prvn´ı RPDO zpr´avy osy 1 je na indexu 1440h , osy 2 na indexu 1480h atd. Mapov´an´ı prvn´ıch osmi PDO zpr´av kaˇzd´e osy je ve specifikaci urˇceno. Pouˇzit´ı zpr´avy s cˇ´ıslem 1 je povinn´e, pouˇzit´ı zpr´av s cˇ´ısly 2 aˇz 7 je voliteln´e podle podporovan´ych m´od˚u ˇr´ızen´ı kaˇzd´e osy. Tabulky 3.5 a 3.6 ukazuj´ı urˇcen´e mapov´an´ı RPDO a TPDO zpr´av.
2
Softwarov´y projekt CanFestival, implementuj´ıc´ı protokol CANOpen, zde popsan´y zp˚usob mapov´an´ı PDO
zpr´av neumoˇznˇ uje. Odchylka od standardu je pops´ana v sekci 4.2
3.5. MOTION CONTROL PROFILE
31
Tabulka 3.6: Mapov´an´ı odes´ılan´ych PDO zpr´av podle DS-402
PDO
Jméno mapovaného objektu
M/O Komentár: M (mandatory) povinný O (optional) volitelný ›
6041h
statusword
M
Rídící slovo stavu
2
6041h 6061h
statusword modes_of_operation_display
O
Aktuální mód
3
6041h 6064h
statusword position_actual_value
O
Mód profilovaného rízení pozice (pp)
4
6041h 606Ch
statusword velocity_actual_value
O
Mód profilovaného rízení rychlosti (pv)
5
6041h 6077h
statusword torque_actual_value
O
Mód profilovaného rízení
6
6041h 6044h
statusword vl_control_effort
O
7
6041h 60FDh
statusword digital_inputs
O
›
1
›
›
momentu (tq) ›
3.5.2
Mapování na indexu
›
›
Císlo
Mód rízení rychlosti (vl) Digitální výstupy
8 – 20
O
Rezervováno
21 - 64
O
Specifikovatelné výrobcem
Obecn´e informace o pohonu
Obecn´e informace o vlastnostech pohonn´eho motoru jsou uvedeny na indexech 6402h aˇz 64FFh . Je zde napˇr´ıklad katalogov´e cˇ´ıslo motoru, adresa internetov´e str´anky s katalogov´ym listem, perioda doporuˇcen´ych servisn´ıch prohl´ıdek a z´akladn´ı technick´e u´ daje, jako jmenovit´e a mezn´ı parametry. Podobnˇe jsou na indexech mezi 6500h a 65FFh uvedeny parametry cel´eho pohonu, obsahuje-li napˇr´ıklad pˇrevodovku. Cel´a tato cˇ a´ st obecn´ych informac´ı nen´ı pro v´yrobce povinn´a, pouze doporuˇcen´a.
3.5.3
ˇ ızen´ı stavu pohonu R´
Pohon se m˚uzˇ e nach´azet v r˚uzn´ych stavech. Pro pˇrechody mezi stavy je zde pro kaˇzdou z os 0 aˇz 7 implementov´an stavov´y automat s dev´ıti stavy a sˇestn´acti pˇrechody 3.5.3. Pˇresn´a definice stav˚u a jejich pˇrechod˚u je pomˇernˇe rozs´ahl´a. Uvedena je v [10]. Pˇribl´ızˇ´ım pouze, zˇ e pro skupinu stav˚u je vypnuto nap´ajen´ı v´ykonov´e cˇ a´ sti elektroniky pohonu (Power Disabled). V urˇcit´ych stavech je nap´ajec´ı napˇet´ı v´ykonov´e elektroniky pˇrivedeno (Power Enabled). Pˇrechody mezi stavy jsou ˇr´ızeny bud’to vnitˇrn´ımi ud´alostmi pohonu, nebo ˇr´ıd´ıc´ım slovem (controlword). Vnitˇrn´ı ud´alost je napˇr´ıklad vznik chyby nebo zmˇena parametr˚u pomoc´ı panelu lok´aln´ıho ovl´ad´an´ı, je-li j´ım pohon vybaven. Daleko cˇ astˇeji vˇsak doch´az´ı k pˇrechodu stav˚u ˇr´ıd´ıc´ım slovem (controlword), kter´e je na indexu 6040h a je mapov´ano z pˇr´ıchoz´ı PDO zpr´avy s cˇ´ıslem 1. Podobnˇe zde existuje stavov´e slovo automatu (statusword) na indexu 6041h . Je
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
32
Tabulka 3.7: V´yznamy jednotliv´ych bit˚u ˇr´ıd´ıc´ıho slova
Bit V´yznam
Bit V´yznam
0
Switch On
8
Halt
1
Disable Voltage
9
rezervov´an
2
Quick Stop
10
rezervov´an
3
Enable Operation
11
specifikovateln´y v´yrobcem
4
specifikov´an op. m´odem
12
specifikovateln´y v´yrobcem
5
specifikov´an op. m´odem
13
specifikovateln´y v´yrobcem
6
specifikov´an op. m´odem
14
specifikovateln´y v´yrobcem
7
Reset Fault
15
specifikovateln´y v´yrobcem
Tabulka 3.8: V´yznamy jednotliv´ych bit˚u stavov´eho slova
Bit V´yznam
Bit V´yznam
0
Ready to Switch On
8
specifikovateln´y v´yrobcem
1
Switched On
9
Remote
2
Operation Enabled
10
Target Reached
3
Fault
11
Internal Limit Active
4
Voltage Disabled
12
specifikov´an op. m´odem
5
Quick Stop
13
specifikov´an op. m´odem
6
Switch On Disabled
14
specifikovateln´y v´yrobcem
7
Warning
15
specifikovateln´y v´yrobcem
mapov´ano do odchoz´ı PDO zpr´avy s cˇ´ıslem 1. Stavov´e slovo d´ale obsahuje bity informuj´ıc´ı napˇr´ıklad o dosaˇzen´ı zadan´e c´ılov´e polohy pohonu. V´yznamy bit˚u ˇr´ıd´ıc´ıho slova popisuje tabulka 3.7 a v´yznamy bit˚u stavov´eho slova popisuje tabulka 3.8. Stavov´y diagram struktury shodn´e pro kaˇzdou osu pohonu je na obr´azku 3.11. Pˇrechod do stavu Fault Reaction Active (ˇc.13) probˇehne automaticky z libovoln´eho stavu v okamˇziku, kdy je registrov´ana chybov´a ud´alost. Dalˇs´ı pˇrechod (ˇc.14) do stavu Fault je uskuteˇcnˇen automaticky po proveden´ı nezbytn´ych bezpeˇcnostn´ıch opatˇren´ı. M˚uzˇ e to b´yt napˇr. okamˇzit´e zastaven´ı pohonu, nebo odpojen´ı nap´ajec´ıho napˇet´ı silov´e cˇ a´ sti. Pˇrechody cˇ . 0 a 1 se prov´adˇej´ı automaticky v pr˚ubˇehu inicializace pohonu. Ostatn´ı pˇrechody jsou ˇr´ızeny ˇr´ıd´ıc´ım slovem. Poloˇzkou slovn´ıku modes of operation jsou ˇr´ızeny operaˇcn´ı m´ody. Pohon nem˚uzˇ e pracovat souˇcasnˇe ve v´ıce m´odech a moˇznost pˇrep´ın´an´ı nen´ı striktnˇe urˇcena. Je tedy na uˇzivateli,
3.5. MOTION CONTROL PROFILE
33
›
›
Vnitrní chyba
Výkonová cást vypnuta
13
Fault Reaction Active
Start 0
14
Not Ready to Switch On
Fault
1
15
Switch On Disabled 2
7
Ready to Switch On
›
3
6
10
12
Výkonová cást zapnuta
Switched On 9
8 4
5
Operation Enable
11 16
Quick Stop Active
Poznámka: stavy jsou pojmenovány podle specifikace DSP402.
Obr´azek 3.11: Stavov´y diagram pohonu kaˇzd´e osy na CANOpen s profilem DSP402. Pˇrechod do stavu Fault Reaction Active (ˇc.13) probˇehne automaticky z libovoln´eho stavu v okamˇziku registrace chybov´e ud´alosti.
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
34 zadaný mód modes_of_operation (6060h)
›
Funkce prepínající operacní mód
Velocity Mode
›
Profile Velocity Mode ......
callback na index 6060h
Profile Torque Mode
modes_of_operation_display (6061h) aktuální mód
Obr´azek 3.12: Pˇrep´ın´an´ı operaˇcn´ıch m´od˚u pohonu osy podle DS-402
pokud povol´ı pˇrepnut´ı mezi m´ody napˇr´ıklad pouze pˇri stoj´ıc´ım pohonu nebo pouze pˇri inicializaci. Operaˇcn´ı m´od je moˇzno vzd´alenˇe ovl´adat pomoc´ı poloˇzky slovn´ıku na indexu 6060h (modes of operation) a cˇ´ıst na indexu 6061h (modes of operation display). Situaci blokovˇe zobrazuje obr´azek 3.12.
3.5.4
Pˇrevod fyzik´aln´ıch jednotek
C´ılovou polohu, rychlost, moment a jejich omezuj´ıc´ı parametry lze zad´avat ve velk´em ˇ ıd´ıc´ı funkce pohonu zpravidla pracuj´ı v nˇejak´ych intern´ıch mnoˇzstv´ı fyzik´aln´ıch jednotek. R´ celoˇc´ıseln´ych jednotk´ach, jako jsou napˇr´ıklad inkrementy sn´ımaˇce polohy. Mezi tˇemito dvˇema skupinami veliˇcin je pro kaˇzdou osu pohonu moˇzno definovat pˇrepoˇc´ıt´avac´ı faktory. Na indexech v rozsahu 607Eh aˇz 6097h je moˇzn´e definovat rozliˇsen´ı sn´ımaˇce polohy a rychlosti, pˇrevodov´y pomˇer, konstantu pˇrevodu rotaˇcn´ıho pohybu na posuvn´y, znam´enko smˇeru a dalˇs´ı. Pro veliˇciny polohy, rychlosti a zrychlen´ı jsou definov´any tzv. indexy veliˇciny (notation index) a indexy rozmˇeru t´eto veliˇciny (dimension index). Pozici je tak moˇzno zad´avat napˇr´ıklad v d´elkov´ych nebo u´ hlov´ych jednotk´ach (volbou indexu veliˇciny) a v rozsaz´ıch napˇr. pro d´elku od mikrometru aˇz po kilometr (volbou indexu rozmˇeru). Podrobn´ymi definicemi se zab´yv´a specifikace profilu [10]. Obr´azek 3.13 ukazuje zp˚usob pˇrevodu fyzik´aln´ıch veliˇcin.
3.5. MOTION CONTROL PROFILE
35
›
zádaná hodnota
›
›
›
°
›
výber parametru pro prepocítávací konstantu podle fyzikální veliciny fyzikální jednotka
feed constant (6092h) gear ratio (6091h)
hodnota*konstanta
normalizovaný vstup*
›
velocity_enocder_resolution (6090h) position_encoder_resolution (608F)
prevodní konstanta
zpracování
normalizovaný výstup*
position notation_index velocity dimension_index acceleration
}
hodnota/konstanta fyzikální jednotka ›
›
›
›
* nekteré indexy obsahují promenné ve vnitrních jednotkách (oznaceny *)
aktuální hodnota
Obr´azek 3.13: Pˇrevod mezi s´ıt’ov´ymi a vnitˇrn´ımi fyzik´aln´ımi jednotkami podle DSP402
position_demand_value* (60FCh) [inc] ›
Zpetnovazební smycka rízení pozice ›
›
position_actual_value* (6063h) [inc]
control_effort (60FAh)
position_control_parameter_set (60FCh)
Obr´azek 3.14: Blok zpˇetnovazebn´ı smyˇcky ˇr´ızen´ı pozice
3.5.5
Zpˇetnovazebn´ı smyˇcka rˇ´ızen´ı pozice
K ˇr´ızen´ı pozice polohovac´ıho pohonu je v t´eto sekci slovn´ıku zaˇr´ızen´ı k dispozici nˇekolik parametr˚u definuj´ıc´ıch funkci zpˇetnovazebn´ıho regul´atoru (Motion Control Function). Vstupy jsou poˇzadovan´a pozice a aktu´aln´ı pozice, obˇe v intern´ıch jednotk´ach. V´ystupem je pak akˇcn´ı z´asah, neboli v´ykon vstupuj´ıc´ı do pohonn´eho motoru. Jedin´ym povinn´ym parametrem je promˇenn´a nesouc´ı hodnotu aktu´aln´ı pozice. Ostatn´ı parametry jsou voliteln´e. Tato regulaˇcn´ı smyˇcka je spoleˇcn´a pro vˇsechny operaˇcn´ı m´ody, vyjma m´odu ˇr´ızen´ı rychlosti (Velocity mode), kde je aplikov´ano pˇr´ımovazebn´ı . Obr´azek 3.14 ukazuje vstupn´ı a v´ystupn´ı promˇenn´e bloku pro zpˇetnovazebn´ı ˇr´ızen´ı pozice.
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
36
Parametry regulátoru
Generátor trajektorie
Zpetnovazební smycka rízení pozice
›
Parametry generátoru trajektorie
›
position_actual_value (6063h)
zádaná cílová pozice
›
position_demand_value (60F2h)
›
target_position (607Ah)
control_effort (60FAh)
energie vstupující do motoru
Obr´azek 3.15: Blokov´e sch´ema m´odu profilovan´eho ˇr´ızen´ı pozice
3.5.6
Operaˇcn´ı m´ody
3.5.6.1
M´od profilovan´eho rˇ´ızen´ı pozice
V tomto m´odu se pˇredpokl´ad´a naj´ızˇ dˇen´ı pohonu na c´ılovou pozici. Profil rychlosti je pˇritom d´an poˇca´ teˇcn´ım pr˚ubˇehem zrychlov´an´ı, pot´e j´ızdou konstantn´ı rychlost´ı a podobn´ym zp˚usobem zpomalov´an´ı k c´ılov´e pozici. Povinnˇe mus´ı b´yt uvedeny pro tento m´od c´ılov´a pozice (target position), pˇrejezdov´a rychlost (profile velocity), zrychlen´ı na zaˇca´ tku a zpomalen´ı na konci pohybu (profile acceleration, profile deceleration) a profil zrychlen´ı (motion profile type). Obr´azek 3.15 ukazuje, jak zˇ a´ dan´a poloha p˚usob´ı na energii vstupuj´ıc´ı do motoru. M´od profilovan´eho ˇr´ızen´ı pozice umoˇznˇ uje bud’to zad´avat c´ılov´e body jednotlivˇe aˇz po dosaˇzen´ı pˇredchoz´ıho c´ılov´eho bodu (single setpoint), nebo zad´avat skupinu c´ılov´ych bod˚u (set of setpoints). V druh´em pˇr´ıpadˇe se pohon okamˇzitˇe po dosaˇzen´ı jednoho bodu rozj´ızˇ d´ı ˇ k nov´emu c´ılov´emu bodu aniˇz by zastavoval. Casov´ e pr˚ubˇehy rychlosti pro oba zm´ınˇen´e pˇr´ıpady jsou na obr´azc´ıch 3.16 a 3.17.
Samostatné cílové body (Single setpoints)
rychlost ›
Dosazen druhý cílový bod
..........................
..........................
›
v2
Dosazen první cílový bod
v1
t1
t2
t3
›
t0
cas
Obr´azek 3.16: Rychlostn´ı profil pohybu pˇri zad´av´an´ı samostatn´ych c´ılov´ych bod˚u
3.5. MOTION CONTROL PROFILE °
rychlost
37
Skupina cílových bodu (Set of setpoints) ›
t1
t2
Dosazen první cílový bod
v1
t0
›
..........................
›
..........................
Dosazen druhý cílový bod
v2
cas
Obr´azek 3.17: Rychlostn´ı profil pohybu pˇri zad´av´an´ı skupiny c´ılov´ych bod˚u
3.5.6.2
M´od hled´an´ı referenˇcn´ı pozice
V tomto m´odu polohovac´ı zaˇr´ızen´ı hled´a svoji referenˇcn´ı pozici (home position). Existuje zde mnoho funkc´ı pro hled´an´ı referenˇcn´ıho sp´ınaˇce v pracovn´ı dr´aze pohonu nebo na jej´ıch kraj´ıch. K hled´an´ı referenˇcn´ı pozice je tak´e moˇzno vyuˇz´ıt koncov´e sp´ınaˇce dr´ahy, pokud jsou pˇr´ıtomny, a definovat referenci kdekoliv mezi nimi. Pˇreddefinovan´ych metod hled´an´ı referenˇcn´ıho bodu je 35, ale uˇzivatel nebo v´yrobce m´a sˇirokou moˇznost definovat si dalˇs´ı metody s´am. Povinn´ymi vstupn´ımi parametry tohoto m´odu je volba metody pomoc´ı jej´ıho k´odu (homing method) a skupina pˇredepsan´ych rychlost´ı pro hled´an´ı referenˇcn´ı pozice (homing speeds).
3.5.6.3
M´od interpolovan´eho rˇ´ızen´ı pozice
Tento m´od je urˇcen pro ˇr´ızen´ı v´ıce koordinovan´ych os nebo pro osy s potˇrebou cˇ asov´e interpolace mezi skupinou bod˚u. Pro v´ıce os je zde nutnost jejich cˇ asov´e synchronizace, napˇr´ıklad pomoc´ı synchronizaˇcn´ıch objekt˚u (SYNC). Pro pouˇzit´ı interpolovan´e pozice nen´ı povinnˇe definov´an zˇ a´ dn´y parametr. Volitelnˇe lze zadat napˇr´ıklad volbu v´ıce implementovan´ych interpolaˇcn´ıch algoritm˚u (interpolation submode select) a k tˇemto algoritm˚um potˇrebn´a vstupn´ı data, jako napˇr´ıklad koeficienty interpolaˇcn´ıho polynomu. Tento strukturovan´y parametr se naz´yv´a interpolation data record. D´ale je moˇzno definovat periodu a vlastnosti synchronizace v´ıce os (interpolation time period). Prostorovou a cˇ asovou interpolaci popisuje obr´azek 3.18. ˇ Vstupn´ımi daty pro interpol´ator jsou zadan´e interpolaˇcn´ı body. Casov´ e rozmez´ı, ve kter´em jsou tyto body k dispozici je d´ano periodou synchronizace os. Pro kaˇzd´y okamˇzik vzorkov´an´ı regulaˇcn´ı smyˇcky se s vyuˇzit´ım parametr˚u interpol´atoru internˇe vypoˇc´ıtaj´ı pomocn´e z´achytn´e ´ cel interpolace je je tedy zajistit dostateˇcnˇe plynul´y pohyb pˇri pˇrejezdech pohonu mezi body. Uˇ interpolaˇcn´ımi body. V pˇr´ıpadˇe prostorov´e interpolace v´ıce os je cˇ asov´a interpolace prov´adˇena
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
38
›
›
›
Interpolace v rovine (dve navzájem kolmé osy X a Y)
Casová interpolace jedné osy
›
›
Y
tecná rychlost
Zadané interpolacní body
Pi = (xi, yi,ti) Pi+1 = (xi+1, yi+1,ti+1)
›
Pozice ›
Vypocítané pomocné body
Zadané interpolacní body
°
›
›
s(x,y)
›
Vzorkovací perioda regulacní smycky pozice
Vzdálenost interpolacních bodu
Pi+2
Pi+3
Pi+1 Pi Pi-1 Perioda synchronizace os tsync
›
X
ti-1
ti
ti+1
ti+2
ti+3
cas
Obr´azek 3.18: Prostorov´a a cˇ asov´a interpolace pohybu v m´odu interpolovan´eho ˇr´ızen´ı pohybu
na kaˇzd´e t´eto ose. 3.5.6.4
M´od profilovan´eho rˇ´ızen´ı rychlosti
Zde je podobnˇe jako u profilovan´eho ˇr´ızen´ı pozice ˇr´ızena rychlost na poˇzadovanou zadanou hodnotu. Vstupn´ı hodnotu rychlosti je c´ılov´a rychlost (target velocity). Aktu´aln´ı hodnota rychlosti je k dispozici v promˇenn´e (velocity actual value) a m˚uzˇ e b´yt z´ısk´ana ze senzoru aktu´aln´ı rychlosti nebo derivac´ı aktu´aln´ı polohy ze senzoru polohy. Do ˇr´ızen´ı rychlosti zasahuj´ı omezen´ı jako maxim´aln´ı zrychlen´ı nebo maxim´aln´ı dosaˇziteln´a rychlost. S podobn´ym v´yznamem jako maxim´aln´ı sledovac´ı chyba pˇri ˇr´ızen´ı pozice zde figuruje parametr ud´avaj´ıc´ı maxim´aln´ı rychlostn´ı skluz (max slippage), tedy dovolen´y rozd´ıl aktu´aln´ı a zˇ a´ dan´e rychlosti. 3.5.6.5
M´od profilovan´eho rˇ´ızen´ı momentu
Interpolovan´e ˇr´ızen´ı momentu je svoj´ı podstatou podobn´e interpolovan´emu ˇr´ızen´ı pozice nebo rychlosti. I zde je vstupn´ı promˇennou zˇ a´ dan´y krout´ıc´ı moment (target torque) a aktu´aln´ı hodnota momentu je uloˇzena v promˇenn´e (torque actual value). N´azvy vˇsech promˇenn´ych vych´azej´ı z toho, zˇ e pohonnou jednotkou je rotaˇcn´ı motor. Napˇr´ıklad u line´arn´ıch motor˚u je krout´ıc´ımu momentu ekvivalentn´ı p˚usob´ıc´ı s´ıla, kter´a je ovˇsem ve slovn´ıku zaˇr´ızen´ı uloˇzena st´ale pod n´azvem krout´ıc´ıho momentu. Dalˇs´ımi zadan´ymi parametry je napˇr´ıklad profil zmˇeny momentu (torque profile type), maxim´aln´ı moment (max torque) nebo jemu odpov´ıdaj´ıc´ı maxim´aln´ı proud motorem (max current).
3.5. MOTION CONTROL PROFILE 3.5.6.6
39
M´od rˇ´ızen´ı rychlosti
Tento m´od je urˇcen pˇredevˇs´ım pro ˇr´ızen´ı rychlosti pohon˚u s elektronick´ym stˇr´ıdaˇcem. Pouze pr´avˇe zde se nepˇredpokl´ad´a zˇ a´ dn´a polohov´a ani rychlostn´ı zpˇetn´a vazba. Informaci o aktu´aln´ı rychlosti m˚uzˇ e poskytovat napˇr´ıklad frekvenˇcn´ı mˇeniˇc, ale nejedn´a se o mˇeˇren´ı pˇr´ımo na hˇr´ıdeli motoru. Blokov´e sch´ema jak´esi minim´aln´ı konfigurace je na obr´azku 3.19. Pˇredpokl´ad´a se, zˇ e eventu´aln´ı regulaˇcn´ı smyˇcka je vedena a poˇc´ıt´ana pˇr´ımo v mˇeniˇci motoru. ›
Menic (Strídac) ›
vl_velocity_min_max_amount (6046) velocity_min_amount rpm, 4 bytes, rw velocity_max_amount rpm, 4 bytes, rw
Rampy vl_velocity_acceleration (6048) delta_speed -, 4 bytes, rw delta_time sec, 2 bytes, rw
›
vl_target_velocity (6042) rpm, 2 bytes, rw
Omezení
›
Reference
Motor
vl_velocity_demand (6043) rpm, 2 bytes, r
3
›
›
vl_velocity_deceleration (6049) delta_speed -, 4 bytes, rw delta_time sec, 2 bytes, rw
Menic vl_control_effort (6044) rpm, 2 bytes, r
Obr´azek 3.19: Blokov´e sch´ema vyuˇzit´ı m´odu ˇr´ızen´ı rychlosti
M 3~
40
ˇ KAPITOLA 3. KOMUNIKACE PO SBERNICI CAN
Kapitola 4 Implementace rˇ´ızen´ı pohonu˚ prostˇrednictv´ım CANOpen V t´eto kapitole jsou pops´any existuj´ıc´ı softwarov´e projekty a n´astroje, pouˇzit´e d´ale pˇri implementaci profilu pro ˇr´ızen´ı pohon˚u protokolu CANOpen. V dalˇs´ıch sekc´ıch jsou pˇredstaveny uk´azkov´e aplikace vyuˇz´ıvaj´ıc´ı Motion Control Profile. Je zde pops´an zp˚usob ovl´ad´an´ı a uveden´ı do provozu.
4.1
PXMC
PXMC (Pikron eXtensible Motion Control) je univerz´aln´ı softwarov´a knihovna pro ˇr´ızen´ı motor˚u. Je vyvinut´a firmou PiKRON spol. s r.o. [5] a hlavn´ı z´asluhu na ni nese Ing. Pavel P´ısˇa, kter´y tak´e p˚usob´ı na Katedˇre ˇr´ıdic´ı techniky. Tato knihovna umoˇznˇ uje velice propracovan´ym zp˚usobem ˇr´ızen´ı mnoha r˚uzn´ych typ˚u motor˚u, pomoc´ı r˚uzn´ych typ˚u ˇr´ıd´ıc´ıch desek osazen´ych r˚uzn´ymi mikrokontrol´ery. Hlavn´ı pˇrednost je v rozdˇelen´ı zdrojov´ych k´od˚u na cˇ a´ st z´avislou na pouˇzit´e architektuˇre kontrol´eru, na cˇ a´ st z´avislou na typu ˇr´ıd´ıc´ı desky a na cˇ a´ st hardwarovˇe i platformˇe nez´avislou, viz obr´azek 4.1. Podle pouˇzit´e architektury lze definovat napˇr´ıklad makra pro jednotliv´e registry, vyuˇz´ıt specifika pˇreruˇsovac´ıho syst´emu, nebo definovat speci´aln´ı funkce ovladaˇcu˚ pro libovoln´e I/O rozhran´ı apd. Na OS Linux lze knihovnu PXMC v souˇcasn´e dobˇe provozovat pouze jako simul´ator. Platformˇe nez´avisl´ym k´odem je pak napˇr´ıklad implementace datov´ych struktur a parametr˚u. Nepochybnˇe sem patˇr´ı i funkce implementovan´eho PID regul´atoru, gener´atoru trajektorie a ostatn´ıch logick´ych funkc´ı. 41
´ ˇ ´ CANOPEN 42KAPITOLA 4. IMPLEMENTACE Rˇ IZEN I´ POHONU˚ PROSTREDNICTV IM
Obr´azek 4.1: Grafick´e zn´azornˇen´ı modularity PXMC knihovny
Znaˇcn´a modularita a univerz´alnost je jeˇstˇe pos´ılena pouˇzit´ym kroskompilaˇcn´ım syst´emem OMK (Ocera Make System) [4], kter´y je produktem Katedry ˇr´ıdic´ı techniky. Pˇreklad zdrojov´ych k´od˚u pro c´ılovou desku a procesor je pak moˇzn´e nastavovat pouze zmˇenou nˇekolika glob´aln´ıch promˇenn´ych make-syst´emu a vytvoˇren´ım r˚uzn´ych kompilaˇcn´ıch strom˚u. Tyto kompilaˇcn´ı stromy jsou vytvoˇreny pomoc´ı symbolick´ych odkaz˚u na adres´aˇre se zdrojov´ymi k´ody projektu. Pomˇernˇe rozs´ahl´y popis funkce knihovny PXMC je v [21]. J´a se zde omez´ım pouze na pˇribl´ızˇ en´ı obsahu glob´aln´ı datov´e struktury pxmc main list, ve kter´e jsou uloˇzena stavov´a slova a veˇsker´e procesn´ı parametry vˇsech os ˇr´ızen´ych z jednoho programu. Pˇr´ıklad zdrojov´eho k´odu datov´e struktury definovan´e pro tˇri osy mcs axle0 aˇz mcs axle2. pxmc_state_t *pxmc_main_arr[] = {&mcs_axle0, &mcs_axle1, &mcs_axle2}; pxmc_state_list_t pxmc_main_list = { pxml_arr:pxmc_main_arr, pxml_cnt:sizeof(pxmc_main_arr) / sizeof(pxmc_main_arr[0]) };
Pole pxmc main arr[] obsahuje tolik instanc´ı datov´e struktury pxmc state t, kolik os je ˇr´ızeno. Kaˇzd´a z os, zde oznaˇcen´ych jako mcs axleX, nese vlastn´ı stavov´e, konfiguraˇcn´ı a chybov´e slovo. Samostatn´e jsou i promˇenn´e jako aktu´aln´ı pozice, aktu´aln´ı rychlost, konstanty PID regul´atoru, promˇenn´e tˇr´ıf´azov´eho gener´atoru pro BLDC motory, ukazatele na nˇekter´e funkce knihovny PXMC a mnoho dalˇs´ıch. Promˇenn´a pxmc main list pak obsahuje ukazatel na pole dat vˇsech os pxml arr a poˇcet tˇechto os pxml cnt.
4.2. CANFESTIVAL
43
Vlastn´ı ˇr´ızen´ı pohybu motoru se prov´ad´ı pomoc´ı vol´an´ı funkc´ı knihovny. Napˇr´ıklad pohyb na zadanou c´ılovou pozici se prov´ad´ı funkc´ı pxmc go, jej´ızˇ parametry jsou c´ılov´a pozice ve vnitˇrn´ıch jednotk´ach, osa na kter´e se m´a pohyb prov´est a v´ybˇer zad´an´ı v relativn´ıch nebo absolutn´ıch parametrech c´ılov´e pozice. Funkce pˇri rozjezdu motoru nastav´ı pˇr´ısluˇsn´e bity stavov´eho slova informuj´ıc´ı o prov´adˇen´em pohybu. Po dosaˇzen´ı c´ıle tyto stavov´e bity vrac´ı do p˚uvodn´ıch hodnot. Podobn´ymi funkcemi lze ˇr´ıdit rychlost a moment motoru. Uved’me zde nˇekter´e promˇenn´e ze struktury pxmc state t, napˇr. ke kter´ym se v implementaci pˇristupuje pˇri cˇ ten´ı nebo z´apisu slovn´ıku zaˇr´ızen´ı. Uveden´e parametry jsou vstupn´ımi veliˇcinami zpˇetnovazebn´ıho PID regul´atoru. pxms flg – stavov´e slovo pohonu. pxms ap – aktu´aln´ı pozice ve vnitˇrn´ıch jednotk´ach. pxms as – aktu´aln´ı rychlost ve vnitˇrn´ıch jednotk´ach za vzorkovac´ı periodu sn´ımaˇce polohy. pxms rp – zˇ a´ dan´a c´ılov´a pozice ve vnitˇrn´ıch jednotk´ach. pxms rs – zˇ a´ dan´a rychlost pohybu. pxms md – maxim´aln´ı dovolen´a sledovac´ı odchylka. pxms ms – maxim´aln´ı dovolen´a rychlost, parametr regul´atoru. pxms ma – maxim´aln´ı dovolen´e zrychlen´ı, parametr regul´atoru. pxms p – proporcion´aln´ı konstanta PID regul´atoru. pxms i – integraˇcn´ı konstanta PID regul´atoru. pxms d – derivaˇcn´ı konstanta PID regul´atoru.
4.2
CanFestival
CanFestival je otevˇren´y softwarov´y projekt, kter´y implementuje specifikaci CANOpen. Pod licenc´ı GPL d´av´a k dispozici programov´y bal´ık pro komunikaci v´ıce aplikac´ı prostˇrednictv´ım standardu DS-301 i mnoha rozˇsiˇruj´ıc´ıch profil˚u DS-4XX. CanFestival je ps´an v jazyce ANSI C a podobnˇe jako PXMC je rozdˇelen na cˇ a´ st z´avislou na pouˇzit´em rozhran´ı CAN sbˇernice, z´avislou na c´ılov´e platformˇe a na nez´avislou cˇ a´ st.
´ ˇ ´ CANOPEN 44KAPITOLA 4. IMPLEMENTACE Rˇ IZEN I´ POHONU˚ PROSTREDNICTV IM Zdrojov´e k´ody projektu, tak jak je lze st´ahnout z reposit´aˇre projektu, jsou rozdˇeleny do n´asleduj´ıc´ıch adres´aˇru˚ podle v´yznamu. • ./doc – dokumentace k projektu ve form´atu *.pdf vˇcetnˇe zdrojov´ych k´od˚u programu LaTeX, dokumentace form´atu HTML generovan´a programem Doxygen. • ./drivers – zdrojov´e k´ody ovladaˇcu˚ pro platformy unix, unix real-time (Xenomai), win32, mikrokontrol´er HCS12. D´ale jsou zde ovladaˇce r˚uzn´ych CAN rozhran´ı jako LinCan, SocketCan, Peak Can (I/O karta) nebo virtu´aln´ı rozhran´ı pomoc´ı soket˚u. • ./examples – pˇr´ıklady nˇekolika CANOpen aplikac´ı. • ./include – hlaviˇckov´e soubory ovladaˇcu˚ . • ./objdictgen – grafick´a aplikace pro interaktivn´ı generov´an´ı a editov´an´ı slovn´ıku zaˇr´ızen´ı. Jsou zde definov´any konfiguraˇcn´ı soubory pro r˚uzn´e profily zaˇr´ızen´ı podle norem DS-4XX. • ./src – zdrojov´e k´ody implementuj´ıc´ı funkcionalitu podle DS-301, jako manipulaci s objekty PDO, SDO, SYNC, NMT, EMCY atd. Pozn´amka: Bˇehem pr´ace s CanFestivalem jsem rozˇs´ıˇril adres´aˇre ./drivers a ./include o podadres´aˇr ./h8s s podporou pro mikrokontrol´er H8S a adres´aˇr ./objdictgen/config o soubor konfiguruj´ıc´ı editor slovn´ıku zaˇr´ızen´ı podle n´avrhu normy DSP-402 (Motion Control Profile). Ovladaˇc pro mikroprocesor H8S/2638 a CanFestival je prac´ı Stanislava Marka, kterou zdokumentoval ve sv´e diplomov´e pr´aci [17]. S m´ırn´ymi u´ pravami jsem tento ovladaˇc pˇrenesl do aktu´aln´ı verze CanFestivalu a pouˇzil ve sv´e pr´aci.
2
Blokovou strukturu aplikace naznaˇcuje obr´azek 4.2, kter´y jsem pˇrevzal z dokumentace ke CanFestivalu [22]. Blok CAN Interface pˇredstavuje rozhran´ı sbˇernice CAN a je d´ano pouˇzit´ym hardwarem (ovladaˇce jsou v adres´aˇri ./drivers). V pˇr´ıpadˇe nasazen´ı na mikrokontrol´eru tento blok pˇredstavuje pˇr´ımo registry. Blok Target interface obsahuje funkce pro pˇr´ıstup k cˇ asovaˇcu˚ m operaˇcn´ıho syst´emu a dalˇs´ım funkc´ım j´adra OS. Knihovna CanFestival library obsahuje funkce pro pr´aci s objekty CANOpen jako jsou PDO, SDO a NMT zpr´avy. V bloku Aplication uˇzivatel specifikuje vlastn´ı aplikaci a definuje callback funkce pro pˇr´ıstup ke slovn´ıku zaˇr´ızen´ı vygenerovan´em aplikac´ı Objdictedit.
4.2. CANFESTIVAL
45
Obr´azek 4.2: Blokov´e sch´ema aplikace a jej´ıch programov´ych jednotek CanFestivalu
4.2.1
Vytvoˇren´ı slovn´ıku zaˇr´ızen´ı
Jak je uk´az´ano na obr´azku 4.2, k sestaven´ı uˇzivatelsk´e aplikace je nutn´e vytvoˇrit slovn´ık zaˇr´ızen´ı. Ten m´a kaˇzd´a aplikace vlastn´ı a jeho obsah je specifick´y podle u´ kolu a budouc´ı funkce aplikace. K vytvoˇren´ı slovn´ıku je v projektu k dispozici grafick´a aplikace Objdictedit, napsan´a v jazyce Python. Pomoc´ı n´ı lze interaktivnˇe sestavovat promˇenn´e slovn´ıku a definovat jejich poˇca´ teˇcn´ı hodnoty. V´ystupem jsou vygenerovan´y zdrojov´y soubor .c a hlaviˇckov´y soubor .h, kter´e deklaruj´ı a definuj´ı poloˇzky slovn´ıku zaˇr´ızen´ı jako promˇenn´e v prostˇred´ı jazyka C a kter´e se pˇrekl´adaj´ı spolu s v´yslednou aplikac´ı. Konfigurace programu Objdictedit pro r˚uzn´e profily zaˇr´ızen´ı se prov´ad´ı pomoc´ı souboru *.prf v adres´aˇri ./objdictgen/config. Pro profil ˇr´ızen´ı pohon˚u zde konfiguraˇcn´ı soubor nebyl, musel jsem ho vytvoˇrit. Struktura tˇechto konfiguraˇcn´ıch soubor˚u ovˇsem v dovolovala vytvoˇren´ı konfigurace pouze pro ˇr´ızen´ı jedn´e osy. Studiem zdrojov´eho k´odu jsem naˇsel definovan´e, ale t´emˇeˇr nikde nepouˇzit´e promˇenn´e plurivar, plurirec a pluriarray, kter´e pouˇzit´ı v´ıce os s urˇcit´ym omezen´ım dovol´ı. Bez dokumentace jsem musel zdlouhavˇe testovat, zda je pouˇzit´ı zm´ınˇen´ych promˇenn´ych moˇzn´e v zam´ysˇlen´em rozsahu. V konfiguraˇcn´ım souboru je pops´ana kaˇzd´a poloˇzka (index a subindexy) pomoc´ı skupiny parametr˚u. Jejich v´yznam nen´ı pops´an v zˇ a´ dn´e dokumentaci, proto se ho pokus´ım nast´ınit. Na poloˇzku se pak v programu odkazuje pomoc´ı jej´ıho indexu. Strukturu jedn´e poloˇzky v souboru
´ ˇ ´ CANOPEN 46KAPITOLA 4. IMPLEMENTACE Rˇ IZEN I´ POHONU˚ PROSTREDNICTV IM *.prf ukazuje n´asleduj´ıc´ı pˇr´ıklad: 0x6000 : {"poloˇ zka1" : "parametr1", "poloˇ zka2" : "parametr2", "values" : [{"poloˇ zka01" : "parametr01", "poloˇ zka02" : "parametr02"}, {"poloˇ zka11" : "parametr11", "poloˇ zka12" : "parametr12"}]},
Tento pˇr´ıklad ukazuje konfiguraci pro index 6000h . V uvozovk´ach jsou uvedena jm´ena poloˇzek popisuj´ıc´ı pˇr´ısluˇsn´y index poloˇ zka1, poloˇ zka2, atd. a jejich parametry parametr1, parametr2, atd. Subindex s cˇ´ıslem 0 je pak pops´an na dalˇs´ım ˇra´ dku pomoc´ı poloˇ zka01, poloˇ zka02, atd. a k nim pˇr´ısluˇsn´ych parametr˚u parametr01, parametr02, atd. Podobnˇe je pops´an subindex 1 poloˇzkami a parametry oznaˇcen´ymi ”11, 12, atd.”. V´yznam nejpouˇz´ıvanˇejˇs´ıch parametr˚u je shrnut v n´asleduj´ıc´ım seznamu. "name" – jm´eno poloˇzky indexu nebo subindexu, parametrem je ˇretˇezec znak˚u. "struct" – znaˇc´ı typ promˇenn´e na indexu, parametry jsou: • var – promˇenn´a jednoduch´eho typu, obsahuje pouze subindex 0, na kter´em je uloˇzena vlastn´ı hodnota, • rec – strukturovan´y typ s dynamick´ym poˇctem poloˇzek stejn´eho typu1 , na subindexu 0 je poˇcet poloˇzek a na dalˇs´ıch subindexech jsou jednotliv´e promˇenn´e, • array – strukturovan´y typ s pevn´ym poˇctem poloˇzek r˚uzn´eho jednoduch´eho typu, opˇet na subindexu 0 je poˇcet poloˇzek a na dalˇs´ıch jsou jednotliv´e promˇenn´e, • plurivar, plurirec, pluriarray – promˇenn´e typ˚u var, rec a array ovˇsem s moˇznost´ı definov´an´ı v´ıce index˚u jednoho konkr´etn´ıho typu. Toto je vyuˇzito u konfigurace pro v´ıceos´e zaˇr´ızen´ı, kde je shodn´a struktura indexu prvn´ı osy (napˇr. 6040h controlword), ale i dalˇs´ıch os (6840h , 7040h , ..). "incr" – inkrement, se kter´ym jsou do slovn´ıku pˇrid´av´any indexy pro v´ıce os, v souboru DSP402-pxmc.prf je pouˇzita hodnota 800h , coˇz je offset mezi stejn´ymi indexy jednotliv´ych os. "nbmax" – maxim´aln´ı moˇzn´y poˇcet index˚u stejn´e struktury, pouˇzita hodnota 8 – max. poˇcet os ve slovn´ıku zaˇr´ızen´ı. 1
V t´eto definici se zdrojov´e k´ody programu Objdictedit odchyluj´ı od standardn´ıho ch´ap´an´ı pojm˚u rec a
array.
4.2. CANFESTIVAL
47
"callback" – dovoluje cˇ i zakazuje registraci callback2 funkce k pˇr´ısluˇsn´emu indexu, parametry jsou True/False. "need" – ud´av´a, zda je pˇr´ıtomnost indexu ve slovn´ıku povinn´a nebo voliteln´a, parametry jsou True/False. "values" – parametrem je strukturovan´a definice subindex˚u, viz pˇr´ıklad v´ysˇe. "type " – ud´av´a typ promˇenn´e na subindexu, parametry jsou k´ody v rozsahu 0h aˇz 25Fh , jejichˇz definice je uvedena ve specifikaci DS-301 [12]. "acces" – povoluje pˇr´ıstup k promˇenn´e, parametry jsou ’ro’=read only, ’wo’=write only, ’rw’=read/write. "default" – nastavuje poˇca´ teˇcn´ı hodnotu promˇenn´e. "pdo" – povoluje mapov´an´ı do PDO zpr´av, parametry jsou True/False. Konfiguraˇcn´ı soubor obsahuje jeˇstˇe poloˇzku se jm´enem AddMenuEntries, pomoc´ı kter´e se d´a editovat do z´aloˇzky Add na n´astrojov´e liˇstˇe aplikace Objdictedit libovoln´a poloˇzka. Na kliknut´ı se pˇridaj´ı pˇredem definovan´e skupiny index˚u ze souboru *.prf. N´asleduj´ıc´ı pˇr´ıklad ukazuje syntaxi, jak ji lze uv´est do konfiguraˇcn´ıho souboru. AddMenuEntries = [("Poloˇ zka1",[0x6000, 0x6001, 0x6002]), zka2",[0x6100, 0x6101, 0x6102, 0x6103, 0x6104])] ("Poloˇ
Tenoto pˇr´ıklad pˇrid´av´a do menu Add dvˇe poloˇzky s n´azvy Poloˇ zka1 a Poloˇ zka2. Pˇri kliknut´ı na Poloˇzku1 se pˇridaj´ı do slovn´ıku indexy 6000h aˇz 6002h . Pˇri opˇetovn´em kliknut´ı se do slovn´ıku pˇridaj´ı indexy dalˇs´ı, tentokr´at v rozsahu 6800h aˇz 6802h , ale jenom pokud jsou indexy 6000h aˇz 6002h definov´any typu plurivar, pluriarray nebo plurirec s parametrem "incr":0x800. Pro poloˇzku2 to plat´ı podobnˇe. T´ımto zp˚usobem je doc´ıleno pˇrid´av´an´ı index˚u slovn´ıku zaˇr´ızen´ı dalˇs´ıch ˇr´ızen´ych os aˇz do poˇctu 8. Indexy jsou uvedeny pouze jako pˇr´ıklad, tyto uveden´e nemus´ı b´yt v˚ubec normou definov´any. Pozn´amka: Soubor DSP402-pxmc.prf neobsahuje vˇsechny indexy definovan´e n´avrhem normy DSP-402, ale jenom ty, kter´e jsou pouˇzity pˇri ˇr´ızen´ı pomoc´ı knihovny PXMC. D˚uvod je ten, zˇ e se pˇri pˇrid´an´ı osy do slovn´ıku pomoc´ı Add→Axle in PXMC pˇridaj´ı vˇsechny indexy definovan´e v poloˇzce souboru AddMenuEntries a vˇetˇsina index˚u by pak v programu nebyla 2
Callback je souhrnn´y n´azev pro funkce volan´e po z´apisu hodnoty na urˇcit´y index slovn´ıku za. K vˇetˇsinˇe
index˚u ve slovn´ıku lze registrovat nˇejakou callback funkci.
´ ˇ ´ CANOPEN 48KAPITOLA 4. IMPLEMENTACE Rˇ IZEN I´ POHONU˚ PROSTREDNICTV IM
Obr´azek 4.3: Vytvoˇren´ı nov´eho slovn´ıku zaˇr´ızen´ı v programu Objdictedit
vyuˇzita. S ohledem na pouˇzit´ı v mikrokontrol´erech se tak sˇetˇr´ı pamˇet’ov´y prostor. Pokud by nˇekdo potˇreboval urˇcit´y index do slovn´ıku pro pr´aci se zmiˇnovan´ym profilem pˇridat, m˚uzˇ e jej pˇripsat do konfiguraˇcn´ıho souboru podle v´ysˇe zm´ınˇen´eho n´avodu. V adres´aˇri ./objdictgen/config je jeˇstˇe soubor DSP-402.prf, ve kter´em jsem definoval vˇsechny indexy podle DSP-402. Struktura tohoto konfiguraˇcn´ıho souboru se ovˇsem drˇz´ı filosofie CanFestivalu a nen´ı zde moˇzn´e definovat v´ıce os.
2
Ukaˇzme si jeˇstˇe postup, jak´ym lze vytvoˇrit slovn´ık zaˇr´ızen´ı pro PXMC, napˇr´ıklad se tˇremi osami. Popis funkc´ı programu Objdictedit je v [22], j´a ze detailnˇeji pop´ısˇi pouze kroky specifick´e pro pr´aci s konfigurac´ı pomoc´ı souboru DSP402-pxmc.prf. 1. Vytvoˇr´ıme slovn´ık nov´eho uzlu. Nastav´ıme jeho u´ lohu v s´ıti jako NMT Master nebo NMT Slave. Zad´ame jm´eno, podle kter´eho se budeme na vygenerovan´y slovn´ık odkazovat ze zdrojov´eho k´odu aplikace. Vybereme profil DSP402-pxmc. Lze nastavit jeˇstˇe dalˇs´ı parametry jako generov´an´ı SYNC zpr´av nebo management s´ıtˇe. Klikneme OK. Okno aplikace je na obr´azku 4.3. 2. Pro vytvoˇren´ı tˇrech skupin index˚u pro tˇri osy klikneme v menu Add tˇrikr´at na poloˇzku Axle in PXMC a potom tˇrikr´at na poloˇzku Multiaxle PDOs. V lev´em sloupci okna apli-
4.2. CANFESTIVAL
49
Obr´azek 4.4: Nastaven´ı poˇca´ teˇcn´ıch hodnot nov´eho slovn´ıku zaˇr´ızen´ı v programu Objdictedit
kace se pˇr´ı v´ybˇeru sekce Standardized Device Profile objev´ı jm´ena index˚u zaˇc´ınaj´ıc´ı Axle0, Axle1, Axle2. Stejnˇe tak se v rozsahu index˚u 1400h aˇz 1BFFh urˇcuj´ıc´ıch vlastnosti PDO objekt˚u objev´ı promˇenn´e s n´azvy zaˇc´ınaj´ıc´ımi Axle0, Axle1, Axle2. 3. Pomoc´ı aplikace lze vˇsechny indexy a subindexy proch´azet a nastavit napˇr´ıklad jejich poˇca´ teˇcn´ı hodnoty. Ukazuje to obr´azek 4.4. 4. Vygenerov´an´ı *.c a *.h souboru provedeme v menu File→Build dictionary nebo kl´avesami Ctrl+B. Dialogov´e okno aplikace je na obr´azku 4.5. Pozn´amka: V pr˚ubˇehu implementace jsem narazil na probl´emy s n´azvy promˇenn´ych ve vygenerovan´ych zdrojov´ych souborech. P˚uvodnˇe jsem totiˇz nepˇredpokl´adal, zˇ e nebudu muset zasahovat do zdrojov´ych skript˚u programu Objdictedit. Pˇri rozˇs´ıˇren´ı moˇznosti konfigurace pro v´ıceos´e zaˇr´ızen´ı vznikl probl´em s v´ıcen´asobnou deklarac´ı promˇenn´e se stejn´ym jm´enem. Napˇr. controlword osy 1 bylo pojmenov´ano shodnˇe jako controlword osy 0 a vznikl konflikt pro pˇrekladaˇc. Jedin´ym moˇzn´ym ˇreˇsen´ım byl z´asah do zdrojov´eho k´odu programu Objdicedit, pˇresnˇeji do souboru gen cfile.py. Pro zachov´an´ı v´ysˇe popsan´e funkcionality pro v´ıceos´a zaˇr´ızen´ı je bohuˇzel nutn´e pouˇz´ıt program pˇriloˇzen´y na CD nebo z reposit´aˇre tohoto projektu na serveru [2]. O zaˇclenˇen´ı u´ pravy do projektu CanFestival budu jednat s t´ymem v´yvoj´aˇru˚ .
2
´ ˇ ´ CANOPEN 50KAPITOLA 4. IMPLEMENTACE Rˇ IZEN I´ POHONU˚ PROSTREDNICTV IM
Obr´azek 4.5: Vygenerov´an´ı zdrojov´ych soubor˚u nov´eho slovn´ıku zaˇr´ızen´ı v programu Objdictedit
4.3
Popis funkce uk´azkov´ych aplikac´ı
Programy a funkce popsan´e v t´eto kapitole umoˇznˇ uj´ı pˇred´av´an´ı dat pro ˇr´ızen´ı pohon˚u prostˇrednictv´ım CANOpen. K vlastn´ı komunikaci a pr´aci se slovn´ıkem zaˇr´ızen´ı je pouˇzit projekt CanFestival, popsan´y v sekci 4.2. Doplnˇeny pak byly funkce pro ˇr´ızen´ı pohon˚u, pracuj´ıc´ı podle specifikace DS-402. Byla vytvoˇrena aplikace pro uzel master, kter´y konfiguruje podˇr´ızen´e uzly slave a kter´y pˇr´ımo komunikuje s uˇzivatelem. Vlastn´ı zpˇetnovazebn´ı ˇr´ızen´ı kaˇzd´e osy ze soustavy pohon˚u se prov´ad´ı prostˇrednictv´ım PXMC v uzlech slave, kde je implementov´ano takt´ezˇ rozhran´ı CANOpen s profilem pro ˇr´ızen´ı pohon˚u. Cel´a filosofie ˇr´ızen´ı je zaloˇzena na modelu master/slave. Uzel master, jak se o nˇem hovoˇr´ı v t´eto kapitole, je v programu reprezentov´an uk´azkovou aplikac´ı cf mcp master demo. Ta je urˇcena pro operaˇcn´ı syst´em Linux a je j´ı moˇzno spustit napˇr. na PC nebo na ˇr´ıd´ıc´ım poˇc´ıtaˇci MPC5200. Uzel master uvede po spuˇstˇen´ı vˇsechny uzly slave do komunikaˇcn´ıho stavu OPERATIONAL a pot´e v termin´alu komunikuje s oper´atorem pomoc´ı pˇr´ıkaz˚u popsan´ych v sekci 4.5 a chybov´ych cˇ i informaˇcn´ıch hl´asˇen´ı. Jednotliv´e uzly slave reprezentuje aplikace cf mcp pxmc demo, urˇcen´a zejm´ena pro mikrokontrol´er H8S/2638, ale kterou lze d´ıky moˇznostem OMK pˇreloˇzit tˇreba pro u´ cˇ ely ladˇen´ı i pro jinou platformu, napˇr. OS Linux. Aplikace uzlu slave obsahuje funkce z knihovny PXMC a pˇr´ımo prov´ad´ı ˇr´ızen´ı motor˚u podle zˇ a´ dan´ych hodnot pˇrich´azej´ıc´ıch z uzlu master, tedy pomoc´ı CANOpen komunikace a jej´ıho standardizovan´eho profilu. Pro zjiˇstˇen´ı pˇr´ıpadn´e poruchy komunikace uzlu slave je pouˇzit tzv. Heartbeat Protocol. Uzel master nastav´ı ve f´azi inicializace kaˇzd´emu uzlu slave periodu, se kterou odes´ıl´a do s´ıtˇe NMT zpr´avu informuj´ıc´ı o aktu´aln´ım komunikaˇcn´ım stavu. Na uzlu master je perioda pˇr´ıchoz´ıch NMT zpr´av od kaˇzd´eho uzlu slave kontrolov´ana a pˇri pˇrekroˇcen´ı cˇ asov´eho limitu se generuje chybov´e hl´asˇen´ı. Kaˇzd´y uzel v s´ıti m´a sv˚uj slovn´ık zaˇr´ızen´ı. Jak je pops´ano v [10], slovn´ık zaˇr´ızen´ı m˚uzˇ e
´ ´ 4.3. POPIS FUNKCE UKAZKOV YCH APLIKACI´
51
v oblasti vyhrazen´e pro standardizovan´y profil n´est informace o maxim´alnˇe osmi rˇ´ızen´ych os´ach. Tato skuteˇcnost trochu omezuje variabilitu s´ıtˇe, nebot’ jeden uzel master m˚uzˇ e ˇr´ıdit maxim´alnˇe 8 os, rozdˇelen´ych libovolnˇe na nˇekolika uzlech slave. Jeden mezn´ı pˇr´ıpad m˚uzˇ e b´yt takov´y, zˇ e je ˇr´ızeno vˇsech 8 os z jednoho uzlu master prostˇrednictv´ım jednoho uzlu slave. PXMC umoˇznˇ uje ˇr´ızen´ı teoreticky neomezen´eho poˇctu motor˚u, ale ve skuteˇcnosti jsme omezeni moˇznostmi hardwaru a poˇctem v´ykonov´ych budiˇcu˚ pro motory. Pˇrirozenˇe, zˇ e pouˇzit´y mikrokontrol´er m´a omezen´y v´ypoˇcetn´ı v´ykon. Druh´y mezn´ı pˇr´ıpad konfigurace s´ıtˇe je existence osmi uzl˚u slave, kde kaˇzd´y ˇr´ıd´ı jednu osu. Obecn´y pˇr´ıklad konfigurace s´ıtˇe je na obr´azku 4.6. Je zde naznaˇceno, zˇ e promˇenn´e slovn´ıku zaˇr´ızen´ı kaˇzd´e osy na uzlu slave jsou aktualizov´any pomoc´ı PDO zpr´av do kopie cˇ a´ sti slovn´ıku na uzlu master. T´ımto zp˚usobem je zajiˇstˇeno, zˇ e oper´ator nebo nadˇrazen´a aplikace m´a k dispozici aktu´aln´ı data o kaˇzd´em z ˇr´ızen´ych pohon˚u. Perioda aktualizace je rovna periodˇe pos´ıl´an´ı PDO zpr´av, jejichˇz odes´ıl´an´ı je ˇr´ızeno z uzlu master pomoc´ı synchronizaˇcn´ıch objekt˚u (SYNC). Perioda odes´ıl´an´ı SYNC objekt˚u je na uzlu master nastavena na indexu 1006h (communication cycle period) a zad´av´a se v mikrosekund´ach. Re´alnˇe dosaˇziteln´a perioda je v rozsahu mezi des´ıtkami a stovkami milisekund. Z´aleˇz´ı to na mnoˇzstv´ı operac´ı, kter´e se kaˇzdou periodu mus´ı vykonat. Konfigurace s´ıtˇe se prov´ad´ı pˇred spuˇstˇen´ım komunikace staticky pomoc´ı sestaven´ı a naplnˇen´ı pˇr´ısluˇsn´e datov´e struktury na uzlu master. Ten jedin´y m´a pak informace o poˇctu a nastaven´ı uzl˚u slave, kter´e komunikuj´ı pouze se sv´ym uzlem master, nikoliv mezi sebou. Statick´e datov´e pole pro pˇr´ıklad s´ıtˇe uveden´e na obr´azku 4.6 je ve zdrojov´em k´odu definov´ano n´asledovnˇe. mcp_node_t mcp_nodes[]= { {.node_ID=3,.number_of_axles=2}, {.node_ID=7,.number_of_axles=1}, {.node_ID=15,.number_of_axles=3}, {.node_ID=4,.number_of_axles=2}}; mcp_node_arr_t mcp_node_arr = { mcp_nodes:mcp_nodes, length:FIELD_ELEMS(mcp_nodes)};
Volba identifik´ator˚u jednotliv´ych uzl˚u je libovoln´a, kaˇzd´y mus´ı b´yt ovˇsem unik´atn´ı. V popisovan´ych aplikac´ıch se identifik´ator zat´ım nastavuje staticky jiˇz v dobˇe pˇrekladu aplikace. Konfigurace s´ıtˇe je tak plnˇe v rukou program´atora. Pokud by byly uzly vybaveny extern´ımi pˇrep´ınaˇci na portu mikroprocesoru, dalo by se nastaven´ı jejich identifik´ator˚u prov´est i bez nut-
´ ˇ ´ CANOPEN 52KAPITOLA 4. IMPLEMENTACE Rˇ IZEN I´ POHONU˚ PROSTREDNICTV IM
Obr´azek 4.6: Data ˇr´ızen´ych os ve slovn´ıku zaˇr´ızen´ı uzlu Master a v uzlech Slave
nosti nov´eho pˇrekladu aplikace, jak tomu b´yv´a u pr˚umyslov´ych modul˚u se sbˇernic´ı CAN. Uzel slave mus´ı podle specifikace pro kaˇzdou ˇr´ızenou osu implementovat stavov´y automat. Jeho stavy a pˇrechody stav˚u jsou pops´any v 3.5.3 a na obr´azku 3.11. Uzel master uchov´av´a informace o aktu´aln´ım stavu kaˇzd´e osy pomoc´ı podobn´eho stavov´eho automatu, se stejn´ym poˇctem stav˚u i pˇrechod˚u, ovˇsem s jin´ymi vazbami na vnitˇrn´ı ud´alosti. Pokud si napˇr´ıklad oper´ator pˇreje zmˇenu aktu´aln´ıho stavu libovoln´e osy pohonu, zad´a poˇzadavek na pˇrepnut´ı stavu napˇr´ıklad pomoc´ı pˇr´ıkazov´eho rozhran´ı. Prostˇrednictv´ım ˇr´ıd´ıc´ıho slova (controlword) se v PDO zpr´avˇe pˇrenese poˇzadavek na pˇr´ısluˇsn´y uzel slave. Automaticky se vyvol´a callback na z´apis nov´eho ˇr´ıd´ıc´ıho slova do slovn´ıku zaˇr´ızen´ı a pokud to vnitˇrn´ı podm´ınky v pohonu dovoluj´ı, provede se pˇrechod do nov´eho stavu a s n´ım spojen´e u´ kony. Zmˇena stavu vyvol´a i z´apis pˇr´ısluˇsn´ych bit˚u ve stavov´em slovˇe. To je prostˇrednictv´ım PDO zpr´av odes´ıl´ano na uzel master, kde se podobnˇe vyvol´a callback na z´apis nov´eho stavov´eho slova do slovn´ıku zaˇr´ızen´ı. Zavolan´a funkce provede zmˇenu aktu´aln´ıho stavu automatu podle informace uloˇzen´e ve stavov´em slovˇe. Viz obr´azek 4.7. Pokud nov´y aktu´aln´ı stav st´ale jeˇstˇe nen´ı t´ım c´ılov´ym, vyvol´a se automaticky znovu poˇzadavek na pˇrechod stavu prostˇrednictv´ım nov´eho ˇr´ıd´ıc´ıho slova. V r´amci jednoho zde popsan´eho cyklu se provede pouze jeden pˇrechod. Tento cyklus se opakuje do t´e doby, kdy je dosaˇzeno zˇ a´ dan´eho c´ılov´eho stavu.
´ ´ 4.3. POPIS FUNKCE UKAZKOV YCH APLIKACI´
53
Obr´azek 4.7: V´azan´e stavov´e automaty pohonu os na uzlu Master a Slave
M˚uzˇ e se vˇsak st´at, zˇ e nˇejak´a podm´ınka pˇrechodu nen´ı na uzlu slave splnˇena a c´ılov´y stav tak nem˚uzˇ e b´yt dosaˇzen. Z toho d˚uvodu je pˇri zad´an´ı pˇr´ıkazu v pˇr´ıkazov´em rozhran´ı zaloˇzeno vl´akno, kter´e zadan´y poˇzadavek pˇred´a do niˇzsˇ´ıch vrstev komunikace a na urˇcitou dobu se usp´ı. Po vyprˇsen´ı cˇ asov´eho intervalu odvozen´eho od periody pos´ıl´an´ı PDO zpr´av se kontroluje dosaˇzen´ı zˇ a´ dan´eho stavu. Nen´ı-li tento stav dosaˇzen, je vygenerov´ano chybov´e hl´asˇen´ı. V opaˇcn´em pˇr´ıpadˇe vl´akno obsluhuj´ıc´ı vykon´an´ı zˇ a´ dan´eho pˇr´ıkazu zanik´a. I ostatn´ı pˇr´ıkazy, kter´e budou pops´any v sekci 4.5 obsluhuj´ı cˇ asovan´a vl´akna. Spr´avn´e proveden´ı pˇr´ıkazu je po kr´atk´e dobˇe kontrolov´ano a v pˇr´ıpadˇe ne´uspˇechu je v termin´alu aplikace indikov´ana chyba. Pozn´amka: Zp˚usob zad´av´an´ı ˇr´ıd´ıc´ıch pˇr´ıkaz˚u a kontrolov´an´ı jejich u´ spˇesˇn´eho proveden´ı lze implementovat jako cˇ istˇe ud´alostmi ˇr´ızen´y syst´em. Norma DS-402 nepˇredepisuje zp˚usob, jak´ym ˇreˇsit chybov´e situace. D´av´a vˇsak k dispozici pˇreddefinovan´e objekty EMCY, slouˇz´ıc´ı k hl´asˇen´ı chybov´ych ud´alost´ı pomoc´ı cˇ´ıseln´ych k´od˚u chyb, kter´e nastaly. Z d˚uvodu pomˇernˇe rozs´ahl´eho zp˚usobu ˇreˇsen´ı chybov´ych situac´ı, jsem se jiˇz k implementaci tˇechto metod z cˇ asov´ych d˚uvod˚u ˇ sen´ı v podobˇe pouˇzit´ı cˇ asov´ych interval˚u pro kontrolu spr´avn´eho proveden´ı u´ konu nedostal. Reˇ nenahrazuje plnˇe definovanou funkcionalitu a neumoˇznˇ uje jednoduˇse zjistit pˇr´ıcˇ inu chyby. 2 Pˇrechod stavu pohonu m˚uzˇ e b´yt vyvol´an i bez pˇr´ıkazu z ˇr´ıd´ıc´ıho slova nˇejakou samostatnou vnitˇrn´ı ud´alost´ı. I v tomto pˇr´ıpadˇe se provede automaticky z´apis nov´eho stavov´eho slova a PDO zpr´avou se dostane informace na uzel master, kde je pˇr´ısluˇsn´y stav tak´e aktualizov´an. V´ysˇe popsan´a funkce je graficky zobrazena na obr´azku 4.7.
´ ˇ ´ CANOPEN 54KAPITOLA 4. IMPLEMENTACE Rˇ IZEN I´ POHONU˚ PROSTREDNICTV IM V souˇcasn´e dobˇe je implementov´an periodick´y pˇrenos cˇ tyˇr vys´ılan´ych a cˇ tyˇr pˇrij´ıman´ych PDO zpr´av, v tabulk´ach 3.5 a 3.6 znaˇcen´ych cˇ´ısly 1 aˇz 4. Perioda vys´ıl´an´ı je ˇr´ızena periodou objekt˚u SYNC. V CanFestivalu je pouˇzit´ı libovoln´e promˇenn´e na pˇr´ısluˇsn´em indexu slovn´ıku zaˇr´ızen´ı nutn´e deklarovat jiˇz pˇri jeho sestavov´an´ı, napˇr. pomoc´ı programu Objdictedit. Za bˇehu programu je moˇzn´e poloˇzky slovn´ıku mˇenit vˇcetnˇe jejich parametr˚u, nen´ı jiˇz vˇsak moˇzno jednoduˇse nov´e poloˇzky pˇrid´avat. Poˇcet zm´ınˇen´ych PDO zpr´av je tedy urˇcen jiˇz v dobˇe pˇrekladu programu a nen´ı ho moˇzn´e za bˇehu mˇenit. Zvolil jsem proto pouˇzit´ı osmi zm´ınˇen´ych PDO zpr´av pro dva implementovan´e m´ody ˇr´ızen´ı pozice a rychlosti. Po startu zaˇr´ızen´ı, jeˇstˇe pˇred zapoˇcet´ım komunikace po sbˇernici, se ve vˇsech uzlech provede inicializace parametr˚u PDO zpr´av. Parametry PDO zpr´av (ne jiˇz poˇcet zpr´av) je pak jiˇz moˇzno mˇenit napˇr. SDO zpr´avami nebo pˇr´ımo z lok´aln´ı aplikace. Pozn´amka: V pr˚ubˇehu implementace jsem zjistil, zˇ e pouˇzit´y software projektu CanFestival mapov´an´ı PDO zpr´av s offsetem 40h neumoˇznˇ uje. Byl proto zvolen v implementaci plovouc´ı offset o poˇctu mapovan´ych zpr´av kaˇzd´e osy. Funkce CanFestivalu odes´ılaj´ıc´ı a pˇrij´ımaj´ıc´ı zpr´avy zaˇc´ın´a mapovat na indexu 1400h resp. 1800h , ale v cyklu inkrementuje indexy o jedniˇcku aˇz do poˇctu vˇsech mapovan´ych zpr´av. PDO zpr´avy mapovan´e na indexech 1440h resp. 1840h a d´ale jiˇz nenach´az´ı. V tomto smˇeru jsem se musel odch´ylit od specifikace DS-402. Zp˚usob mapov´an´ı v m´e aplikaci je moˇzn´e mˇenit nastaven´ım pˇreddefinovan´ych konstant v hlaviˇckov´em 2
souboru.
4.4
Popis zdrojov´ych souboru˚
Zdrojov´e k´ody funkc´ı a aplikac´ı jsou rozdˇeleny do tˇr´ı adres´aˇru˚ s n´asleduj´ıc´ımi soubory. Soubory Makefile a Makefile.omk slouˇz´ı ke konfiguraci kompilaˇcn´ıho syst´emu OMK. V souboru Makefile.omk je uvedeno, kter´e zdrojov´e soubory a knihovny budou pouˇzity k pˇrekladu aplikace nebo modulu. V n´asleduj´ıc´ıch nˇekolika sekc´ıch je ve struˇcnosti pˇribl´ızˇ en obsah zdrojov´ych soubor˚u uk´azkov´ych aplikac´ı. Podrobnˇejˇs´ı koment´aˇre jsou pˇr´ımo v souborech. ./cf-common/ Makefile Makefile.omk cf_mcp_common_DS3O1.h cf_mcp_common_DSP402.h cf_mcp_common_def.h
´ 4.4. POPIS ZDROJOVYCH SOUBORU˚
55
cf_mcp_common_fcn.h cf_mcp_common_fcn.c cf_mcp_common_struct.h ./cf-master/ Makefile Makefile.omk cf_mcp_master_cmd.c cf_mcp_master_def.h cf_mcp_master_demo.c cf_mcp_master_fcn.c cf_mcp_master_fsm.c cf_mcp_master_objdict.od cf_mcp_master_objdict.c cf_mcp_master_objdict.h ./cf-pxmc/ Makefile Makefile.omk cf_mcp_pxmc_def.h cf_mcp_pxmc_demo.c cf_mcp_pxmc_fcn.c cf_mcp_pxmc_fsm.c cf_mcp_pxmc_objdict.od cf_mcp_pxmc_objdict.c cf_mcp_pxmc_objdict.h
4.4.1
Adres´arˇ cf-common
4.4.1.1
Soubor cf mcp common DS3O1.h
Obsahuje definice maker pro pr´aci s parametry a mapov´an´ım PDO zpr´av.
4.4.1.2
Soubor cf mcp common DSP402.h
Zde jsou uvedena makra poˇc´ıtaj´ıc´ı hodnotu indexu promˇenn´e z jej´ıho n´azvu uveden´eho ve specifikaci DSP-402 a cˇ´ısla osy od 0 do 7. Ve v´ypoˇctu se uvaˇzuje offset stejnojmenn´ych index˚u dvou os 800h a v´ysledkem je hodnota indexu v rozsahu urˇcen´em pro standardizovan´y profil zaˇr´ızen´ı (Standardized Device Profile).
´ ˇ ´ CANOPEN 56KAPITOLA 4. IMPLEMENTACE Rˇ IZEN I´ POHONU˚ PROSTREDNICTV IM 4.4.1.3
Soubor cf mcp common def.h
Obsahuje definici maker pro pr´aci s ˇr´ıd´ıc´ı a stavovou promˇennou pˇrep´ınaˇce operaˇcn´ıch m´od˚u (Profile Position Mode, Profile Velocity Mode, atd). D´ale jsou zde makra pro pr´aci s ˇr´ıd´ıc´ım slovem (controlword) a stavov´ym slovem zaˇr´ızen´ı (Statusword). Stavov´a a ˇr´ıd´ıc´ı slova jednotliv´ych os se cˇ tou a nastavuj´ı pomoc´ı bitov´ych masek, kter´e jsou zde definov´any.
4.4.1.4
Soubor cf mcp common fcn.h
Obsahuje hlaviˇcky funkc´ı definovan´ych v souboru cf mcp common fcn.c.
4.4.1.5
Soubor cf mcp common fcn.c
Zde jsou definov´any funkce pouˇzit´e jak v souborech pro uzel master, tak v souborech pro uzel slave (pojmenov´any cf mcp pxmc *).
4.4.1.6
Soubor cf mcp common struct.h
Deklaruje stavy stavov´eho automatu ve v´ycˇ tov´em typu enum mcp axle state. D´ale deklaruje strukturu struct mcp axle s ukazateli na cˇ asto pouˇz´ıvan´e promˇenn´e kaˇzd´e z os. Je zde tak´e promˇenn´a nesouc´ı aktu´aln´ı stav pohonu.
4.4.2
Adres´arˇ cf-master
4.4.2.1
Soubor cf mcp master cmd.c
Obsahuje funkce volan´e pˇr´ıkazov´ym rozhran´ım po zad´an´ı pˇr´ıkazu v termin´alu programu cf mcp master demo.
4.4.2.2
Soubor cf mcp master def.h
Obsahuje hlaviˇcky funkc´ı definovan´ych v souboru cf mcp master fcn.c.
4.4.2.3
Soubor cf mcp master demo.c
Obsahuje funkci main a definici glob´aln´ıch promˇenn´ych programu cf mcp master demo.
´ 4.4. POPIS ZDROJOVYCH SOUBORU˚ 4.4.2.4
57
Soubor cf mcp master fcn.c
Definuje funkce pouˇzit´e v programu cf mcp master demo. Jsou to napˇr´ıklad callback funkce nˇekter´ych poloˇzek slovn´ıku zaˇr´ızen´ı volan´e automaticky CanFestivalem po z´apisu na pˇr´ısluˇsnou poloˇzku. 4.4.2.5
Soubor cf mcp master fsm.c
Zde je definov´ana funkce obsluhuj´ıc´ı stavov´y automat na uzlu master. Ta pˇrep´ın´a stav stavov´eho automatu osy podle aktu´aln´ıho stavu a splnˇen´ych podm´ınek pˇrechodu. 4.4.2.6
Soubor cf mcp master objdict.od
Obsahuje vˇsechny poloˇzky slovn´ıku zaˇr´ızen´ı pro uzel master. Data jsou uloˇzena ve form´atu XML a soubor je moˇzn´e kdykoliv naˇc´ıst programem Objdictedit a prov´est zmˇeny. Pro demonstraci programem cf mcp master demo jsou ve slovn´ıku definov´any dvˇe osy vˇcetnˇe nastaven´ı PDO zpr´av. 4.4.2.7
Soubor cf mcp master objdict.c
Definice promˇenn´ych slovn´ıku zaˇr´ızen´ı po automatick´em vygenerov´an´ı programem Objdictedit. 4.4.2.8
Soubor cf mcp master objdict.h
Deklarace promˇenn´ych slovn´ıku zaˇr´ızen´ı po automatick´em vygenerov´an´ı programem Objdictedit.
4.4.3
Adres´arˇ cf-pxmc
4.4.3.1
Soubor cf mcp pxmc def.h
Tento soubor obsahuje hlaviˇcky funkc´ı definovan´ych v souborech cf mcp pxmc fsm.c a cf mcp pxmc fcn.c. 4.4.3.2
Soubor cf mcp pxmc fcn.c
Obsahuje funkce volan´e z aplikace cf mcp pxmc demo. Jedn´a se zejm´ena o callback funkce poloˇzek slovn´ıku zaˇr´ızen´ı, kter´e maj´ı vazbu na pr´aci s PXMC knihovnou.
´ ˇ ´ CANOPEN 58KAPITOLA 4. IMPLEMENTACE Rˇ IZEN I´ POHONU˚ PROSTREDNICTV IM 4.4.3.3
Soubor cf mcp pxmc demo.c
Obsahuje funkci main demonstraˇcn´ıho programu cf mcp pxmc demo. Pomoc´ı direktiv pˇrekladaˇce lze volit pˇreklad pro mikroprocesor H8S nebo pro Linux.
4.4.3.4
Soubor cf mcp pxmc fsm.c
Obsahuje funkci obsluhuj´ıc´ı stavov´y automat kaˇzd´e osy na uzlu slave. Stavy a jejich pˇrechody jsou v´az´any pomoc´ı stavov´eho a ˇr´ıd´ıc´ıho slova se stavy odpov´ıdaj´ıc´ıho stavov´eho automatu na zaˇr´ızen´ı master.
4.4.3.5
Soubor cf mcp pxmc objdict.od
Obsahuje poloˇzky slovn´ıku zaˇr´ızen´ı uzlu slave ve form´atu XML, podobnˇe jako u uzlu master.
4.4.3.6
Soubor cf mcp pxmc objdict.c
Definice promˇenn´ych slovn´ıku zaˇr´ızen´ı po automatick´em vygenerov´an´ı programem Objdictedit.
4.4.3.7
Soubor cf mcp pxmc objdict.h
Deklarace promˇenn´ych slovn´ıku zaˇr´ızen´ı po automatick´em vygenerov´an´ı programem Objdictedit.
4.5
Pˇr´ıkazy termin´alu demonstraˇcn´ıho programu
Pro demonstraci funkce ˇr´ızen´ı pohon˚u byly vytvoˇreny nov´e pˇr´ıkazy do pˇrevzat´eho pˇr´ıkazoˇ ast zdrojov´ych k´od˚u rozhran´ı, pouˇzit´a filosofie urˇcuj´ıc´ı form´at pˇr´ıkaz˚u a zp˚usob v´eho rozhran´ı. C´ jejich zpracov´an´ı, byla pˇrevzata od firmy PiKRON, kter´a t´ımto zp˚usobem dovoluje ovl´adat svoje jednotky pro ˇr´ızen´ı mal´ych robot˚u. Podrobnˇe je form´at pˇr´ıkaz˚u pops´an napˇr´ıklad v manu´alu k jednotce MARS 2 [19]. Pˇr´ıkaz se skl´ad´a ze jm´ena, operaˇcn´ıho znaku a parametr˚u. Jednotliv´e cˇ a´ sti mohou dˇelit mezery. Form´at pˇr´ıkaz˚u je n´asleduj´ıc´ı.
ˇ IHO ´ ´ ´ 4.5. PRˇ IKAZY TERMINALU DEMONSTRACN PROGRAMU
59
Jm´eno je libovoln´a kombinace p´ısmen a cˇ´ıslic zaˇc´ınaj´ıc´ı p´ısmenem. Pˇr´ıkazy se vztahuj´ı k jednotliv´ym ˇr´ızen´ym os´am pomoc´ı posledn´ıho p´ısmena pˇr´ıkazu v rozsahu A (pro osu 0) aˇz H (pro osu 7). Tato pozice je d´ale oznaˇcov´ana p´ısmenem ’m’. Operaˇcn´ı znak urˇcuje, jedn´a-li se o nastaven´ı hodnoty (’:’) nebo o cˇ ten´ı hodnoty (’?’). Parametr m˚uzˇ e b´yt v souˇcasn´e dobˇe pouze cel´e cˇ´ıslo. Z´aporn´e cˇ´ıslo zaˇc´ın´a znakem ’-’. N´asleduj´ıc´ı seznam obsahuje implementovan´e pˇr´ıkazy. Znak ’/’ ukazuje na moˇznost pouˇzit´ı obou typ˚u operaˇcn´ıch znak˚u (’:’,’?’). • HELP – vyp´ısˇe seznam definovan´ych pˇr´ıkaz˚u s jejich kr´atk´ym popisem • ONm: – parametr nen´ı, uvede ˇr´ızen´ı zadan´e osy m do stavu OperationEnable • OFFm: – parametr nen´ı, uvede ˇr´ızen´ı zadan´e osy m do stavu SwitchOnDisabled • Gm: – parametr -2147483647 aˇz 2147483648, pˇrepne osu m na operaˇcn´ı m´od profilovan´eho ˇr´ızen´ı pozice a najede na pozici zadanou v aktu´aln´ıch jednotk´ach • APm? – parametr nen´ı, vyp´ısˇe aktu´aln´ı pozici osy m v aktu´aln´ıch jednotk´ach • MSm:/? – nastav´ı/vyp´ısˇe se maxim´aln´ı pˇrejezdovou rychlost v [jednotka pozice/s] osy m, parametr v rozsahu 0 aˇz 4294967296 • MAm:/? – nastav´ı/vyp´ısˇe se maxim´aln´ı zrychlen´ı v [jednotka pozice/s2 ] osy m, parametr v rozsahu 0 aˇz 4294967296 • SPDm: – parametr -2147483647 aˇz 2147483648, pˇrepne osu m na operaˇcn´ı m´od profilovan´eho ˇr´ızen´ı rychlosti a uvede pohon do pohybu s rychlost´ı zadanou v aktu´aln´ıch jednotk´ach • STOPm: – provede okamˇzit´e zastaven´ı pohonu osy m v libovoln´em operaˇcn´ım m´odu • PFm:/? – vstupem jsou dva parametry v rozsahu 1 aˇz 4294967296, parametry pˇrevodn´ı konstanty mezi aktu´aln´ımi jednotkami pozice a vnitˇrn´ımi jednotkami pohonu osy m, prvn´ı parametr je cˇ itatel druh´y jmenovatel konstanty v podobˇe zlomku, s operaˇcn´ım znakem ’?’ se vyp´ısˇe aktu´aln´ı nastaven´ı • VFm:/? – vstupem jsou dva parametry v rozsahu 1 aˇz 4294967296, parametry pˇrevodn´ı konstanty mezi aktu´aln´ımi jednotkami rychlosti a vnitˇrn´ımi jednotkami pohonu osy m, prvn´ı parametr je cˇ itatel druh´y jmenovatel konstanty v podobˇe zlomku, s operaˇcn´ım znakem ’?’ se vyp´ısˇe aktu´aln´ı nastaven´ı
´ ˇ ´ CANOPEN 60KAPITOLA 4. IMPLEMENTACE Rˇ IZEN I´ POHONU˚ PROSTREDNICTV IM • AFm:/? – vstupem jsou dva parametry v rozsahu 1 aˇz 4294967296, parametry pˇrevodn´ı konstanty mezi aktu´aln´ımi jednotkami zrychlen´ı a vnitˇrn´ımi jednotkami pohonu osy m, prvn´ı parametr je cˇ itatel druh´y jmenovatel konstanty v podobˇe zlomku, s operaˇcn´ım znakem ’?’ se vyp´ısˇe aktu´aln´ı nastaven´ı Pozn´amka: Pˇr´ıkazy PF, VF a AF nastavuj´ı pˇrevodn´ı konstanty popisovan´e v sekci 3.5.4 a reprezentovan´e ve formˇe racion´aln´ıch cˇ´ısel. Rozdˇelen´ı pˇrevodn´ıch konstant na zlomek, umoˇznˇ uje v prostˇred´ı cel´ych cˇ´ısel zmenˇsit chyby zaokrouhlov´an´ı pˇri pˇrevodu mezi jednotkami zad´avan´ych veliˇcin a vnitˇrn´ımi jednotkami pohonu (zde napˇr. jednotkami pouˇz´ıvan´ymi v PXMC). Nevhodnou volbou zad´avan´ych jednotek a z toho vypl´yvaj´ıc´ı volbou pˇrevodn´ı konstanty zde ale pˇresto k velk´ym zaokrouhlovac´ım chyb´am m˚uzˇ e doj´ıt. Je vhodn´e volit jednotky zad´avan´ych veliˇcin tak, aby byl optim´alnˇe vyuˇzit rozsah zad´avan´ych cel´ych cˇ´ısel. Zde popisovan´y pˇrepoˇcet veliˇcin se prov´ad´ı na mikroprocesoru H8S/2638 a pˇrevodn´ı konstanty jsou uloˇzeny ve slovn´ıku zaˇr´ızen´ı jednotky slave.
4.6
2
Spuˇstˇen´ı testovac´ı aplikace
V t´eto sekci je pops´an postup, jak´ym lze pˇreloˇzit a spustit v´ysˇe uveden´e aplikace pro demonstraci CANOpen a Motion Control Profilu. Souˇca´ st´ı PXMC je pro u´ cˇ ely demonstrace a ladˇen´ı k dispozici simul´ator knihovny PXMC v prostˇred´ı OS Linux. Funkce simul´atoru je z velk´e cˇ a´ sti shodn´a s funkc´ı aplikace spuˇstˇen´e na mikrokontrol´eru (napˇr. H8S/2638). Hardwarov´e cˇ asovaˇce jsou nahrazeny cˇ asovaˇci OS Linux a ˇr´ıd´ıc´ı z´asahy regul´ator˚u nep˚usob´ı na fyzick´y motor, ale jsou prostˇrednictv´ım socketu pˇred´av´any grafick´e aplikaci. T´ımto zp˚usobem je moˇzn´e pro dva ˇr´ızen´e zobrazit aktu´aln´ı polohu (pxms ap), aktu´aln´ı rychlost (pxms as), akˇcn´ı z´asah regul´atoru (pxms ene) a indikovat ot´acˇ en´ı rotoru pomoc´ı rotuj´ıc´ı sˇipky. Dialogov´e okno aplikace simul´atoru pxmc sim gui je na obr´azku 4.8.
4.6.1
Poloˇzky slovn´ıku˚ zaˇr´ızen´ı
Slovn´ıky zaˇr´ızen´ı pro aplikace cf mcp master demo a cf mcp pxmc demo jsou jiˇz v tomto projektu vytvoˇreny. Pro moˇznost experimentov´an´ı pouze ve zkratce uvedu, kter´e poloˇzky (indexy) jsou ve slovn´ıc´ıch uvedeny. Uzel master zde ˇr´ıd´ı dvˇe osy na jednom uzlu slave. Slovn´ık cf mcp master objdict obsahuje n´asleduj´ıc´ı indexy, jejichˇz parametry je moˇzn´e v programu Objdictedit mˇenit.
ˇ EN ˇ I´ TESTOVACI´ APLIKACE 4.6. SPUST
61
Obr´azek 4.8: Dialogov´e okno aplikace simul´atoru knihovny PXMC
1000h , 1001h , 1018h – vloˇz´ı se automaticky po vytvoˇren´ı nov´eho slovn´ıku. 1005h – identifik´ator objektu SYNC pouˇzit´eho pro synchronizaci uzl˚u v s´ıti. 1006h – perioda vys´ıl´an´ı objekt˚u SYNC, zadan´a v mikrosekund´ach. 1018h – strukturovan´y parametr obsahuj´ıc´ı definice d´elek cˇ asov´ych interval˚u pˇr´ıjemce NMT zpr´av protokolu HeartBeat, zde je uveden pouze jeden parametr na subindexu 1 pro jeden uzel slave, kter´y je odes´ılatelem NMT zpr´av protokolu HeartBeat. 1280h – struktura parametr˚u jednoho SDO klienta. 1400h –1407h , 1600h –1607h , 1800h –1807h , 1A00h –1A07h – parametry a mapov´an´ı dvou cˇ tveˇric RPDO a dvou cˇ tveˇric TPDO zpr´av. Poznamenejme, zˇ e osa pouˇz´ıv´a 4 RPDO a 4 TPDO zpr´avy. 6000h –7000h – parametry Motion Control profilu dvou ˇr´ızen´ych os Slovn´ık cf mcp pxmc objdict obsahuje n´asleduj´ıc´ı indexy, jejichˇz parametry je moˇzn´e v programu Objdictedit mˇenit. 1000h , 1001h , 1018h – vloˇz´ı se automaticky po vytvoˇren´ı nov´eho slovn´ıku. 1005h – identifik´ator objektu SYNC pouˇzit´eho pro synchronizaci uzl˚u v s´ıti.
´ ˇ ´ CANOPEN 62KAPITOLA 4. IMPLEMENTACE Rˇ IZEN I´ POHONU˚ PROSTREDNICTV IM 1006h – perioda vys´ıl´an´ı objekt˚u SYNC, zadan´a v mikrosekund´ach. 1017h – parametr obsahuj´ıc´ı definice d´elky cˇ asov´eho intervalu producenta NMT zpr´av protokolu HeartBeat. 1280h – struktura parametr˚u jednoho SDO serveru. 1400h –1407h , 1600h –1607h , 1800h –1807h , 1A00h –1A07h – parametry a mapov´an´ı dvou cˇ tveˇric RPDO a dvou cˇ tveˇric TPDO zpr´av. Poznamenejme, zˇ e osa pouˇz´ıv´a 4 RPDO a 4 TPDO zpr´avy. 6000h –7000h – parametry Motion Control profilu dvou ˇr´ızen´ych os
4.6.2
Pouˇzit´ı virtu´aln´ı sbˇernice CAN na OS Linux
Pro simulaci komunikace uzl˚u na sbˇernici CAN je zde vyuˇzit driver LinCAN v konfiguraci jako virtu´aln´ı zaˇr´ızen´ı. Pˇreklad zdrojov´ych soubor˚u modulu j´adra a jeho zaveden´ı je krok po kroku pops´ano v souboru ./can/lincan/README. Pˇreloˇzen´y modul se do j´adra zavede n´asleduj´ıc´ım pˇr´ıkazem. insmod can.ko hw=virtual io=0
4.6.3 Pˇreklad zdrojov´ych k´odu˚ uk´azkov´ych aplikac´ı Pˇreklad aplikac´ı pro OS Linux je prostˇrednictv´ım OMK proveden z adres´aˇre ./linux. Podobnˇe se pˇreklad aplikac´ı pro mikrokontrol´er H8S prov´ad´ı z adres´aˇre h8300-boot. V adres´aˇri ./linux zad´ame pˇr´ıkazy: make distclean make default-config make
Pokud kompilace probˇehla u´ spˇesˇnˇe, jsou v adres´aˇri ./linux/ compiled/bin spustiteln´e bin´arn´ı soubory cf mcp master demo a cf mcp pxmc demo.
4.6.4
Spuˇstˇen´ı uk´azkov´ych aplikac´ı
Nejprve je nutn´e spustit simul´ator knihovny PXMC pxmc sim gui. To provedeme n´asleduj´ıc´ımi pˇr´ıkazy.
ˇ EN ˇ I´ TESTOVACI´ APLIKACE 4.6. SPUST
63
../pxmc/pxmcbsp/sim_posix/pxmc_sim_gui/pxmc_sim_gui
V termin´alu spust´ıme aplikaci cf mcp pxmc demo. _compiled/bin/cf_mcp_pxmc_demo
Nakonec spust´ıme v jin´em termin´alu aplikaci cf mcp master demo. _compiled/bin/cf_mcp_master_demo
V termin´alu, kde je spuˇstˇena aplikace cf mcp master demo je moˇzn´e zad´avat pˇr´ıkazy popsan´e v sekci 4.5. Abychom mohli vzd´alen´y pohon osy uv´est do provozu, je ho nutn´e nejprve zapnout pˇr´ıkazem ONA: pro osu 0 a ONB: pro osu 1. Pro j´ızdu osy 0 na c´ılovou pozici 1000 m˚uzˇ eme zadat pˇr´ıkaz GA:1000. Druhou osu m˚uzˇ eme uv´est tˇreba do pohybu konstantn´ı rychlost´ı 100. Provedeme to pˇr´ıkazem SPDB:100. V libovoln´y okamˇzik lze motor zastavit pˇr´ıkazem STOPA: nebo STOPB:. V dialogov´em oknˇe pxmc sim gui je vidˇet odezva motor˚u na zadan´e pˇr´ıkazy.
4.6.5
Pˇreklad aplikace cf mcp pxmc demo pro H8S/2638
Pro spuˇstˇen´ı aplikace cf mcp pxmc demo na mikroprocesoru H8S/2638 provedeme nejprve pˇreklad zdrojov´ych k´od˚u. V adres´aˇri ./h8300-boot zad´ame pˇr´ıkazy: make distclean make default-config make
Desku mikroprocesoru spoj´ıme s PC s´eriovou linkou RS232. V podadres´aˇri se zdrojov´ymi k´ody aplikace cf mcp pxmc demo spust´ıme nahr´av´an´ı bin´arn´ıho souboru do mikroprocesoru. make make load run
´ ˇ ´ CANOPEN 64KAPITOLA 4. IMPLEMENTACE Rˇ IZEN I´ POHONU˚ PROSTREDNICTV IM
Kapitola 5 Z´avˇer Jedn´ım z c´ıl˚u t´eto pr´ace bylo zkonstruovat a postavit robota pro soutˇezˇ Eurobot 2007. Toto zad´an´ı bylo splnˇeno v cel´em rozsahu. Pˇri n´avrhu mechanick´e konstrukce byl kladen na mechanickou odolnost a variabilitu kostry robota, kterou tvoˇr´ı r´am a z´akladn´ı deska s namontovan´ym pohonem. Jako pouˇzit´y materi´al byla zvolena lehk´a hlin´ıkov´a slitina, kter´a poskytuje dostateˇcnou pevnost, n´ızkou hmotnost a dobrou obrobitelnost. Pro dosaˇzen´ı vysok´e pˇresnosti byla k v´yrobˇe nˇekter´ych d´ıl˚u pouˇzita CNC technologie. Rovnˇezˇ byl proveden n´avrh pohonu vˇcetnˇe volby vhodn´ych motor˚u. Na univerz´aln´ı kostru byly pot´e montov´any mechanismy specifick´e pro aktu´aln´ı zad´an´ı soutˇezˇ e. Funkce sbˇerac´ıho mechanismu a z´asobn´ıku byla spolu s celkem testov´ana a doladˇena na vlastn´ım hˇriˇsti, kter´e jsme pro tyto u´ cˇ ely postavili v prostor´ach katedry. S robotem jsme se z´ucˇ astnili republikov´eho kola Eurobota a mezin´arodn´ı soutˇezˇ e North Star Cup v Rusk´em Petrohradu, kde jsme obsadili p´at´e m´ısto a obdrˇzeli cenu za nejlepˇs´ı technickou prezentaci. Dalˇs´ım c´ılem pr´ace bylo vytvoˇrit programovou podporu pro CANOpen komunikaci a ˇr´ızen´ı pohon˚u. Jako implementaci protokolu CANOpen jsem zvolil projekt CanFestival, pro kter´y jiˇz existovala podpora pro mikrokontrol´er H8S/2638 a OS Linux. Profil pro ˇr´ızen´ı pohon˚u zde ale definovan´y nebyl, a tak sem jej musel po nastudov´an´ı specifikace DSP-402 vytvoˇrit. Struktura konfiguraˇcn´ıch soubor˚u programu Objdictedit ovˇsem neumoˇznˇ ovala sestaven´ı slovn´ıku zaˇr´ızen´ı pro v´ıce ˇr´ızen´ych os pohonu. Po prostudov´an´ı zdrojov´ych k´od˚u jsem vytvoˇril konfiguraˇcn´ı soubor pro profil ˇr´ızen´ı pohon˚u tak, aby byl maxim´alnˇe dodrˇzen standard a byla zachov´ana standardn´ı funkce editoru Objdictedit. Vzhledem k tomu, zˇ e k tvorbˇe profil˚u v programu Objdictedit neexistuje zˇ a´ dn´a dokumentace, popsal jsem v t´eto pr´aci strukutu souboru *.prf a vysvˇetlil v´yznam nejpouˇz´ıvanˇejˇs´ıch symbol˚u. Pro demonstraci ˇr´ızen´ı pohon˚u pomoc´ı profilu jsem vytvoˇril uk´azkov´e aplikace jednotek slave a master. Jednotku slave je v souˇcasn´e dobˇe moˇzno spustit v operaˇcn´ım syst´emu Li65
66
´ ER ˇ KAPITOLA 5. ZAV
nux se simul´atorem motoru nebo na mikrokontrol´eru H8S/2638. Pro CANOpen komunikaci je pouˇzit CanFestival a funkci regul´atoru zde pln´ı knihovna PXMC. Podle specifikace DSP402 byly vytvoˇreny funkce pro ovl´ad´an´ı stavu zaˇr´ızen´ı a implementov´an stavov´y automat pohonu. Vytvoˇrena byla tak´e skupina funkc´ı implementuj´ıc´ıch poˇzadovan´e chov´an´ı uzlu podle profilu MCP a zprostˇredkov´avaj´ıc´ı v´ymˇenu dat mezi PXMC a slovn´ıkem zaˇr´ızen´ı v CanFestivalu. V souˇcasn´e dobˇe je moˇzn´e uzlem slave pˇr´ımo ˇr´ıdit aˇz 8 pohon˚u, tedy maxim´aln´ı poˇcet definovan´y normou. Jednotka master je urˇcena pouze pro operaˇcn´ı syst´em Linux. Pomoc´ı jednoduch´ych pˇr´ıkaz˚u a v´ypis˚u termin´alu umoˇznˇ uje oper´atorovi ovl´adat pohony pˇripojen´e k s´ıti. V souˇcasn´e dobˇe je v aplikac´ıch implementov´an m´od profilovan´eho ˇr´ızen´ı pozice (single setpoint) a m´od profilovan´eho ˇr´ızen´ı rychlosti. K v´ymˇenˇe procesn´ıch dat mezi uzlem master a slave, jako jsou napˇr. aktu´aln´ı a zˇ a´ dan´a pozice, slouˇz´ı periodicky pˇred´avan´e PDO zpr´avy. K jednor´azov´emu nastaven´ı poloˇzek slovn´ıku zaˇr´ızen´ı slave pouˇz´ıv´a aplikace master SDO zpr´avy. Konfigurace s´ıtˇe se prov´ad´ı staticky na uzlu master a lze ji mˇenit i za bˇehu programu. Nejsou zde ovˇsem implementov´any zˇ a´ dn´e diagnostick´e n´astroje pro dynamickou u´ pravu konfigurace s´ıtˇe, kter´e maj´ı sp´ısˇe v´yznam u rozs´ahlejˇs´ıch s´ıt´ı v pr˚umyslu. Za bˇehu je spr´avn´a funkce uzl˚u slave ovˇeˇrov´ana tzv. Heartbeat protokolem, kter´y je souˇca´ st´ı standardu CANOpen. V souˇcasn´e dobˇe nen´ı implementov´an pˇrenos chybov´ych hl´asˇen´ı pomoc´ı objekt˚u EMCY. Testov´an´ı aplikac´ı bylo prov´adˇeno na dvou u´ rovn´ıch. Nejprve byla testov´ana komunikace pomoc´ı virtu´alnˇe vytvoˇren´e sbˇernice CAN na osobn´ım poˇc´ıtaˇci a se simul´atorem motoru. Pot´e byla aplikace slave pˇrenesena na mikrokontrol´er H8S/2638 osazen´y na desce Hi CPU2 vyroben´e firmou PiKRON. Aplikace master byla ponech´ana na osobn´ım poˇc´ıtaˇci a pˇr´ıstup na fyzickou sbˇernici CAN byl ˇreˇsen I/O kartou Kvaser PCIcan 4xHS do PCI slotu.
Literatura [1] Controller area network. http://en.wikipedia.org/wiki/Controller Area Network, 2008. [2] Internal site of Real-Time Systems group. http://rtime.felk.cvut.cz, 2008. [3] MAXON MOTOR. http://www.maxonmotor.com, 2008. [4] OCERA Make System homepage. http://rtime.felk.cvut.cz/omk, 2008. [5] PiKRON spol. s r.o. http://www.pikron.com, 2008. [6] Socket-can project homepage. http://developer.berlios.de/projects/socketcan/, 2008. [7] TYMA CZ spol. s r.o. http://www.tyma.cz, 2008. [8] ULMER spol. s r.o. http://ulmer.invite.cz, 2008. [9] UZIMEX spol. s r.o. http://www.uzimex.cz, 2008. [10] CAN IN AUTOMATION (C I A). CiA Draft Standard Proposal DSP-402: CANopen device profile for drives and motion control, 1998. http://www.can-cia.org. [11] CAN
IN
AUTOMATION (C I A). CiA 102 DS V2.0 CAN physical layer for industrial
applications, 1999. http://www.can-cia.org. [12] CAN
IN
AUTOMATION (C I A). CiA 301 DS V4.0.2: CANopen application layer and
communication profile, 2002. http://www.can-cia.org. [13] E LMO M OTION C ONTROL. CANopen DS 402 Implementation (Guide Ver. 1.2), 2006. http://www.elmomc.com/support. 67
68
LITERATURA
[14] F REESCALE S EMICONDUCTORS. MPC5200 Technical Data Sheet, 2006. http://www.freescale.com. [15] H EROUT, P. Uˇcebnice jazyka C–1. d´ıl, IV. pˇrepracovan´e vyd´an´ı. No. 80-7232-220-6. ˇ e Budˇejovice: Nakladatelstv´ı KOPP, 2004. Cesk´ [16] H EROUT, P. Uˇcebnice jazyka C–2. d´ıl, IV. pˇrepracovan´e vyd´an´ı. No. 80-7232-221-4. ˇ e Budˇejovice: Nakladatelstv´ı KOPP, 2004. Cesk´ [17] M AREK , S. Zaˇr´ızen´ı podporuj´ıc´ı komunikaˇcn´ı protokol CANopen. Diplomov´a pr´ace, ˇ CVUT–FEL, Katedra ˇr´ıdic´ı techniky, Praha, 2006. ´ [18] O BDR Zˇ ALEK , D. Eurobot 2007 rules – Czech version, 2006. http://www.eurobot.cz. [19] P´I Sˇ A , P. Uˇzivatelsk´y manu´al k jednotce MARS 2. PiKRON spol. s r.o., 2004. http://www.pikron.com/pages/products/motion control/mars 2. html. [20] R ENESAS T ECHNOLOGY C ORPORATION. H8S/263X Hardware Manual, 2007. http://eu.renesas.com/. ˇ [21] S KUP, K. Motion Control for Mobile Robots. Diplomov´a pr´ace, CVUT–FEL, Katedra ˇr´ıdic´ı techniky, Praha, 2007. [22] T ISSERANT, E., D UPIN , F., AND B ESSARD , L. CanFestival v3.0 Manual, 2007. http: //www.canfestival.org.
Pˇr´ıloha A Protokol o v´ypoˇctu pohonu
I
ˇ ´ ´ CTU PRˇ ILOHA A. PROTOKOL O VYPO POHONU
II
maxon selection program 2005 (V1.0)
1/4
maxon drive unit Gear
203116
GP 42 C
Gear reduction ratio 15:1, Preloaded ball bearings
Motor
272762
EC-max 30
60W, brushless, 2 Shaft ends, Ball bearings
Control
Key data of drive 12
Available motor voltage (= Umot)
533
No-load speed (at Umot)
V rpm
Load stall torque (theoretic, at Umot)
4630
mNm
Starting current (theoretic, at Umot)
26,8
A
Diameter Length
[ ] Scale motor
[ ] Output power (e)
[x] Working points
[ ] Efficiency (f)
[ ] Max. contin. torque motor (a)
[ ] Winding temperature (g)
[ ] Contin. current (b)
[ ] Max. contin. torque gear (h)
[ ] Max. current (c)
[ ] Max. torque gear (i)
[x] Max. voltage (d)
[ ] Max. speed gear (k)
Documentation / data sheet (272762 / 203116)
mm
119,4
mm
25
Ambient temperature (=Tamb)
© Copyright by maxon motor ag. All rights reserved.
42
°C
6.12.2006
III
maxon selection program 2005 (V1.0)
2/4
Power supply input Min. supply voltage
0
V
Max. supply voltage
12
V
Max. continuous current
10
A
Max. current (peak)
10
A
1
s
Max. duration of peak current
Drive parameter
Documentation / data sheet (272762 / 203116) © Copyright by maxon motor ag. All rights reserved.
6.12.2006
IV
ˇ ´ ´ CTU PRˇ ILOHA A. PROTOKOL O VYPO POHONU
maxon selection program 2005 (V1.0)
3/4
Motor order number
272762
EC-max 30, 60W, brushless, 2 Shaft ends, Ball bearings Motor data
Min.
Nominal
Assigned power rating
60
Nominal voltage
12
No-load speed Stall torque Speed-torque gradient
W V
7351
7990
8629
324
381
438
mNm
17
21,2
25,4
rpm/mNm
268
402
mA
0,447
0,478
No-load current Terminal resistance (phase to phase)
Max.
0,416
Ohm rpm
15000
Max. speed
rpm
Max. continuous current
4,39
A
Max. continuous torque
55,6
mNm
Reference speed
5000
rpm %
81
Max. efficiency Torque constant
13,1
14,2
15,3
mNm/A
Speed constant
618
672
726
rpm/V
Rotor inertia Terminal inductance (phase to phase)
ms
4,9
Mechanical time constant 19,7
21,9
24,1
0,0392
0,049
0,0588
gcm² mH
Therm. resistance winding-housing
0,5
K/W
Therm. resistance housing-ambient
7,4
K/W
Therm. time constant winding
2,7
s
1000
s
Therm. time constant stator Max. winding temperature Motor data at actual motor voltage and ambient temperature
155
°C
Nominal
Ambient temperature (=Tamb)
25
°C
Motor voltage (=Umot)
12
V
No-load speed (at Umot and Tamb)
7983
rpm
Stall torque (theoretic, at Umot and Tamb)
380
mNm
Starting current (theoretic, Umot and Tamb)
26,8
A
Max. continuous current (at Tamb)
4,39
A
Max. continuous torque (at Tamb)
62,3
mNm
Documentation / data sheet (272762 / 203116) © Copyright by maxon motor ag. All rights reserved.
6.12.2006
V
maxon selection program 2005 (V1.0)
4/4
Gear order number
203116
GP 42 C, Gear reduction ratio 15:1, Preloaded ball bearings Gear data Gear reduction ratio
15
:1
0
:1
81
%
Gear reduction absolute Gear efficiency Max. continuous gear torque Short-term torque Max. gear input speed
7500
mNm
11300
mNm
8000
Gear mass inertia
15
No of stages
2
rpm gcm² -
Controller order number
Sensors Sensor type
Sensor No.
Counts/turn
Channels
Line Driver
Max.freq.(kHz)
Brake
Encoder HEDL 5540
110514
500
3
Yes
100
No
Encoder
228452
500
3
Yes
200
No
Encoder
228456
1000
3
Yes
200
No
Documentation / data sheet (272762 / 203116) © Copyright by maxon motor ag. All rights reserved.
6.12.2006
VI
ˇ ´ ´ CTU PRˇ ILOHA A. PROTOKOL O VYPO POHONU
Pˇr´ıloha B V´ykresy nˇekter´ych mechanick´ych souˇca´ st´ı
VII
VIII
´ ´ ˇ ´ ´ ´ I´ PRˇ ILOHA B. VYKRESY NEKTER YCH MECHANICKYCH SOUCˇ AST
Obr´azek B.1: Kostra robota s um´ıstˇen´ym pohonem, sestava
IX
Obr´azek B.2: Spodn´ı deska kostry
X
´ ´ ˇ ´ ´ ´ I´ PRˇ ILOHA B. VYKRESY NEKTER YCH MECHANICKYCH SOUCˇ AST
Obr´azek B.3: Pˇredn´ı sbˇerac´ı mechanismus, sestava
XI
Obr´azek B.4: Pˇredn´ı sloupek r´amu kostry robota
XII
´ ´ ˇ ´ ´ ´ I´ PRˇ ILOHA B. VYKRESY NEKTER YCH MECHANICKYCH SOUCˇ AST
Obr´azek B.5: Pˇredn´ı v´yztuˇzn´y sloupek r´amu kostry robota
XIII
Obr´azek B.6: Pˇr´ıcˇ n´ık um´ıstˇen´y v pˇredn´ı cˇ a´ sti r´amu kostry
XIV
´ ´ ˇ ´ ´ ´ I´ PRˇ ILOHA B. VYKRESY NEKTER YCH MECHANICKYCH SOUCˇ AST
Obr´azek B.7: Blok loˇziska pohonn´eho kola
XV
Obr´azek B.8: Blok pro pˇripevnˇen´ı pohonn´eho motoru
XVI
´ ´ ˇ ´ ´ ´ I´ PRˇ ILOHA B. VYKRESY NEKTER YCH MECHANICKYCH SOUCˇ AST
Obr´azek B.9: Pohonn´e koleˇcko
XVII
Obr´azek B.10: Hˇr´ıdel pohonn´eho koleˇcka
XVIII
´ ´ ˇ ´ ´ ´ I´ PRˇ ILOHA B. VYKRESY NEKTER YCH MECHANICKYCH SOUCˇ AST
Obr´azek B.11: N´akres lokalizaˇcn´ıho maj´aku
Pˇr´ıloha C Obsah pˇriloˇzen´eho CD K t´eto pr´aci je pˇriloˇzeno CD, na kter´em jsou uloˇzeny zdrojov´e k´ody. Adres´aˇrov´a struktura je n´asleduj´ıc´ı. ./DP – tato diplomov´a pr´ace ve form´atu pdf. ./src – zdrojov´e k´ody pouˇzit´ych projekt˚u a vytvoˇren´ych aplikac´ı.
XIX