Bankovní institut vysoká škola Praha Katedra informačních technologií a elektronického obchodování
Návrh procesu řízení pneumatického manipulátoru Bakalářská práce
Autor:
Jaroslav Čunát, DiS. Informační technologie, Manaţer projektů
Vedoucí práce:
Ing. Bc. Miroslav Paul
Písek
Červenec 2009 1
Prohlášení: Prohlašuji, ţe jsem bakalářskou práci zpracoval samostatně a s pouţitím uvedené literatury.
................................ V Písku dne 10. 7. 2009
Jaroslav Čunát, DiS.
2
Poděkování Děkuji tímto Ing. Bc. Miroslavu Paulovi za odborné vedení, za rady a za čas, který mi během tvorby této práce věnoval. Dále bych chtěl poděkovat vedení SPŠ a VOŠ Písek za umoţnění zkoušky programů na pneumatickém manipulátoru ve školních laboratořích.
3
Anotace práce: Cílem bakalářské práce je návrh řízení a vizualizace barvení výrobků pomocí pneumatického manipulátoru. Jedná se o návrh a realizaci řídícího a vizualizačního programu. Kaţdý výrobek umístěný v zásobníku projde během jednoho cyklu soustavou pneumatických motorů, které jej přemístí do lakovny, a po uplynutí prodlevy (simulující proces barvení) umístí do skladu. Barvený výrobek představují plastové a dřevěné kostky. Celý proces je moţné ovládat a sledovat na počítači, panelovém počítači Tempo a v případě potřeby také přes vygenerovanou internetovou stránku. Výsledkem práce je program, realizující cyklus barvení a dvě varianty vizualizačního programu (pro PC a panelový počítač Tempo). Vše je plně funkční a ověřené na soustavě pneumatického manipulátoru v laboratoři automatizace na SPŠ a VOŠ Písek.
Work synopsis: The intention of this bachelor work is design and visualization of the product coloring with the aid of a pneumatic manipulator. It is the design and implementation of a control and visualization program. Each product placed in a magazine will go through a system of pneumatic motors during one cycle. These motors displace the product to a painting shop and after reaction delay, which simulates the coloring process, transport the product to a storeroom. The colored products are plastic and wooden bricks. The complete process can be controlled and watched with a computer, board computer Tempo and if need through a generated web site. The result is a program, which realizes the coloring cycle and two options of a visualization program (for PC and for board computer Tempo). All is full operational and verify on the system of the pneumatic manipulator in the laboratory of automation in the high school SPS and VOS Pisek.
4
Obsah Úvod ...................................................................................................................................... 7 1
Teoretická část projektu ............................................................................................. 8 1.1
Popis soustavy pneumatického manipulátoru ......................................................... 8
1.2
Pouţité zařízení ....................................................................................................... 9
1.2.1
Seznam pouţitého zařízení .............................................................................. 9
1.2.2
Ovládání motorů ............................................................................................ 10
1.2.3
Funkce jednotlivých motorů .......................................................................... 10
1.3
Základní parametry programovatelného automatu ............................................... 12
1.3.1
Všeobecný popis ............................................................................................ 12
1.3.2
Princip vykonávání uţivatelského programu ................................................ 12
1.3.3
Cyklické vykonávání uţivatelského programu ............................................. 12
1.4
Vývojové prostředí Mosaic ................................................................................... 13
1.4.1
Specifikace vývojového prostředí ................................................................. 13
1.4.2
Vlastnosti a hlavní součásti vývojového prostředí ........................................ 13
1.4.3
Moţnost on-line změny programu PLC ........................................................ 14
1.4.4
Komunikační moţnosti .................................................................................. 14
1.5
Vývojové prostředí Control web........................................................................... 15
1.5.1
Specifikace prostředí a základní vlastnosti .................................................... 15
1.5.2
Dvojcestné programování .............................................................................. 15
1.5.3
Virtuální přístroj Draw .................................................................................. 16
1.5.4
HTTP server jako virtuální přístroj ............................................................... 16
1.6
Panelový počítač TEMPO..................................................................................... 19
1.7
Teorie modelování procesů pomocí notace BPMN .............................................. 20
1.7.1
Co je BPMN .................................................................................................. 20
1.7.2
Syntaxe BPMN .............................................................................................. 21
1.8
Vizualizace pomocí diagramů UML ..................................................................... 25 5
2
3
4
5
6
7
1.8.1
Způsob pouţití UML ..................................................................................... 25
1.8.2
Případy uţití (Use case) ................................................................................. 25
1.8.3
Stavové diagramy UML ................................................................................ 27
Analýza problému pomocí procesního modelování................................................ 28 2.1
Specifikace poţadavků od zadavatele ................................................................... 28
2.2
Návrh procesů v grafické notaci BPMN ............................................................... 30
Vizualizace pomocí diagramů UML ........................................................................ 38 3.1
Případy uţití (Use case) ........................................................................................ 38
3.2
Stavový diagram pneumatického manipulátoru.................................................... 40
Realizace ovládacího programu ve vývojovém prostředí Mosaic ........................ 41 4.1
Způsob programování ........................................................................................... 41
4.2
Připojení k PLC .................................................................................................... 41
Vizualizace a ovládání procesů pro uživatele PC ................................................... 42 5.1
Realizace programu .............................................................................................. 42
5.2
Panel indikace ....................................................................................................... 42
5.3
Panel vizualizace................................................................................................... 44
Vizualizace a ovládání procesů pro obsluhu panelového počítače Tempo .......... 45 6.1
Hlavní odlišnosti oproti programu pro PC ............................................................ 45
6.2
Grafická úprava..................................................................................................... 45
6.3
Syntaxe.................................................................................................................. 45
Vizualizace a ovládání procesů přes internet .............................................................. 47
Závěry a doporučení.......................................................................................................... 50 Seznam použité literatury ................................................................................................. 52 Klasické zdroje ................................................................................................................ 52 Elektronické zdroje .......................................................................................................... 52 Manuály a nápovědy programů ....................................................................................... 53
6
Úvod Automatizace se v poslední době stává důleţitou součástí výrobního procesu ve většině středních a velkých firem. Její zavedení poskytuje moţnost produkovat velké objemy výrobků za přijatelné ceny, coţ představuje pro firmy velkou konkurenční výhodu. To můţe být zvláště dnes klíčem k přeţití společností a překonání hospodářské recese. Těţko si lze představit, jak by mohl podnik vyrábějící auta cenově konkurovat bez moderní výrobní linky. Dá se říci, ţe automatizace je velkým přínosem pro produktivitu a kvalitu výroby. Její implementace do výrobního procesu ale také zahrnuje velké počáteční investice a v neposlední řadě zvýšené nároky na kvalifikaci zaměstnanců. Před samotnou realizací projektu implementace je tedy zapotřebí zváţit veškerá rizika s tím spojená, včetně odhadu ziskovosti a návratnosti vloţené investice. Po té jiţ nic nebrání modernizaci výroby pomocí automatizace. Předmětem této bakalářské práce je návrh řízení a vizualizace výrobního procesu podle poţadavků zadavatele. V tomto případě je zadavatelem škola a mým cílem bylo vytvoření programů, které umoţní obsluze pneumatického manipulátoru řídit výrobu (v případě potřeby ze vzdáleného místa) a poskytnou dostatek informací o průběhu dílčích výrobních operací. V souvislosti s tím bude dalším úkolem návrh opatření a změn, vedoucích ke zvýšení efektivity a kvality procesu.
7
1 Teoretická část projektu 1.1 Popis soustavy pneumatického manipulátoru Projekt je realizován pomocí zařízení od firmy SMC Industrial automation s. r. o. a automatu Tecomat TC651 s rozšiřujícím modulem TC 626 od firmy Teco a. s. Je zde pouţito celkem 6 hybných motorů (M0, M1, M2, M3, M4, M5) a vakuová přísavka s ejektorem (E0). Pro chod manipulátoru je dále zapotřebí vzduchový kompresor, ventilový blok, panel se START a STOP tlačítkem a měřič vakua. Manipulátor je umístěn v laboratoři automatizace na SPŠ a VOŠ Písek. K softwarové realizaci byla vyuţita vývojová prostředí Mosaic od firmy Teco a. s. a Control web (verze CW2000 a CW5) od firmy Moravské přístroje a. s.
Obrázek 1.1 Soustava pneumatického manipulátoru
8
1.2 Pouţité zařízení 1.2.1 Seznam pouţitého zařízení PLC Tecomat TC651 (obr. č.: 1.1, pozice 6) Rozšiřující modul TC 626 (obr. č.: 1.1, pozice 7) M0 – dvojčinný kompaktní válec ECDQ2B 125-30 DC (obr. č.: 1.1, pozice 1) M1 – dvoupístnicový otočný stůl MSQB10A (obr. č.: 1.1, pozice 2) M2 – třípolohový kyvný pohon MSZB30A (obr. č.: 1.1, pozice 3) M3 – dvoupístový válec s kluzkým vedením CXSM20-100 (obr. č.: 1.1, pozice 3) M4 – kompaktní suport s valivým vedením MXS12-30 (obr. č.: 1.1, pozice 3) M5 – kompaktní suport s valivým vedením MXW16-200B (obr. č.: 1.1, pozice 4) E0 – ejektor Snímač vakua řady ZSE (obr. č.: 1.1, pozice 11) Ventilový blok (obr. č.: 1.1, pozice 9) Vzduchový kompresor (obr. č.: 1.1, pozice 10) Stykač se START a STOP tlačítkem (obr. č.: 1.1, pozice 8) Pozn.: Motory M2, M3 a M4 spolu s přísavkou ejektoru tvoří rameno manipulátoru (obr. č.: 1.1, pozice 3), které je detailněji zachyceno na obr. č.: 1.2.
Obrázek 1.2 Rameno pneumatického manipulátoru 9
1.2.2 Ovládání motorů Motory M0, M1, M3, M4 jsou ovládány ventily s bistabilním elektromagnetickým ovládáním (např. motor M0 se nachází v první stabilní poloze K01, kdyţ je zasunutý a ve druhé stabilní poloze K02, kdyţ je vysunutý). Motor M2, tj. 3 polohový kyvný pohon (základna ramene manipulátoru) je ovládán následujícím způsobem: střední poloha – bez signálu (1. stabilní poloha) poloha vlevo – signál M2K21 (2. stabilní poloha) poloha vpravo – signál M2K23 (3. stabilní poloha) Motor M5 (posuvný dopravník) je připojen k ventilovému bloku přes řízené škrtící ventily. Posun vlevo resp. vpravo je řízen signálem do 1. nebo 2. elektromagnetu. Poloha je snímána pěti kontaktními snímači polohy. V případě, ţe je elektroventil bez signálu, dojde k zastavení suportu v aktuální poloze. Stabilizaci polohy zajišťují škrtící ventily. Vakuový ejektor s přísavkou je ovládán monostabilním elektroventilem. Pokud je signál aktivní, je aktivní i přisávání, pokud je signál zrušen, ukončí to funkci uchopení předmětu. [2] 1.2.3 Funkce jednotlivých motorů První z řady motorů je M0, umístěný u kluzkého dopravníku se zásobníkem na kostky (obr. č.: 1.1, pozice 1). Jeho úkolem je vysunutí nejspodnější kostky ze zásobníku. Ta posune řadu dalších, které jsou umístěny na dopravníku a poslední z nich (nejblíţe u konce dopravníku) je přesunuta do přihrádky motoru M1. Motor M1 (obr. č.: 1.1, pozice 2) přesune kostku na místo, ze kterého ji převezme rameno manipulátoru sloţené z motorů M2, M3 a M4 (obr. č.: 1.1, pozice 3). M2 ovládá horizontální otáčení základny ramene. Výchozí poloha je střed. M2 se otáčí o 90° vlevo nebo o 90° vpravo vhledem ke střední poloze K22. Dvojice motorů M3 a M4 slouţí k přiblíţení k barvenému předmětu. M3 vysouvá rameno, kde je umístěn motor M4 s přísavkou. M4 ovládá polohu přísavky vertikálně (horní pozice pro přesouvání ramene a dole při zdvihání nebo uvolňování břemene). Motor M5 (obr. č.: 1.1, pozice 4) je posuvný dopravník (kompaktní suport), který přemisťuje kostku do polohy pro obarvení a následně zpět pod rameno manipulátoru. Mezi jednotlivými přesuny je realizována časová prodleva 5 sekund, simulující barvení kostky.
10
Ovládání vakua je realizováno pomocí proměnné V0_motor. Pokud je proměnná V0_motor nastavena na „true“, zapne se nasávání a trvá aţ do okamţiku, kdy proměnná V0_motor je opět změněna na „false“. Úroveň vakua je sledována na snímači vakua řady ZSE od firmy SMC (obr. č.: 1.1, pozice 11). V případě dosaţení předepsané úrovně podtlaku je do stavu „true“ nastavena proměnná indikující uchopení kostky.
11
1.3 Základní parametry programovatelného automatu 1.3.1 Všeobecný popis Programovatelný automat (dále jen PLC – Programmable Logic Controller) je číslicový řídící elektronický systém určený pro řízení procesů prostředí.
Pouţívá
programovatelnou
paměť
pro
vnitřní
v průmyslovém
ukládání
uţivatelsky
orientovaných instrukcí, jeţ slouţí k realizaci specifických funkcí pro řízení různých druhů strojů nebo procesů prostřednictvím číslicových nebo analogových vstupů a výstupů. [8] Firma Teco a. s. vyrábí PLC systémy pod ochrannou známkou Tecomat. 1.3.2 Princip vykonávání uţivatelského programu Řídící algoritmus programovatelného automatu je zapsán jako posloupnost instrukcí v paměti uţivatelského programu. Centrální jednotka postupně čte z této paměti jednotlivé instrukce, provádí příslušné operace s daty v zápisníkové paměti a zásobníku, případně provádí přechody v posloupnosti instrukcí, je-li instrukce ze skupiny organizačních instrukcí. Jsou-li provedeny všechny instrukce poţadovaného algoritmu, provádí centrální jednotka aktualizaci výstupních proměnných do výstupních periferních jednotek a aktualizuje stavy ze vstupních periferních jednotek do zápisníkové paměti. Tento děj se stále opakuje a nazýváme jej cyklem programu (obr. č.: 1.3). [8] 1.3.3 Cyklické vykonávání uţivatelského programu Jednorázová aktualizace stavů vstupních proměnných během celého cyklu programu odstraňuje moţnosti vzniku hazardních stavů při řešení algoritmu řízení (během výpočtu nemůţe dojít ke změně vstupních proměnných). [8]
Obrázek 1.3 Cyklus PLC [8] 12
1.4 Vývojové prostředí Mosaic 1.4.1 Specifikace vývojového prostředí Mosaic je integrované vývojové prostředí od firmy Teco a.s., které umoţňuje vytvářet aplikační programy jak pro PLC Tecomat, tak pro regulátory Tecoreg. Prostředí umoţňuje programování v jazyce instrukcí (mnemokód). Systémy s 32-bitovými procesory (Tecomat TC650 a TC700) lze programovat také v jazycích podle IEC EN 61131–3 (IL, ST, LD, FBD). Součástí prostředí Mosaic je i řada nástrojů, usnadňujících vývoj a ladění aplikací. Prostředí zachovává kompatibilitu se starším dosovským prostředím xPRO a umoţňuje pracovat se zdrojovými programy vytvořenými v tomto prostředí. [3] 1.4.2 Vlastnosti a hlavní součásti vývojového prostředí Pracuje pod Windows 2000/XP/Vista. Podporuje programování v jazycích ST (strukturovaný text), IL (jazyk instrukcí), LD (reléové schéma) a FBD (funkční bloky) podle normy IEC 61131–3. IEC manaţer pro grafickou deklaraci všech prvků programu PLC – datových typů, proměnných, funkcí, funkčních bloků i programových jednotek; moţnost deklarace vlastních knihoven. Inspektor – nástroj pro ladění programu PLC, sleduje a zobrazuje stav vybraných proměnných, umoţňuje pouţívat ladící body. Simulátor PLC – dovoluje ladit programy bez nutnosti připojení reálného hardwaru, simulovat lze všechny typy PLC Tecomat a Tecoreg. K simulátoru lze připojit i vizualizační software Reliance a ladit celou aplikaci na jednom PC. PanelMaker – nástroj na tvorbu dialogů pro operátorské panely ID–07, ID–08 a PLC řady TC500 a TR200. Program pro panel je součástí programu pro PLC. PanelSim – simulátor operátorských panelů dovoluje zkoušet dialogy vytvořené PanelMakerem bez připojení skutečného panelu. Funguje jak s reálným, tak i simulovaným PLC. PIDMaker – nástroj pro ladění a návrh PID regulátorů. Nabízí interaktivní náhled na průběh regulace, usnadňuje správné nastavení parametrů regulátoru a generuje programový kód. Součástí je simulace jednoduchých soustav do třetího řádu s dopravním zpoţděním.
13
GraphMaker – nástroj pro podporu ladění a diagnostiku řízeného systému umoţňuje zobrazení průběhů vybraných proměnných offline i v reálném čase. Dva sledovací kurzory, nastavitelná perioda vzorkování, umoţňuje ukládání dat na disk i export do databázových programů. Funkce digitálního osciloskopu (16 kanálů) a logického analyzátoru. Softwarová konfigurace PLC – konfigurační nástroj umoţňující výběr typu PLC a definici konkrétní sestavy včetně nastavení parametrů jednotlivých modulů. Rovněţ umoţňuje načíst aktuální konfiguraci z připojeného PLC. Definice sítě PLC – nástroj umoţňuje grafickou formou vytvořit vazby mezi PLC v rámci projektu, definovat připojení operátorských panelů nebo externích zařízení. Projektový manaţer – komfortní správa projektu, archivace a zálohování projektu. Hypertextová a kontextová nápověda – zahrnuje kompletní dokumentaci k systémům Tecomat a Tecoreg ve formátu pdf. [3] 1.4.3 Moţnost on-line změny programu PLC Mosaic umoţňuje provádět on-line úpravy programu PLC bez zastavení řízení. Tato funkce vyţaduje podporu ze strany CPU a týká se pouze systémů Tecomat TC650 a TC700. Kromě změn řídicího algoritmu lze přidávat a mazat proměnné, měnit jejich datový typ apod. Přepnutí mezi starým a novým programem je velmi rychlé, typicky méně neţ desetinu doby potřebné pro zpracování programu. Společně s moţností vyměňovat I/O moduly PLC bez zastavení řízení je on-line změna programu důleţitou podmínkou pro minimalizaci ztrát vzniklých odstavením řídicího systému při údrţbě SW i HW. [3] 1.4.4 Komunikační moţnosti Mosaic umoţňuje komunikovat s řídicím systémem přes RS 232 (sériový port), ethernet a USB. V prostředí je zahrnuta i podpora pro vytáčené připojení přes telefonní nebo GSM modem a v poslední době oblíbené spojení přes Wi-Fi, která umoţňuje dálkovou správu. [3]
14
1.5 Vývojové prostředí Control web 1.5.1 Specifikace prostředí a základní vlastnosti Aplikace systému Control web existuje ve dvou podobách (textové a grafické). Tomu odpovídají dva reţimy práce, tj. v textovém a grafickém editoru. Control web proto podporuje dvojcestné programování. Zdrojová podoba aplikace je textová. Při převodu do grafické podoby je nutné aplikaci přeloţit, opačný přechod se nazývá generování. Překlad je v systému Control web značně urychlen podporou zotavení se po chybě. Dvě základní skupiny objektů (data a kód) aplikace se upravují v datových inspektorech a grafickém editoru. Kompletní nabídka přístrojů (funkčních elementů aplikace) je dostupná v paletě přístrojů, samostatném okně otevíraném z vývojového prostředí. Všechny přístroje v aplikaci se upravují pomocí inspektoru přístroje. Inspektor dokáţe přístroji změnit jakýkoli parametr. Pro úpravu parametrů inspektor obsahuje celou řadu vlastních grafických nástrojů. Vývoj aplikace v textovém reţimu probíhá ve vestavěném textovém editoru, který pro aplikace systému Control web definuje řadu specifických rozšíření. Ovládání vývojového prostředí je vţdy moţné prostřednictvím menu. Některé příkazy jsou zařazeny do nástrojové lišty, grafický editor otevírá nad svými objekty kontextové menu. Většina příkazů je dostupná pomocí horkých kláves. [7] 1.5.2 Dvojcestné programování Oběma způsobům (grafickému i textovému programování) dohromady se říká jednoduše dvojcestné programování. Kaţdou aplikaci je moţné podle potřeby vytvářet chvíli graficky, chvíli textově. Přechod mezi jednotlivými reţimy práce je snadný a není nijak omezen ani velikostí aplikace ani fází jejího vývoje. Popsaná dualita přístupů k tvorbě úlohy nám umoţňuje podle momentální potřeby vybrat přesně takový postup, který nejlépe vyhovuje. Z popisu dvojcestného programování vyplývá, ţe aplikace systému Control web můţe existovat ve dvou nezávislých podobách, jedné grafické (binární) a druhé textové. Protoţe jsou textová i grafická podoba aplikace navzájem zástupné, bylo nutné jednu z nich „povýšit“ a vytvořit základní tvar, který bude slouţit pro ukládání a zálohování. Rozhodnutí bylo celkem snadné, neboť textový soubor umoţňuje snadnou manipulaci a je udrţovatelný nejrůznějšími prostředky. Zdrojový tvar aplikace je proto textový.
15
Automaticky je tím dána vysoká bezpečnost a robustnost skladování aplikací. Textová podoba aplikace je jediná, kterou program pouţívá pro ukládání. [7] 1.5.3 Virtuální přístroj Draw Virtuální přístroj Draw je vektorově orientovaný 2D zobrazovač. Pro kreslení nabízí řadu základních grafických objektů. Nabízené grafické objekty lze libovolně skládat a pomocí nich vytvářet i sloţitá schémata, kreslit stroje a zařízení. Kaţdý objekt existuje v několika nabízených podobách. Jen obrys, vyplněný a vyplněný s obrysem. Výsledná kresba můţe být v aplikaci zobrazena v libovolném měřítku. Snadným napojením datových elementů se souřadnicemi vrcholů a ostatními parametry objektů lze dosáhnout animace. Barvy objektů lze také ovlivňovat pouhým napojením na seznamy výrazů. Draw umoţňuje nezávisle nastavovat parametry také pomocí široké nabídky nativních procedur. Práci s přístrojem usnadňuje inspektor, který je vybaven editační plochou a potřebnými nástroji pro kreslení objektů. Pouze myší lze nejen nakreslit a obarvit potřebná schémata či symboly, ale také napojit jednotlivé vstupy z technologie na grafické objekty a za běhu aplikačního programu přímo ovlivňovat barvy nebo animovat objekty. Hotové obrázky a schémata nebo připravené komponenty lze ukládat do knihoven. Přístroj nabízí paletu, ze které lze kdykoliv vloţit kresbu do aplikace nebo přidat k právě vytvářené kresbě. Draw má čtyři specifické parametry: COLOR (barva pozadí přístroje), TRANSPARENT (průhlednost), DRAW SIZE (originální velikost kresby) a ZOOMABLE (přizpůsobivost velikosti kresby). [9] 1.5.4 HTTP server jako virtuální přístroj Server sluţby WWW (HTTP server) je součástí kaţdé instalace systému Control web. Záleţí jen na návrháři aplikace, jestli jej pouţije. Pro prezentaci dat na internetu není tedy zapotřebí instalovat a konfigurovat ţádný další software. HTTP server je jen další komponenta (virtuální přístroj), kterou lze prostě přetáhnout z palety přístrojů do aplikace. Zabudovaný HTTP server je zcela plnohodnotný výkonný server schopný pracovat např. jako firemní WWW server. Navíc je HTTP server zcela integrován do systému Control web. [6]
16
Moţnosti HTTP serveru jako virtuálního přístroje: Do HTML dokumentu lze dynamicky vygenerovat jakoukoliv část textu na základě vyhodnocení výrazu (kanálů či proměnných) nebo přímo vytvořenou kódem procedur. Tento text můţe být nejen informativní (např. číselné hodnoty v tabulce), ale můţe tvořit také např. odkazy na jiné stránky (hyperlinky) apod. Pro zadané URL lze HTML stránky tvořit čistě kódem procedur. Na disku tak nemusí existovat ani soubory s předlohami HTML dokumentů. Poţádá-li klient o obrázek přemapovaný jako vzhled přístroje, server dynamicky vrátí klientovi okamţitou grafickou podobu přístroje, aniţ by tato podoba existovala jako soubor na disku. Poţádá-li klient o specifikovanou stránku, přístroj httpd dokáţe aktivovat libovolné jiné přístroje v běţící aplikaci ještě před vygenerováním a odesláním dokumentu. Data vrácená z HTML formulářů lze promítnout zpět do řízeného procesu. Proces lze prostřednictvím Internetu nejen vizualizovat, ale i řídit. Prostřednictvím HTML formulářů lze nejen nastavovat hodnoty datových elementů, ale i spouštět libovolné jiné přístroje v systému nebo zavolat zadané procedury. HTTPD – Virtuální přístroj, který nikdy nezobrazuje přímo data z technologie a nenastavuje přímo datové elementy. V Control webu 2000 je vţdy nutno explicitně definovat přemapování mezi světem aplikace a vnějším světem. Neexistuje tedy moţnost zobrazit nebo nastavit hodnoty aplikace z WWW klienta nebo i speciálně napsaným programem, pokud je návrhář aplikace pomocí httpd přístroje nepřemapuje a tím nezveřejní. Celému přístroji httpd nebo jednotlivým adresářům či souborům lze nastavit úroveň přístupových práv. V takovém případě odmítne server poskytnout poţadované informace a poţaduje po klientovi zadání uţivatelského jména a hesla. Toto jméno a heslo je porovnáno s databází uţivatelů pracující aplikace systému Control web. Způsoby integrace
HTTP
serveru
do
aplikace,
definice
výchozích
souborů
i adresářů
a přemapovávání výrazů a virtuálních přístrojů v rámci přístroje httpd je podrobně popsáno v referenční části dokumentace v popisu přístroje. [6]
17
Přístroj httpd umoţňuje zpřístupnit (vizualizovat i řídit) aplikaci běţící v systému Control web z libovolného WWW prohlíţeče přes TCP/IP síť (ať uţ lokální intranet nebo celosvětový Internet). Přitom na straně klienta (WWW prohlíţeče) není zapotřebí instalovat Control web Runtime ani ţádnou jinou část systému. WWW prohlíţeč také není zapotřebí doplňovat nebo rozšiřovat o speciální moduly (plug–ins, ActiveX). Rovněţ nemusí (ale mohou) být pouţity Java applety, které jsou většinou velmi náročné na paměť, výkon procesoru a kapacitu přenosových linek. Veškerá funkčnost přístroje httpd je zajištěna čistě prostředky protokolu HTTP a HTML dokumentů. K přístupu k technologii přes rozhraní WWW tak lze pouţít jakýkoliv browser na jakékoliv platformě (Windows, Windows CE, Macintosh, UNIX, apod.). [6]
18
1.6 Panelový počítač TEMPO Panelový počítač se systémem Windows CE se chová jako grafický panel HMI (Human–Machine interface) čili rozhraní člověk–stroj. Tempo pouţívá procesory XScale. K vytvoření vlastního programu pro Tempo je zapotřebí software Control web 2000 CE Runtime Builder, který konvertuje jiţ vytvořenou aplikaci do kódu, spustitelného ve Windows CE. Panelový počítač Tempo je zachycen na obr. č.: 1.4 [4]
Obrázek 1.4 Panelový počítač Tempo
19
1.7 Teorie modelování procesů pomocí notace BPMN 1.7.1 Co je BPMN Business Process Modeling Notation (BPMN) je grafická notace (soubor grafických objektů a pravidel), která slouţí k modelování procesů. Za jejím vznikem stojí iniciativa BPMI (Business Process Management Initiative), jejímţ primárním cílem bylo vytvořit notaci, která bude čitelná všemi účastníky ţivotního cyklu procesu (business analytici, techničtí vývojáři, analytici monitorující procesy atd.). Díky BPMN se úspěšně podařilo zmenšit komunikační mezeru mezi návrhem a implementací procesu a díky desítkám nástrojů, které jej pouţívají, se stalo de facto standardem pro modelování procesů. Dalším cílem BPMI bylo představit notaci, jeţ bude na jednu stranu jednoduchá na pochopení a pouţívání, na druhé straně ale nabídne moţnost modelovat i komplexní business procesy. V současné chvíli je BPMN ve verzi 1.1, jeţ byla formálně přijata v lednu 2008. Daleko pouţívanější ovšem zůstává verze 1.0 (únor 2006), která se od novější verze liší pouze v několika kosmetických změnách. Verze 2.0, která by měla přinést zásadnější změny, je očekávána během roku 2009. BPMN definuje jediný diagram, tzv. Business Process Diagram (BPD). Ten je tvořen sítí grafických objektů, zejména aktivitami a zobrazením toku informací mezi nimi. Jednotlivé grafické objekty jsou od sebe dobře odlišené, coţ přispívá k přehlednosti diagramu. Jasně dány jsou tvary těchto objektů, které je třeba dodrţovat, je ovšem moţné volit pro ně vlastní barvy, například z důvodu odlišení. [5]
20
1.7.2 Syntaxe BPMN Business Process Diagram obsahuje čtyři základní druhy grafických elementů, které se ještě dále dělí na další podtypy. Pro jejich zakreslení byl pouţit freewarový program DIA. Bazén (Pool) Definuje nadřízený proces, který je v rámci procesní mapy BPMN rozkreslován. Mezi bazény je komunikace znázorněna formou posílání zpráv. Dráha zodpovědnosti reprezentuje účastníka/roli, jemuţ je svěřeno vykonávání předepsaných činností. Účastnické pole reprezentuje účastníka, který vymezuje hranice procesního běhu. [1] Příklad zobrazení bazénu je na obr. č.: 1.5.
Obrázek 1.5 Bazén
21
Událost (Event) Reprezentuje takovou událost ve zkoumaném systému, která přímo ovlivňuje chod procesu. BPMN vyuţívá tři typy událostí: Počáteční událost zahajuje řetězec úloh v rámci firemního procesu, který je znázorněn na diagramu procesní mapy. Jeden proces můţe mít několik počátečních událostí, nejméně však jednu. Průběţná událost je velmi často pouţívána pro provázání různých procesních map mezi sebou. Tímto způsobem jsou diagramy provázány bez nutnosti vytváření jednoho velmi komplexního programu. Koncová událost ukončuje řetězec činností. V procesní mapě jich můţe být několik. Jednotlivé typy jsou znázorněny na obr. č.: 1.6.
Obrázek 1.6 Typy událostí
Činnost Reprezentuje předepsanou činnost, která má být vykonána. BPMN vyuţívá dva druhy činností, dílčí a sloţenou. Dílčí činností je úkol, sloţenou činnost můţeme rozdělit na dva podtypy: Vloţený proces – je rozkreslen přímo v daném procesním diagramu. Nezávislý sub-proces – je rozkreslen na jiném diagramu. [1] Druhy činností jsou znázorněny na obr. č.: 1.7.
Obrázek 1.7 Druhy činností 22
Sekvenční tok a tok zprávy Sekvenční tok vyjadřuje následnost procesních prvků. Je-li výchozím prvkem brána, pak obsahuje i podmínku průchodu. Tok zprávy popisuje zasílání zpráv mezi jednotlivými procesy. Oba jsou zachyceny na obr. č.: 1.8.
Obrázek 1.8 Sekvenční tok a tok zprávy
Brána (Gateway) Je místo větvení, popř. místo sbíhání procesů. Rozlišujeme tři hlavní typy: Synchronní (XOR) – běh procesu pokračuje právě jednou odchozí větví. Asynchroní/paralelní OR – běh procesu pokračuje jednou nebo více odchozími větvemi AND – běh procesu pokračuje všemi odchozími větvemi najednou Komplexní – pouţívají se, pokud podmínky běhu procesu nelze vyjádřit pomocí výše uvedených větvení nebo pokud se jedná o sloučení více neţ jednoho větvení. [1] Brány se značí kosočtvercem se symbolem uvnitř (viz obr. č.: 1.9).
Obrázek 1.9 Brány
23
Artefakt Artefakty se pouţívají pro zobrazení produktů informačního systému. Většinou jsou to vstupní a výstupní dokumenty. Jeho symbolem je ohnutý list papíru (obr. č.: 1.10) [1]
Obrázek 1.10 Artefakt
24
1.8 Vizualizace pomocí diagramů UML 1.8.1 Způsob pouţití UML Modelovací jazyk UML je souhrnem především grafických notací, slouţících k vyjádření analytických a návrhových modelů. Umoţňuje modelovat jednoduché i sloţité aplikace pomocí stejné formální syntaxe. Díky tomu je moţné sdílet výsledky práce s ostatními návrháři. Modely jsou pochopitelné i pro zadavatele a spolu s procesním modelováním umoţní kvalitní vyjasnění poţadavků na vytvářený systém. Ţádný diagram nezachycuje navrhovaný systém jako celek, ale soustředí se vţdy právě na jeden pohled na vyvíjený systém. [1] Mají tedy za úkol formulovat funkce systému pomocí standardizovaných notací, které budou pochopitelné jak pro ostatní návrháře, tak pro zadavatele. Také z nich musí být zřejmý rozsah vyvíjené aplikace. Pro návrh procesu řízení manipulátoru bude vhodné pouţít případy uţití (funkce systému, interakce mezi aktérem a systémem) a stavové diagramy (popis stavů, ve kterých se systém nachází, a událostí, které to způsobily). Podrobný návrh systému je jiţ popsán pomocí notace BPMN. 1.8.2 Případy uţití (Use case) Případy uţití přesně zachycují funkčnost, která bude budoucím informačním systémem pokryta, a vymezují tak jednoznačně rozsah prací. Kaţdý případ uţití popisuje jeden ze způsobů pouţití systému, popisuje tedy jednu jeho poţadovanou funkčnost. Případ uţití je sadou scénářů, které spojuje dohromady společný cíl. Vyjadřuje, co budoucí systém nabídne uţivateli. Případ uţití je vţdy iniciován aktérem (viz. níţe). [1] Na obrázku č.: 1.10 je uveden příklad případu uţití.
Obrázek 1.11 Případ uţití „Vyhledání webové stránky“
25
Aktér Aktér je role, ve které vystupuje uţivatel v rámci své komunikace se systémem. V diagramech je značen jako postavička. Jeden aktér můţe vůči systému vystupovat ve více rolích a provádět řadu případů uţití. Zároveň platí, ţe jeden případ uţití můţe být prováděn více aktéry. Ačkoliv pro znázornění aktérů zavádí UML symbol postavičky, nemusí jimi vţdy být lidé. Můţe se jednat např. o externí systém, který potřebuje informace z našeho systému. [1] Na obrázku č.: 1.12 je znázorněn aktér (prodavač) ve dvou rolích vůči systému (prodat výrobek, vyřídit reklamaci).
Obrázek 1.12 Diagram případu uţití
26
1.8.3 Stavové diagramy UML Stavové diagramy jsou jednou ze známých technik pro znázornění chování systému. Popisují všechny moţné stavy, které můţe nabývat konkrétní objekt systému. Jinými slovy modelují chování objektu napříč všemi případy uţití. Zároveň znázorňují, jak se stavy objektu mění v závislosti na událostech, které se ho dotýkají. Základem syntaxe jsou v tomto případě stavy objektů. Speciálními případy stavů jsou počáteční a koncový stav diagramu. Dynamiku představují přechody mezi stavy a události, které vyvolávají přechody. Jako příklad je uveden stavový diagram na obr. č.: 1.13, modelující lyţařský vlek. Ve stavu „spuštěn“ zůstane vlek do té doby, neţ dojde k „ukončení provozu“ nebo nastane událost „porucha“. „Porucha“ nastane např. vypadnutím nosného lana z kladky vleku a uvede vlek do stavu „v poruše“. Po té následuje „příchod technika“. Vlek se nachází ve stavu „v opravě“ a po dokončení opravy je opět „spuštěn“. Z tohoto stavu se dostane opět pouze vlivem událostí „ukončení provozu“ nebo „porucha“. [1]
Obrázek 1.13 Stavový diagram pro lyţařský vlek 27
2 Analýza problému pomocí procesního modelování 2.1 Specifikace poţadavků od zadavatele 1. Pro sestavu pneumatického manipulátoru s elektrickým ovládáním vytvořte aplikační program, který bude umoţňovat následující činnosti v tomto pořadí: a) Pneumatický motor M0 vysouvá předměty ze zásobníku a tlačí je po ţlabu na plošinu motoru M1. b) Motor M1 se otočí z výchozí klidové polohy K11 do pracovní polohy K12. c) Rameno manipulátoru se natočí do polohy K21, vysune se, spustí se vakuová přísavka a uchopí předmět z plošiny M1. Poté se přísavka opět zvedne. Uchopení předmětu vakuovou přísavkou je indikováno měřičem vakua. d) Rameno manipulátoru se zasune a natočí do středové polohy K22. Opět se vysune, spustí předmět na posuvný přepravník a uvolní vakuum. e) Posuvný přepravník se po oddálení ramene do bezpečné vzdálenosti přesune ze střední polohy do polohy pro obarvení předmětu (vlevo). Zde počká 5 sekund (časová prodleva – simulace barvícího procesu). Po uplynutí prodlevy se vrátí do středové polohy. f) Rameno manipulátoru se vysune, spustí se přísavka a uchopí předmět. g) Rameno manipulátoru se natočí do polohy K23, vysune se, spustí se přísavka a uvolní vakuum. Předmět skončí v připravené nádobě, která představuje sklad nabarvených výrobků. h) Kaţdý z motorů se vrátí do své výchozí – klidové polohy. 2. Jeden cyklus programu zajistí obarvení jednoho předmětu a jeho přemístění do skladu. Celý proces začne po stisknutí tlačítka START na ovládacím panelu manipulátoru, ve vizualizačním programu, nebo webové aplikaci. Cyklus bude neustále opakován aţ do stisku tlačítka STOP (opět bude moţno pouţít ovládací panel manipulátoru, vizualizační program, nebo webovou aplikaci).
28
Po stisku tlačítka STOP manipulátor dokončí právě probíhající cyklus a poté bude program ukončen. 3. Aplikační program vytvořte v prostředí Mosaic pro PLC typ TC 651+TC626. 4. Pro tvorbu aplikace pouţijte strukturovaný text. 5. Pro navrţený aplikační program vytvořte aplikaci v prostředí Control web 5 (dále jen CW5), která bude provádět vizualizaci činností pneumatického manipulátoru na obrazovce počítače a generovat vizualizační stránku (html) pro internet s moţností spustit a zastavit činnost stanice. Komunikaci s PLC bude zajišťovat ovladač Tecomat pro CW5. Pro jednotlivé motory zvolte vhodné vizualizační prostředky tak, aby bylo zřetelné, v jakém provozním stavu se nacházejí. 6. Vytvořte vizualizační program ve vývojovém prostředí Control web 2000, který umoţní vizualizaci na panelovém počítači Tempo.
29
2.2 Návrh procesů v grafické notaci BPMN Z hlediska přehlednosti byl ovládací program rozdělen do bloků, z nichţ kaţdý zabezpečuje určitý sled činností. Hlavička programu zajišťuje spouštění a zastavení systému. Musí reagovat na START a STOP tlačítka stisknutá na stykači nebo virtuálně pomocí programu Control web. Po té následují bloky vykonávající dílčí operace cyklu. Rozdělení do bloků: 1. Hlavička zajišťující vyhodnocení tlačítka START a tlačítka STOP. 2. Blok „Počátečního nastavení – kontroly“, který hlídá nastavení všech motorů. 3. Blok „Uchopení kostky“ zajišťující sled činností k uchopení kostky. 4. Blok „Doprava kostky na posuvný dopravník“, který zajišťuje tuto činnost. 5. Blok „Barvení kostky“ má na starosti činnosti simulující barvení. 6. Blok „Přemístění kostky do skladu“ vyzvedne kostku z přepravníku a uskladní. 7. Blok „Počáteční nastavení – ukončení cyklu“ provede přípravu na další cyklus. Kompletní řešení včetně hlavičky znázorňuje obrázek č.: 2.1, zachycující spolupráci mezi obsluhou, vizualizačním programem a PLC. V tomto případě obsluha ovládá cyklus barvení tlačítky na panelu manipulátoru a tím přímo ovlivňuje chod programu, nahraného v PLC (program vytvořen pomocí vývojového prostředí Mosaic). Vizualizační program nahlíţí do registrů PLC a veškeré změny zobrazuje obsluze přes panel indikace a panel vizualizace. Bloky 2 aţ 7 obsahují více dílčích činností, proto byly zakresleny jako sub-procesy a podrobněji popsány dále.
30
Obrázek 2.1 Kompletní návrh řešení systému
31
První z řady bloků, který následuje po spuštění cyklu a vyhodnocení tlačítka STOP slouţí k nastavení výchozích pozic motorů. Pokud motory nejsou ve výchozích pozicích, provede se jejich přenastavení a po uplynutí prodlevy následuje další blok. Pokud uţ ve výchozí pozici jsou, následuje rovnou prodleva a další blok. Celý sub-proces je rozkreslen na obr. č.: 2.2.
Obrázek 2.2 Sub-proces „Počáteční nastavení – kontrola“
32
Po počátečním nastavení a kontrole následuje sled činností, směřujících k uchopení kostky. Činnosti následují jedna po druhé v předepsaném pořadí. Veškeré signály a změny stavů jsou opět monitorovány vizualizačním programem. Sub-proces „uchopení kostky“, jeho návaznost na hlavní program a spolupráce s vizualizačním programem popisuje obr. č.: 2.3.
Obrázek 2.3 Sub-proces „Uchopení kostky“ 33
Další v řadě je blok, který zajistí přemístění kostky na posuvný dopravník. Jeho činnosti, návaznost na hlavní program a spolupráce s vizualizačním programem je popsána níţe (obr. č.: 2.4).
Obrázek 2.4 Doprava kostky na posuvný dopravník
34
Povolení vakua a uplynutí prodlevy jsou podmínky pro spuštění sub-procesu „barvení kostky“. Po oddálení ramene manipulátoru je kostka přesunuta do polohy pro barvení. Následuje prodleva 5 s (simulující proces barvení). Po té se M5 přesune zpět do výchozí polohy a obarvená kostka je uchopena (viz. obr. č.: 2.5).
Obrázek 2.5 Sub-proces „Barvení kostky“
35
Předposledním je sub-proces „Přemístění kostky do skladu“. Ten zajistí otočení ramene do polohy vpravo a uskladnění kostky (viz. obr. č.: 2.6).
Obrázek 2.6 Umístění kostky do skladu
36
Závěrečný sub-proces „Počáteční nastavení – ukončení cyklu“ provádí nastavení všech motorů do výchozích pozic (viz obr. č.: 2.7).
Obrázek 2.7 Počáteční nastavení – ukončení cyklu Po vykonání tohoto bloku následuje vyhodnocení stisku tlačítka STOP. Pokud během cyklu bylo stisknuto, program se ukončí. Nebylo-li stisknuto, následuje nový cyklus.
37
3 Vizualizace pomocí diagramů UML 3.1 Případy uţití (Use case) Pneumatický manipulátor je ovládán obsluhou, která spouští popř. zastavuje cykly a monitoruje provoz. Obsluha vzhledem k vykonávaným činnostem můţe být i osoba poučená bez technického vzdělání. Role, ve kterých v rámci své komunikace se systémem vystupuje, jsou zachyceny na diagramu případu uţití (obr. č.: 3.1).
Obrázek 3.1 Obsluha
Činnosti obsluhy a její spolupráci se systémem ukazuje případ uţití „Barvení kostek“ na obr. č.: 3.2.
Obrázek 3.2 Případ uţití „Barvení kostek“
38
K řešení nestandardních situací, kde je zapotřebí hlubších znalostí systému musí obsluha přivolat technika, který se v problematice dobře vyzná a je schopen odborného zásahu. Tím se především rozumí provádění běţné údrţby a případné opravy na soustavě manipulátoru. Technik při těchto činnostech úzce spolupracuje s obsluhou a není proto třeba jeho přímá komunikace se systémem. Jeho vztah k systému a vykonávané činnosti jsou znázorněny na obrázcích č.: 3.3, 3.4 a 3.5.
Obrázek 3.3 Role technika vůči systému
Obrázek 3.4 Spolupráce obsluhy a technika při údrţbě manipulátoru
Obrázek 3.5 Spolupráce obsluhy a technika při opravě manipulátoru 39
3.2 Stavový diagram pneumatického manipulátoru Při běţném provozu se systém nachází pouze ve stavu „spuštěn“, do kterého se dostane, pokud obsluha zahájí cyklus. Po obarvení poţadovaného počtu kostek obsluha provoz ukončí. Můţe ale nastat porucha nebo bude zapotřebí provést údrţbu. V případě, ţe k tomu dojde, stav systému se změní (viz. obr. č.: 3.6). Po vykonání akce „dokončení opravy“, popř. „vykonání údrţby“ dojde opět ke změně stavu na „spuštěn“.
Obrázek 3.6 Stavový diagram pro pneumatický manipulátor
40
4 Realizace ovládacího programu ve vývojovém prostředí Mosaic 4.1 Způsob programování Nejdůleţitější pouţité programovací prvky jsou podmínky IF a CASE spolu s RS klopným obvodem. Začátek programu (hlavička) je řešen podmínkou IF. Ta nastavuje po stisku tlačítka START proměnnou „sekvence“ na hodnotu 1. Na to pak reaguje první blok programu s podmínkou CASE (čeká, aţ nastane stav „sekvence=1). Po vykonání bloku podmínky CASE se zkontrolují stavy a signály motorů. Pokud je vše v pořádku následuje prodleva (na stabilizování stavů a signálů) a po té podmínka IF zvýší hodnotu proměnné „sekvence“ na hodnotu 2. Tím tento blok vyřadí z provozu a automaticky se spustí blok další, mající podmínku spuštění „sekvence=2“. Tímto způsobem následuje jeden blok za druhým a kaţdý z nich vykonává určené dílčí instrukce programu. Jakmile je kostka obarvena, vrátí se program zase na začátek. Před tím však zkontroluje, jestli bylo stisknuto tlačítko STOP. Jeho stisk indikuje proměnná „zastav“ a v případě splnění podmínky „zastav=1“ se program ukončí. Protoţe je tato podmínka řešena RS obvodem, můţeme proměnnou ještě během cyklu opět vynulovat tlačítkem START a program po skončení cyklu běţí dál. Celý program s podrobným popisem je uveden v příloze č.: 3. Výpis programu odeslaný do PLC v příloze č.: 4. Výpis hlavičky: IF start and sekvence = 0 THEN sekvence: =1 ELSE END_IF; stop_tl (S:= stop , R1:=start , Q1=> zastav );
4.2 Připojení k PLC Pro tento projekt byla zvolena komunikace po sériové lince. Kabel je v tomto případě zapojen do připraveného slotu v automatu TC 651. Program byl přeloţen a vyslán do PLC. Po nahrání programu komunikuje přes sériovou linku vizualizační aplikace vytvořená v Control webu. Připojení komunikace je znázorněno v příloze č.: 1. 41
5 Vizualizace a ovládání procesů pro uţivatele PC 5.1 Realizace programu K indikaci stavu jednotlivých komponent a vizualizaci procesů byl vytvořen program ve vývojovém prostředí Control web 5 od firmy Teco a.s. Program zároveň ovládá manipulátor pomocí virtuálních tlačítek START a STOP, nahrazujících v případě potřeby tlačítka na panelu manipulátoru. Při výběru přístrojů pro vizualizaci byla zvolena kombinace 2D a 3D prvků. Program je rozdělen na dvě části, které se přepínají vlevo dole na liště (obr. č.: 5.2, pozice 4)
5.2 Panel indikace Panel indikace obsahuje přístroje indukující stavy jednotlivých motorů (např. M0 zasunutý/M0 vysunutý), signály na jejich vstupech (M0K51/M0K52) a grafický ukazatel „engine“ indikující pohyb motorů. Kaţdý motor má tedy 4 indikátory stavu (obr. č.: 5.2, pozice 1). Podrobněji jsou popsány na obr. č.: 5.1. Jsou zde také tlačítka START a STOP (obr. č.: 5.2, pozice 2) ovládající automat, a grafický prvek multilabel (obr. č.: 5.2, pozice 3), který ukazuje, jestli se bude cyklus opakovat, nebo po právě běţícím cyklu skončí (zapnuto/vypnuto). Na tomto panelu je umístěn také indikátor nasávání (V0_motor) a indikátor dosaţení vakua (pokud překročí podtlak předepsanou hodnotu, nastaví se proměnná indikující vakuum na „true“). Oba indikátory jsou znázorněny na obr. č.: 5.2, pozice 6. Posledním prvek (obr. č.: 5.2, pozice 5) je popiska autora práce s popisem funkce panelu (u panelu č. 1 je funkcí indikace provozu motorů).
Obrázek 5.1 Indikátory stavu motoru 42
Obrázek 5.2 Panel indikace
43
5.3 Panel vizualizace Panel vizualizace obsahuje přístroj Draw (obr. č.: 5.3, pozice 1), jeţ provádí vizualizaci činnosti automatu pomocí pohyblivé kresby. Jsou zde umístěny opět tlačítka START a STOP (obr. č.: 5.3, pozice 2) s indikátorem opakování cyklu (obr. č.: 5.3, pozice 3). Indikátor zasouvání/vysouvání M3 (obr. č.: 5.3, pozice 4) je zde umístěn z důvodu problému s vizualizací tohoto motoru, pokud se rameno nalézá ve střední pozici (K22). I tento panel obsahuje popisku autora (obr. č.: 5.3, pozice 5) a přepínací prvek (switch) mezi jednotlivými panely (obr. č.: 5.3, pozice 6).
Obrázek 5.3 Panel vizualizace
Celý postup programování obou panelů je podrobně rozepsán v příloze č.: 8. Nastavení mapovacího souboru, parametrického souboru a kanálů je popsáno v přílohách č.: 5, 6 a 7. Program v přístroji Draw (obr. č.: 5.3, pozice 1) určuje velikosti stran objektů pomocí proměnných. S jejich postupným navýšením či sníţením pak dochází k animaci. Program přístroje Draw je popsán v příloze č.: 9. 44
6 Vizualizace a ovládání procesů pro obsluhu panelového počítače Tempo 6.1 Hlavní odlišnosti oproti programu pro PC Při realizaci tohoto úkolu bylo nutné pouţít vývojové prostředí Control web 2000 WIN CE Runtime builder kvůli nutnosti generování programu pro Windows CE. Samotná realizace je naprosto totoţná s postupem vývoje aplikace v CW5 aţ na několik odlišností. Po volbě aplikace pro Windows CE (ikona vpravo nahoře na liště) nám z nabídky palety přístrojů zmizí řada segmentů, jejichţ pouţití je v této aplikaci nereálné.
6.2 Grafická úprava Kvůli omezené velikosti displeje bylo nutné upravit velikost okna i jednotlivých prvků v něm. Velikost okna byla kvůli přehlednosti omezena na rozlišení 320 x 240. CW 2000 neumoţňuje pouţívání 3D přístrojů. Proto namísto „gl_led“ byly pouţity klasické 2D indikátory s vhodně vybranými ikonami (v inspektoru přístroje). Velikost a rozloţení prvků byla zvolena s ohledem na omezené rozměry panelu. Princip a význam jednotlivých přístrojů je totoţný s řešením CW5 v bodě 5.
6.3 Syntaxe V proceduře přístroje Draw bylo nutné upravit některá znaménka. Při zkopírování celé procedury hlásilo vývojové prostředí chybu typu: „Očekává se =“. Např. výraz „g přiřaď číslo 8“ vyjádříme v Control webu 5 jako „g : = 8“ a v Control webu 2000 jako „g = 8“ V ostatních náleţitostech byla realizace programu stejná jako v bodě 5. Grafická úprava obou panelů je znázorněna na obrázcích č.: 6.1 a 6.2 na následující stránce.
45
Obrázek 6.1 Panel indikace pro panelový počítač Tempo
Obrázek 6.2 Panel vizualizace pro panelový počítač Tempo
46
7 Vizualizace a ovládání procesů přes internet Pro tuto úlohu byl pouţit přístroj Httpd, který simuluje funkci serveru. Celý proces generování HTML stránky byl realizován pomocí průvodce. Průvodce se spouští volbou: „Soubor/generovat aplikaci po internet.“ Spuštění je zachyceno na obr. č.: 7.1.
Obrázek 7.1 Spuštění průvodce
Postup generování pomocí průvodce: Nastaví se jméno a adresář, do kterého budou uloţeny vygenerované soubory HTML dokumentu. V okně „výběr zobrazovaných přístrojů“ stiskneme tlačítko „vloţit všechny“. Nastaví se doba obnovování jednotlivých prvků. Obnovování je neţádoucí u hlavního panelu, kde dochází k problikávání. Proto se obnovení přístrojů (zpočátku na 1 s) nastaví jen u pouţitých přístrojů. Příklad nastavování je uveden na obr. č.: 7.2. U výběru ovládaných přístrojů zvolíme „všechny v aplikaci“. Po stisku tlačítka „dokončit“ je HTML stránka připravena. V panelu časování se mezi nečasovanými přístroji automaticky objeví ikona přístroje Httpd (viz. obrázek č.: 2.9).
47
Pokud se stránek tvoří více, přístroj se identifikuje pomocí portu, který je moţný nastavit v průvodci. V uvedeném adresáři, který jsme zvolili na začátku průvodce se nám nyní vygenerovaly HTML soubory. Spuštění samotné stránky se provádí při spuštěné aplikaci pomocí okna internetového prohlíţeče. Jako prohlíţená stránka se nastaví IP adresa počítače se spuštěným programem v Control webu.
Obrázek 7.2 Nastavení obnovy jednotlivých přístrojů
Obrázek 7.3 Zařazení Httpd do panelu časování
48
U html stránky bylo třeba změnit obnovování – refresh jednotlivých přístrojů. To bylo realizováno pomocí změny parametrů v souboru „main.html“. Soubor se otevírá a mění v poznámkovém bloku. Refresh se podařilo nastavit pouze o 50 ms rychlejší neţ je výchozí nastavení (950 ms místo původní 1 s). Z toho plyne, ţe vizualizace, která potřebuje pro animaci refresh přístroje draw 0,03 s není kvalitní a můţe zde docházet i k problémům s vykreslováním. Příklad nastavení obnovování: fceRefresh_5(); window.setInterval ("fceRefresh_5();", 950); Vzhled vygenerované stránky je zcela shodný s programem vytvořeným v Control webu 5 (obr. č.: 5.2 a 5.3) a má i stejné funkce.
49
Závěry a doporučení Zadáním bakalářské práce bylo navrţení a vytvoření systému pro barvení výrobků pomocí pneumatického manipulátoru. Pomocí notace BPMN byl vytvořen kompletní návrh systému a spolupráce mezi jednotlivými programy. V BPMN byla také podrobněji popsána funkce programu ovládajícího manipulátor k pochopení jeho dílčích činností. Kompletní funkčnost systému zachycují případy uţití UML. Ty popisují vztahy mezi systémem a pracovníkem obsluhy, který řídí a monitoruje jeho provoz. Je zde vysvětlena také role technika provádějícího údrţbu a opravy, coţ není u školního projektu zapotřebí, ale v případě průmyslového vyuţití se tato role zcela jistě v podobném rozsahu objeví. Stavové diagramy popisují stavy, ve kterých se soustava manipulátoru můţe v rámci svého provozu nacházet, a události způsobující změny stavu. Spojením těchto nástrojů (UML a BPMN) vznikl komplexní návrh systému, který je srozumitelný jak pro zadavatele, tak pro ostatní návrháře. Bylo tedy moţné v jakékoliv fázi projektu konzultovat řešení a průběh se zadavatelem. Zároveň zde byla moţnost sdílet výsledky své práce s ostatními návrháři ovládajícími metody návrhu IS pomocí procesního modelování a UML. Program ovládající manipulátor byl vytvořen ve vývojovém prostředí Mosaic a nahrán do PLC Tecomat TC 651. Vizualizační aplikace vytvořená v Control webu je schopná zápisem na vstupy automatu zprostředkovat řízení pomocí virtuálních tlačítek START a
STOP pro obsluhu PC, obsluhu panelového počítače Tempo, nebo přes
vygenerovanou internetovou stránku. Zároveň čtením výstupů monitoruje jednotlivé signály a stavy, ve kterých se motory manipulátoru nacházejí. Obsluha tak má přehled o dění i mimo místnost se zařízením. Pomocí panelu vizualizace můţe sledovat i animaci procesu. Celý projekt je funkční a vyzkoušený na soustavě pneumatického manipulátoru v laboratoři SPŠ a VOŠ Písek. V hardwarovém zařízení manipulátoru by však bylo vhodné provést několik změn. Doporučení jsou následující: Přidání tlačítka nouzového zastavení, které by zastavilo automat během cyklu v aktuálních polohách motorů v případě nehody nebo poruchy. Nahrazení panelu vizualizace web kamerou, sledující celou sestavu manipulátoru. 50
Vyztuţení základny ramene manipulátoru – je zde pouţit slabý plech, který při rychlém pohybu způsobuje vibrace. Zkrácení kluzkého dopravníku u motoru M0 – obsluha musí ručně pomocí tlačítka na ventilu vysunout čtyři kostky, aby se během cyklu ta poslední z nich dostala do přihrádky motoru M1.
51
Seznam pouţité literatury Klasické zdroje [1]
KANISOVÁ, Hana; MŰLLER, Miroslav. UML srozumitelně. 2. vyd. Brno : Computer Press, 2007. ISBN 80-251-1083-4.
[2]
PAUL, Miroslav; BURGER, Michal. Průvodní zpráva k projektu 0862P2006. Písek: SPŠ a VOŠ, 2006.
Elektronické zdroje [3]
Software pro aplikační programování [online] Teco a.s. [cit. 2008-12-07] Dostupný z WWW:
.
[4]
TecoInfo25 [online] Teco a.s. [cit. 2009-02-20] Dostupný z WWW: .
[5]
Úvod do BPMN 3. část [online] BPM portál [cit. 2009-04-18] Dostupný z WWW: .
52
Manuály a nápovědy programů [6]
Http server jako virtuální přístroj Moravské přístroje. 2005. Dostupné v: Dokumentace Control web/díl VI. - Přílohy/Control web a internet/ Http server jako virtuální přístroj.
[7]
Integrované vývojové prostředí. Moravské přístroje. 2005. Dostupné v: Dokumentace Control web/díl II/Integrované vývojové prostředí.
[8]
PLC a uživatelský program. Teco a.s. 2007. Dostupné v: Nápověda programu mosaic/Příručka programátora PLC TECOMAT/ 2. PLC a uţivatelský program.
[9]
Virtuální přístroj Draw. Moravské přístroje. 2005. Dostupné v: Dokumentace Control web/díl II/2D vektorová grafika – animace, schémata a knihovny symbolů/Virtuální přístroj Draw.
53
Přílohy
54
Příloha č. 1 Komunikace s PLC
55
Příloha č. 2 Nastavení kanálů v programu Mosaic
56
Příloha č. 3 Podrobný popis programu ve vývojovém prostředí Mosaic Základní nastavení vývojového prostředí Před samotným začátkem programování bylo nutné nastavit správně vývojové prostředí a zaloţit nový projekt. Postup je následující: Při základním výběru řídicího systému zvolíme kompaktní systém a v okénku „výběr řady PLC“ se automaticky objeví TC 650. V deklaraci
programové
organizační
jednotky
zvolíme
jméno
programu,
programovací jazyk a můţeme připojit i komentář. Pro projekt bylo zvoleno programování ve strukturovaném textu (viz. specifikace poţadavků bod 2.1 BP). Pak se ukáţe okénko definice instance programu – jméno instance, úloha, program a parametry instance. Nastavení parametrů vývojového prostředí Pouţitím manaţera projektu, jeţ je umístěn v záloţce otevřené soubory vlevo nahoře, nastavíme parametry připojeného automatu. Pro realizaci tohoto projektu je zapotřebí hardwarového klíče z důvodu pouţití přídavného modulu, se kterým nelze pracovat v lite-verzi programu. Pro komunikaci s automatem byl zvolen typ a parametry připojení (viz. příloha č. 1). Pomocí tlačítka „nastavení V/V“ (vstupů/výstupů) přiřadíme aliasy jednotlivým kanálům a pomocí těchto aliasů se na ně potom budeme v programu odkazovat, nastavovat je, (OUTput) nebo indikovat jejich stav (INput). Provedení aliasů u vstupů a výstupů programu manipulátoru můţeme vidět na obrázku v příloze č. 2. Nastavení je rozděleno do dvou částí, TC651 a TC626. Nyní je moţno přistoupit k realizaci samotného programu. Před samotným programováním je třeba nadefinovat proměnné. V programu jich bylo pouţito celkem 28: 8 vstupních proměnných tj. časovačů na realizaci zpoţdění (cas1–cas7). 1 proměnná typu Integer k indikaci stavu programu a přepínání bloků (sekvence). 9 proměnných (funkčních bloků) typu RS na realizaci vlastních podmínek (M0–M5, stop_tl, vakuum, pom_rs). 57
2 pomocné proměnné (zastav, Nast_hotovo). 8 proměnných indikujících uplynutí zpoţdění od časovačů (prod1–prod8).
Nejsnazší je pouţití nabídky IEC manaţera. Po kliknutí pravým tlačítkem na ikonu příslušného bloku proměnných (např. vstupních) se otevře nabídka s poloţkou „přidat proměnou“. Po té jiţ můţeme přejít k vlastnímu programování. Hlavička programu: IF start and sekvence = 0 THEN (* Spuštění cyklu, podmínka sekvence=0 je nutná k tomu, aby automat nereagoval na další zmáčknutí tlačítka start a cyklus nemohl být narušen náhodným stiskem *) sekvence: =1; //Spuštění programu - aktivace 1 bloku ELSE END_IF; stop_tl (S:= stop , R1:=start , Q1=> zastav ); // Ošetření ukončení cyklu
Programová část v hlavičce nám říká, ţe po stisknutí tlačítka START, pokud platí „sekvence=0“ , se „sekvence“ nastaví na 1 a začne nový programový cyklus. Ošetření ukončení cyklu: V případě stisku STOP tlačítka se nastaví proměnná „zastav“ na hodnotu „true“ a před započetím prvního bloku cyklu se stav této proměnné sleduje. V případě, ţe
„zastav=true“
celý
cyklus
skončí
vynulováním
proměnné
„sekvence“.
Pokud „zastav= false“, program běţí stále dokola. Nastavení proměnné „zastav“ zpět na „false“ se provádí stiskem START tlačítka a způsobíme tím opětovné zapnutí opakování cyklu. Shrnutí: Manipulátor je řešen tak, ţe stiskem tlačítka START se spustí nekonečný cyklus, který je moţný zastavit stiskem tlačítka STOP. Tlačítko STOP způsobí zastavení procesu a přesun motorů do výchozí pozice jakmile bude dokončena právě probíhající smyčka cyklu.
58
Bloky podmínky CASE První blok: Case sekvence of //Začátek vlastního programu - podmínky typu CASE. 1: if zastav then // Zastavení v případě stisku STOP tlačítka během předchozího cyklu sekvence:=0; //Nastavení po stisku Stop tlačítka else M0 ( S:=1, R1 := K01 , Q1=> M0K52) ; M1 ( S:=1, R1 := K11 , Q1=> M1K11) ; M3 ( S:=1, R1 := K31 , Q1=> M3K31) ; M4 ( S:=1, R1 := K41 , Q1=> M4K41) ; M5 ( S:=1, R1 := K55 , Q1=> M5K55) ;
// Nastavení poč. polohy M0 // Nastavení poč. polohy M1 // Nastavení poč. polohy M3 // Nastavení poč. polohy M4 // Nastavení poč. polohy M5
Nast_hotovo := K01 and K11 and K22 and K31 and K41 and K55; // Kontrola počátečního nastavení cas1 ( IN := Nast_hotovo, PT :=T#2s, Q => prod1 ); // Sledování nastavení poč.hodnot + prodleva před prvním cyklem if prod1=true then sekvence:=2; else end_if; end_if; // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy První blok se spustí, pokud bude platit „sekvence=1“. Na začátku prvního bloku se pomocí podmínky IF indikuje proměnná „zastav“ a podle jejího stavu se buď program ukončí, nebo pokračuje dál. Pokud platí „zastav=false“, program pokračuje nastavením počátečních poloh motorů. Funkční blok „M0 ( S:=1, R1 := K01 , Q1=> M0K52);“ říká, ţe pokud jiţ není motor M0 v poloze K01 (podmínka pro RESET), potom vyšli na výstup M0K52 signál „true“. Signál „true“ na výstupu M0K52 způsobí změnu polohy M0 do K01. Na „false“ se změní, jakmile motor této polohy dosáhne – splní se tím podmínka pro reset. Pokud jsou všechny motory ve výchozí poloze (indikátory polohy jednotlivých motorů jsou ve stavu „true“, je tím splněna podmínka „Nast_hotovo“ a spouští se časová prodleva pomocí časovače „cas1“. Časovač po uplynutí prodlevy nastaví proměnnou „prod1“. Stav proměnné „prod1“ vyhodnocuje podmínka IF. Pokud je ve stavu „true“, proměnná „sekvence“ změní svojí hodnotu na 2. Tím je spuštěn další blok programu a zároveň nulována podmínka blok současný. Znamená to tedy, ţe aţ kdyţ jsou splněny všechny instrukce a podmínky v tomto bloku, program bude pokračovat dál.
59
Druhý blok: 2: M0 ( S:= prod1 , R1 := K02 , Q1=> M0K51) ; // Vysunutí kluzkého dopravníku cas2 ( IN := K02, PT :=T#2s, Q => prod2 ); // Prodleva mezi vysunutím dopravníku a otočením M1 M1 ( S:= K02 and prod2, R1 := K12 , Q1=> M1K12 ) ; // Otočení M1 s kostkou pod rameno manipulátoru M2 ( S:= K12 , R1 := 0 , Q1=> M2K21 ) ; // Přesun nad otočný motor s kostkou - po vyzvednutí kostky se vrátí M3 ( S:= K21 , R1 := K32 , Q1=> M3K32) ; // Vysunutí ramene M4 ( S:= K32 , R1 := K42 , Q1=> M4K42) ; // Přiblíţení přísavky ke kostce vakuum ( S:= K42 and K32 and K21, R1 := 0 , Q1=> V0_motor) ; cas3 ( IN := V0, PT :=T#1s, Q => prod3 ); // Pokračování aţ po uplynutí prodlevy a zvýšení sekvence na 3
// Přisátí kostky
if prod3=true then sekvence:=3; else end_if; // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy Druhý blok čeká na svou aktivaci, která proběhne, jakmile se proměnná „sekvence“ nastaví na hodnotu 2. Po aktivaci spustí sled funkčních bloků. M0 se vysune (byla splněna podmínka „ prod1= true“ z předchozího bloku). Zde je při pouţití podmínky CASE moţné nastavit místo zjišťování „prod1“ inplicitně hodnotu 1, protoţe v obou případech dojde spolu s aktivací 2 bloku i k aktivaci funkčního bloku M0). Jakmile je M0 vysunutý – poloha K02, spustí časovač „cas2“ prodlevu 2 s. Po té se M1 i s kostkou otočí vpravo (do polohy K12). Podmínkou pro otočení je právě uplynutí prodlevy a vysunutý M0. Po přemístění M1 do polohy K12 je aktivován motor M2, který se otočí o 90º vlevo ke kluzkému dopravníku. Signál, který otáčí M2, musí být na vstupu celou dobu setrvávání motoru v této pozici. Proto je na resetu tohoto funkčního bloku „0“. Tento výstup bude resetován aţ v dalším bloku programu. Pokud se nachází M2 v poloze K21 – u kluzkého dopravníku, reaguje motor M3 vysunutím do K32 a po tom co je vysunut, spustí se M4 dolů do polohy K42. Přísavka se tím dostane do těsné blízkosti ke kostce. Po té se spustí vakum, jehoţ podmínkou jsou motory M2, M3 a M4 ve správné pozici. Následuje prodleva a po jejím uplynutí (signalizovaném proměnnou prod2 ve stavu „true“) přechod do dalšího bloku zvýšením proměnné „sekvence“ na hodnotu 3. 60
Třetí blok: 3: M4 ( S:= prod3 and K21 , R1 := K41 , Q1=> M4K41) ; // Zdvihnutí s přisátou kostkou M3 ( S:= K41 and K21 and V0, R1 := K31 , Q1=> M3K31) ; // Zasunutí ramene s přisátou kostkou pom_rs ( S:=K21, R1 :=V0 and K31 and K41 , Q1=> M2K21) ; // Přesunutí ramene do střední polohy M3 ( S:= K22 , R1 := K32 , Q1=> M3K32) ; // Vysunutí ramene s přisátou kostkou M4 ( S:= K32 and K22, R1 := K42 , Q1=> M4K42) ; // Přiblíţení kostky nad posuvný motor M5 vakuum ( S:=0, R1 := V0 and K22 and K32 and K42, Q1=> V0_motor) ; // Puštění kostky - povolení vakua cas4 ( IN := (not V0) and K22 and K32 and K42, PT :=T#1s, Q => prod4 ); // Pokračování aţ po uplynutí prodlevy a zvýšení sekvence na 4 if prod4=true then sekvence:=4; else end_if; // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy Třetí blok realizuje přesun kostky na posuvný dopravník M5. Po prodlevě „prod3“, která následovala po přisátí kostky se M4 přemístí do horní polohy (K41) a hned po té se M3 zasune zpět do K31 – rameno je připravené na otočení. V případě splnění podmínky (M3 zasunutý, M4 nahoře, kostka nasáta) pomocný funkční blok „pom_rs“ vynuluje kanál M2K21 coţ způsobí návrat M2 do polohy K22 (vpravo o 90º) a tím i otočení celého ramene k posuvnému dopravníku. V rámci zrychlení cyklu se jiţ po dosaţení cca 30º této otočky začne M3 opět vysouvat a po dokončení otočky M2 se kostka nachází přímo nad přihrádkou přepravníku M5. Následuje spuštění M4 do dolní polohy (K42) a uvolnění vakua, jehoţ podmínkou je provedení předchozích pokynů a správná poloha jednotlivých motorů. Po prodlevě 1 s se „sekvence“ nastaví na hodnotu 4 a program pokračuje dalším blokem.
61
Čtvrtý blok: 4: M4 ( S:= 1, R1 := K41 , Q1=> M4K41) ; // Zdvihnutí bez kostky - barvení M3 ( S:= K41 , R1 := K31 , Q1=> M3K31) ; // Zasunutí ramene bez kostky - barvení M5 ( S:= K41 and K31, R1 :=K51 , Q1=> M5K51 ) ; // Posunutí dopravníku do polohy nanesení laku cas5 ( IN := K51, PT :=T#5s, Q => prod5 ); // Prodleva na barvení if prod5 then (* Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy *) sekvence:=5; else end_if; 5: M5 ( S:= prod5, R1:= K55 , Q1=>M5K55 ) ; // Posunutí k ramenu manipulátoru M3 ( S:= prod5 and K55, R1 := K32 , Q1=> M3K32) ; // Vysunutí ramene k obarvené kostce M4 ( S:= prod5 and K32, R1 := K42 , Q1=> M4K42) ; // Přiblíţení k obarvené kostce vakuum ( S:= K42 and prod5, R1 := 0 , Q1=> V0_motor) ; // Nasátí obarvené kostky cas6 ( IN := V0, PT :=T#1s, Q => prod6 ); // Pokračování aţ po uplynutí prodlevy a zvýšení sekvence na 6 if prod6 then sekvence:=6; else end_if; // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy Čtvrtý blok má dvě části. 1. část je spuštěna za podmínky „sekvence=4“. Slouţí k návratu motorů M3 a M4 do čekací polohy a zároveň k realizaci vlastního procesu barvení. V tomto programu je proces barvení proveden jako prodleva 5 s. Po zdvihnutí motoru M4 nahoru do polohy K41, které se spustí automaticky spolu s aktivací bloku, se motor M3 zasune (K31). Rameno je v poloze čekání na obarvení kostky. Jakmile jsou motory M3 a M4 v čekací poloze, přesune se M5 do polohy pro obarvení. Následuje časová prodleva 5 s simulující barvící proces. Po prodlevě program pokračuje druhou částí (sekvence=5).
62
V druhé části se M5 přesouvá zpět do polohy K55, tedy k ramenu manipulátoru. Kdyţ je M5 s obarvenou kostkou u ramene, vysune se M3 (do K32) a po té je motor M4 spuštěn dolů (do K42). Následuje nasátí obarvené kostky a po prodlevě 1 s se aktivuje pátý blok. Pátý blok: 6: M4 ( S:= prod6 , R1 := K41 , Q1=> M4K41) ; // Zdvihnutí obarvené kostky M3 ( S:= K41 , R1 := K31 , Q1=> M3K31) ; // Zasunutí ramene s obarvenou kostkou cas7 ( IN := K41 and K31, PT :=T#1s, Q => prod7 ); // Pokračování aţ po uplynutí prodlevy a zvýšení sekvence na 7 if K41 and prod7 then sekvence:=7; else end_if; // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy 7: M2 ( S:= V0 and K31 and K41 , R1 := 0 , Q1=> M2K23) ; // Přemístění manipulátoru do levé polohy - sklad M3 ( S:= K23 and V0, R1 := K32 , Q1=> M3K32) ; // Vysunutí ramene s obarvenou kostkou nad kontejner M4 ( S:= K32 and V0, R1 := K42 , Q1=> M4K42) ; // Přiblíţení obarvené kostky ke kontejneru vakuum ( S:=0, R1 := K32 and K42 and K23, Q1=> V0_motor) ; // Puštění kostky - povolení vakua cas8 ( IN := not V0, PT :=T#1s, Q => prod8 ); // Pokračování aţ po uplynutí prodlevy a zvýšení sekvence na 8 if prod8 then sekvence:=8; else end_if; // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy Pátý blok je opět rozdělen do dvou částí. V první se M4 vysune zpět nahoru do polohy K41. M3 se hned po té zasune zpět do polohy K31. Po návratu obou motorů se spustí prodleva 1 s a následuje zvýšení hodnoty proměnné „sekvence“ na 7. Tím program přejde do další části bloku. V druhé části se rameno manipulátoru pomocí motoru M2 otočí vpravo o 90º do polohy K23 (nad sklad). Po otočení ramene provede M3 vysunutí do polohy K32. 63
Dosaţením polohy K32 bude splněna podmínka pro M4 aby se spustil dolů. Uvolnění vakua a puštění kostky do skladu se provede za předpokladu, ţe všechny motory budou ve správné pozici (To zajišťuje podmínka Resetu ve funkčním bloku vakuum). Kostka je umístěna ve skladu a úkol cyklu je splněn. Následuje přechod do posledního bloku programu – „sekvence“ = 8.
Šestý blok: 8: // Nastavení výchozích pozic motorů M0,M1,M3,M4 M0 ( S:= 1 , R1 := K01 M1 ( S:= 1 , R1 := K11 M3 ( S:= 1 , R1 := K31 M4 ( S:= 1 , R1 := K41
, Q1=> M0K52) ; , Q1=> M1K11) ; , Q1=> M3K31) ; , Q1=> M4K41) ;
M2 ( S:= V0 and K31 and K41 , R1 := K31 and K41 and K23 and (not V0) , Q1=>M2K23) ; // Nastavení výchozí polohy pro M2 if K22 and K41 and K31 and K01 and K11 then sekvence :=1; else end_if; //Přechod do Prvního bloku dalšího cyklu po vykonání všech činností else end_case; END_PROGRAM V závěrečném šestém bloku programu se motory pomocí funkčních bloků nastaví zpět do své výchozí pozice. Pak se proměnná „sekvence“ nastaví na hodnotu 1. Pokud nebylo stisknuto STOP běţí program dál, znovu od prvního bloku.
64
Příloha č. 4 Výpis programu poslaného do PLC
PROGRAM prgMain (* BAKALÁŘSKÁ PRÁCE Návrh procesu řízení pneumatického manipulátoru AUTOR: VEDOUCÍ PRÁCE: OPONENT:
Jaroslav Čunát, DiS. Ing. Miroslav Paul Doc. Bohumil Miniberger
*) VAR_INPUT cas1 : TON; //Zpoţdění 2s cas2 : TON; //Zpoţdění 2s cas3 : TON; //Zpoţdění 1s cas4 : TON; //Zpoţdění 1s cas5 : TON; //Zpoţdění 5s - barvení cas6 : TON; //Zpoţdění 1s cas7 : TON; //Zpoţdění 1s cas8 : TON; //Zpoţdění 1s END_VAR VAR sekvence : INT; (* Indikátor stavu fáze programu - pomocná proměnná, podle jejíţ hodnoty program aktivuje sled jednotlivých bloků *) M0 : RS; // Nastavení M0 M1 : RS; // Nastavení M0 M2 : RS; // Nastavení M0 M3 : RS; // Nastavení M0 M4 : RS; // Nastavení M0 M5 : RS; // Nastavení M0 stop_tl : RS; // RS klopný obvod, který indikuje a zachycuje případné zmáčknutí STOP tlačítka vakuum : RS; // RS klopný obvod pomocí kterého se spíná nebo rozpíná vakuum pom_rs : RS; (* Pomocný RS klopný obvod který zajišťuje setrvání signálu pro přesun motoru M2, signál zde musí být nastaven pro celou dobu setrvání v této pozici *) Nast_hotovo : BOOL; // Indikátor nastavení segmentů automatu do výchozích poloh zastav : BOOL; // Zastavení automatu po ukončení cyklu (zastav=1)- aktivuje se stop tlačítkem prod1 : BOOL; // Uběh čas 2s prod2 : BOOL; // Uběh čas 2s prod3 : BOOL; // Uběh čas 1s prod4 : BOOL; // Uběh čas 1s prod5 : BOOL; // Uběh čas 5s (barvení kostky) prod6 : BOOL; // Uběh čas 1s prod7 : BOOL; // Uběh čas 1s prod8 : BOOL; // Uběh čas 1s
65
END_VAR VAR_OUTPUT END_VAR VAR_TEMP END_VAR //*********************** Spuštění a zastavení systému ***********************//
IF start and sekvence=0 THEN (* Spuštění cyklu, podmínka sekvence=0 je nutná k tomu, aby automat nereagoval na další zmáčknutí tlačítka START a nemohl být narušen cyklus náhodným stiskem *) sekvence:=1; ELSE END_IF;
//Spuštění programu - aktivace 1 bloku
stop_tl (S:= stop , R1:=start , Q1=> zastav ); // Ošetření stop tlačítka
//*************************** Počáteční nastavení - kontrola ****************************//
Case sekvence of //Začátek vlastního programu - podmínky typu CASE 1: if zastav then //Zastavení v případě stisku STOP tlačítka během předchozího cyklu sekvence:=0; //Nastavení po stisku STOP tlačítka else M0 ( S:=1, R1 := K01 , Q1=> M0K52) ; M1 ( S:=1, R1 := K11 , Q1=> M1K11) ; M3 ( S:=1, R1 := K31 , Q1=> M3K31) ; M4 ( S:=1, R1 := K41 , Q1=> M4K41) ; M5 ( S:=1, R1 := K55 , Q1=> M5K55) ;
// Nastavení poč. polohy M0 // Nastavení poč. polohy M1 // Nastavení poč. polohy M3 // Nastavení poč. polohy M4 // Nastavení poč. polohy M5
Nast_hotovo := K01 and K11 and K22 and K31 and K41 and K55; // Kontrola počátečního nastavení cas1 ( IN := Nast_hotovo, PT :=T#2s, Q => prod1 ); (* Sledování nastavení poč.hodnot + prodleva před prvním cyklem*) if prod1=true then // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy sekvence:=2; else end_if; end_if;
//***************************** Uchopení kostky ******************************// 2: M0 ( S:= prod1 , R1 := K02 , Q1=> M0K51) ; // Vysunutí kluzkého dopravníku cas2 ( IN := K02, PT :=T#2s, Q => prod2 ); // Prodleva mezi vysunutím dopravníku a otočením M1
66
M1 ( S:= K02 and prod2, R1 := K12 , Q1=> M1K12 ); // Otočení M1 s kostkou pod rameno manipulátoru M2 ( S:= K12 , R1 := 0 , Q1=> M2K21 ) ; // Přesun nad otočný motor s kostkou M3 ( S:= K21 , R1 := K32 , Q1=> M3K32) ; // Vysunutí ramene M4 ( S:= K32 , R1 := K42 , Q1=> M4K42) ; // Přiblíţení přísavky ke kostce vakuum ( S:= K42 and K32 and K21, R1 := 0 , Q1=> V0_motor) ; // Přisátí kostky cas3 ( IN := V0, PT :=T#1s, Q => prod3 ); (* Pokračování aţ po uplynutí prodlevy a zvýšení sekvence na3*) if prod3=true then // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy sekvence:=3; else end_if; //********************* Doprava kostky na posuvný dopravník ********** **************// 3: M4 ( S:= prod3 and K21 , R1 := K41 , Q1=> M4K41) ; // Zdvihnutí s přisátou kostkou M3 ( S:= K41 and K21 and V0, R1 := K31 , Q1=> M3K31) ; // Zasunutí ramene s přisátou kostkou pom_rs ( S:=K21, R1 :=V0 and K31 and K41 , Q1=> M2K21) ; // Přesunutí ramene do střední polohy M3 ( S:= K22 , R1 := K32 , Q1=> M3K32) ; // Vysunutí ramene s přisátou kostkou M4 ( S:= K32 and K22, R1 := K42 , Q1=> M4K42) ; // Přiblíţení kostky nad posuvný motor M5 vakuum ( S:=0, R1 :=V0 and K22 and K32 and K42, Q1=> V0_motor) ; // Puštění kostky-povolení vakua cas4 ( IN := (not V0) and K22 and K32 and K42, PT :=T#1s, Q => prod4 ); (* Pokračování aţ po uplynutí prodlevy a zvýšení sekvence na 4*) if prod4=true then // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy sekvence:=4; else end_if; //***************************** Barvení kostky *******************************// 4: M4 ( S:= 1, R1 := K41 , Q1=> M4K41) ; // Zdvihnutí bez kostky - barvení M3 ( S:= K41 , R1 := K31 , Q1=> M3K31) ; // Zasunutí ramene bez kostky - barvení M5 ( S:= K41 and K31, R1 :=K51 , Q1=> M5K51 ) ; // Posunutí dopravníku do polohy nanesení laku cas5 ( IN := K51, PT :=T#5s, Q => prod5 ); // Prodleva na barvení if prod5 then // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy sekvence:=5; else end_if; 5: M5 ( S:= prod5, R1:= K55 , Q1=>M5K55 ) ; // Posunutí k ramenu manipulátoru M3 ( S:= prod5 and K55, R1 := K32 , Q1=> M3K32) ; // Vysunutí ramene k obarvené kostce M4 ( S:= prod5 and K32, R1 := K42 , Q1=> M4K42) ; // Přiblíţení k obarvené kostce vakuum ( S:= K42 and prod5, R1 := 0 , Q1=> V0_motor) ; // Nasátí obarvené kostky cas6 ( IN := V0, PT :=T#1s, Q => prod6 ); (* Pokračování aţ po uplynutí prodlevy a zvýšení sekvence na 6*) if prod6 then // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy sekvence:=6; else end_if;
67
//**************************** Přemístění kostky do skladu ****************************// 6: M4 ( S:= prod6 , R1 := K41 , Q1=> M4K41) ; // Zdvihnutí obarvené kostky M3 ( S:= K41 , R1 := K31 , Q1=> M3K31) ; // Zasunutí ramene s obarvenou kostkou cas7 ( IN := K41 and K31, PT :=T#1s, Q => prod7 ); // Pokračování aţ po uplynutí prodlevy a zvýšení sekvence na 7 if K41 and prod7 then sekvence:=7; else end_if; // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy 7: M2 ( S:= V0 and K31 and K41 , R1 := 0 , Q1=> M2K23) ; // Přemístění manipulátoru do levé polohy - sklad M3 ( S:= K23 and V0, R1 := K32 , Q1=> M3K32) ; // Vysunutí ramene s obarvenou kostkou nad kontejner M4 ( S:= K32 and V0, R1 := K42 , Q1=> M4K42) ; // Přiblíţení obarvené kostky ke kontejneru vakuum ( S:=0, R1 := K32 and K42 and K23, Q1=> V0_motor) ; // Puštění kostky - povolení vakua cas8 ( IN := not V0, PT :=T#1s, Q => prod8 ); // Pokračování aţ po uplynutí prodlevy a zvýšení sekvence na 8 if prod8 then // Přechod do dalšího bloku po vykonání všech činností a uplynutí prodlevy sekvence:=8; else end_if; //********************* Počáteční nastavení – ukončení cyklu**********************// 8: M0 ( S:= 1 , R1 := K01 M1 ( S:= 1 , R1 := K11 M3 ( S:= 1 , R1 := K31 M4 ( S:= 1 , R1 := K41
, Q1=> M0K52) ; // Nastavení výchozích pozic motorů M0,M1,M3,M4 , Q1=> M1K11) ; , Q1=> M3K31) ; , Q1=> M4K41) ;
M2 ( S:= V0 and K31 and K41 , R1 := K31 and K41 and K23 and (not V0) , Q1=> M2K23) ; // Nastavení výchozí polohy pro M2 if K22 and K41 and K31 and K01 and K11 then (* Přechod do 1 bloku dalšího cyklu po vykonání všech činností - nastavení motorů*) sekvence :=1; else end_if; else end_case;
END_PROGRAM
68
Příloha č. 5 Mapovací soubor v Control webu begin 1 real input 2 boolean output 3 real input 4 real input 5 real input 6 real input 7 string input 8 real input 9 real input 10 real input 11 real input 12 boolean output 13 real input 14 boolean output 15 real input 100 - 149 real input 150 - 156 real output 157 real output 160 - 175 boolean input 176 real input 180 - 195 boolean output 196 real output 200 - 299 real input 300 - 399 real output 400 - 499 boolean input 500 - 599 boolean output 600 - 699 boolean output 700 - 799 boolean output end.
69
Příloha č. 6 Parametrický soubor Control webu [Settings] Ethernet = false ComDriver = CWCOMM.DLL COM1 SrcAdr = 32 NumRepeat = 3 Timeout = 5000 [comm] baudrate = 38400 parity = even databits = 8 stopbits = 1 cts_flow = disable dsr_flow = disable dtr_control = disable rts_control = disable dsr_sense = low rx_interchar_timeout = 0 tx_char_timeout = 0 rx_timeout = 0 rx_char_timeout = 0 tx_timeout = 0 rx_buffer = 520 tx_buffer = 520 rx_frame_buffer = 520 tx_frame_buffer = 520 [Channels] ; Block = ChFrom, ChTo, Stn, Area, Type, Offset, [Bidirect] [SwapBytes] [Id:xxx] ; Area: X, Y, R, S, DB, TIM, SYNCTIME, CW, SW Block Block Block Block Block
= 400, 449, 1, X, = 450, 489, 1, Y, = 490, 499, 1, R, = 600, 699, 1, X, = 700, 799, 1, Y,
bits, bits, bits, bits, sbit,
1 0 0 1 0
70
Příloha č. 7 Nastavení kanálů v Control webu
71
Příloha č. 8 Programování v Control webu Postup programování v Control webu Nejdříve spustíme vývojové prostředí a klikneme na ikonu nový projekt. Spustí se průvodce novou aplikací. Nastavíme jméno souboru a místo k ukládání a necháme zvolenou poloţku „Aplikace pracující v reálném čase“. Pomocí další části průvodce máme moţnost přizpůsobit velikost okna potřebám aplikace. Můţeme si zde ponechat předdefinované nastavení a rozměry měnit v průběhu programování dle potřeb aplikace. V následující poloţce průvodce zvolíme vlastnosti panelů a jejich počet (v tomto případě dva). V dalším okně se řeší přepínání viditelnosti panelů. Nejvhodnější pro tento program je první volba – záloţky i horké klávesy. Následující okno ovládá nastavování jmen panelů (popř. horkých kláves), tato poloţka byla potvrzena beze změn. Šířku a výšku ovládacího panelu a jeho umístění volíme v dalším okně. Pro aplikaci je vizuálně nejlepší pozice dole. Dále volíme časový krok selektoru, přičemţ necháme zvolenu poloţku „Generovat strukturu časovacího selektoru“. V poslední okno průvodce, kde se volí parametry pro start programu, časování aplikace a reálný čas necháme beze změn a stiskneme dokončit.
Nyní uţ je hotová nová aplikace pro programování. Pomocí palety přístrojů byly vyhledány vhodné vizualizační prvky. Kromě „gl_led“, která je 3D, patří všechny ostatní pouţité přístroje mezi ploché. Po té začneme řešit indikaci stavu a signálů u jednotlivých motorů. Kaţdý motor má svůj blok, který sděluje veškeré potřebné informace. Prvek „label“ se pouţívá k popisování přístrojů a veličin. „gl_led“ indikují stav vysílaných signálů k motoru. Přístroj „engine“ slouţí k indikaci pohybu motorů a „multilabel“ k indikaci polohy.
72
I pro ovládání automatu bylo třeba vybrat vhodné prvky. Přístroj ´“switch“ byl pomocí inspektora přístroje (otevření - dvojité kliknutí na přístroj) upraven v poloţce „Mode“ na „text button“ a jako provozní mód bylo nastaveno „set_true_on_press“. To způsobí nastavení kladného signálu na výstupu pouze v momentě, kdy je tlačítko zmáčknuto. V poloţce „Receivers“ nastavíme přístroj, který vyhodnocuje změnu stavu tlačítka. V tomto případě jsou to „multilabel“ indikující zapnutí/vypnutí opakování cyklu. Poté je zvoleno barevné provedení tlačítek a nápisů – záloţka „colours“. V nabídce „společné“ se pak nastavuje „Timer“ (časovač). Zde je nejvhodnější zvolit 1 s nebo „timing_switch.panel_1_is_active“. Tímto způsobem jsou řešena tlačítka START a STOP (switch 1–4) na obou panelech. Inspektor přístroje je zobrazen níţe.
Inspektor přístroje Control webu 5 - přístroj switch 73
U přístrojů „gl_led“ je zapotřebí zvolit: Timer – podle panelu zvoleno „timing_switch.panel_1_is_active“ nebo „timing_switch.panel_2_is_active“ coţ způsobí, ţe tyto přístroje budou aktivovány spolu s příslušným panelem, na kterém jsou umístěny. Rozsvícení led diody je závislé na nastavení podmínky „expresion“ v inspektoru přístroje. Můţe zde být vyhodnocován i sloţitější výraz. Barva pozadí – tento přístroj má implicitně nastavený černý rámeček. Všechny tyto parametry lze změnit v inspektoru přístroje.
Přístroje „Multilabel“ realizují podmínky jednotlivých nápisů (expresion) v záloţce „item“. Za různých podmínek (popř. výrazů) se nastaví různé nápisy na tomto přístroji (např. „M0 Zasunutý“). Timer byl opět zvolen jako „timing_switch.panel_1_is_active“ nebo „timing_switch.panel_2_is_active“, to znamená, ţe se přístroj aktivuje spolu s panelem, na kterém je umístěn. „Engine“ je nastavený tak, aby reagoval na veškeré změny polohy a signalizoval pohyb motoru. K tomu slouţí podmínka v inspektoru přístroje „expresion“. Např. „M0K51 or M0K52“ znamená, ţe engine bude signalizovat pohyb motoru, jakmile je vyslán signál k jeho vysunutí nebo zasunutí. Parametr MODE se uţívá k nastavení směru vizualizace pohybu motoru. Zde bylo zvoleno otáčení vpravo (rotate_right). Timer byl opět u všech přístrojů tohoto typu zvolen jako aktivace panelu. U popisky autora na obou panelech bylo pouţito přístrojů Label a jako bílé pozadí přístroj Draw. Pro správnou funkci všech prvků bylo zapotřebí vhodně nastavit komunikaci s automatem. K tomuto účelu slouţí ovladač Teco a přidání mapovacího (dmf) a parametrického (par) do sloţky s programem. Mapovací soubor nám říká, kolik a jakých kanálů můţeme při realizaci programu pouţít a pod jakými čísly jsou k dispozici. Př. Block = 400, 449, 1, X,
bits, 1
Block = 450, 489, 1, Y,
sbit, 0
74
Mezi hlavní parametry bloku patří první dvě čísla (400,449 nebo 450,489), určující moţná čísla kanálů v rámci bloku. Písmena X, Y (nebo R) určují, jestli je kanál vstupní, výstupní nebo uţivatelský. Slovo „bits“ je pouţito pro práci s celými byte, „sbit“ pro jednotlivé bity v rámci byte. Poslední číslo udává pozici od začátku bloku. Kanály byly sdruţeny do sekce „robot“. Po nastavení parametrického souboru je jiţ moţné definovat kanály pro přímou komunikaci s jednotlivými indikačními prvky. U jednotlivých kanálů je moţné nadefinovat jméno, přednastavenou počáteční hodnotu (init_value), ovladač (driver) a číslo kanálu (driver index). Jednotlivé kanály jsou pojmenovány podle signálů, které indikují, popř. nastavují. V inspektoru přístroje příslušných prvků je na ně přímý odkaz. Po správném přiřazení jednotlivých kanálů je indikace procesů plně funkční. Na druhém panelu je pouţit přístroj Draw k vizualizaci pohybu jednotlivých motorů. Systém provedení je principiálně jednoduchý. V záloţce „kresba“ je realizován náčrt jednotlivých motorů. Po přepnutí na záloţku „zdrojový text“ máme moţnost měnit čísla souřadnic jednotlivých objektů. Následující odstavec znázorňuje zdrojový text přístroje po nakreslení jednoho obdélníku. Vlastní obdélník je zde popsán jako „box“ v části drawing. Změnami číselných souřadnic, které následují za jménem objektu měníme jeho velikost nebo polohu. Příklad obdélníku: owner = panel_1; position = 132, 87, 200, 200; zoomable; draw_size = 200, 200; drawing box 54, 58, 53, 26; end; Pro průběţnou změnu těchto parametrů je třeba místo čísla zvolit výraz, obsahující proměnnou, kterou budeme moci během programu měnit. Tuto funkci plní proměnné a–z typu real.
75
Např. Při vizualizaci pohybu motoru byla pro čáru znázorňující píst M0 pouţita tato úprava: line M0_2
48, 147, 57 {57 + g - o}, 147;
Výraz {57 + g - o} pomocí změny hodnot proměnných „g“ a „o“ mění souřadnice objektu v rámci přístroje Draw. Pokud plynule a po malých krocích měníme hodnotu těchto proměnných, dochází k animaci kresby. Vhodné nastavení a změny proměnných typu real (a-z), které realizují animaci, řídí podmínky v proceduře onActivate přístroje Draw. Pro kaţdou animaci jednotlivých kreseb je pouţita odlišná proměnná. Provedení animace se skládá vţdy ze dvou částí: 1. část Indikace signálu pomocí podmínky IF (je-li signál s hodnotou „true“, nastaví se proměnná „pom“ také do stavu „true“. if robot.M0K51 then pom:=true; else end;
(* Nastavení proměnné pro vysunutí M0 *)
2. část Po nastavení proměnné „pom“ do stavu „true“ se spustí blok, který pomocí cyklu FOR bude postupně měnit hodnotu proměnné „g“ aţ do 20 (limit v hlavičce cyklu). Mezi změnami se bude realizovat zpoţdění 0,015 s, které bylo vypočteno na základě doby přemístění motoru M0 z jedné pozice do druhé. To zajistí věrnější provedení animace. Výpočet probíhá následovně: Nejdříve se stopkami změří čas přesunu – v tomto případě 0,3 s. Potom je zapotřebí určit vhodný počet kroků (limit v podmínce FOR), aby animace byla plynulá. Po té vydělíme čas přesunu počtem kroků a vyjde nám prodleva, kterou realizujeme mezi kaţdým navýšením proměnné v cyklu FOR (pause 0,015). Zpoţdění programu při vykonávání těchto instrukcí můţeme zanedbat.
76
if pom and not p1 then for g = 0 to 20 do pause 0.015 ; g:=g+1; pomoc:=1; end; p1:=true; else end;
// Vizualizace M0 - vysunutí - písmeno "g"
Proměnná „p1“ slouţí k tomu, aby po splnění úkolu bloku nedošlo k jeho opětovnému spuštění v další části programu. Takto jsou řešeny všechny bloky v programu. Proměnná „pomoc“ je zde pouţita jako pomocná proměnná při snaze realizovat animaci vysutí/zasutí motoru M3, kdyţ se rameno nachází ve střední poloze. Je zde tedy pouze orientačně a na chod programu nemá vliv. Uţitím proměnných pom–pom26 se realizuje aktivace podmínek FOR. Proměnné p1–p26 slouţí k vyřazení bloku po jeho proběhnutí, a–z určují změnu souřadnic u kresby. Proměnná „period“ byla pouţita k nahrazení časového intervalu u zpoţdění „pause“. Hodnota period potom určovala počet sekund zpoţdění. Proměnná „zapnuto“ je určena k indikaci zapnutí/vypnutí cyklu a pouţívá se v souvislosti se stiskem tlačítek START a STOP. Indikaci cyklu je také moţno provádět za pouţití kanálu (vyhledáme vhodnou proměnnou, která plní tuto funkci v rámci programu Mosaic v registru R). „Pok1“, „pomoc“ a „aktivace“ jsou poţívány pouze v případě pokusu o prostorovou vizualizaci motoru M3. Proměnné definujeme v datových inspektorech prostředí Control web. Nastavíme vţdy jméno, typ a inicializační hodnotu. Proměnné se na konci kaţdého cyklu nulují z důvodu správné funkce v dalším cyklu. Kvůli problému s kolizními signály při vykonávání programu PLC nastal problém s realizací vizualizace vysouvání a zasouvání motoru M3. Pokud je M2 ve střední poloze (K22), motory M3 a M4 se prostorově zvětší, aby simulovaly přiblíţení k posuvnému dopravníku. Tento proces je řešen v proceduře přístroje Draw. Samostatně je plně funkční avšak v kvůli kolizním signálům od PLC Tecomat se nepodařilo umístit tento blok do procedury tak, aby plnil svou funkci (v proceduře jsou vloţeny jen jako komentáře). Vţdy docházelo k narušení souběhu celé animace, a proto byla vizualizace tohoto procesu řešena indikátorem „gl_led_15“, který indikuje signály k vysouvání a zasouvání tohoto motoru.
77
Příloha č. 9 Výpis programu přístroje Draw (******* Nastavování proměnných podle hodnot snímačů *******)
if robot.M0K51 then pom:=true; else end;
(* Nastavení proměnné pro vysunutí M0 *)
if robot.M1K12 then pom2:=true; else end;
(* Nastavení proměnné pro otočení M1 s kostkou *)
if robot.M2K21 then (* Nastavení proměnné pro otočení ramene M2 k posuvnému dopravníku *) pom3:=true; else end; if robot.M3K32 and robot.K21 then (* Nastavení proměnné pro vysunutí M3 *) pom4:=true; else end; if robot.M4K42 then (* Nastavení proměnné pro pohyb M4 směrem dolů pro kostku *) pom5:=true; else end; if robot.M4K41 then (* Nastavení proměnné pro pohyb M4 směrem nahoru s kostkou *) pom13:=true; else end;
78
if robot.M3K31 then pom11:=true; else end;
(* Nastavení proměnné pro zasunutí M3 *)
if pom11 and not robot.M2K21 then pom12:=true; else end;
(* Vrácení M2 do střední polohy *)
(*if p1 and p2 and p3 and p4 and p5 and p13 and p11 and M3K32 then (* Nastavení proměnné pro vysunutí M3 - střední poloha *) pom23:=true; else end; *) if p1 and p2 and p3 and p4 and p5 and p13 and p11 and p12 and robot.M4K42 then (* Nastavení proměnné pro pohyb M4 směrem dolů - Na M5 *) pom17:=true; else end; if pom17 and robot.M4K41 then (* Nastavení proměnné pro pohyb M4 směrem nahoru - čekání na barvení *) pom18:=true; else end; (*if robot.M3K31 and p23 then (* Nastavení proměnné pro zasunutí M3 - střední poloha *) pom24:=true; else end; *) if robot.M5K51 then (* Nastavení proměnné pro posun M5 do polohy barvení *) pom6:=true; else end; if robot.M5K55 then (* Nastavení proměnné pro posun M5 do polohy pod otočné rameno *) pom14:=true; else end;
79
(* *** Nastavení proměnné pro vysunutí M3 - střední poloha po barvení*) pom25:=true; else end; *) if pom14 and robot.M4K42 then (* Nastavení proměnné pro pohyb M4 směrem dolu - pro obarvenou kostku *) pom19:=true; else end; if pom19 and robot.M4K41 then (* Nastavení proměnné pro pohyb M4 směrem nahoru - s obarvenou kostkou *) pom20:=true; else end; (* *** Nastavení proměnné pro zasunutí M3 - střední poloha po barvení*) (* if robot.M3K31 and p25 then pom26:=true; else end; *) if robot.M2K23 then (* Nastavení proměnné pro otočení ramene M2 ke skladu *) pom7:=true; else end; if robot.M2K23 and robot.M3K32 then (* Nastavení proměnné pro vysunutí M3 nad sklad *) pom8:=true; else end; if robot.K23 and robot.M4K42 then (* Nastavení proměnné pro pohyb M4 směrem dolu puštění kostky *) pom21:=true; else end; if robot.K23 and robot.M4K41 then (* Nastavení proměnné pro pohyb M4 směrem nahoru do poč. pozice *) pom22:=true; else end;
80
if robot.M0K52 then pom9:=true; else end;
(* Nastavení proměnné pro zasunutí M0 *)
if robot.M1K11 then (* Nastavení proměnné pro vrácení M1 do výchozí polohy *) pom10:=true; else end; if pom8 and robot.M3K31 then (* Nastavení proměnné pro vrácení M3 do vých. polohy *) pom16:=true; else end; if pom22 and not robot.M2K23 then (* Nastavení proměnné pro vrácení M2 do vých. polohy - střed *) pom15:=true; else end; (******* Vizualizace jednotlivých prvků podle proměnných *******)
if pom and not p1 then
(* Vizualizace M0 - vysunutí - písmeno "g" *)
for g = 0 to 20 do pause 0.015 ; g:=g+1; pomoc:=1; end; p1:=true; else end;
81
if pom2 and not p2 then
(* Vizualizace M1 - otočení s kostkou - písmeno "h" *)
for h = 0 to 60 do pause 0.016 ; h:=h+1; end; p2:=true; else end;
if pom3 and not p3 then
(* Vizualizace M2 - otočení k M5 - písmeno "J" *)
for J = 0 to 20 do pause 0.080 ; J:=J+1; end; p3:=true; else end; if pom4 and not p4 then (* Vizualizace M3 - vysunutí ke kluz.dopravníku - písmeno "m" *) for m = 0 to 42 do pause 0.032 ; m:=m+1; end; p4:=true; else end; if pom5 and not p5 then (* Vizualizace M4 - přiblíţení ke kostce na dopravníku - písmeno "k" *) for k = 0 to 20 do pause 0.0175 ; k:=k+1; end; p5:=true; else end;
82
if pom13 and not p13 then (* Vizualizace M4 - zdvihnutí kostky z dopravníku - písmeno "s" *) for s = 0 to 13 do pause 0.027 ; s:=s+1; end; p13:=true; else end; if pom11 and not p11 then
(* Vizualizace M3 - zasunutí s kostkou - písmeno "q" *)
for q = 0 to 42 do pause 0.13 ; q:=q+1; end; p11:=true; else end; if pom12 and not p12 then (* Vizualizace M2 - návrat s kostkou do střední polohy - písmeno "r" *) for r = 0 to 42 do pause 0.15 ; r:=r+1; end; p12:=true; else end; (*if pom23 and not p23 then (* *** Vizualizace M3 - Vysunutí ve střední poloze - písmeno "c" *) for c = 0 to 10 do pause 0.13 ; c:=c + 1; end; p23:=true; else end;*)
83
if pom17 and not p17 then
(* Vizualizace M4 - umístění kostky na M5 "w" *)
for w = 0 to 13 do pause 0.08 ; w:=w+1; end; p17:=true; else end; if pom18 and not p18 then (* Vizualizace M4 - návrat po umístění kostky, čekání na prodlevu "x" *) for x = 0 to 13 do pause 0.08 ; x:=x+1; end; p18:=true; else end; (*if pom24 and not p24 then (* *** Vizualizace M3 - Zasunutí ve střední poloze - písmeno "d" *) for d = 0 to 10 do pause 0.13 ; d:=d + 1; end; p24:=true; else end; *) if pom6 and not p6 then (* Vizualizace M5 - Posunutí do polohy barvení "i" *) for i = 0 to 80 do pause 0.14 ; i:=i+1; end; p6:=true; else end; if pom14 and not p14 then (* Vizualizace M5 - Posunutí zpátky pod rameno - písmeno "t" *)
84
for t = 0 to 80 do pause 0.0095 ; t:=t+1; end; p14:=true; else end; (* ***Vizualizace M3 - Vysunutí ve střední poloze po barvení - písmeno "e" *) for e = 0 to 10 do pause 0.13 ; e:=e + 1; end; p25:=true; else end; *) if pom19 and not p19 then (* Vizualizace M4 - přiblíţení k nastříkané kostce - písmeno "y" *) for y = 0 to 13 do pause 0.027 ; y:=y+1; end; p19:=true; else end; if pom20 and not p20 then (* Vizualizace M4 - zdvihnutí nastříkané kostky "z" *) for z = 0 to 13 do pause 0.027 ; z:=z+1; end; p20:=true; else end; (*if pom26 and not p26 then (* *** Vizualizace M3 - Zasunutí ve střední poloze po barvení - písmeno "e" *)
85
for f = 0 to 10 do pause 0.13 ; f:=f + 1; end; p26:=true; else end; *) if pom7 and not p7 then (* Vizualizace M2 - otočení s obarvenou kostkou ke skladu - písmeno "n" *) for n = 0 to 37 do pause 0.023 ; n:=n+1; end; p7:=true; else end; if pom8 and not p8 then (* Vizualizace M3 - vysunutí nad sklad - písmeno "l" *) for l = 0 to 37 do pause 0.038; l:=l+1; end; p8:=true; else end; if pom21 and not p21 then (* Vizualizace M4 - poloha pouštění kostky "a" *) for a = 0 to 13 do pause 0.027 ; a:=a+1; end; p21:=true; else end; if pom22 and not p22 then (* Vizualizace M4 - návrat do výchozí polohy "b" *)
86
for b = 0 to 20 do pause 0.0175 ; b:=b+1; end; p22:=true; else end; if pom9 and not p9 and not robot.K22 then (* Vizualizace M0 - zasunutí M0 do výchozí polohy - písmeno "o" *) for o = 0 to 20 do pause 0.015 ; o:=o+1; end; p9:=true; else end; if pom10 and not p10 then (* Vizualizace M1 - otočení do výchozí polohy - písmeno "p" *) for p = 0 to 30 do pause 0.026 ; p:=p+1; end; p10:=true; else end; if pom16 and not p16 then (* Vizualizace M3 - zasunutí_návrat do výchozí polohy - písmeno "v" *) for v = 0 to 37 do pause 0.16 ; v:=v+1; end; p16:=true; else end; if pom15 and not p15 then (* Vizualizace M2 - návrat do vých. polohy_střed - písmeno "u" *)
87
for u = 0 to 37 do pause 0.13 ; u:=u+1; end; p15:=true; else end; (*Nulování proměnných a pom. proměnných do dalšího cyklu - podmínka výchozího stavu *) if pom15 and K22 then a:= 0; b:= 0; c:= 0; d:= 0; e:= 0; f:= 0; g:= 0; h:= 0; i:= 0; J:= 0; k:= 0; l:= 0; m:= 0; n:= 0; o:= 0; p:= 0; q:= 0; r:= 0; s:= 0; t:= 0; u:= 0; v:= 0; w:= 0; x:= 0; y:= 0; z:= 0; p1:=false; p2:=false; p3:=false; p4:=false; p5:=false; p6:=false; p7:=false; p8:=false; 88
p9:=false; p10:=false; p11:=false; p12:=false; p13:=false; p14:=false; p15:=false; p16:=false; p17:=false; p18:=false; p19:=false; p20:=false; p21:=false; p22:=false; pom:=false; pom2:=false; pom3:=false; pom4:=false; pom5:=false; pom6:=false; pom7:=false; pom8:=false; pom9:=false; pom10:=false; pom11:=false; pom12:=false; pom13:=false; pom14:=false; pom15:=false; pom16:=false; pom17:=false; pom18:=false; pom19:=false; pom20:=false; pom21:=false; pom22:=false; else end;
89