Mendelova univerzita v Brně Provozně ekonomická fakulta
Jednotka styku s robotem Bakalářská práce
Vedoucí práce: Dr. Ing. Radovan Kukla
Petr Hohn
Brno 2010
2 Zadání
Děkuji vedoucímu bakalářské práce, Dr. Ing. Radovanu Kuklovi, za pomoc při vypracovávání závěrečné práce, za poskytnutí rad, nápadů, nových poznatků z dané oblasti a morální podporu.
4
Prohlašuji, že jsem tuto bakalářskou práci vyřešil samostatně s použitím literatury uvedené v závěru práce.
V Brně dne 18. května 2010
....................................................
6
7
Abstract Hohn, P. Unit in contact with the robot. Bachelor thesis, Brno 2010 The aim of this present paper is to create connecting device between the robot and a computer, further to create controlling program to make the work with the robot easy and efective. In the introduction, the reader is introduced with mechanical part of the robot and its operating. In the next part, there is described a rational suggestion of connecting device following the suggestion of HW connecting device. After that, there is description of the created basic program equipment to control the robot. In this part, we deal with creation of program in the particular parts, inner structure of the program and its functions. The results of this paper is evaluation of the benefit connecting device and improvement of usage of the school robot for teaching at our faculty.
Abstrakt Hohn, P. Jednotka styku s robotem. Bakalářská práce, Brno 2010 Cílem bakalářské práce je vytvoření propojovacího zařízení mezi robotem a počítačem, dále vytvoření ovládacího programu pro snadnou a efektivní práci s robotem. V úvodu je čtenář seznámen s mechanickou konstrukcí robota a s jeho řízením. V další části je popsán logický návrh propojovacího zařízení, poté následuje návrh HW propojovacího zařízení. V další části je popsáno zhotovené základní programové vybavení pro ovládání robota. Zde je řešena tvorba programu v jednotlivých fázích, vnitřní strukturou programu a jeho funkcemi. Výstupem této práce je zhodnocení přínosu propojovacího zařízení a zvýšení využití školního robota pro výuku na naší škole.
8
9
OBSAH
Obsah 1 Úvod a cíl práce 11 1.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.2 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2 Teoretická část 2.1 Popis robota . . . . . . . . . . . . . . . . . . Určení a použití . . . . . . . . . . . . . . . . Funkce a popis . . . . . . . . . . . . . . . . 2.2 Krokové motory . . . . . . . . . . . . . . . . Unipolární řízení . . . . . . . . . . . . . . . Bipolární řízení . . . . . . . . . . . . . . . . Jednofázové versus dvoufázové řízení . . . . Řízení s plným versus polovičním krokem . . Bipolární jednofázové řízení s plným krokem 2.3 Automatizace . . . . . . . . . . . . . . . . . 2.4 Mechanická konstrukce robota . . . . . . . . 2.5 Výkonová část řízení robota . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
12 12 12 12 13 13 13 14 14 14 14 14 16
3 Zkušební propojovací zařízení 3.1 Popis a funkce použitých součástek . Modul UMP2: převodník USB–FIFO Vlastnosti modulu UMP2 . . . . . . 3.2 Popis zkušebního zařízení . . . . . . 3.3 Logický návrh řízení . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
17 17 17 17 18 20
. . . . .
. . . . .
. . . . .
. . . . .
4 Hardwarové řešení jednotky styku 4.1 Popis zařízení . . . . . . . . . . . 4.2 Návrh a tvorba tištěné desky . . . Informace o programu EAGLE . . Tvorba desky . . . . . . . . . . . 4.3 Popis konektoru Canon . . . . . .
s . . . . .
robotem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
21 21 21 21 22 22
5 Základní programové vybavení 5.1 Základní algoritmus . . . . . . . . 5.2 Programovací jazyk . . . . . . . . JNI – Java Native Interface . . . Swing . . . . . . . . . . . . . . . 5.3 Navázání spojení s robotem . . . 5.4 Základní metoda řízení robota . . Struktura řídicího slova . . . . . . 5.5 Pamět automatizovaného pohybu Práce s pamětí . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
23 23 24 25 25 26 26 27 28 28
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
10
OBSAH
5.6 5.7 5.8
5.9
Uložení paměti po ukončení programu . Načtení paměti při spuštění programu . Ovládací program . . . . . . . . . . . . Popis . . . . . . . . . . . . . . . . . . . Funkce . . . . . . . . . . . . . . . . . . Vývoj programu . . . . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
6 Možná rozšíření 6.1 Snímání fáze natočení krokového motoru . . . 6.2 Snímače krajních poloh ramen . . . . . . . . . 6.3 Snímače pro rozeznávání vybíraných předmětů 6.4 Rozšíření ovládacího programu . . . . . . . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
. . . .
. . . . . .
29 30 31 31 32 33
. . . .
34 34 34 34 35
7 Závěr
36
8 Literatura
38
Přílohy
39
A Řízení krokového motoru
40
B Výkonová část řízení robota
41
C Zkušební propojovací zařízení
42
D Hardwarové řešení jednotky styku s robotem
43
E Přiložené CD
44
1
ÚVOD A CíL PRÁCE
1 1.1
11
Úvod a cíl práce Úvod
V dnešní době se z důvodu dostupné automatizační technologie velice rozmáhá využívání počítačem řízených strojů. Většinou se jedná o manipulační ramena, která se používají na automatických montážních nebo výrobních linkách. Tyto stroje pak snadno nahradí lidského pracovníka, a tak šetří firmám prostředky. Zároveň dokážou zaručit požadovanou kvalitu vykonávané činnosti. Ve školní laboratoři se nachází robot „Oscarÿ, mechanické rameno, určený pro výukové účely a pro jednodušší průmyslové nebo laboratorní aplikace. Robot má vlastní ovládací jednotku s napájecím zdrojem a ovládacími tlačítky. Možnosti této ovládací jednotky pro využití robota jsou velice malé. Ovládání robota je pouze manuální. Automatického pohybu u tohoto robota nelze nijak dosáhnout. Ovládací jednotka je poměrně velká a těžká, náročná pro přenos, a tak omezuje použití robota na jiném místě.
1.2
Cíl práce
Cílem práce je vytvoření HW jednotky styku počítače využívající komunikaci USB s robotem a sestavení základního programového vybavení pro lepší a snadnější použití robota určeného pro vyukové učely. Výsledné zařízení zefektivní využití robota a přinese nové možnosti pro práci s ním. Díky novým možnostem využití moderního programovacího jazyka Java bude docíleno i automatického pohybu robota. Zároveň, díky malému lehkému propojovacímu zařízeni, bude robot snadno přenositelný a díky programu, který bude možné spustit na jakémkoliv počítači s nainstalovaným prostředím Java Runtime Environment, snadno použitelný kdekoliv. První část práce se zaměřuje na teorii, kterou je třeba znát k pochopení činnosti a řízení robota, a tudíž i k tvorbě propojovacího zařízení. Druhá část se zaměřuje na samotný postup tvorby propojovacího zařízení. To je zhotovení návrhu propojovacího zařízení, dále vytvoření zkušebního zařízení, testování a postupný vývoj a úpravy a nakonec i popis konečné tištěné desky propojovacího zařízení. Poslední část se věnuje programovému vybavení, které je velice důležité. Na jeho tvorbě závisí rozsah využití robota, proto se vývoji ovládacího programu věnuje velká pozornost. Popisuje se, jaké má program funkce a jaké jsou možnosti využití robota v praxi. V této části se také věnuje pozornost automatizaci pohybu robota, čímž je dosaženo jeho většího využití. Program je tvořem perspektivním programovacím jazykem Java, tudíž je otevřen možnostem dalšího rozšíření. Díky tomu může být docíleno většího využítí robota. V závěru se zhodnotí přínos našeho zařízení a programu, stanoví se možnosti pro úpravu robota a další možné rozšíření programu.
12
2 2.1
2
TEORETICKÁ ČÁST
Teoretická část Popis robota
Určení a použití
Obr. 1: Školní robot „Oscarÿ.
Školní robot „Oscarÿ je určen pro základní seznámení se základy robotiky, pro výukové účely a případně i pro jednodušší průmyslové nebo laboratorní aplikace. Robota lze použít ve spojení se zdrojem, řídicí jednotkou a vhodným mikropočítačem. (NISA) Funkce a popis U školního robota „Oscarÿ je použito nejjednodušší schéma se třemi stupni volnosti a chapadlem. K pohonu slouží tři krokové motory s aktivním rotorem (magnetický materiál typu Sm–Co) s počtem kroků 100/ot, statickým vazebním momentem 70 mN.m a nejvyšším rozběhovým kmitočtem 550 Hz. První motor, uložený uvnitř základny škříňové konstrukce, otáčí ramenem přes reduktor se dvěma páry čelních ozubených kol (modul = 1; převodový poměr = 50). Zbývající dva motory zajišťují zdvih ramene a paže pomocí pohybového šroubu a matice. Na šroubu je použit jednochodý lichoběžníkový závit o stoupání 2 mm. Motor je s pohybovým šroubem spojen pružnou spojkou, (teflonová) matice je uložena výkyvně na čepech. Jednoduché chapadlo má také krokový motor pro možnost otevírání a zavírání chapadla. Nedílnou součástí robota je řídicí elektronika a napájecí zdroj. (NISA)
2.2
2.2
Krokové motory
13
Krokové motory
Krokový motor je speciální druh vícepólového synchronního motoru. Využívá se především tam, kde je potřeba přesně řídit nejen otáčky, ale také konkrétní polohu rotoru. Používají se v přesné mechanice, regulační technice, robotice apod. Základní princip krokového motoru: proud procházející cívkou statoru vytvoří magnetické pole, které přitáhne opačný pól magnetu rotoru. Motor je schopný v této poloze přesně stát. Vhodnou kombinací zapojení cívek vznikne rotující magnetické pole, které nejenže otáčí rotorem, ale zabezpečuje i jeho přesnou polohu vůči statoru. Kvůli přechodovým jevům je rychlost otáčení motoru limitovaná. Při jeho překročení motor začne ztrácet kroky. (Řezáč, 2002)
Obr. 2: Krokový motorek.
Unipolární řízení Při unipolárním řízení prochází proud v jednom okamžiku právě jednou cívkou. Motor s tímto buzením má nejmenší odběr, ale také poskytuje nejmenší krouticí moment. Výhodou tohoto řešení je jednoduché zapojení řídicí elektroniky - v podstatě stačí jeden tranzistor na každou cívku. Pro menší motory lze použít integrovaný obvod ULN2803. V jednom pouzdře je dostatek budičů pro řízení dvou motorů. (Řezáč, 2002) Bipolární řízení Při bipolárním řízení prochází proud vždy dvěma protilehlými cívkami. Ty jsou zapojené tak, že mají navzájem opačně orientované magnetické pole. Motor v tomto režimu poskytuje větší krouticí moment, ovšem za cenu vyšší spotřeby. Pro řízení jsou zapotřebí 2 H-můstky - pro každou větev jeden. To ve výsledku znamená složitost zapojení a větší počet kontrolních linek (jejich počet lze zredukovat pomocí přídavné logiky). (Řezáč, 2002)
14
2
TEORETICKÁ ČÁST
Jednofázové versus dvoufázové řízení Jednofázové řízení znamená, že magnetické pole generuje pouze jedna cívka (případně dvojice cívek při bipolárním buzení). Při dvoufázovém řízení generují shodně orientované magnetické pole vždy dvě sousední cívky. Daní za vyšší krouticí moment je dvojnásobná spotřeba oproti řízení jednofázovému. (Řezáč, 2002) Řízení s plným versus polovičním krokem Řízení s plným krokem znamená, že na jednu otáčku je potřeba přesně tolik kroků, kolik zubů má stator daného motoru. Dosáhneme ho použitím kterékoliv doposud uvedené metody řízení. Řízením s polovičním krokem dosáhneme dvojnásobné přesnosti. Technicky se jedná o střídání kroků s jedno- a dvoufázovým řízením. (Řezáč, 2002) Bipolární jednofázové řízení s plným krokem Měření a graf motoru ze školního robota viz příloha, obr. 9 Tab. 1: Bipolární řízení krokového motoru
1. cívka 2. cívka 3. cívka 4. cívka
2.3
1. fáze 2. fáze 3. fáze 4. fáze − 0 + 0 0 − 0 + + 0 − 0 0 + 0 −
Automatizace
Automatizace označuje použití řídicích systémů (např. regulátorů, počítačů, snímačů) k řízení průmyslových zařízení a procesů. Z pohledu industrializace jde o krok následující po mechanizaci. Zatímco mechanizace poskytuje lidem k práci zařízení, které jim usnadňuje práci, automatizace snižuje potřebu přítomnosti člověka při vykonávání určité činnosti. (Chvála, 1989) Za splnění ideálního předpokladu, tzv. komplexní automatizace, by teoreticky mohlo dojít až k vyřazení člověka z příslušného výrobního procesu. V praxi se prozatím jeví tato možnost jako neuskutečnitelná.
2.4
Mechanická konstrukce robota
Mechanické části robota jsou zhotovené z běžných hliníkových profilů. Změna polohy ramen robota se uskutečňuje pomocí krokových motorů přes šroubové převody takto: 1. Otáčení robota motorem M1
2.4
Mechanická konstrukce robota
15
2. Pohyb ramene v předozadním směru motorem označeným M2 3. Pohyb ramene ve svislém směru motorem M3 4. Pohyb pro rozevírání resp. zavírání chapadla motorem M4 (NISA) Krokové motory, které používá školní robot, jsou bipolární, každý motor má čtyři vstupy. Řízení těchto motorů je jednofázové s plným krokem1 .
Obr. 3: Boční pohled robota a popis důležitých částí.
Základ robota tvoří základna (1), která v sobě obsahuje první krokový motor M1, sloužící pro otáčení robota v obou směrech, a dále obsahuje základní hardwarové vybavení, zakladovou desku s výkonnou řídicí částí pro ovládání celého robota. Otáčení robotem je omezeno mechanickými zarážkami v obou směrech. Další částí robota je jeho hlavní rameno (2), které umožňuje pohyb robota v předozadním směru. Toto hlavní rameno je ovládáno pomocí krokového motoru M2. Rozsah pohybu je omezen mechanickými zarážkamiv krajních polohách šroubového převodu. Další částí robota je jeho vedlejší rameno (3), které slouží pro pohyb robota ve svislém směru. Vedlejší rameno je ovládáno přes šroubový převod motorem M3. Rozsah ramene je taktéž omezen mechanickými zarážkami v obou krajních polohách. Poslední důležitou částí robota je jeho chapadlo CH, které slouží pro uchopení a přenesení různých předmětů. Chapadlo je ovládáno motorem M4. Tento motor umožňuje chapadlo rozevírat a zavírat. Rozsah pohybu je omezen mechanickými zarážkami. 1
Možností řízení krokových motorů je více, zde je řešeno pouze řízení, které slouží k ovládání motorů použitých u školního robota. Více o dalších způsobech řízení i s animacemi lze nalézt na http://robotika.cz/articles/steppers/cs
16
2
2.5
TEORETICKÁ ČÁST
Výkonová část řízení robota
Ze schématu na obr. 10, zapojení řídicí výkonné části, si lze všimnout, že pro ovládání robota je připraveno šest vstupů. Řízení robota, díky této výkonné části, je zajišťováno šesti logickými hodnotami (úrovně TTL2 ). O řízení krokových motorů, a tudíž i celého robota logickými hodnotami se stará vhodné zapojení elektronických součástek, kterými jsou odpory, logická hradla, čítače, paměti a převodníky pulzů na spouštěcí signály krokových motorů. Ve školním robotovi jsou použity krokové motory s bipolárním řízením. První dva ovládací vstupy jsou určeny pro volbu pohybu robota dopředu nebo dozadu3 . Další čtyři vstupy slouží pro výběr krokového motoru, který je potřeba aktivovat4 . Aby se krokový motor robota mohl aktivovat, je potřeba nejdříve poslat log. L5 na jeden ze vstupů SEL 0–3 podle toho, který motor má být vybrán, poté je potřeba na jeden ze dvou směrových vstupů přivést impulzový signál. Motor na směrovém vstupu reaguje na vzestupnou hranu signálu. Když mu pošleme signál o hodnotě log. L a po něm druhý signál log. H, motor se aktivuje a vykoná pohyb o velikosti jednoho kroku. Impulzový signál je takový signál, který neustále, s konstantní časovou proměnnou, střídá hodnoty log. L a log. H. Ideální frekvence potřebného impulzového signálu pro správný chod motorů je 300 Hz. Pro dosažení této frekvence je potřeba změna logických hodnot v intervalu tří milisekund. Na všechny vstupy pro vybrání motoru SEL 0–3 je přes odpor přivedeno napětí pět voltů. To zajišťuje neustálou logickou úroveň log. H na vstupech. Odpory počátečního stavu nastavují logické úrovně do neaktivních hodnot (To jest úroveň log. H). Pokud je potřeba vybrat motor pro pohyb, musí se přivést na jeden ze vstupů SEL 0–3 signál o úrovni log. L. Dále už stačí poslat impulzový signál na směrový vstup podle toho, kterým směrem chceme motor otočit, a vybraný motor je v pohybu.
2
TTL je standardem používaným pro implementaci logických integrovaných obvodů, vycházejícím z použití technologie bipolárních křemíkových tranzistorů. Obvody technologie TTL používají napájecí napětí 5 V, z čehož vyplývá pro logickou jedničku napětí přibližně 5 V, pro logickou nulu napětí přibližně 0 V. 3 CD – směr pohybu dozadu, CU – směr pohybu dopředu 4 SEL 0 – výběr motoru pro otáčení, SEL 1 – výběr motoru vedlejšího ramene, SEL 2 – výběr motoru hlavního ramene, SEL 3 – výběr motoru chapadla 5 Logická úroveň log. L, nazývaná jako logická nula, interpretuje napětí 0 V až 0.8 V. Logická úroveň log. H, nazývaná jako logická jednička, interpretuje napětí 2 V až 5 V
3
ZKUŠEBNí PROPOJOVACí ZAŘíZENí
3
17
Zkušební propojovací zařízení
3.1
Popis a funkce použitých součástek
Modul UMP2: převodník USB–FIFO
Obr. 4: Modul Ump2.
UMP2 je modul založený na integrovaném obvodu FT245BL firmy FTDI, který umožňuje velmi snadné připojení uživatelské aplikace k PC pomocí sběrnice USB, aniž by byly nutné jakékoli předchozí znalosti o problematice USB.(Asix, 2010) UMP2 je převodník mezi sběrnicí USB a 8-bitovou obousměrnou datovou sběrnicí se čtyřmi signály řídícími tok dat. Modul UMP2 umožňuje přenos dat rychlostí až 1 MB/s. Navíc modul obsahuje externí paměť EEPROM umožňující identifikaci VID a PID6 .(Asix, 2010) Mechanicky je modul řešen v provedení DIP28 se standardní roztečí 2,54 mm. Je možné jej vložit do obyčejné i precizní patice nebo přímo zaletovat do desky plošných spojů. Tím se značně zjednoduší práce při vývoji a malosériové výrobě.(Asix, 2010) Konektor USB se k modulu připojuje externě, což dává konstruktérovi volnost při výběru připojení - lze použít konektor typu ’A’ nebo ’B’, popř. přímo kabel k USB portu počítače. Navíc se mechanická konstrukce nemusí podřizovat umístění konektoru na desce.(Asix, 2010) Velkou výhodou je i to, že ovladače pro Windows 98SE/ME/2K/XP, Mac a Linux jsou volně k dispozici na stránkách výrobce FTDI7 , stejně jako příklady softwarových aplikací včetně zdrojových kódů. (Asix, 2010) Vlastnosti modulu UMP2 • • • • • 6
Datové vstupy/výstupy 3,0 až 5 V - CMOS kompatibilní Napájení modulu ze sběrnice USB nebo externí Přenosová rychlost až 1 MByte / sec při použití ovladačů D2XX Vyrovnávací paměť pro příjem 384 byte Vyrovnávací paměť pro vysílání 128 byte
VID neboli Vendor ID, je identifikační číslo výrobce modulu UMP2. PID, neboli Product ID, je identifikační číslo modulu UMP2 7 http://www.ftdichip.com/
18
3
ZKUŠEBNí PROPOJOVACí ZAŘíZENí
• Protokol USB 1.1, USB 2.0 kompatibilní • BitBang režim umožňující využití datové sběrnice jako 8-bitové I/O sběrnice • Signál SI/WU8 určený k optimalizaci datového toku nebo k probuzení PC z režimu snížené spotřeby • Signál PWREN9 určený k řízení tranzistoru MOSFET s P-kanálem u aplikací s odběrem proudu z USB nad 100 mA (max. 500 mA) • Podpora OEM aplikací (VID a PID produktu uloženo v paměti EEPROM, která je součástí modulu) • Možnost využití volné kapacity v EEPROM (64x16 bitů volné kapacity) • Ovladače pro WIN 98/2K/ME/XP/CE, Mac OS8/OS9/OS X a Linux zdarma • Modul je určen pro zasunutí do patice DIL28, nebo pro montáž do PCB (Asix, 2010)
3.2
Popis zkušebního zařízení
Prvním krokem bylo zhotovení propojovacího zařízení na nepájivém poli s výstupy navedenými přes odpory na Led diody pro prvotní odzkoušení. Vzhled zařízení lze nalézt v příloze na obrázku 12. Toto zkušební zařízení sloužilo pro odzkoušení komunikace mezi počítačem a převodníkem UMP2. Zkušební zařízení nemělo možnost připojení k robotu, výstup byl simulován jen Led diodami pro ověření a vyzkoušení správných výstupních logických hodnot vyvíjeného programového vybavení. Na zkušebním zařízení se nacházel USB kabel, který byl napojen na modul UMP2. Modul UMP2 byl napájen z počítačového zdroje přes USB kabel. Z modulu UMP2 bylo vyvedeno šest výstupů, potřebných pro ovládání školního robota, přes odpory na diody. Všechny diody byly přivedeny na zem, která je zabezpečována také počítačovým zdrojem přes USB kabel. Po připojení tohoto zkušebního zařízení k počítači je potřeba nainstalovat potřebné ovladače k modulu UMP2, aby s ním mohl počítač správně komunikovat10 . Dále je nutné nainstalovat program Mprog 3.5 pro nastavení vlastností uložených ve vnitřní paměti modulu UMP2, jako jsou jméno modulu, jeho sériové číslo a další různé vlastnosti11 . (UMP2, 2010) Pro odzkoušení správných logických hodnot na výstupu byl zhotoven prvotní zkušební ovládací program. Program byl tvořen v jazyce Java. Aby jazyk komunikoval se zařízením, je potřeba nahrát knihovny a dokumentace k němu. Pomocí příkazů získaných z dokumentace se naváže spojení se zařízením a dále lze pracovat na ovládacím programu. V první verzi zkušebního ovládacího programu bylo zařazeno ovládání všech čtyř motorů po jednom kroku oběma směry. Program obsahoval čítač, kolik kroků celkem udělal každý motor, uměl několik základních věcí: vrátit se do výchozí polohy, 8
SI/WU – Send Immediate/WakeUp pro nakonfigurování u USB v log. L 10 Ovladače k modulu UMP2 lze nalézt zde: http://www.ftdichip.com/FTDrivers.htm 11 Program lze najít na internetové adrese http://www.ftdichip.com/Resources/Utilities.htm 9
3.2
Popis zkušebního zařízení
19
vynulovat čítač a udělat pohyb podle toho, kolik kroků mu bylo zadáno. Funkce vrátit se do výchozí polohy a funkce pohyb podle kroků fungovaly pouze na jeden směr, a to na směr dopředu.
20
3.3
3
ZKUŠEBNí PROPOJOVACí ZAŘíZENí
Logický návrh řízení
Obr. 5: Logický návrh řízení.
Po připojení zařízení a spuštění ovládacího programu se nachází řízení robota v klidovém stavu. V klidovém stavu na vstupech pro výběr ramen SEL0–3 jsou nastaveny logické úrovně na hodnotu log. H a na vstupech pro výběr směru CD a CU jsou nastaveny logické úrovně na hodnotu log. L. Tento klidový stav je nutný pro následné řízení robota. Klidový stav je potřebný pro přechody mezi výběrem motorů, ale není neustále stejný. Po každém vykonání pohybu některým z motorů se klidový stav mění. Pro výběr kteréhokoliv motoru se vždy vychází z klidového stavu. Nejdříve se musí vybrat směr a po dokončení pohybu jedním motorem je nutné přejít zpět do klidového stavu. Klidový stav se využívá i při přechodu z jednoho motoru na druhý, vždy může být aktivní pouze jeden motor. Při výběru motoru, který se má stát aktivním, je potřeba určit i směr pohybu a potom se na jeho vstupu nastaví logická úroveň na hodnotu log. H. V tomto okamžiku musí být pro správný chod motoru na vstupu opačného směru nastavena logická úroveň na hodnotu log. L. Při manipulaci s robotem nesmí být v jednom okamžiku vybráno více motorů současně. Proto je důležité ošetřit řízení tak, aby k výběru více ramen v jednom okamžiku nedošlo. K tomu slouží návrat do klidového stavu vždy po manipulaci s kterýmkoliv motorem. Z tohoto logického návrhu řízení se odvíjí celé programové vybavení.
4
HARDWAROVÉ ŘEŠENí JEDNOTKY STYKU S ROBOTEM
4
21
Hardwarové řešení jednotky styku s robotem
Jelikož testy zkušebního propojovacího zařízení ve školní laboratoři dopadly dobře, následovala výroba tištěné desky, která má sloužit pro propojení robota s počítačem.
4.1
Popis zařízení
Výsledné propojovací zařízení, jak si lze všimnout z obr. 13, bylo proti zkušebnímu zařízení ještě mírně upraveno. Na hardwarovém propojovacím zařízení přibyl konektor pro přivedení napájecího napětí pro napájení integrovaného obvodu a robota. Zařízení lze napájet z počítačového zdroje. K napájení integrovaných obvodů byly přidány keramické kondenzátory, které zabezpečují správný chod obvodu s logickými hodnotami. Na desce přibyl také integrovaný obvod 74ls 38, který v sobě ukrývá čtyři dvojvstupá hradla NAND. Výstupy hradel jsou tranzistory s otevřeným kolektorem. Tento integrovaný obvod byl přidán z důvodu zabezpečení správných hodnot na vstupech pro výběr motorů SEL 0–3. Na těchto vstupech je po připojení ke zdroji nastavena logická úroveň na hodnotu log. H, která zabezpečuje klidový stav před výběrem motoru. Pro výběr požadovaného motoru je potřeba na jeho vstupu logická úroveň o hodnotě log. L. Proto využíváme obvod 74ls 38, aby zde byla opravdu správná logická úroveň. (Syrovátko, 1984) Po přidání negovaných hradel na vstupy výběru motorů nastala změna pro identifikaci výběru motorů. Signalizace zapojená oproti zemi byla změněna na zapojení oproti plusu. Na desce přibyl patnáctipinový dvouřadý konektor canon, který slouží k připojení robota. Robot se ovládá i napají přes tento jediný konektor.
4.2
Návrh a tvorba tištěné desky
Informace o programu EAGLE Editor plošných spojů EAGLE je uživatelsky přívětivý a výkonný nástroj pro návrh desek plošných spojů (DPS, PCB). Název EAGLE je zkratka pocházející z původního názvu Easily Applicable Graphical Layout Editor. (Eagle, 2002) Program se skládá ze tří hlavních modulů (Editor spojů, Editor schémat a Autorouter), které jsou ovládány z jednoho uživatelského prostředí. Proto není třeba konvertovat netlisty mezi schématy a deskami12 . (Eagle, 2002) 12
Více informací o programu eagle, jeho vlastnosti, rady, jak s ním pracovat, nebo dokonce freeware verzi pro vyzkoušení lze nalézt na oficiálnch českých internetových stránkách http//www.eagle.cz
22
4
HARDWAROVÉ ŘEŠENí JEDNOTKY STYKU S ROBOTEM
Tvorba desky Schéma bylo vytvořeno pomocí počítačového programu EAGLE. V tomto programu byla ze schématu zapojení vytvořena podoba desky tištěného spoje. Nasledovalo zhotovení desky podle mého návrhu. Nakonec byla deska osazena součástkami a oživena.
4.3
Popis konektoru Canon
Robot byl do školy dodán se zdrojem pro manuální ovládání. K tomuto zdroji se robot připojoval přes dnes již nepoužívaný konektor FRB. Na hardwarové jednotce styku s robotem je použit patnáctipinový dvojřadý konektor Canon. Aby bylo možné robota s tímto propojovacím zařízením spojit, musel se konektor robota vyměnit z FRB na požadovaný patnáctipinový dvojřadý Canon. Nové zapojení konektoru lze nalézt v následující tabulce. Tab. 2: Rozložení vstupů na konektoru
Pin 1 2 3 9 10 11 6 7 8 13 14 15
Sel 2 Sel 3 Cu Sel 0 Sel 1 Cd +12 V GND +5 V +12 V GND +5 V
Popis výběr motoru 3 – pohyb vedlejšího ramena výběr motoru 4 – zavírání a rozevírání chapadla směr pohybu 1 výběr motoru 1 – otáčení základny výběr motoru 2 – pohyb hlavního ramena směr pohybu 2 napájecí napětí 12 V uzemění napájecí napětí 5 V napájecí napětí 12 V uzemění napájecí napětí 5 V
Nová technická dokumentace pro zařízení jednotky styku s robotem bude přidána ke stávající dokumentaci o robotu „Oscarÿ zařazena do části řízení robota.
5
ZÁKLADNí PROGRAMOVÉ VYBAVENí
5 5.1
23
Základní programové vybavení Základní algoritmus
Obr. 6: Zakladní algoritmus celého programového vybavení.
Základem celého programového vybavení je tento algoritmus, který se neustále opakuje dokola. Využívá se jak při manuálním ovládání robota, tak i při automatizovaném pohybu robota. V automatizovaném pohybu je využívána posloupnost tohoto algoritmu, která probíhá postupným načítáním hodnot z připravené paměti pro automatizovaný pohyb. Algoritmus vždy začíná v klidovém stavu robota, o kterém byla zmínka již dříve. V klidovém stavu algoritmus také končí. To je potřebné pro zachování klidového stavu mezi přechody pro výběr motorů. Po startu se vybírá požadovaný pohyb. Podle podmínky pro směr pohybu je vybrán pohyb směr 1, resp. pohyb směr 2. Po výběru pohybu následuje další podmínka, a to pro určení požadovaného motoru k aktivaci. Při aktivaci vybraného
24
5
ZÁKLADNí PROGRAMOVÉ VYBAVENí
motoru je proveden vybraným krokovým motorem jeden krok. Dále proběhne navýšení, nebo snížení daného počítadla. Poslední dva příkazy je možné dle potřeby opakovat ve smyčce k tomu určené. Počítadlo pro kroky má v algoritmu velký význam. Bez tohoto počítadla by nebylo možné zjistit rozsah pohybu na veškerých motorech ani by nebylo možné docílit automatizovaného pohybu. Počítadlo tedy slouží pro přehled provedených kroků oběma směry na obou ramenech, na chapadýlku i na otáčecí základně. Tím je přesně identifikována poloha jednotlivých mechanických částí. Dále slouží pro automatizaci robota. Využívají ho speciální funkce robota, jako je návrat do výchozí polohy a pohyb podle předem zadaného programu činosti.
5.2
Programovací jazyk
Pro svoji práci jsem zvolil programovací jazyk Java. Java je objektově orientovaný programovací jazyk, který vyvinula firma Sun Microsystems a představila 23. května 1995. Java je jedním z nejpoužívanějších programovacích jazyků na světě. Díky své přenositelnosti je používán pro programy, které mají pracovat na různých systémech počínaje čipovými kartami (platforma JavaCard), přes mobilní telefony a různá zabudovaná zařízení (platforma Java ME), aplikace pro desktopové počítače (platforma Java SE) až po rozsáhlé distribuované systémy pracující na řadě spolupracujících počítačů rozprostřených po celém světě (platforma Java EE). Tyto technologie se jako celek nazývají platforma Java. Dne 8. května 2007 Sun uvolnil zdrojové kódy Javy (cca 2,5 miliónů řádků kódu) a Java bude dále vyvíjena jako open source. (Dione, 2002) Oproti svému předchůdci Java neobsahuje některé konstrukce, které způsobovaly při programování největší potíže, a navíc přidává mnoho užitečných vlastnosti, nad kterými zajásá nejeden programátor, například: • Přidělování a uvolňování paměti je zde obstaráno automaticky (pomocí garbage collectoru). Objekt se neruší pomoci delete nebo free(), ale pouze se ”nabídne” ke zrušení (např. přiřazením neplatné reference null). • Klasický problém z C/C++, je zde zcela odstraněn, neboť ukazatele zde prostě nejsou (resp. jsou nahrazeny referencemi). Dereferencování samozřejmě provádí překladač. Programátor je zde ušetřen notorické chyby zápisu pointerem mimo data (po němž na Unixu následuje obvykle SEGFAULT a na MS-DOSu program většinou zkolabuje). • Je implementován mechanismus vláken (threads), a lze tudíž spouštět více úloh v rámci jednoho programu. Bylo samozřejmě pamatováno i na jejich synchronizaci pomocí tzv. monitorů. • Vytvořené objekty lze automaticky serializovat, tj. ukládat do souboru, zasílat po síti apod. • Lze provádět reflexi neboli zjišťování informací o objektu (jaké má proměnné, metody atd.).
5.2
Programovací jazyk
25
• Je implementován mechanizmus výjimek, takže veškeré runtime chyby je možné odchytit a zpracovat. Výjimky jsou samozřejmě objektové, takže lze zachytit i celou hierarchii výjimek v jednom hlídaném bloku. • Značným ulehčením pro programátory je obsáhlost standardně dodávaných knihoven, se kterou se nemůže srovnávat asi žádný běžně používaný jazyk. K dispozici jsou knihovny pro tvorbu grafického uživatelského rozhraní (GUI), vstup/výstup, práci s textem, komunikaci s SQL databázemi, práci s komprimovanými soubory a mnoho dalších! • Java klade značný důraz na bezpečnost. Díky tomu, že je překládaná do bytecodu (viz dále), a implementovaným bezpečnostním mechanismům (podepisování kódu a přidělování práv pro různé akce), lze zajistit, že program v Javě, který uživatel získá ze stránek poskytovatele, mu nezformátuje disk, nebude komunikovat s žádným jiným počítačem, než ze kterého pochází atd. • Z předcházejích charakteristik vyplývá, že jazyk Java je velice jednoduchý, přehledný a srozumitelný.Při osvojování základů Javy nadělá začátečník podstatně méně chyb než při studiu C/C++. (Dione, 2002) Velkou výhodou Javy je také její hardwarová nezávislost, neboť je překládána do speciálního mezikódu (bytecode), který je na konkrétním počítači nebo zařízení (PC, handheld, mobilní telefon apod.) interpretován, příp. za běhu překládán do nativního kódu (tzv. JIT - Just-In-Time compilerem). Programátor tedy může napsat javovský program například na PC pod Windows a spustit jej na PC s Linuxem, na MacIntoshi, SGI, DEC - zkrátka všude, kde je k dispozici Java runtime. (Dione, 2002) JNI – Java Native Interface Rozhraní umožňující propojit kód běžící na virtuálním stroji Javy s nativními programy a knihovnami napsanými v jiných jazycích – např. C, C++, Assembler apod., které jsou zkompilované pro určitý hardware, případně operační systém. Jedná se tedy o jakýsi převodní můstek, pomocí kterého se můžeme dostat za hranice virtuálního stroje. (Oracle, 2010) Umožňuje tak používat specifické rysy konkrétního operačního systému a komunikovat s hardwarovými zařízeními. Swing Swing je knihovna uživatelských prvků na platformě Java pro ovládání počítače pomocí grafického rozhraní. Knihovna Swing poskytuje aplikační rozhraní pro tvorbu a obsluhu klasického grafického uživatelského rozhraní. Pomocí Swingu je možno vytvářet okna, dialogy, tlačítka, rámečky, rozbalovací seznamy atd. . . (Oracle, 2010)
26
5.3
5
ZÁKLADNí PROGRAMOVÉ VYBAVENí
Navázání spojení s robotem
Pro navázání spojení mezi robotem a počítačem má největší význam modul UMP2, který slouží jako převodník komunikace ze seriové (USB) na komunikaci paralelní. Paralelní komunikace obsahuje osm výstupů. Pro ovládání školního robota je využito pouze šest výstupů, zbývající dva jsou zatím nevyužity. Modul UMP2 obsahuje vlastní paměť, do které si ukládá identifikační údaje. Pro možnost ovládat toto zařízení přes programovací jazyk Java je výrobcem vytvořena speciální knihovna Ftd2xxj. Tuto knihovnu společně s dokumentací lze nalézt na stránkách společnosti FTDI. V první řadě je potřeba otevřít komunikační kanál. K tomu složí následující příkazy: Device[] devices = Service.listDevices(); Device device = devices[0]; device.open(); DeviceDescriptor descriptor = device.getDeviceDescriptor(); Pomocí těchto příkazů je možné pracovat a komunikovat s propojovacím zařízením. Proměnná „deviceÿ slouží pro přístup k metodám potřebným k práci s hardwarem. Nejdůležitější metody jsou „readÿ a „writeÿ, díky těmto metodám může zařízení přijmout, nebo odeslat pole bytu. Proměnná „descriptorÿ slouží pro popis zařízení, nebo k přistoupení k jeho paměti. Na závěr programu je nutné ukončit spojení příkazem „closeÿ. (FTDI, 2010)
5.4
Základní metoda řízení robota
Zavolání této metody vykoná posunutí prvního motoru robota o jeden krok směrem jedna. Tato metoda vychází ze základního algoritmu a tvoří nejdůležitější část ovládacího programu. device.getOutputStream().write(4); device.getOutputStream().flush(); device.getOutputStream().write(5); device.getOutputStream().flush(); Thread.sleep(cas); device.getOutputStream().write(4); device.getOutputStream().flush(); pocitadlo.zvysOtoceni();
5.4
Základní metoda řízení robota
27
První příkaz slouží k zapsání na výstup zařízení hodnotu řídicího slova o velikosti čtyři. Druhý příkaz slouží k odeslání této hodnoty robotovi. Hodnotou řídíciho slova čtyři je vybrán první motor. Na ostatních vstupech jsou jen logické hodnoty log. L. V druhé dvojici příkazu je navíc poslán impulz na směrový vstup, který docílí pohybu motoru o velikosti jednoho kroku. Motor reaguje na vzestupnou hranu. Pátý příkaz drží předchozí hodnotu po námi zadaný čas v milisekundách. Tímto příkazem je možné nastavovat frekvenci mezi přepínáním impulzů na směrových vstupech. Tímto příkazem je tedy ovlivněna rychlost otáčení krokového motoru. Další dvojice příkazu nastaví opět na směrové vstupy logické hodnoty log. L. Tímto je docílen klidový stav a je možné znovu vybrat buď stejný, nebo kterýkoliv jiný motor. Poslední příkaz slouží k navýšení počítadla o jeden krok. Díky počítání provedených kroků je možné kontrolovat stavy provedených kroků na všech motorech a dále je možné docílit i automatizovaného pohybu robota. Tato metoda slouží pro pohyb prvního motoru směrem jedna. Metody pro pohyb ostatních motorů jsou velmi podobné, liší se pouze v jiné hodnotě řídicího slova na výstupu zařízení13 . Struktura řídicího slova
Obr. 7: Rozložení bitů řídíciho slova pro výběr prvního motoru směrem 1.
Modulu UMP2, sloužící k převodu mezi sériovou (USB) a paralelní (8–bitovou datovou) komunikací, se při zápisu na výstup posílá dekadická hodnota. Při zápisu na výstup dochází k převodu hodnoty z dekadické na binární z důvodu rozložení správných logických hodnot do 8–bitové datové sběrnice. Pro správné řízení je potřeba znát převod mezi binární a dekadickou soustavou. 13
Názvy metod a těla metod i s hodnotami se nacházejí v příloze ve zdrojovém kódu.
28
5
ZÁKLADNí PROGRAMOVÉ VYBAVENí
Pro správné řízení robota, musí být řídicí slovo nejprve navrženo v binární podobě, poté převedeno do dekadické podoby. Dekadickou podobu řídicího slova je potřeba znát při práci v programovacím jazyce. Na obr. č 7 je struktura řídicích slov potřebná pro otočení prvního motoru o jeden krok směrem jedna. První dva bity slouží pro výběr směru, další čtyři bity slouží pro výběr motoru, poslední dva bity jsou zatím nevyužity. Do budoucna se mohou využít pro zpětnou komunikaci s robotem. V prvním kroku je vybrám první motor, kterému odpovídá třetí bit. Jeho hodnota se tedy změní na log. H. Ostatní bity zůstávají v hodnotě log L. V druhém kroku zůstává vybrám první motor, dále je vybrám první bit určený pro pohyb směrem jedna. Tímto krokem je motor aktivován a vykoná činost o velikosti jednoho kroku. Třetím krokem je na prvním směrovém bitu nastavena opět hodnota log. L, která zabezpečuje klidový stav před výběrem dalšího motoru. Tato struktura odpovídá základní metodě řízení. Řídicí slovo v prvním kroku má dekadickou hodnotu čtyři. Řídicí slovo v druhém kroku má dekadickou hodnotu pět.
5.5
Pamět automatizovaného pohybu
Pro docílení automatizovaného pohybu robota, je potřeba paměť, která si bude pamatovat postupné kroky činnosti robota. Jelikož robot ke svému pohybu využívá krokové motory, je potřeba tedy v jednom záznamu evidovat vybraný motor, směr pohybu a počet provedených kroků. Robot využívá ke své manipulaci čtyři krokové motory. Při jeho pohybu jsou evidovány různé stavy pohybu podle výběru ramene a směru pohybu. Pro jeho otáčení se do paměti ukládá buď OtoceniVpred, nebo OtoceniVzad. Při práci ramen se ukádájí do paměti tyto možné stavy: PrvniRamenoVpred, DruheRamenoVpred, PrvniRamenoVzad, DruheRamenoVzad. Při práci s chapadlem je uloženo do paměti buď ChapadloOtevri, nebo ChapadloZavri. Za stavem pohybu je evidován také počet provedených kroků, aby bylo možné pohyb znovu přesně zopakovat. Jeden záznam v paměti vypadá tedy následovně: „OtoceniVpred 45ÿ. Paměť v programovacím jazyku Java je řešena jako kolekce po sobě jdoucích postupných záznamech. Implementace v jazyce Java vypadá takto: private List<String> pamet1 = new ArrayList<String>(); Práce s pamětí Metoda pro vykonání automatizovaného pohybu uloženého v paměti: private String[] pole; private String rameno; private int kroky;
5.6
Uložení paměti po ukončení programu
29
void zopakuj(List<String> pamet, Robot oscar){ for (String s : pamet) { pole = s.split(" "); rameno = pole[0]; kroky = Integer.parseInt(pole[1]); for (int i = 0; i < kroky; i++) { if (rameno.equals("OtoceniVpred")) { oscar.PrvniKrok(); } else if (rameno.equals("OtoceniVzad")) { oscar.PrvniKrokVzad(); Metoda zde není celá, jde jen o ukázku řešení prvního motoru určeného pro otáčení robotem. Jak již bylo zmíněno, jeden záznam má podobu např. „OtoceniVzad 45ÿ. V začátku metody probíhá cyklus určený pro procházení kolekce. V každém cyklu se vezme jeden záznam a rozdělí se na informaci o pohybu<String> a na počet provedených kroků
14 . Následuje další cyklus, který se opakuje podle zjištěného počtu kroků a vykovává pohyb podle zjištěného požadovaného pohybu. (Sun, 2010)
5.6
Uložení paměti po ukončení programu
K ukládání všech čtyř pamětí určených pro automatizovaný pohyb po ukončení programu je využito funkce programovacího jazyka Javy, která se nazývá „Serializaceÿ. Serializace je konverze obecných dat (nějakým způsobem uložených) na sekvenci bytu tak, aby je šlo následně snadno zrekonstruovat. Java pro serializaci vytvořila dvě třídy. Pro jednoduché datové typy slouží třída DataOutputStream a pro složitější objekty slouží třída ObjectOutputStream.(Jedlička, 2008) Ukázka využití serializace pro uložení jedné z pamětí: try { ObjectOutputStream pam1 = new ObjectOutputStream( new FileOutputStream("pam1.dat")); pam1.writeObject(pamet1); } catch (FileNotFoundException e) { e.printStackTrace(); } 14
proměnná String - řetězec, proměnná Integer - číselná hodnota
30
5
ZÁKLADNí PROGRAMOVÉ VYBAVENí
Jelikož jako paměť pro automatizovaný pohyb slouží objekt datového typu kolekce, resp. typu List<String>, byla použita pro serializaci dat třída ObjectOutputStream. První příkaz vytvoří objekt a určí cestu a název souboru, do kterého se data po ukončení programu uloží15 . V druhém příkazu převedeme pomocí metody určené pro zápis dat data z paměti na sekvenci bytů do souboru. Vše musí být z bezpečnostních důvodů ošetřeno proti výjimkám. Tyto příkazy se provádí při stisknutí tlačítka pro ukončení programu.
5.7
Načtení paměti při spuštění programu
K ukládání pamětí po vypnutí programu je použita funkce Javy „Serializaceÿ. K načtení dat po znovuspuštění programu je použita funkce „Deserializaceÿ, která slouží k rekonstrukci sekvence bytu na data použitelná v programu. (Jedlička, 2008) Java pro deserializaci vytvořila dvě třídy. Pro jednoduché datové typy slouží třída DataInputStream a pro složitější objekty slouží třída ObjectInputStream. Ukázka načtení dat do jedné z pamětí: File f1 = new File("pam1.dat"); if(f1.exists()){ ObjectInputStream is1 = new ObjectInputStream (new FileInputStream("pam1.dat")); try { pamet1 = (List<String>) is1.readObject(); } catch (ClassNotFoundException e) { e.printStackTrace(); }} Data se při spuštění programu načítají ze souboru. Proto hned první příkaz vytváří proměnnou typu soubor, do které jsou načtena data ze souboru. Dále je potřeba ověřit, zda daný soubor existuje, či nikoliv. Pokud existuje, vytvoří se objekt třídy ObjectInputStream, který provede rekonstrukci sekvence bytu na data použitelná v programu. Z toho objektu je už pak jednoduše převeden obsah do proměnné určené pro paměť automatizovaného pohybu. Při převodu je nutné provést přetypování z obecného datového typu Object na požadovaný typ List<String>. Část pro převod dat je potřeba z bezpečnostních důvodů ošetřit proti výjimkám. 15
Pokud není cesta zadána, soubor se uloží do pracovní složky projektu.
5.8
Ovládací program
5.8
31
Ovládací program
Popis Program je tvořen pěti třídami. Větší počet tříd je efektivnější a přehlednější. V třídě určené pro grafické rozhraní už tedy nejsou dlouhé řádky kódu, ale jsou zde většinou volány již hotové potřebné metody jiných objektů. Tento způsob řešení je objektově orientovaný. První třída se nazývá „Citacÿ a je určena pro práci a evidenci s kroky. Druhá třída se nazývá „Pametÿ a slouží pro provádění automatizovaného pohybu. Tato třída využívá kolekce pro ukládání záznamů o vykonaném pohybu robota. Jeden záznam obsahuje informaci, který motor je vybrán, jeho směr pohybu a vykonaný počet kroků. Třetí třída „vychoziPolohaÿ slouží k návratu robota do výchozí polohy. Obsahuje pouze jednu metodu, která robota vrátí do výchozí polohy. Tuto třídu využívá tlačítko „výchozí polohaÿ. Dále je třída volána při ukončování programu. Čtvrtá třída „Robotÿ je velice důležitá. Zde je řešeno navázání spojení s robotem, ovládání robota a evidence kroků u všech motorů za využití třídy „Citacÿ. Umožňuje také výpis informací o propojovacím zařízení a je zde ošetřeno i ukončení spojení s robotem. Poslední třída se nazývá „Grafikaÿ. Zde je tvořeno grafické uživatelské rozhraní. Dále je zde zabezpečena funkčnost jednotlivých tlačítek. Tato třída využívá většinu tříd celého programu. Je zde využita třída Robot, VychoziPoloha i Pamet. V poslední třídě se dále nachází hlavní spouštěcí metoda celého programu „mainÿ. V této metodě se vytvoří uživatelské okno, vytvoří se objekty tříd Robot, VychoziPoloha a Pamet, které jsou potřebné pro práci s robotem. Bez jejich vytvoření třída nemůže využívat jejich metody. Zdrojový kód obsahuje popisky metod pro přehlednost. V případě rozšiřování programu jiným programátorem bude práce jednodušší. Zdrojový kód obsahuje 1500 řádků.
32
5
ZÁKLADNí PROGRAMOVÉ VYBAVENí
Obr. 8: Uživatelské rozhraní pro práci s robotem.
Funkce Ovládácí program je zhotoven moderním programovacím jazykem Java, díky tomu může být snadno spustitelný na kterékoliv platformě (OS + HW16 ), na které je nainstalováno prostředí Java Runtime Environment a která podporuje USB komunikaci. Uživatelské rozhraní je vytvořeno jako Swing aplikace. Aplikace pro ovládání robota je uložena v PC ve školní laboratoři, kde probíhalo testování a ladění programu. Z obrázku č. 8 si lze všimnout, že program je tvořen z několika částí. První část je manuální řízení robota. Uživatel si může vybrat směr pohybu a dále může pohybovat kterýmkoliv ramemen, otáčet robotem a rozevírat a zavírat chapadlo. Robot se pohybuje po dobu stisknutého tlačítka. Druhou částí je čítač kroků. Ten ukazuje počet kroků u jednotlivých motorů, které byly vykonány. U čítače se nachází tlačítko „nastav výchozí polohuÿ. Tímto tlačítkem robotovi nastavíme jeho výchozí polohu. Robot se do výchozí polohy nastaví při ukončení programu. Třetí částí ovládacího programu je možnost provedení předem zadaného počtu kroků u jednotlivých motorů. Tato možnost je první způsob automatického pohybu. Jeho činnost je ale omezená pouze na jeden směr. Čtvrtou částí programu jsou funkce zaměřené na automatizaci robota. V nabídce „speciální funkceÿ lze vrátit robota do výchozí polohy a dále se zde nachází 16
OS – Operační systém, HW – Hardware
5.9
Vývoj programu
33
možnost zopakování předem určeného pohybu. Před začátkem pohybu, který si má robot zapamatovat, je potřeba robota vrátit do výchozí polohy a použít tlačítko „vymaž paměťÿ. Poté je manuálně proveden pohyb pro zapamatování. Při použítí tlačítka „zopakujÿ je pohyb automaticky proveden. Před zopakováním pohybu je dobré vrátit robota do výchozí polohy, aby byl automatizovaný pohyb přesný. Poslední částí ovládacího programu je paměť pro automatické pohyby. Do paměti lze uložit několik úloh, pomocí kterých mohou být vykonávány různé pracovní postupy. Do paměti lze uložit až čtyři různé úlohy, do budoucna se dá paměť rozšířit na více úloh. Paměť je svázána s nabídkou „speciální funkceÿ. Pokud se zde naučí robot nějaký pohyb, může se uložit do některé ze čtyř pamětí. Poté stačí použít tlačítko „vymazat paměťÿ a robot je připraven k učení dalšího automatického pohybu, který lze uložit do další paměti. Pohyb uložený v paměti lze provést v části „proveďÿ. Zde je jen potřeba vybrat jednu ze čtyř pamětí a stisknout tlačítko proveď. Při použití uložení automatizovaného pohybu do paměti se po ukončení a následném znovuspuštění programu pohyby do paměti znovu automaticky nahrají tak, jak byly uloženy před ukončením programu. Pohyb v paměti lze kdykoliv nahradit jiným pohybem. Při ukončení programu se robot automaticky vrátí do své výchozí polohy, dále je nastaven klidový stav logických hodnot na jeho řízení, provede se uložení všech pamětí do souboru, ukončí se spojení s robotem a teprve nakonec je program ukončen.
5.9
Vývoj programu
V první verzi software bylo zařazeno ovládání všech čtyř motorů po jednom kroku oběma směry, dále obsahoval čítač kroků pro každý motor a dále uměl vrátit robota do výchozí polohy, vynulovat čítač a udělat pohyb podle předem zadaného počtu kroků. Následovalo rozšíření programu. Tlačítka čtyř ramen, která mohla robota posunout pouze o jeden krok, byla předělána na tlačítka, která při stlačení neustále pohybují motory. Při uvolnění se motor samozřejmě zastaví. Dále přibyla k čítači kroků hlídajícímu vzdálenost od základní polohy i paměť všech pohybů, směrů a počtu provedených kroků. Paměť zaznamenává postupnou práci robota. Příklad: udělali jsme 20 kroků prvním motorem vpřed, dále 10 kroků prvním motorem vzad, atd. Paměť nám danou hodnotu vypisuje na obrazovku pro ujištění, že zaznamenává správné hodnoty. Také přibylo tlačítko „Konecÿ, které v první řadě nastaví na vstupních hodnotách robota logické 0 pro stav klidu a dále ukončí právě vykonávanou aplikaci. Posledním rozšířením programu bylo přidání paměti pro vykonávání automatického pohybu a jeho zálohování do souboru a také načtení automatického pohybu při znovuspuštění ovládacího programu zpět do paměti. Při ukončení programu byla přidána funkce, která vrací robota zpět do výchozí polohy.
34
6
6
MOŽNÁ ROZŠíŘENí
Možná rozšíření
Jak se lze dozvědět v kapitole Mechanické části robota, školní robot má rosah pohybu všech svých pohybových částí omezen pouze mechanickými zarážkami. V případě, že se robot nachází například hlavním ramenem v horní poloze těsně před mechanickým dorazem a dostane příkaz udělat 200 kroků horním směrem a poté 200 kroků zpět, je očekáváno, že se bude robot nacházet ve stejné poloze, z které začínal vykonávat pohyb. Program i přes to, že je to nemožný úkol, pohyb provede bez nějakých potíží. Vrátí se i zpět do výchozí polohy, ale už neví, že si výchozí polohu změnil a to může narušit jeho další činnost při vykonávání automatizovaného pohybu. Při najetí do krajní polohy se rameno mechanicky zastaví a motorek po dobu vykonávání pohybu má zablokovanou hřídel a pohyb ramene se neprovede. V této situaci se stává virtuální poloha rozdílnou od reálné. Když dostane příkaz k pohybu v opačném směru, začne se opět pohybovat bez potíží. Automatizovaná práce robota je tedy závislá na správném předem určeném pohybu, který bude robot následně provádět. Při učení robota se musí hlídat rozmezí pohybu, v kterém je robot schopný správně pracovat. Tento problém je možné vyřešit různými způsoby:
6.1
Snímání fáze natočení krokového motoru
Při ovládání robota se používá pouze komunikace směrem k robotovi. Chybí zpětná komunikace, která by informovala programové vybavení o skutečně vykonaném pohybu. Program tedy pouze odešle požadavek na pohyb a musí se spolehnout, že požadovaný pohyb byl vykonán. Doplněním snímání pohybu natočení krokových motorů do jeho výkoné řídící části se dá kontrolovat přesná poloha a vykonaný pohyb motorů.
6.2
Snímače krajních poloh ramen
K zabránění ztrátě kroků v mezních polohách jde docílit přidáním snímačů právě do mezních poloh. Kdyby motor najel do mezní polohy, snímač by poslal signál programovému vybavení, a ten by mohl vykonávaný pohyb zastavit a zahlásit, že se nachází v krajní poloze. Nedocházelo by tak ke ztrátě kroků a tím pádem ani k narušení automatizovaného pohybu. Z kapitoly Navázání spojení s robotem vyplývá, že toto rozšíření by nevyžadovalo moc velký zásah do řídicí části robota, protože na jeho řízení je využito pouze šest logických vstupů, ale k dispozici jich je osm. Pro zpětnou komunikaci tedy mohou být využity zbylé dva nevyužívané logické vstupy.
6.3
Snímače pro rozeznávání vybíraných předmětů
Pro efektivnější využití robota v linkové výrobě, lze chapadlo doplnit o snímání braných předmětů. Pomocí spolupráce snímače a programového vybavení lze docílit
6.4
Rozšíření ovládacího programu
35
rozeznávání předmětů, které mají být přemístěny. Robot bude schopen rozlišit pozici umístění předmětů podle jejich tvaru.
6.4
Rozšíření ovládacího programu
Při zabudování zmíněného snímání do školního robota, by musel být rozšířen ovládací program o zpětnou komunikaci. Program by odeslal požadavek na pohyb, poté by obdržel informaci o provedeném pohybu a musel by kontrolovat, zda byl pohyb opravdu proveden správně. Dále by kontroloval krajní polohy. V případě najetí do mezní polohy ukončí pohyb a zahlásí uživateli, že se nachází v mezní poloze. Pomocí snímání krajních poloh a snímání fázového natočení motorů, může být vždy zabezpečena přesná výchozí poloha robota. I po ukončení programu a mechanickém posunu ramen, bude robot schopný vrátit se do své výchozí polohy. Program využívá čtyři paměti pro automatizovaný pohyb. Možným rozšířením by bylo neomezené ukládání automatizovaného pohybu. Uživatel by si při uložení nevybíral přímo již vytvořenou paměť, ale napsal by název svého pohybu a on by se automaticky vytvořil a uložil. Mohlo by v ovládacím programu také přibýt tlačítko pro mazání automatizovaných pohybů z paměti. Díky tomu, že programové vybavení je tvořeno moderním jazykem Java, jsou možnosti rozšíření rozsáhlé.
36
7
7
ZÁVĚR
Závěr
Cílem práce bylo vytvořit propojovací zařízení mezi robotem a počítačem podporující komunikaci USB, kterým bude možno školního robota „Oscaraÿ řídit pomocí jakéhokoliv počítače s prostředím Java Runtime Environment. Dále bylo potřeba zhotovit k tomuto zařízení uživatelské programové vybavení pro snadnější a efektivnější práci s robotem, a zvýšit tak jeho využitelnost pro laboratorní výuku. Požadovaného cíle bylo dosaženo, propojovací zařízení i ovládací program jsem zhotovil a odskoušel. Díky mnou navrženému a vytvořenému propojovacímu zařízení školní robot „Oscarÿ pracuje za pomoci počítače. Práce s robotem byla testována ve školních laboratořích přes mnou zhotovené propojovací zařízení. Propojovací zařízení je velice malé a lehké, díky tomu přenosné. Zařízení obsahuje světelnou identifikaci pro výběr ramene a směr pohybu, dále konektor pro připojení robota a USB kabel pro připojení počítače. Zařízení je nutné napájet pomocí počítačového zdroje. Přes propojovací zařízení je napájen i robot. Programové vybavení jsem zhotovil programovacím jazykem Java, který je v dnešní době jeden z nejpoužívanějších. Program obsahuje uživatelské rozhraní pro snadné ovládání a umožňuje robota ovládat jak manuálně, tak i pomocí automatizovaného pohybu.V manuálním režimu si uživatel vybere směr pohybu a dále může pohybovat kterýmkoliv ramemenem, otáčet robotem a rozevírat a zavírat chapadlo. Robot se pohybuje po dobu stlačeného tlačítka. Druhou částí je čítač kroků, který ukazuje počet kroků vykonaných u jednotlivých motorů. U čítače se nachází tlačítko „nastav výchozí polohuÿ. Tímto tlačítkem robotovi nastavíme jeho výchozí polohu. Robot se do výchozí polohy pak nastaví automaticky po ukončení programu. V automatickém režimu jsou dvě možnosti ovládání. V první možnosti můžeme zadat u jednotlivých motorů přesný počet kroků, které má vykonat. Jeho činnost je ale omezená pouze na jeden směr. V druhé možnosti robota požadovaný pohyb naučíme a on je poté schopný ho sám zopakovat. Program obsahuje paměť pro automatické pohyby. Do paměti lze uložit několik úloh, pomocí kterých mohou být vykonávány různé pracovní postupy. Do paměti lze uložit až čtyři různé úlohy, do budoucna se dá paměť rozšířit na více úloh. Při použití uložení automatizovaného pohybu do paměti se po ukončení a následném znovuspuštění programu pohyby do paměti znovu automaticky nahrají tak, jak byly uloženy před ukončením programu. Pohyb v paměti lze kdykoliv nahradit jiným pohybem. K vytvoření propojovacího zařízení i ovládacího programu byly potřeba poznatky z dostupné literatury, která obsahovala informace o školním robotovi, modulu UMP2, krokových motorech a jejich řízení, programu Eagle pro návrh schématu zapojení a návrh tištěné desky, dalších použitých součástek a programovacím jazyku Java. Propojovací zařízení spolu s ovládacím programem budou použity pro práci s robotem „Oscarÿ ve školních laboratořích jako pomůcka ve výuce, a tak se docílí většího využití robota. Díky docílenému automatizovanému pohybu byly vytvořeny nové možnosti pro práci s robotem, může například simulovat stroj z pásové výroby.
7
ZÁVĚR
37
Díky modernímu programovacímu jazyku, v kterém je vytvořen ovládací program, může být využití robota snadno rozšiřitelné. Při doplnění robota o snímání, které je popsáno v kapitole Možnosti rozšíření, bude možno efektivnost robota „Oscarÿ ještě více rozšířit.
38
8
8
LITERATURA
Literatura
CHVÁLA B, – NEDBAL, J. Automatizace. 3. vyd. Praha: SNTL - Nakladatelství technické literatury, 1989. 608. Jedlička P. Prezentace k vyuce, Programovací jazyk Java . Brno 2008. NISA st. p. Výrobní dokumentace k robotu „Oscarÿ. Výrobce: Nisa st, p., Jablonec n. N., ČSFR. Syrovátko M„ Černoch B. Zapojení s integrovanými obvody. 2. upravené vydání, Praha SNTL 1984. Asix s. r. o. Modul UMP2: převodník USB-FIFO [online]. c1991–2010 [cit. 2010-0318]. Dostupný z WWW: . c CadSoft Computer GmbH Translation 2001 ELCAD v.o.s. Eagle online [online]. 2002 [cit. 2010-03-24]. Dostupný z WWW: . Dione. programovací jazyk Java [online]. 2010 [cit. 2010-03-26]. Dostupný z WWW: . FTDI. Chip Home Page [online]. 2010 [cit. 2010-03-20]. Dostupný z WWW: . Oracle Corporation. Java native interface [online]. 2010 [cit. 2010-03-26]. Dostupný z WWW: . Oracle Corporation. Swing [online]. 2010 [cit. 2010-03-26]. Dostupný z WWW: . Řezáč Kamil. Krokové motory [online]. 2002 [cit. 2010-03-16]. Dostupný z WWW: . Sun Microsystems. Java SE 7 API Documentation [online]. 2010 [cit. 2010-04-3]. Dostupný z WWW: . UMP2 modul: navázání spojení [online]. 2010 [cit. 2010-03-18]. Dostupný z WWW: .
Přílohy
40
A
A
Řízení krokového motoru
Obr. 9: Řízení krokového motoru školního robota.
ŘíZENí KROKOVÉHO MOTORU
B
B
VÝKONOVÁ ČÁST ŘíZENí ROBOTA
Výkonová část řízení robota
Obr. 10: Schéma výkonové části řízení robota.
41
42
C
C
ZKUŠEBNí PROPOJOVACí ZAŘíZENí
Zkušební propojovací zařízení
Obr. 11: Zkušební programové vybavení.
Obr. 12: Zkušební propojovací zařízení.
D
D
HARDWAROVÉ ŘEŠENí JEDNOTKY STYKU S ROBOTEM
Hardwarové řešení jednotky styku s robotem
Obr. 13: Schéma HW propojovacího zařízení.
Obr. 14: HW propojovací zařízení.
43
44
E
E
Přiložené CD • Zdrojové kódy programového vybavení • Text a zdrojové soubory bakalářské práce • Animace robota
PŘILOŽENÉ CD