VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra technických studií Obor Počítačové systémy
Výdejní automat na měřidla bakalářská práce
Autor: Marek Švoma Vedoucí práce: Ing. František Šeránek Jihlava 2016
Abstrakt Tato bakalářská práce se zabývá návrhem výdejního automatu na měřidla. V úvodu práce je popis různých výdejních automatů. Poté je proveden popis výběru konkrétních součástek pro výdejní automat a návrhem spínací desky. Další část se zabývá konkrétní realizací, programování řídící desky, vytvoření databáze, programu na ovládání a v poslední části testování. V práci jsou též zhodnoceny výsledky a provedeny úpravy na základě vyhodnocených poznatků.
Klíčová slova Výdejní automat, frekvenční měnič, asynchronní motor, inkrementální čidlo, MS SQL Databáze, C#, EAGLE.
Abstract This bachelor thesis deals with a proposal of a Measuring Instrument Dispenser. The beginning of the thesis contains description of various Measuring Instrument Dispensers. Choice Characterization of
some specific components for MID with
spinaci desky proposal is mentioned then. Following part of the thesis is focused on conrete implemetation and programming control board, database setting, control programme and testing in the last part. The thesis also includes outcomes´ evaluation with subsequent adaptation (assessment) made on the basis of the outcomes.
Key words Measuring
Instrument
Dispenser,
frequency
converter,
incremental encoder, MS SQL database, C #, EAGLE.
asynchronous
motor,
Prohlašuji, že předložená bakalářská práce je původní a zpracoval/a jsem ji samostatně. Prohlašuji, že citace použitých pramenů je úplná, že jsem v práci neporušil/a autorská práva (ve smyslu zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů, v platném znění, dále též „AZ“). Souhlasím s umístěním bakalářské práce v knihovně VŠPJ a s jejím užitím k výuce nebo k vlastní vnitřní potřebě VŠPJ. Byl/a jsem seznámen s tím, že na mou bakalářskou práci se plně vztahuje AZ, zejména § 60 (školní dílo). Beru na vědomí, že VŠPJ má právo na uzavření licenční smlouvy o užití mé bakalářské práce a prohlašuji, že s o u h l a s í m s případným užitím mé bakalářské práce (prodej, zapůjčení apod.). Jsem si vědom/a toho, že užít své bakalářské práce či poskytnout licenci k jejímu využití mohu jen se souhlasem VŠPJ, která má právo ode mne požadovat přiměřený příspěvek na úhradu nákladů, vynaložených vysokou školou na vytvoření díla (až do jejich skutečné výše), z výdělku dosaženého v souvislosti s užitím díla či poskytnutí licence. V Jihlavě dne
............................................... Podpis
Poděkování Na tomto místě bych rád poděkoval svému vedoucímu práce Ing. Františku Šeránkovi za možnost vytvářet tuto práci pod jeho vedením. Také bych rád poděkoval Michalu Hortovi za cenné rady, připomínky, pomoc a poskytnutí tématu.
Obsah 1
Úvod a motivace ....................................................................................................... 8
2
Současný stav ............................................................................................................ 9
3
4
2.1
Spirálové automaty............................................................................................. 9
2.2
Automaty s 3D - mechanizmem ....................................................................... 10
Analýza a návrh implementace ............................................................................... 11 3.1
Návrh výdejního automatu ............................................................................... 11
3.2
Volba implementačního prostředí .................................................................... 11
3.2.1
Program na návrh plošných spojů EAGLE............................................... 11
3.2.2
Microsoft Visual Studio ............................................................................ 12
3.2.3
SQL Server Management Studio .............................................................. 13
Realizace ................................................................................................................. 14 4.1
Návrh tvaru výdejního automatu na měřidla .................................................... 14
4.2
Hardware pro výdejní automat ......................................................................... 15
4.2.1
Elektromotor ............................................................................................. 15
4.2.2
Frekvenční měnič ...................................................................................... 19
4.2.3
Snímač otáček ........................................................................................... 20
4.2.4
Indukční snímač ........................................................................................ 23
4.2.5
Vývojová deska s procesorem .................................................................. 24
4.2.6
Další HW .................................................................................................. 27
4.3
5
Návrh spínací desky ......................................................................................... 31
4.3.1
Konektor pro řídící desku ......................................................................... 31
4.3.2
Typy vstupů a výstupů spínací desky ....................................................... 32
4.3.3
Obvod pro inkrementální čidlo ................................................................. 33
4.3.4
Obvod pro konektor ovládání ................................................................... 37
4.3.5
Obvod pro ovládání dvířek a směru otáčení ............................................. 38
4.3.6
Obvod pro frekvenční měnič .................................................................... 39
4.4
Princip zapojení ................................................................................................ 40
4.5
Programování vývojové desky ......................................................................... 42
4.6
Vytvoření databáze........................................................................................... 48
4.7
Struktura ovládání menu .................................................................................. 54
4.7.1
Uživatelská část ........................................................................................ 56
4.7.2
Administrátorská část ............................................................................... 60
Testování zapojení .................................................................................................. 63 5.1
Testování doma ................................................................................................ 63
5.2
Testování ve firmě............................................................................................ 68
6
Závěr ....................................................................................................................... 73 6.1
Splnění cílů....................................................................................................... 73
6.2
Problémy a jejich řešení ................................................................................... 74
6.3
Možnosti rozšíření práce, další pokračování .................................................... 74
Seznam použité literatury ............................................................................................... 75 Seznam obrázků .............................................................................................................. 77 Seznam použitých zkratek .............................................................................................. 79 Přílohy............................................................................................................................. 80 Obsah přiloženého CD .................................................................................................... 86
1 Úvod a motivace V souvislosti se stále rostoucím zájmem uživatelů na komplexní řešení skladování a výdeje pracovních pomůcek a ostatních zásob vznikají výdejní automaty. Výdejní automaty jsou určené pro výdej různých výrobků a nástrojů, které jsou často upotřebeny ve výrobním procesu. Jedná se o různé nástroje (vrtáky, frézy,…), řezné destičky, ale i o ochranné pomůcky (rukavice, brýle, špunty do uší,…) či další spotřební zboží (špičky ke svářečkám, kartuše s tmely, mazadly, spreje, …). Výrobky jsou vydávány na základě požadavku oprávněné osoby, která se přihlásí kódem nebo čipovou kartou a vybere si požadovaný výrobek na LCD dotykovém displeji. Výdej daného výrobku je takto přesně přiřazen k danému zaměstnanci, k danému středisku či k různým nákladovým kategoriím. Je možné i různě omezovat spotřebu výrobků z nějaké kategorie zaměstnancům, kteří nemají oprávnění pro výběr těchto výrobků. Všechny výběry jsou uloženy do databáze v automatu. Tato data jsou pak přenášena po síti dle nastavení. Evidenci výdejů vede připojený počítač, který může být napojený na centrální databázi. Výdejní automaty nejsou vybaveny kreditním systémem, tzn., neumožňují přijímat mince nebo bankovky. Cílem práce je návrh a vytvoření funkčního výdejního automatu pro příjem a výdej měřidel pro firmu KOVO KOUKOLA s.r.o. Hlavním výrobním zaměřením firmy je obrábění kovů, proto je pro firmu důležité sledovat skladování a výdej drahých měřidel či nástrojů. Výdejní automat musí splňovat: − Ušetření skladníka nebo času mistra, − nonstop výdej a příjem měřidel, nástrojů, − jednoduchá obsluha zaměstnancem, − snadné nastavení při změně vydávaného měřidla, − dokonalý přehled o stavu skladu nástrojů či měřidla, − přehled o výdeji nástrojů jednotlivým zaměstnancům, − možnost omezování výdeje měřidel různým zaměstnancům, − přiřazení nástroje k různým kategoriím, − odebrání nástroje až v okamžiku potřeby, − zvýšení bezpečnosti proti odcizení nástrojů. 8
2 Současný stav Výdejní automaty jsou pro průmysl velice důležité, bez nich firmy nemají přehled o vydávání nástrojů jednotlivým zaměstnancům. V případě poškození lze jen těžko dohledat viníka. Lze to vyřešit dalším skladníkem, ale lepší je zde použít výdejní automat na měřidla. Na trhu existuje velké množství průmyslových výdejních automatů, které se liší způsobem výdeje - spirálový nebo s 3D-mechanizmem. Způsob výdeje ovlivňuje množství druhů a kapacitu vydávaných výrobků.
2.1 Spirálové automaty Výrobky jsou vydávány spirálami, jejichž řízení je napojeno na počítač, který eviduje všechny pohyby na skladě - jak naskladnění, tak i jednotlivé výdeje přiřazené k oprávněné osobě, která si je vyzvedla. Výdej automatu je zabezpečen roletou, která zabraňuje vybrání zboží. Automat je nutné přišroubovat k podlaze/stěně pomocí dodávaných příchytek. Každý vydaný výrobek je vyfocen kamerou a tato fotka se odešle e-mailem spolu s podrobnými daty o daném výdeji. Všechny události v automatu se ukládají do log file. Výdejový automat je určen pro výdej různých výrobků, které jsou často spotřebovány ve výrobním procesu. Jedná se o různé nástroje, řezné destičky, ale i o ochranné či další spotřební zboží. [1]
Obrázek 1: Detail spirálového výdejního systému
9
2.2 Automaty s 3D - mechanizmem Výrobky jsou vydávány patentovaným systémem 3D podavače, jehož řízení je napojeno na počítač. Ten eviduje všechny pohyby na skladě - jak naskladnění, tak i jednotlivé výdeje přiřazené k oprávněné osobě, která si je vyzvedla. Výdej automatu je zabezpečen roletou, která zabraňuje vybrání zboží. Dveře uzamyká závora na třech bodech pomocí elektromechanického uzavírání, tudíž automat může otevřít pouze autorizovaná osoba a její ID je uloženo v databázi spolu s datem otevření automatu. Automat je nutné přišroubovat k podlaze/stěně pomocí dodávaných příchytek. Každý vydaný výrobek je vyfocen kamerou a tato fotka se odešle e-mailem spolu s podrobnými daty o daném výdeji. Všechny události v automatu se ukládají do log file. Šířka police, na které jsou uskladněny výrobky, je 920 mm, hloubka 300 mm. Nejmenší možná krabička musí mít hloubku alespoň 8 mm. Největší možná krabička může mít max. hloubku 120 mm, šířku max. 600 mm a výšku max. 200 mm. Celé police jsou výsuvné a lehce vyměnitelné. Jednotlivé přepážky oddělující vydávané zboží jsou přichyceny magnetem a tím je možné je snadno přestavit. Krabičky jsou vydávány na základě požadavku oprávněné osoby, která se přihlásí kódem nebo čipovou kartou, popř. čárovým kódem a vybere si požadovaný výrobek na LCD dotykovém displeji. [1]
Obrázek 2: Výdejní automat s 3-D mechanizmem
10
3 Analýza a návrh implementace Tato práce se zaměří na nový typ výdejního automatu a to typu kolotoče. Velikou výhodou tohoto výdejního automatu oproti předchozím výrobkům je ten, že umožňuje uskladnění většího množství nástrojů a pomůcek na menším prostoru. Tento automat je postaven přesně na míru požadavkům firmy KOVO KOUKOLA s.r.o.
3.1 Návrh výdejního automatu Návrh výdejního automatu musíme rozdělit do několika kroků: − Návrh tvaru výdejního automatu. − Výběr hardwarových komponent. − Návrh spínací desky – pomocí programu EAGLE. − Programování vývojové desky – pomocí C# v MS Visual Studio. − Vytvoření databáze – pomocí SQL Server Management Studio. − Struktura ovládání menu a jejího programu – pomocí C# v MS Visual Studio.
3.2 Volba implementačního prostředí V této kapitole budou stručně popsány softwarové programy a programovací jazyky, které byly použity při návrhu a tvorbě výdejního automatu. Tyto softwary byly vyhodnoceny jako nejvhodnější pro tvorbu tohoto automatu.
3.2.1 Program na návrh plošných spojů EAGLE Pro návrh plošného spoje pomocí PC je ideální použít program EAGLE. Pracovat s tímto programem jsem se naučil díky předmětu „Návrh plošných spojů“. Editor plošných spojů EAGLE je uživatelsky přívětivý a výkonný nástroj pro návrh desek plošných spojů (DPS, PCB). Název EAGLE je zkratka, pocházející z původního názvu Easily Applicable Graphical Layout Editor. [2] Program se skládá ze tří hlavních modulů: − Editor schémat Program Eagle umožňuje nakreslit schémata elektronického obvodu v modulu Schematic (*.sch). Používané součástky jsou uloženy v několika knihovnách (*.lbr). 11
− Editor spojů Po nakreslení schématu příkazem BOARD vytvoříme soubor desky (*.brd), který obsahuje všechny použité součástky. Jejich vzájemné propojení je zatím provedeno vzdušnými spoji (airways) ve vrstvě Unrouted. − Autorouter Pro automatický návrh můžeme použít autorouter (příkaz AUTO;), ale lepší je ruční návrh uživatele pro snadnější orientaci.
3.2.2 Microsoft Visual Studio Pokud se ohlédneme do minulosti, zjistíme, že dění ve světě programování a vývoje softwaru je radikálně ovlivněno technologickými turbulencemi, které se vyskytují takřka každých deset let. Zalovíme-li v paměti, pak můžeme prohlásit, že v 80. letech minulého století vládl ve vývoji komerčního softwaru jazyk C a strukturované programování. O deset let později začalo své růžky vystrkovat C++, které seznámilo vývojářské komunity s objektově orientovanou filosofií vývoje počítačových programů. Jazyk C#, jenž je dílem společnosti Microsoft, je jedním z nejoblíbenějších prostředků pro vytváření řízených aplikací běžících v područí platformy .NET Framework a je součástí balíku MS Visual Studio. Microsoft Visual Studio je vývojové prostředí (IDE) od Microsoftu. Může být použito pro vývoj konzolových aplikací a aplikací s grafickým rozhraním jak ve strojovém kódu, tak v řízeném kódu. Zde jsem se rozhodl programovat ovládací program výdejního automatu a programování vývojové desky v C# (C Sharp). Vývojová deska FEZ Cobra II se totiž programuje pomocí C#. Oproti Arduinu má totiž C# v sobě zabudovanou nadstavbu .NET („dotnet“). .NET je zastřešující název pro soubor technologií v softwarových produktech, které tvoří celou platformu, která je dostupná nejen pro Web a Windows. Pro vývoj .NET aplikací vydal Microsoft Visual Studio .NET. C# je také jednoduší na programování než Arduino. C# je jednoduchý, moderní, mnohoúčelový a vysokoúrovňový objektově orientovaný programovací jazyk vyvinutý firmou Microsoft zároveň s platformou .NET Framework, prostředí potřebné pro běh aplikací a nabízející jak spouštěcí rozhraní, tak potřebné knihovny, později schválený standardizačními komisemi ECMA a ISO. Microsoft založil C# na jazycích C++ a Java. C# lze využít k tvorbě databázových programů, webových aplikací a stránek, webových služeb, formulářových aplikací
12
ve Windows, softwaru pro mobilní zařízení. Jazyk je vhodný pro vývoj softwarových komponent distribuovaných v různých prostředích. [3]
3.2.3 SQL Server Management Studio Pro návrh databáze výdejního automatu jsem se rozhodl pro program SQL Server Management Studio, protože firma KOVO KOUKOLA s.r.o. již toto používá pro svoji databázi a aby tak bylo možné tyto databáze propojit a naimportovat data o zaměstnancích firmy. Microsoft SQL Server je profesionální relační databázový a analytický systém pro firmy, e-obchody, byznys a řešení datových skladů vyvinutý společností Microsoft. Databázový server je koncipován jako služba na pozadí. Aby se s ním dalo pracovat, tedy spravovat ho na administrátorské úrovni a také zadávat a ladit SQL příkazy, je součástí dodávky i množina nástrojů. Nejuniverzálnější z nich je SQL Server Management Studio. Umožňuje vytvářet nové databáze, vytvářet a spravovat účty jednotlivých uživatelů a přidělovat a rušit jejich oprávnění pro práci s jednotlivými objekty databáze. SQL Server Management Studio je integrované prostředí na správu databázového serveru SQL Server 2012. Jeho součástí je i prostředí pro zadávání a ladění SQL příkazů. SQL Server Management Studio je vybudováno na bázi vývojového prostředí Visual Studio. [4] Databázový systém je zkráceným synonymem pro systém řízení báze dat (DBMS). Jedná se o softwarový produkt, který má na starosti řešit komunikaci mezi softwarem a fyzicky uloženými daty. Má zajistit jistou úroveň abstrakce a poskytnout nám více, či méně efektivní možnosti pro ukládání dat a udržení jejich integrity. [5] Pro ukázku uvádím několik dnes známých databázových systémů: -
Microsoft SQL Server (Tento jsem použil pro naši databázi výdejního automatu)
-
MySQL
-
Oracle
-
Firebird
-
PostgreSQL
-
Microsoft Access
13
4 Realizace 4.1 Návrh tvaru výdejního automatu na měřidla Dle požadavků firmy je tvar výdejního automatu zvolen kruhový o průměru 850 mm, rozdělený na 8 stejných částí po 45°. S ohledem výšky a dosahu uživatele je výdejní automat celkové výšky 2008 mm, který má 10 pater s výškou 1790 mm. Výška jednotlivých přihrádek je 179 mm, s dostatečným prostorem pro různá měřidla a nástroje. Celkový počet přihrádek je tedy 80. Do každé přihrádky lze umístit i více měřidel, podle typu velikosti. Na vrcholu výdejního automatu je navíc umístěn veškerý hardware ovládání, popsaný v další kapitole. Na boku výdejního automatu je umístěn ovládací panel pro ovládání zaměstnancem. K přístupu jednotlivým přihrádkám je pouze z jedné strany pomocí ovládaných dvířek vedle ovládacího panelu, z důvodu úspory místa a zasazení přímo do výrobní haly. Automat je nutné přišroubovat k podlaze kvůli vibracím ostatních strojů. Výkresy výdejního automatu jsou v příloze 1 a 2 a jsou součásti CD ve složce Přílohy BC.
Obrázek 3: Návrh výdejního automatu pro potřeby firmy
14
4.2 Hardware pro výdejní automat Tato část bude popisovat jednotlivé komponenty hardware pro ovládání a otáčení výdejního automatu. Jednotlivé hardwarové komponenty potom koupila firma KOVO KOUKOLA s.r.o., která mi je zapůjčila i k testování zařízení.
4.2.1 Elektromotor Elektrické točivé stroje považujeme v současné době za naprostou samozřejmost. Důležitou součástí automatu je proto motor, který otáčí vnitřní tubus a natáčí tak jednotlivé přihrádky ke dvířkům. Elektromotor je elektrický stroj, který slouží k přeměně elektrické energie na mechanickou práci. Drtivá většina současných elektromotorů využívá silové účinky magnetického pole. Bylo by však možné využít i jiné jevy, např. piezoelektrický jev, či silové účinky elektrostatického pole. Současné elektromotory jsou většinou realizovány jako točivé elektrické stroje. Méně obvyklé jsou netočivé elektromotory, např. lineární elektromotor. Elektrické stroje přeměňující mechanickou práci na elektrickou označujeme jako generátor, alternátor, dynamo. [6] Typy elektromotorů: − Stejnosměrný (sériový) motor − Servo motor − Derivační motor − Kompaudní motor − Asynchronní motor − Synchronní motor − Reluktanční motor o Synchronní reluktanční motor o Spínaný reluktanční motor − Krokový motor o Pasivní krokový motor o Aktivní krokový motor o Hybridní krokový motor o Lineární krokový motor − Pneumatický motor − Piezoelektrický motor 15
Výběr druhu pohonného prostředku znamená volbu soustavy, složené z motorů, zdrojů energie s příslušenstvím, bloku řízení a z části pro styk s obsluhou. Po technické a ekonomické stránce lze pohonné soustavy, které jsou k dispozici, nejčastěji rozdělit na: − Pohony bez měničů (tj. pouhé motory s vnějšími výkonovými, ovládacími a jistícími komponentami nebo motory s částečným nebo plným řízením logického typu). − Pohony s neřízenými usměrňovači (tj. stejnosměrné motory s obdobnými komponentami, napájené se střídavé rozvodné sítě). − Pohony s řízenými měniči (tj. automaticky regulované stejnosměrné nebo střídavé motory). o Stejnosměrné pohony s řízenými usměrňovači nebo pulzními měniči. o Střídavé pohony s řízenými napěťovými nebo kmitočtovými měniči. Hlediska výběru jsou především technická, avšak stále naléhavější potřeba šetřit zdroje, suroviny a energii staví do popředí i otázky hospodárnosti investice a provozu. Mezi technická hlediska, bezprostředně související s realizací patří: − Strojně-technologické údaje (struktura, parametry a vlastnosti poháněného zařízení, druh zatěžování, způsob chodu, provozní režimy, požadovaná přesnost, dodržování žádaných hodnot ustálených a přechodových pohybových veličin, požadavky na pohon v mimořádných nebo havarijních provozních stavech, bezpečnostní požadavky). − Poměry v napájecí rozvodné síti (druh napěťové soustavy, parametry napájecího napětí, zkratový výkon, parametry transformátoru připojovacího vývodu, požadavky na elektromagnetickou kompatibilitu, příp. zvláštní požadavky na záskok, pro případ havárie apod.). − Vlivy provozního prostředí (obyčejné nebo jiné). − Konstrukční požadavky na komponenty (krytí IP, tvar IM stroje, chvění, hluk, způsob přenosu točivého momentu, chlazení a ventilace IC, mezní rozměry). − Spolehlivosti pohonu (složitost jeho struktury, zdvojování důležitých částí, četnost, složitost a kvalita výroby komponent – čím je jednodušší, tím je spolehlivější). − Úrovně automatizace (umožnění řízení lidskou obsluhou nezvládnutelné, potlačení nebo vyloučení chyb lidské obsluhy, zlepšení kvality a zvýšení objemu výroby). [7] 16
Pro výdejní automat se nejlépe hodí asynchronní motor. Asynchronní indukční motor (AM) je nejběžnější v průmyslu a je prakticky bezúdržbový. Asynchronní motor je točivý elektrický stroj (elektromotor), pracující na střídavý proud. Jde o nejrozšířenější elektromotor v elektrotechnice vůbec, který slouží jako základní součást pohonů mnoha strojů v různých oblastech společenské praxe. AM má dvě hlavní složky - stator (stacionární motor část) a rotor (rotační část). Tok energie mezi hlavními částmi motoru (stator a rotor) je realizován výhradně pomocí elektromagnetické indukce, proto se často tento motor označuje jako motor indukční. Výhodou asynchronního motoru je vysoká spolehlivost daná jednoduchou konstrukcí. Nejčastěji se používají jako napájené z běžné střídavé sítě. Napájecí napětí může být jednofázové nebo trojfázové. Asynchronní motor je skutečný tahoun ve veškerém průmyslu. [8] Některá měřidla mohou být těžká až 10 kg, takže při plné kapacitě 80 přihrádek může být celková váha vnitřního tubusu 800 kg, proto je nutný dostatečně výkonný elektromotor. Pro výdejní automat je zvolen dostatečně výkonný Bonfiglioli motor BN 71B, který má 3 fáze, je střídavý AC, asynchronní a má výkon 0,37kw. Tento motor spolupracuje s frekvenčním měničem popsaném v další kapitole.
Obrázek 4: Zvolený typ asynchronního motoru
Možnosti zapojení třífázového asynchronního motoru s kotvou nakrátko s označením na štítku ΔY 230/400 V. − Tento motor lze přímo připojit k třífázové síti (3×400V) pouze do konfigurace hvězda. V opačném případě dojde k poškození motoru vlivem přepětí! Motor bude fungovat na plný výkon (Y) při jmenovitém proudu a otáčkách uvedených na štítku. 17
Reverzaci otáček lze provést přehozením dvou libovolných přívodních vodičů na svorkovnici motoru, nebo lze použít reverzační přepínač. Nelze regulovat rychlost motoru. Pro náš případ nevhodné. − Tento motor lze připojit k třífázové síti (3×400V) do konfigurace hvězda přes třífázový frekvenční měnič. V tomto zapojení lze měnit otáčky a další parametry motoru. Vždy je nutné řídit se manuálem ke konkrétnímu frekvenčnímu měniči! Napájecí svorky jsou většinou L1, L2, L3, nebo R, S, T a výstup do motoru bývá označen U, V, W , nebo T1, T2, T3. Přehození napájecích a výstupních svorek vede ke zničení měniče. Pro náš případ nevhodné. − Tento motor lze připojit k třífázové síti (3×230V) do konfigurace trojúhelník. Motor bude fungovat na plný výkon při jmenovitém proudu uvedeném na štítku. V případě zapojení do hvězdy bude motor fungovat na podpětí při sníženém výkonu. Reverzaci otáček lze provést přehozením dvou libovolných přívodních vodičů na svorkovnici motoru, nebo lze použít reverzační přepínač. Tato síť se obvykle v ČR nevyskytuje. − Tento motor lze připojit k jednofázové síti (1×230V) do konfigurace trojúhelník s pomocným kondenzátorem (Steinmetzovo zapojení). Připojením kondenzátoru (přibližně 68μF na 1 kW výkonu, případně změřit fázový proud a kondenzátor upravit podle štítkové hodnoty motoru) se vytvoří v motoru eliptické točivé pole. V tomto zapojení má motor snížený výkon (max. 70% jmenovitého výkonu) a menší rozběhový moment (cca 50%), nehodí se tedy pro náročné aplikace. Reverzaci směru otáčení lze provést přepojením jednoho pólu kondenzátoru na L, nebo N. Provozní napětí kondenzátoru musí být větší než špičkové napětí sítě, vlivem rezonancí je vyšší než napětí síťové. Toto zapojení je časté např. u míchaček, čerpadel apod. − Tento motor lze připojit k jednofázové síti (1×230V) do konfigurace trojúhelník přes jednofázový frekvenční měnič. V tomto zapojení lze z motoru dostat plný výkon při 1f zapojení. Výhoda je nejen možnost použití 3f motoru na 1f síti, ale i možnost řídit otáčky a další parametry motoru. Nevýhoda je vyšší odběr proudu na 1f přívodu a cena frekvenčního měniče. Toto zapojení je použito pro náš výdejní automat. [9]
18
4.2.2 Frekvenční měnič Technické charakteristiky a provozní údaje pro pohony s asynchronními motory nakrátko napájenými z měničů jsou ovlivňovány celým systémem zahrnujícím systém napájení, měnič, asynchronní motor, mechanické hřídelové vedení a řídicí zařízení. Každá z těchto součástí existuje v mnoha typech provedení. V případě napěťových měničů není znalost náhradního obvodu motoru pro návrh komutačního obvodu normálně důležitá, avšak impedance harmonických motoru značně ovlivňují ztráty způsobené harmonickými. [10] Motor podle mého výběru a typu zapojení můžu regulovat pomocí frekvenčního měniče. Měnič frekvence je zařízení, které slouží k přeměně elektrického proudu s určitou frekvencí na elektrický proud s jinou frekvencí. Protože je rychlost otáčení elektromotoru přímo závislá na konstrukci motoru a frekvenci (kmitočtu) střídavého napětí, dociluje se změnou frekvence přímo změny rychlosti otáčení. Velmi častým důvodem k nasazení měniče frekvence bývá potřeba plynulé regulace otáček asynchronního elektromotoru. Na vstupu je měnič napájen střídavým napětím (jednofázovým nebo třífázovým), ve vnitřních obvodech je napětí usměrněno a na výstupu měniče střídačem převedeno na třífázové střídavé napětí o požadované frekvenci. Při testování zapojení byl použit frekvenční měnič typ Bonfiglioli Vectron SYNTHESIS syn10 s 220 05 af, jednofázový na 230 V o výkonu 0.2 – 2.2 kW. [11]
Obrázek 5: Frekvenční měnič SYNTHESIS syn10 s 220 05 af
Díky velkému rušení při testování byl poté nahrazen jiným typem a to typem Altivar 12 ATV12HU15M2. Všechny frekvenční měniče Altivar jsou standardně vybaveny 19
vestavěnými odrušovacími filtry. Frekvenční měnič Altivar též v sobě obsahuje proudovou ochranu. Tato ochrana chrání elektrické zařízení před přetížením a v důsledku toho před jeho poškozením. Také chrání zdraví zaměstnance. Pokud by tedy zaměstnanec strčil ruku do přihrádky otáčejícího se výdejního automatu ruku, tak by v tomto případě došlo k většímu odběru proudu a pak by tato ochrana odpojila stykač, přes který je napájen motor. Schéma zapojení a montážní zapojení frekvenčního měniče je dokonale popsána v soboru Frekvenční měnič.pdf uložené na CD ve složce Dokumentace HW.
4.2.3 Snímač otáček Dalším důležitým zařízením je snímač pro snímání otáček motoru. Snímač je obecně zdroj informací pro nějaký řídící systém, v užším slova smyslu technické zařízení (součástka), které měří určitou fyzikální nebo technickou veličinu a převádí ji na signál, který lze dálkově přenášet a dále zpracovat v měřicích a řídících systémech. Nejčastěji jde o elektrický signál (časový průběh napětí nebo proudu). Přístroje sloužící na měření frekvence otáčení pracují na základě různých fyzikálních principů a můžeme je rozdělit do dvou hlavních skupin, na analogové a impulsní, které se dále dělí viz. obrázek 6.
Obrázek 6: Rozdělení snímačů otáček
20
Jako jeden z nejvíce používaných optoelektronických snímačů je rotační inkrementální snímač otáček. Inkrementálními snímači nebo také snímači přírůstkovými, nebo inkrementálními enkodéry nazýváme většinou snímače, které převádí rotační nebo lineární pohyb na elektrický signál. Jádrem klasických optických inkrementálních snímačů je tzv. pulsní disk vyráběný z různých materiálů. Většinou je skleněný, ale může být i plastový (u levnějších snímačů), případně z jiných materiálů u snímačů speciálních. Tento disk je mechanicky spojen s hřídelí procházející zpravidla osou snímače. Disk obsahuje světlá a tmavá pole. Světlo generované kvalitními diodami, pracujícími většinou v infračervené oblasti spektra, prochází přes membránu a tento pulsní disk a je zachyceno fotodetektorem umístěným z jeho druhé strany. Při otáčení hřídele pak disk střídavě světlo propouští a nepropouští (zacloňuje fotodetektor). [12]
Obrázek 7: Princip fotoelektrického snímání
Tyto světelné pulsy jsou dále zpracovány elektronikou snímače a převedeny na výstupní elektrický signál zpravidla obdélníkového nebo sinusového typu. Tyto sinusovky jsou pomocí napěťových komparátorů přeměněny na pravoúhlé signály A a B, které nám slouží k rozpoznání směru otáčení. Tyto signály se nazývají kvadraturní. Při použití vícenásobného vyhodnocení signálu je možné získat větší rozlišení. Například má-li snímač 100 pulsů/ot. pak při čtyřnásobném vyhodnocení signálu (obě náběžné i sestupné hrany kanálů A a B) lze získat rozlišení 400 kroků/ot.
21
Legenda: 1 – výstupní kanál A 2 – výstupní kanál B 3 – dvojnásobné vyhodnocení výstupního signálu 4 – čtyřnásobné vyhodnocení výstupního signálu 5 – kanál 0 (U spínací desky kanál Z) Obrázek 8: Detekce kvadraturních signálů A a B
Počet tmavých (neprůhledných) a světlých (průhledných) polí odpovídá počtu pulsů na jednu otáčku, což je jeden z nejdůležitějších parametrů udávaných u každého inkrementálního snímače. Dnes už se většinou nevyrábí typy mající pouze jeden kanál, tedy jednu stopu na pulsním disku. Standardem jsou snímače 3-kanálové. Signály dvou kanálů jsou vzájemně posunuty o 90°, což umožňuje rozpoznat směr otáčení. Poslední kanál generuje puls jednou za otáčku a zpravidla se nazývá “nulovým pulsem”. Z principu činnosti si inkrementální snímače na rozdíl od snímačů absolutních nepamatují polohu při vypnutí napájení. Pro výdejní automat je zvoleno inkrementální čidlo s 1000 pulsy na jednu otáčku, napájecí napětí 5 - 24V DC typu E6C2-CWZ6C 1000P/R 2M s konfigurací výstupu NPN s otevřeným kolektorem. [13]
Obrázek 9: Inkrementální čidlo E6C2-CWZ6C 1000P/R 2M
22
4.2.4 Indukční snímač V průmyslu a jeho aplikacích se často setkáváme s nutností bezkontaktně spolehlivě detekovat pohyb, dorazy, limitní posuv, natočení, vyosení apod. To vše v prašném a nehostinném výrobním prostředí. Pokud je detekovaný materiál kov (elektricky vodivý materiál), je nejvhodnější použít tzv. indukční snímače. Aktivním prvkem indukčního snímače je cívka navinutá na feritovém jádru. Vysokofrekvenční střídavý proud, generovaný oscilátorem, protéká cívkou a vytváří v jejím okolí magnetické pole. Jestliže umístíme do tohoto pole předmět z elektricky vodivého materiálu, jsou v něm indukovány vířivé proudy. Změna pole vlivem vířivých proudů působí zpětně na cívku tak, že změní její impedanci. Tato změna je vyhodnocena elektronikou senzoru a po následném zesílení převedena na výstupní signál. Běžný indukční snímač obsahuje několik za sebe řazených bloků elektrických obvodů, které pracují v posloupnosti dle obrázku 10. [14] Základ snímače tvoří oscilátor pracující na principu změny činitele jakosti jádra Q při přiblížení kovového materiálu. Tato změna se projeví útlumem kmitů oscilátoru a oscilátor přestane kmitat. Vysazení kmitů oscilátoru vyhodnotí prahový detektor, který řídí klopný obvod ovládající výkonový koncový stupeň. Odstraněním kovového materiálu z aktivní spínací zóny oscilátor obnoví kmity. Podle toho o jaký druh spínače jde (spínací nebo rozpínací), se výstup spojí nebo rozpojí při přiblížení kovového materiálu do aktivní zóny snímače.
Obrázek 10: Princip činnosti indukčního snímače
Hlavním aktivním prvkem indukčního senzoru je tedy cívka, která doplněna kondenzátorem na paralelní rezonanční obvod tvořící již zmíněný oscilátor. Cívka je umístěná na jádru poloviny feritového hrníčku. Vysokofrekvenční střídavý proud, generovaný oscilátorem, protéká cívkou a vytváří magnetické pole, které vystupuje z otevřené strany hrníčku = aktivní plocha senzoru. Jestliže se nachází v blízkosti této 23
aktivní plochy nějaký předmět z elektricky vodivého materiálu (tlumící clonka), dojde k deformaci magnetického pole. V clonce (konstrukční ocel) se indukují vířivé proudy. Ty způsobí změnu magnetického pole, které působí vlivem vzájemné indukčnosti M zpátky na cívku tak, že změní svoji impedanci. Ta se ovšem výrazně mění teprve při velmi malých vzdálenostech s mezi cívkou a clonkou. Řádově v maximálním rozsahu jednotek až desítek mm. [15] Pro nulování pozice otáčení výdejního automatu je vhodný indukční snímač válcového provedení, s dosahem snímaní 2 mm a to typ XS112BLPAL2 Indukční čidlo XS1 M12, L41.3 mm, mosaz, Sn2 mm, 12-24VDC, kabel 2m.
Obrázek 11: XS112BLPAL2 Indukční čidlo XS1 M12
4.2.5 Vývojová deska s procesorem Pro ovládání výdejního automatu budeme potřebovat programovatelnou vývojovou desku, která bude řídící jednotkou celého zařízení. Je vybrána deska FEZ Cobra II (Net) s procesorem 120 MHz 32-bit ARM® Cortex®-M3 s konektorem RJ-45. FEZ Cobra II je OEM deska na které běží .NET Micro Framework, který umožňuje uživatelům programovat desku z Microsoft Visual Studio pomocí C# nebo Visual Basic. S těmito deskami, mohou vývojáři využít všech vestavěných funkcí .NET Micro Framework, jako SSL, FTP a HTTP. Kompletní schéma zapojení této desky je uloženo na CD ve složce Dokumentace HW, kde mě na tomto schématu nejvíce zajímá zapojení pinů, které využiji pro spojení se spínací deskou a pro programování této desky. [16]
24
Obrázek 12: Programovací deska FEZ Cobra II (Net)
Procesory založené na architektuře ARM Cortex poskytují potřebné zdroje k řešení i náročných průmyslových, automobilových, bezdrátových a mnoha dalších technologií. Obvod je složen ze tří hlavních typů architektur: ARMv7 je typ pro velmi náročné aplikace, běžící na složitých operačních systémech. Typ R je určen pro použití v real-time systémech a typ M je naproti tomu optimalizován pro použití v levných embedded aplikacích. Procesory Cortex-M3 jsou první procesory architektury ARMv7-M, které byly navrženy s cílem dosáhnout vysokého výkonu systému a maximální efektivity levných vestavěných aplikací, jako jsou například průmyslové řídicí systémy, automobilová elektronika, drátové a bezdrátové telekomunikační systémy, systémy elektrického ovládání atd. Ve svém jádru pracují procesory Cortex-M3 v závislosti na použité Harvardské technologii se třemi fázemi zpracování dat (pipeline), které nabízí řadu příležitosti. Množství jedno-cyklových operací přináší až 1,25 MIPS / MHz. Zbrusu novým, klíčovým prvkem systému instrukcí Thumb-2 je účinnější kompilátor C s možností operací s bity a bitovými poli, hardwarovým tříděním a účinnějším provádění strukturálních podmínek (jakými jsou kupříkladu if / then). Z pohledu programátora, umožňuje instrukční soubor Thumb-2 generovat strojový kód mnohem rychleji, jednodušeji a efektivněji. Navíc pomocí odpovídajícího kompilátoru není třeba 25
řešit ani volbu mezi optimalizací kódu pro rychlost nebo objem - jednoduše je možné zvolit komplexní optimalizaci objemu a rychlosti. To dále zrychluje i samotný proces přípravy a generování kódu, neboť nyní vývojáři nemusí předkompilovávat kritické části kódu a přilinkovávat je na hlavní program v podobě samostatných knihoven. [17]
Obrázek 13: Procesor Cortex-M3
Procesory založené na architektuře Cortex-M3 jsou v podstatě hierarchickou skupinou. Obsahují základní CM3Core rozšířené periferie, obsahující mechanismy pro řízení přerušení, ochranu a přístup k paměti a mnoho dalších. Tento soubor je do značné míry volně konfigurovatelný, což umožňuje snadné použití procesoru pro skutečně širokou škálu úkolů, které většinou plně uspokojí veškeré požadavky. Jádro Cortex-M3 a jeho začlenění do zbylé architektury jsou navrženy pro splnění všech požadavků a zároveň minimalizaci požadované velikosti paměti, spotřeby energie apod.
26
4.2.6 Další HW Elektrický zámek Pro otvírání jednotlivých dvířek použijeme elektrický zámek s vyhazovací pružinou. Zavřením dvířek je skříňkový zámek mechanicky uzamčen. Elektrickým impulsem na elektromagnetickou cívku je zámek otevřen. Zvolen je BERA SZEP 12V AC.
Obrázek 14: Skříňový zámek elektrický s vyhazovací pružinou
Osvětlení vnitřního prostoru Pro osvětlení vnitřního prostoru jsou použity LED pásky vnitřní na 12V, které se rozsvítí při otevření dvířek.
Obrázek 15: Osvětlení LED páska
27
Počítač Na výdejním automatu je v ovládacím panelu umístěn počítač pro jednoduché ovládání, kde je uložena SQL databáze a program ovládání. Zvolen je dostatečně silný počítač HP ProDesk 400 G1 3GHz s 4GB RAM, SATA disk a s operačním systémem Windows 7, kde je nainstalován SQL Server.
Obrázek 16: počítač HP ProDesk 400 G1
Monitor Ovládání programu v počítači dochází přes dotykovou obrazovku. Aby se monitor vešel do ovládacího panelu, tak jsem vybral dotykový LCD monitor - 17" LED NEC V-Touch 1722 5U - 5-žilový, DVI, USB. Dotykový panel používající vysoce kvalitní LCD s LED podsvícením a pětivodičovou resistivní (odporovou) technologii je vhodný na pracoviště, kde je vyšší frekvence používání, lze je ovládat jakýmkoliv předmětem, oproti čtyřvodičové technologii je více odolný proti mechanickému poškození. Obsahuje těsnění na přední straně, který je odolný proti prachu a stříkající vodě. Komunikace s dotykovou vrstvou probíhá přes USB port.
Obrázek 17: dotykový LCD monitor V-Touch 1722 5U
28
USB numerická klávesnice Pro klasické zadávání čísel je na ovládacím panelu umístěna externí USB numerická klávesnice. Čtečka bude sloužit k zadávání jednotlivých kódu pro měřidla, stroje. Slouží jako druhá varianta k bezdotykové klávesnici na monitoru.
Obrázek 18: USB numerická klávesnice
Switch Switch (česky přepínač) je v informatice aktivní prvek v počítačové síti, který propojuje jednotlivé prvky do hvězdicové topologie. Switch obsahuje větší či menší množství síťových portů, na něž se připojují síťová zařízení nebo části sítě. Switch přeposílá síťový provoz jenom do těch směrů, do kterých je to potřeba, čímž se odlišuje od jednoduššího hubu. Pro spojení počítače s vnitřní sítí firmy a s programovatelnou vývojovou deskou FEZ Cobra II (NET) slouží switch typu HP 1405G-05 ProCurve 5 Port Gigabit Ethernet Switch J9792A.
Obrázek 19: switch HP 1405G-05
29
Čtečka Pro načítání bezkontaktních karet EM 125 kHz do PC přes USB port slouží čtečka IS Tiny - Elvis. Čtečka je napájena 5V přes USB port.
Obrázek 20: USB čtečka IS Tiny
Rozvaděč Rozvaděč je skříň, do které je zavedeno několik kabelů a která obsahuje elektrické přístroje pro jištění, měření a ovládání elektroinstalace. Přívodních i odchozích kabelů může být větší množství. Vstupuje napájecí kabel a kabely od různých snímačů, čidel, ovladačů. Vystupují kabely k dalším (podružným) rozvaděčům, k jednotlivým zařízením nebo zásuvkovým a světelným okruhům.
Obrázek 21: Rozvaděč
30
4.3 Návrh spínací desky V této části práce se budu zabývat návrhem spínací desky propojené s řídící deskou FEZ Cobra II (Net) s procesorem Cortex-M3. Spínací deska slouží k úpravě V/V (vstupních/výstupních) signálů procesoru a pro zajištění napájení řídící desky. Zajišťuje také nezbytné galvanické oddělení stroje od řídící desky (procesoru). Zpracovává různé vstupní a výstupní signály na odpovídající úrovně. Spínací deska pracuje s dvěmi vstupními napětími a to 5V a 12V přivedené z PC zdroje umístěného přímo v PC skříni. 5V je použito pro výstupy za optočleny (napájení koncových spínačů) a pro řídící desku FEZ Cobra II, kde je procesor napájen 3,3V. 12V je pro relé a 15V pro inkrementální čidlo, kde nám oddělení těchto napětí zajišťují galvanickým oddělením optočleny. Změnu napětí nám zajišťuje DC/DC měnič.
Obrázek 22: Vstupní napětí
Popíši zde jen hlavní části spínací desky. Důležité bude propojení s řídící deskou, jedna část vstupu desky bude sloužit pro inkrementální čidlo, další digitální vstupy jednotky pro konektor ovládání. Také jsou zde analogové výstupy desky pro ovládání frekvenčního měniče a digitální vstupy pro jednotlivé otevírání dvířek na výdejním automatu a směr otáčení pro frekvenční měnič. Specifikace použitých součástek na spínací desce jsou na CD ve složce Součástky.
4.3.1 Konektor pro řídící desku Nejdůležitější částí desky je návrh konektoru pro propojení řídící desky a spínací desky. Zapojení jednotlivých pinů s vysvětlením jak na stranu řídící desky FEZ Cobra II tak na stranu spínací desky zobrazuje následující obrázek. V ukázkovém kódu v C# jenom ukážu dva příklady naprogramování určitého pinu pro vstup a výstup řídící desky. Naprogramování veškerých pinů vstupů/výstupů je na CD ve složce Program CPU v souboru CarouselControl.cs. pDVOT1 = new OutputPort(GHI.Hardware.G120.Pin.P1_5, true); //výstup pro dvířka 1 pStArStopPressed = new InputPort(GHI.Hardware.G120.Pin.P0_6, false, Port.ResistorMode.PullUp); //vstup pro central STOP
31
Obrázek 23: Konektor propojení FEZ Cobra II a spínací desky
4.3.2 Typy vstupů a výstupů spínací desky Uvnitř PC skříně je zapojení stylem, kde spínací deska má malé konektory (svorkovnice) a z těch je to vodiči vedeno do konektorů na PC skříni. Na PC skříni je tlačítko restart, které je zapojeno na spínací desku. Zde je napojen na pin RESET pro řídící desku, které celou tuto řídící desku restartuje. Typy konektorů na PC skříni od shora dolů: − Konektor značky HARTING – Digitální vstup/výstup pro ovládání dvířek, manuálního klíčku, central STOP, indukčního snímače. HARTING zajišťuje komplexní zákaznická řešení v oblasti konektivity. − Canon9 D-sub9pin M – Vstup pro inkrementální čidlo (CLKE, DIRAB, ENCZ). − Canon9 D-sub9pin M – Analogový výstup pro frekvenční měnič (SPD - AI1). − USB – programování řídící desky FEZ Cobra II přes USB Client. − RJ-45 – propojení PC s FEZ Cobra II. 32
Obrázek 24: Zapojení desky a její konektory
4.3.3 Obvod pro inkrementální čidlo Inkrementační čidla jsou označované jako enkodéry. Jeden ze vstupů spínací desky je použit pro enkodér a na propojení jsem použil typ konektoru canon9 D-sub9pin M. Vstupní část vstupů A a B zpracovává vstupní signál z enkodéru. PWRP je vstupní napětí 15V a GND3 je zem. REZIN je rezervní vstup. Vstup Z je pro nulový puls, který vpustí jeden pulz za otáčku enkodér. Čili každý tisící impulz, který byl určen k nulování polohy, ale při testování byl impulz moc krátký, proto jsem použil indukční čidlo. Pro převod napětí jsem použil DC/DC měnič typu SCW05A-15, který zajistí napájení PWRP 15V pro enkodér. Taky odděluje enkodér od napětí ovládací logiky a jiných signálů, tímto dostanu větší odolnost vůči rušení 9-18V/15V 400mA. Horní DC/DC měnič typu SCW05A-05 odděluje napětí (VCCS) od ovládacího napětí, snižuje tak rušení a zajišťuje se stabilního napájení pro desku řídící elektroniky 9-18V/5V 1A.
Obrázek 25: Zapojení s DC/DC měničem
33
Při otáčení rotačním enkodérem jsou generovány impulzy a pomocí logiky z nich lze snadno zjistit směr otáčení. Celý proces spočívá v tom, že enkodér generuje 2 obdélníkové průběhy fázově posunuté o přibližně 90°. Pak jednoduše při jedné hraně jednoho průběhu čteme stav druhého signálu a podle toho, zda je v log.1 nebo log.0 přičítáme nebo odečítáme.
Obrázek 26: Směr otáčení
Základní zapojení enkodérů je na následujícím obrázku. Zde nastává menší problém. Jelikož jde o mechanické kontakty, tak pochopitelně produkují zákmity, což se projevuje jako rušení. Proto jsou na zem zapojeny malé keramické kondenzátory na jejich odrušení. S jejich hodnotou je třeba experimentovat a zvolit kompromis mezi potlačením zákmitů a maximální rychlostí otáčení. Pro vyšší odolnost proti rušení lze odpory zmenšit a kondenzátory zvětšit, ale je třeba mít na paměti maximální proud kontaktů. Jeho překročení značně zkracuje životnost. Jedná se o enkodér, který má výstupy s otevřeným kolektorem. Jsou zde také použity pull up rezistory. Na každém logickém vstupu musí být definovaná log. úroveň. V případě nezapojeného vstupu, nebo vstupu, ke kterému je připojena vysoká impedance, nebo výstupu s otevřeným kolektorem, může dojít k neočekávaným stavům. Pull up rezistor slouží k udržení logické hodnoty „1“.
Obrázek 27: Základní zapojení enkodér
Je zde nutné použít optický oddělovač pro RS232. Při propojování s některými periferiemi, které pracují s mikroprocesory, je nutný převod signálů s úrovní TTL na sběrnici RS232, připojitelnou k sériovému portu PC. Současně s tím je výhodné 34
zajistit též galvanické oddělení obou systémů, pokud jsou například připojeny na jiné potenciály. Popisované zařízení umožňuje převod TTL signálu na úroveň RS232 a zpět se současným galvanickým oddělením optočleny. Zařízení pracuje pouze s jedním napájecím napětím. V obvodu je použit optočlen PC817. Optočlen je elektronická součástka, která slouží ke galvanickému oddělení dvou obvodů. Je složen z (infra-)LED a fotocitlivé polovodičové součástky, například fototranzistoru v různém provedení (PNP, NPN, nebo i v Darlingtonově zapojení). Když přivedeme na vstup optočlenu malý proud potřebný na rozsvícení LED, začne se fototranzistor otevírat podle proudu procházejícího diodou – čím větší proud, tím více světla a tím se i více otevře tranzistor. Otevřený přechod tranzistoru mezi emitorem a kolektorem způsobí sepnutí obvodu na výstupu. Díky galvanickému oddělení lze ovládat obvody, které se mezi sebou liší napěťovou úrovní v řádech stovek voltů. Toto použití je časté tam, kde potřebujeme mít úplně oddělená zařízení – včetně zemních (nulových) propojení.
Obrázek 28: Optočlen
Pro optické enkodéry je ještě velmi vhodné doplnit schmittovy klopné obvody 74HCT14N, které zajistí úrovně vhodné pro danou logiku a užitečnou hysterezi. Schmittův KO slouží k úpravě tvaru impulzů. Jeho základní vlastností je hystereze. To znamená, že jeho výstup je závislý nejen na hodnotě vstupu, ale i na jeho původním stavu. Hystereze, která je jindy nežádoucí, má zde své opodstatnění v tom, že zabraňuje vzniku zákmitů výstupního signálu v okolí střední úrovně spínání. Citlivost obvodu se nastavuje šíří - velikostí hystereze. Schmittovy obvody s negací, slouží k dotvarování a zesílení všech signálů. VCC je vstupní napětí 5V s pull up rezistory. Pull up rezistor v elektronickém logickém obvodu je připojen ke zdroji napětí a zajišťuje na vstupu při nesepnutém spínači log.1. [18]
35
Obrázek 29: Vstupy a schéma zapojení pro enkodér
Ve schématu jsem použil klopný obvod typu D a to IC5A – 74HCT74N. Klopný obvod D realizuje jednobitovou paměť, který slouží k hardwarovému rozlišení směru otáčení (DIRAB) - překlopí v případě, že jeden nebo druhý signál předbíhá. Na jeden výstup jsem zapojil LED diodu pro indikaci směru otáčení kvůli diagnostice a ladění programu. Druhý výstup je označen DIRAB, který je vstupem pro řídící desku FEZ Cobra II.
Obrázek 30: Klopný obvod D - IC5A - 74HCT74N
Na dalším obrázku jsou vidět výstupy pro indukční snímač. Indukční snímač je napájen 12V přes rozvaděč, kde je drátek „signál“ přes svorkovnici přidán do kabelu HARTING a přiveden tak na spínací desku.
Obrázek 31: Výstup indukčního snímače
36
4.3.4 Obvod pro konektor ovládání Jedná se o obvod pro indikaci sepnutí tlačítka STOP, použití klíčku pro manuální ovládání či signalizaci pro otevření dvířek na výdejním automatu. Na vstupu obvodu jsem zapojil rezistorovou síť. Jsou to odpory, které zabezpečují maximální vstupní proud tekoucí optočlenem při daném vstupním napětí. Jsou to vlastně pull down rezistory, které jsou uzemněny a zajišťují logickou nulu. Na každém logickém vstupu totiž vždy musí být definovaná logická úroveň. V případě nezapojeného vstupu nebo výstupu s otevřeným kolektorem, by bez pull down rezistoru mohlo dojít k neočekávaným stavům. Na vstupy jsem zapojil opět malé keramické kondenzátory (kolem 10nF) jako filtry na odrušení zákmitů z mechanických kontaktů. Je zde nutné opět použít optický oddělovač pro RS232 ke galvanickému oddělení dvou obvodů pomocí optočlenu PC817. Na výstupu optočlenu pro tranzistory jsou opět zapojeny pull up rezistory přes vstupní napájecí napětí VCC 5V. Na konci obvodu jsem opět zapojil Schmittovy obvody s negací, které slouží k dotvarování a zesílení všech signálů. Obvod má výstupy CSTP - central stop, INKL - klíček sepnut, DVOT - dvířka otevřena (alespoň jedny) a VIN3-5 - rezervní vstupy.
Obrázek 32: Konektor ovládání a obvod zapojení
37
4.3.5 Obvod pro ovládání dvířek a směru otáčení Jedná se o obvod pro ovládání dvířek a nastavení směru otáčení na frekvenčním měniči. Výstupy DV1 – DV10 jsou dvířka v jednotlivých patrech výdejního automatu. REZ1 je rezervní vstup pro dvířka, SML je směr doleva (LEFT), SMR je směr doprava (RIGHT), USP spojuje všechny kontakty relé určených k ovládání prvků se stejným charakterem, čili mají stejné napětí a USP1 je oddělené od USP kvůli napěťovým úrovním a protože slouží pro frekvenční měnič.
Obrázek 33: Výstup pro ovládání
Popíšu zde obvod pro ovládání jedněch dvířek. Na desce je umístěno 13 stejných obvodů, pro každá dvířka v patře (10), plus jeden rezervní a dva pro směry otáčení. Na vstup obvodu je přiveden z řídící desky signál DVOT1. Je zde opět Schmittův obvod s negací (IC2A - 74HC14N), který slouží k dotvarování a zesílení signálu a na jeho vstup je přiveden pull up rezistor, který zajistí logickou jedničku. Dále jsem to opět přivedl na optočlen (OK8A - PC847) pro oddělení dvou obvodů s různým napětím s pull down rezistorem. Umístil jsem tu tranzistor (T1 - BC547) pro spínání relátka. Tranzistor je základní aktivní součástka, která se používá jako zesilovač, spínač a invertor. Nakonec relátko (KR1) pro spínání dvířek. Relé je specializované zařízení, sloužící ke spínání signálu. Je zde umístěna i signalizační LED dioda (LED15) z důvodu diagnostiky. Výstupem je DV1.
Obrázek 34: Obvod pro ovládání dvířek a směru otáčení
38
4.3.6 Obvod pro frekvenční měnič Poslední důležitý obvod je pro ovládání rychlosti otáčení motoru výdejního automatu pomocí frekvenčního měniče. Následující obrázek ukazuje výstup pro frekvenční měnič, kde SPD je výstupní napětí, kterým se řídí rychlost otáčení. SPD jde z desky na konektor canon9 D-sub9pin M a z něj do frekvenčního měniče na analogový vstup AI1, kde frekvenční měnič řídím velikostí napětí. GND2 je venkovní zem, která jde na frekvenční měnič, použil jsem toto řešení, abych ji oddělil od vnitřní země. N$69 je prázdný pin. Vstupy AO1-3 jsou digitální vstupy. Použil jsem zde opět Schmittův obvod s negací (74HCT14N), který slouží k dotvarování a zesílení signálu. Optočleny využívám jako spínače, tak abych krátil rezistory. Závisí to na tom, kolik přijde jedniček, tolik odporů se vykrátí a tak se zvýší napětí. Chová se to jako řízený dělič napětí. Výstup SPD je tak napětí, které vzniká krácením rezistorů optočlenama. Je to jednoduchý D/A převodník. Tento převodník převádí digitální signál na signál analogový.
Obrázek 35: Obvod a výstup pro frekvenční měnič
Na desce jsem také musel použít obvod pro odpojení potenciálů. Při testování když přestala fungovat řídící deska, docházelo k tomu, že se otevřela všechna dvířka a výdejní automat se začal otáčet maximální rychlostí. Proto jsem do spínací desky umístil relé pro odpojení potenciálů, které sloužilo k bezpečnému odpojení desky. Také to slouží k bezpečnému nabootování spínací desky, kdy si sama řídící deska připojí desku elektroniky, čili spojí potenciály a začne napájet elektroniku na desce. Tímto jsem se vyhnul nebezpečným stavům při spouštění systému.
39
Použité součástky na spínací desce: Schmittův obvod 74HC14N (5V)
Schmittův obvod 74HCT14N (5V)
Optočlen PC847 (5V)
Optočlen PC817 (5V)
Relé LEG-12F (12V)
Tranzistor BC547
Klopný obvod D 74HCT74N
DC-DC měnič SCW05A-15
Odpor
Kondenzátor
Dioda
LED dioda
4.4 Princip zapojení V této části se zaměřím na propojení všech HW zařízení popsaných v kapitole 4.2 a 4.3. Propojení jednotlivých zařízení pro lepší pochopení je znázorněna na následujícím obrázku. Toto schéma je pak v lepší kvalitě uložené na CD ve složce Přílohy BC.
Obrázek 36: Schéma zapojení HW zařízení
40
Podrobnější propojení frekvenčního měniče, tlačítko nouzové zastavení - central STOP (CSTP), manuálním ovládání při použití klíčku (INKL), otevření všech přihrádek (DVOT), rotování do LEVA/PRAVA (DIRL, DIRR) se zapojením do rozvaděče a s propojením na řídící desku FEZ Cobra II ukazuje příloha č. 4 – Princip, uloženém i na CD ve složce Přílohy BC. V tomto schématu je také principielní zapojení jednotlivých
dvířek
s elektromagnetickým
zámkem,
elektromagnetickým
relé
a s osvětlením LED páskami v přihrádce na výdejním automatu. Při příkazu na sepnutí tak dojde k odemčení a otevření konkrétních dvířek a zároveň dojde k rozsvícení přihrádky. Popis schématu: •
Blok ATV 12 je samotný frekvenční měnič.
•
Cobra PLC Gadgeter je řídící deska FEZ Cobra II s procesorem Cortex. Ovládání přes spínací desku.
•
Spínač S1 slouží pro otevření všech dvířek. Lze použít jen při použití klíčku na manuální ovládání.
•
Spínač S3, S4, S7 a S8 je pro manuální ovládání při použití klíčku – provoz, doplňování. Lze poté ovládat rotování LEVA/PRAVA a otevírání všech přihrádek.
•
Spínač S2, S5 a S6 je pro nouzové zastavení - central STOP. Obsahuje indikaci STOP, která signalizuje na display, že je sepnutý central STOP.
Obrázek 37: Ovládač stiskací s hřibovým knoflíkem, stiskni-táhni
•
D1-D10 jsou zhášecí diody.
•
Y1-Y10 jsou elektromagnetické zámky na dvířkách.
•
K1-K2 jsou elektromagnetické relé.
•
LED1-LED10 jsou LED pásky na osvětlení přihrádek.
41
4.5 Programování vývojové desky Tato část se zaměří na programování vývojové desky FEZ Cobra II (Net) s procesorem 120 MHz 32-bit ARM® Cortex®-M3 přes C# ve Visual Studio. Základ tvoří soubory Program.cs, CarouselControl.cs, IntegratedSocket.cs, MFNet.cs a XmlSerializer.cs, které jsou součástí CD ve složce Program CPU. Program.cs obsahuje v sobě bloky na nastavení výdejního automatu po zapnutí nebo restartu. Na začátku programu následuje připojení jmenných prostorů (using), potřebných pro volání metod. Poté se nastaví blikání LED diody, která signalizuje, že je výdejní automat připraven. namespace GadgeteerApp7 //hlavní část programu { public partial class Program //probuzení po restartu { static bool blink = false; string status = ""; Gadgeteer.Timer timeBlinkLed; void ProgramStarted() //začátek celého dění programu .Net { OnStart(); } private void OnStart() { //rozblikáni led diody, která signalizuje, že je zařízení připraveno, čas bliknutí je 1s timeBlinkLed = new GT.Timer(1000); // 1000ms timeBlinkLed.Tick += timeBlinkLed_Tick; timeBlinkLed.Start(); CarouselControl.OnStart(); Thread.Sleep(10000); MFNetServer mfServer = new MFNetServer(); //inicializace socket serveru, který naslouchá na portu 7778 na IP adrese 192.168.1.14 //Ke komunikaci TCP/IP jsem použil síťovou kartu Ethernet ENC28J60 mfServer.InitializeNetwork(false); CarouselControl.EnableOutput(); Thread.Sleep(10000); // 10s Thread tCalibration = new Thread(CarouselControl.Calibration); tCalibration.Start(); } void timeBlinkLed_Tick(GT.Timer timer) { Mainboard.SetDebugLED(blink); if (blink) { blink = false; } else { blink = true; } } } }
42
Dalším souborem je CarouselControl.cs. Popíši zde jen pár nejdůležitějších metod, celý program je na CD. Program začíná opět připojením jmenných prostorů, potřebných pro volání metod. Následuje definice vstupů a výstupu na spínací desce, přiřazení pinů na vývojové desce a deklarace proměnných. //definice vstupů a výstupů na vývojové desce //vstupy na vývojové desce pro inkrementální čidlo static InterruptPort pIncrementPulse; //přerušení nulou static InterruptPort pIncrementReset; static InterruptPort pIncrementDirectionChange; //analogové výstupy na pSpeedSet static OutputPort pSpeedSetDO1; //0 nebo 1 static OutputPort pSpeedSetDO2; static OutputPort pSpeedSetDO3; //výstup pro nastavení směru na frekvenčním měniči - doleva static OutputPort pDirectionLeft; //výstup pro nastavení směru na frekvenčním měniči - doprava static OutputPort pDirectionRight; //nahození řídící HW desky, kvůli zajištění korektního stavu v případě výpadku napětí static OutputPort pSYSON; //výstupní porty na otevírání dvířek - 1 až 10 pater static OutputPort pDVOT1; //pro pDVOT1 až pDVOT10 //vstupní digitální porty static InputPort pStArStopPressed; static InputPort pStArManualWorkActive; vedoucí obsluhy, ruční ovládání aktivní static InputPort pStArDoorOpen; static InputPort pStArWorking; logické 1 static InputPort pStArOtherError; static InputPort pDirection;
//indikace stisknuté STOP //indikace servisní polohy klíčku //indikace otevření dvířek //v případě otáčení je tento pin v //porucha HW //indikace směru z inkrementálního čidla //0 - levá, 1 - pravá //čítač impulsů, aktuální pozice //inkrement čidlo má 1000 pulsů na 360° //sw proměnná, která definuje práci -
static int incrementCount; static int incrementMaxCount = 1000; public static bool IsRunning = false; běh otáčení výdejního automatu static MoveDirection motorDirection = MoveDirection.Left; //sw definice public static bool IsCalibrated = false; //sw proměnná, která definuje jestli je výdejní automat z kalibrovaný
Následující metoda přičítá nebo odečítá hodnoty - impulsy k inkrementálnímu čidlu podle toho jestli se výdejní automat otáčí doprava nebo doleva. Pokud by hodnota měla klesnout pod nulu, je opět navýšena na maximum hodnoty inkrementálního čidla. public static void pinIncrementPulce_OnInterrupt(uint data1, uint data2, DateTime time) { if (pDirection.Read()) //impulsni informace z encoderu //pri otaceni do leva ++ a do prava -incrementCount++; //incrementCount = incrementCount + 1;
43
else incrementCount--;
//incrementCount = incrementCount - 1;
if (incrementCount < 0) incrementCount = incrementMaxCount - 1; MFLog.LogIt("Position: " + incrementCount); }
Tato metoda nám zase zaručí, že dojde k vynulování čítače při průjezdu nulovou polohou pomocí indukčního snímače. Tím pádem maximální hodnota čítače je 1000 impulsů na jednu otáčku podle inkrementálního čidla. public static void pinIncrementReset_OnInterrupt(uint data1, uint data2, DateTime time) // vynulování čítače při průjezdu nulovou polohou { incrementCount = 0; //zde se nastaví do nuly IsCalibrated = true; //nastavení příznaku, že automat již projel nulovou pozici }
Následující metoda je nutná k tomu, aby výdejní automat zjistil, kde je aktuální pozice výdejního automatu po zapnutí či restartu systému. Nastaví se určitá rychlost otáčení na 0.8, která byla vysledována zkoušením jako nejlepší a výdejní automat se začne otáčet do doby než projede nulovou pozicí. Je zde ošetřena i možnost selhání např. indukčního čidla, kdyby se automat otáčel příliš dlouho a stále přitom nenalezl nulovou pozici. Nedojde tak k nekonečnému otáčení. public static void Calibration() //volá se po najetí procesoru, bez kalibrace výdejní automat neví, kde se nachází { DateTime dtStart = DateTime.Now; IsCalibrated = false; //standardně nastaveno na FALSE MotorSetSpeed(speedProc * 0.8); //0.8 je optimální rychlost pro naleznutí nulové polohy, otestováno a vyzkoušeno MotorStart(MoveDirection.Left); //otáčení stroje na jednu stranu while (!IsCalibrated) //provádí do doby než je TRUE { Thread.Sleep(5); if (DateTime.Now > dtStart.AddSeconds(CalibrationTimeOutSec)) { //pokud vyprší čas, může to být závada např. na indukčním čidle throw new Exception("Calibration TimeOut TimeOutIs:" + CalibrationTimeOutSec); } } IsCalibrated = true; //nastavení příznaku, že automat již projel nulovou pozici MotorStop(); //zastavení motoru }
44
Další metoda slouží k vyhodnocení cesty pro nejkratší a nejrychlejší otočení výdejního automatu k dané přihrádce. Zjistí si aktuální pozici automatu, pozici k otevření dané přihrádce a vypočítá, který směr pro otočení je nejvýhodnější. Tímto se zkracuje doba otáčení a ušetření času pro výdej měřidel. public static void GetDirection(int currPos, int reqPos, out int diff, out MoveDirection dir) //rozhodování automatu jestli budeme otáčet doleva či doprava = nejkratší cestou { int leva = 1000; int prava = 1000; //zjištění kolik je potřeba pro otočení automatu doleva a doprava if (reqPos > currPos) //requested - požadovaná pozice, current - aktuální pozice { leva = reqPos - currPos; prava = incrementMaxCount - reqPos + currPos; //1000 - požadovaná + aktuální } else if (reqPos <= currPos) { leva = reqPos + incrementMaxCount - currPos; prava = currPos - reqPos; } //porovnání hodnot pro otočení if (leva < prava) //funkce, která zjistí, který směr pro otáčení je blíž { diff = leva; dir = MoveDirection.Left; //blíž je doleva } else { diff = prava; dir = MoveDirection.Right; //blíž je doprava } }
Po rozhodovacím procesu automatu, který směr je nejkratší, následuje příkaz pro otočení výdejního automatu do požadované pozice. V této metodě se vypočítává i rychlost pro otáčení automatu. Pokud se aktuální pozice začne přibližovat k požadované pozici, začne docházet k pomalejšímu otáčení stroje, zpomalování je tak plynulé a ne skokové zastavení, kde by docházelo k přejíždění aktuální pozice. Případné přejetí pozice řeší přesnost, kde se nastaví tolerance, aby se nemusel stroj znovu otáčet kvůli nepatrnému přejetí. V programu je přesnost nastavena na 10 kroků, což je 1% z 1000 kroků a to znamená o max. 3,6° otočení stroje. public static void MoveToPosition(int requestedPos) //příkaz, který otočí stroj do požadované pozice, vstup je poloha (0-1000) { int difference = 0; MoveDirection md = MoveDirection.Right; GetDirection(incrementCount, requestedPos, out difference, out md); //out nastaví směr a diferenci MotorSetSpeed(speedProc); //nastavení rychlosti motoru
45
while (difference > Presnost) //cyklus pro úpravu rychlosti motoru { GetDirection(incrementCount, requestedPos, out difference, out md); int breakPos = (int)(breakProc * incrementMaxCount); //poloha, kdy se automat přiblíží k cílové poloze, tak zpomalí rychlost otáčení if (difference < breakPos) { double xxx = (double)System.Math.Abs(breakPos) / (double)incrementMaxCount; //výpočet rychlosti do dotočení výdejního automatu MotorSetSpeed(xxx); //nastavení vypočtené rychlosti } MotorStart(md); //zapnutí motoru, když je již zapnutý, nic se nestane } MotorStop(); //zastavení motoru }
Ke konci ještě popíši příkaz k otevření určitých dvířek a příkaz, který nechá nějaký čas dvířka otevřená, aby dvířka měli čas odskočit od magnetického zámku, jinak by se dvířka nestihla otevřít. public static void OpenDoor(int patro) //otevření dvířek { switch (patro) { case 1: { pDVOT1.Write(false); WaitForOpen(); pDVOT1.Write(true); }; break; case 2: { pDVOT2.Write(false); WaitForOpen(); pDVOT2.Write(true); }; break; //atd. až do case 10: } MotorStop(); } public static void WaitForOpen() //chvilku nechá dvířka otevřená { DateTime dt = DateTime.Now.AddSeconds(20); while (dt > DateTime.Now) { if (CarouselControl.IsOpeningDoor()) break; else Thread.Sleep(10); } }
Zbývá ještě popsat soubor MFNet.cs, který se stará o komunikaci po TCP/IP. Dále soubor XmlSerializer.cs, který řídí serializace a deserializace plus interpretace komunikačního
rozhraní
mezi
PC
a
procesorem
Cobra
G120.
Soubor
IntegratedSocket.cs je rozšíření klasického .NET socket Klient, kterého známe od .NET 2.0. Tento soubor obsahuje např. důležitou metodu Receive, popsanou níže. Tato metoda naslouchá a provádí instrukce v nekonečné smyčce. public void Receive() //naslouchání požadavku, od PC Touch { while (true) //nekonečná smyčka, která neustále naslouchá {
46
byte[] p = new byte[this.SocketClient.Available]; //vytvoření pole "byte" pro zprávu od klienta int xxx = this.SocketClient.Receive(p); //přečtení zprávy if (xxx == 0 || p.Length==0) //když je zpráva nulové velikosti pokračujeme dále continue ; XmlSerializer xmlSer = new XmlSerializer(typeof(CarouselCommunication)); MemoryStream ms = new MemoryStream(p); CarouselCommunication msg = null; try { string strMsg = new string(KoukolaCarousel.Net.SimpleSocket.Bytes2Chars(p)); //přečtení "byte" zprávy msg = xmlSer.Deserialize(strMsg) as CarouselCommunication; //její deserializace podle již známého komunikačního rozhraní } catch (Exception exxx) { //pro příklad jistoty, kdyby se zpráva nepovedla deserializovat } if (msg == null) //když je zpráva po deserializaci null, pokračujeme znovu continue; //vyhodnocení instrukce pro Cobru a její spuštění na novém vlákně z důvodu nezatěžování hlavního programu if (msg.Instrukce.ToUpper() == "CheckAlive".ToUpper()) { RECCheckAlive(msg); //zpráva, kterou si mezi sebou vyměňují PC a Cobra, PC z ní dostává informaci o pozici a stavu HW, COBRA ví, že PC komunikuje a je vše v pořádku } else if (msg.Instrukce.ToUpper() == "NatocOtevri".ToUpper()) { Thread t = new Thread(() => NatocOtevri(msg)); //Otevření dvířek t.Start(); } else if (msg.Instrukce.ToUpper() == "KalibracePrihradka".ToUpper()) { Thread t = new Thread(() => KalibracePrihradka(msg)); //Kalibrace přihrádek t.Start(); } else if (msg.Instrukce.ToUpper() == "KalibraceNulovaPozice".ToUpper()) { Thread t = new Thread(() => KalibraceNulovaPozice(msg)); //Kalibrace Nulová pozice t.Start(); } else if (msg.Instrukce.ToUpper() == "Natoc".ToUpper()) { Thread t = new Thread(() => Natoc(msg)); //Natočení kolotoče do konkrétní pozice t.Start(); } else if (msg.Instrukce.ToUpper() == "OtevriDvirka".ToUpper()) { Thread t = new Thread(() => OtevriDvirka(msg)); //Otevření dvířek (všech nebo konkrétních) t.Start(); } } }
47
4.6 Vytvoření databáze Tato část práce se bude zabývat návrhem databáze výdejního automatu pro evidenci měřidel, strojů, uživatelů, stav skladu měřidel a rovněž historii použití měřidel. Samotný výdejní automat pracuje s určitým množstvím dat. Proto je zřejmé, že základem řešení bude databáze. Databáze se bude programovat pomocí SQL Server Management studio, v kterém již firma vede docházku a evidenci svých zaměstnanců. To umožní naimportovat potřebné údaje o zaměstnancích a mít je neustále aktuální. Aby byla celá databáze přehledná, budou všechny sloupce ve všech tabulkách mít unikátní název sestavený dle části názvu tabulky, v které se nacházejí a názvu konkrétního údaje, kterého se týkají.
Obrázek 38: SQL databáze v MS SQL Server Management Studio
Ve všech tabulkách dále používám speciální sloupec TimeStamp, který nám zaručí, že kdyby více uživatelů měnili ve stejnou chvíli stejný údaj, tak to nechá uložit pouze prvního uživatele a ostatním to nepovolí, protože již používají neaktuální verzi. Při každé změně se totiž hodnota v poli zvýší o 1, takže pokud někdo chce uložit hodnoty s nižším číslem, není mu to povoleno. Hlavní rozdíl mezi tabulkou Users a Employee je, že tabulka Employee obsahuje všechny zaměstnance firmy a Users pouze uživatele, kteří se můžou přihlásit do systému. Je to rozdělené z toho důvodu, že kdyby z firmy někdo odešel a byl odstraněn jeho záznam, v tabulce Employee záznam zůstane, jenom se nastaví hodnota "EmplIsActive" na 0, takže nebude aktivní. Dojde tak k zablokování uživatele.
48
Je to důležité pro zachování historie, protože pokud by se uživatel vymazal úplně, záznam by neměl kam odkazovat. Měl jsem také připraveno, že do historie budu ukládat záznam o měřidle, na jaký stroj se použilo, ale na přání firmy jsem od toho musel opustit. Proto se ho historie ukládá pouze informace o zaměstnanci, stavu měřidla, měřidla, čas a datum operace. U tabulky Kategorie jsem použil rekurzi. Rekurzi můžeme chápat jako definování jisté entity pomocí sebe sama. Používá se zejména v případech, kdy je efektivní původní entitu rozdělit na jednodušší entity podobného charakteru. Průběh rekurze je možné znázornit jako strom. Jedná se tak o stromovou rekurzi, která nastává, pokud se v databázi odkazuje sama na sebe. Vzniká tak strom. ER model databáze je zobrazen v příloze 5. ER model databáze znázorněn pomocí programu Power Designer a je uložen i na CD ve složce Přílohy BC. Stručný popis jednotlivých tabulek databáze: Tabulka
Popis
Meridlo
Seznam a evidence všech měřidel.
Pozice
Seznam všech přihrádek ve výdejním automatu. Při propojení s tabulkou Meridlo zjistí umístění měřidla ve výdejním automatu.
Kategorie
Seznam kategorií pro rozdělení měřidel. Tabulka je rekurzivní – odkazuje sama na sebe. Lze tak procházet i podkategorie.
Machine
Seznam jednotlivých strojů, ke kterým můžou být měřidla použita.
MeridloMachineXref Omezení měřidla, na který konkrétní stroj může být použit. Users
Seznam a evidence uživatelů, kteří se můžou přihlásit do systému.
Employee
Seznam všech zaměstnanců firmy – import z firemní databáze – synchronizace z docházky.
LV_MeridloState
Lokalizace stavu měřidla – skladem, vyskladněno, oprava, vadný.
MeridloStateHistory Ukládání historie: Jaký zaměstnanec, jestli naskladnil či vyskladnil, jaké měřidlo, čas a datum (automaticky).
49
Identifikace primárních klíčů: Tabulka
Primární klíč
Meridlo
MeriID
Pozice
PoziID
Kategorie
KateID
LV_MeridloState
MeStID
MeridloMachineXref
MeMaID
Machine
MachID
Employee
EmplID
Users
UserID
MeridloStateHistory
MeSHID
Stručný popis jednotlivých atributů u jednotlivých tabulek databáze: Atribut
Popis
Tabulka Meridlo MeriID
Identifikační číslo měřidla v dané tabulce
MeriNr
Kódové číslo měřidla
MeriName
Název měřidla
MeriDesc
Popis či poznámka měřidla
MeriIsActive
Jestli je měřidlo aktivní, kde 0 je neaktivní a 1 aktivní
MeriDateTimeChange
Datum poslední úpravy měřidla
MeriTimeStamp
Ochrana proti přepsání více uživateli
MeriPoziID
Odkaz do tabulky Pozice, ke zjištění umístění měřidla
MeriKateID
Odkaz do tabulky Kategorie ke zjištění kategorie měřidla
MeriMeStID
Odkaz do tabulky LV_MeridloState na stav měřidla
MeriEmplIDChange
Odkaz do tabulky Employee, ke zjištění zaměstnance
Tabulka Pozice PoziID
Identifikační číslo pozice v dané tabulce
PoziName
Název přihrádky
PoziPrihradka
Číslo přihrádky, hodnoty 1-8
PoziPatro
patro výdejního automatu, hodnoty 1-10
PoziIncrementCount
Číslo pro pozici inkrementálního čidla, 0-1000 impulzů
PoziTimeStamp
Ochrana proti přepsání více uživateli
50
Tabulka Kategorie KateID
Identifikační číslo kategorie v dané tabulce
KateParentKateID
Rekurzivní odkaz, odkazuje sám na sebe
KateCode
Kód kategorie
KateName
Jméno kategorie
KateDesc
Popis, poznámka kategorie
KateIsActive
Jestli je kategorie aktivní, kde 0 je neaktivní a 1 aktivní
KateTimeStamp
Ochrana proti přepsání více uživateli
Tabulka LV_MeridloState MeStID
Identifikační číslo stavu měřidla v dané tabulce
MeStName
Stav měřidla, např. skladem, vyskladněno, oprava…
MeStName_en
Lokalizace stavu do jiného jazyka - angličtina
MeStName_de
Lokalizace stavu do jiného jazyka - němčina
MeStName_cs
Lokalizace stavu do jiného jazyka - čeština
MeStTimeStamp
Ochrana proti přepsání více uživateli
Tabulka MeridloMachineXref MeMaID
Identifikační číslo omezení měřidla na stroje v dané tabulce
MeMaMeriID
Odkaz do tabulky Meridlo, kde se vybere měřidlo
MeMaMachID
Odkaz do tabulky Machine, kde se vybere konkrétní stroj pro vybrané měřidlo – vznikne omezení
MeMaTimeStamp
Ochrana proti přepsání více uživateli
Tabulka Machine MachID
Identifikační číslo stroje v dané tabulce
MachCode
Kód stroje
MachName
Jméno stroje
MachIsActive
Jestli je stroj aktivní, kde 0 je neaktivní a 1 aktivní
MachDesc
Popis, poznámka stroje
Tabulka Employee EmplID
Identifikační číslo zaměstnance v dané tabulce
EmplNameFirst
Jméno zaměstnance
EmplNameLast
Příjmení zaměstnance
EmplCode
Kód zaměstnance, osobní číslo
EmplTitle
Titul zaměstnance 51
EmplEmail
Email zaměstnance
EmplIsActive
Jestli je zaměstnanec aktivní, kde 0 je neaktivní a 1 aktivní
EmplTimeStamp
Ochrana proti přepsání více uživateli
EmplRemark
Poznámka zaměstnance
Tabulka Users UserID
Identifikační číslo uživatele v dané tabulce
UserLogin
Přihlašovací jméno uživatele
UserPwd
Heslo uživatele
UserName
Celé jméno uživatele
UserIsAdmin
Jestli je uživatel admin, 0 – NE, 1 – ANO
UserIsReadOnly
Jestli uživatel má pouze práva pro čtení, 0 – NE, 1 – ANO
UserIsActive
Jestli je zaměstnanec aktivní, kde 0 je neaktivní a 1 aktivní
UserTimeStamp
Ochrana proti přepsání více uživateli
UserEmail
Email uživatele
UserSignature
Elektronický podpis uživatele, typu obrázek
UserNameShort
Zkrácené jméno uživatele
UserLangID
Nastavení jazyku pro uživatele, pro překlad určitých polí
UserEmplID
Odkaz na tabulku Employee, kde se uživatel propojí se zaměstnancem, čili zaměstnanec dostane přihlašovací práva do systému, kde se mu přiřadí jeho role.
UserRFID1
Kód čipu uživatele pro přihlášení do systému, zapsáno v hexadecimálním tvaru
UserRFID2
Náhradní kód čipu uživatele pro přihlášení do systému v případě ztráty či zapomenutí prvního, zapsáno v hexadecimálním tvaru
Tabulka MeridloStateHistory MeSHID
Identifikační číslo historie měřidla v dané tabulce
MeSHMeriID
Odkaz na tabulku Meridlo, kde se zjistí, o jaké měřidlo šlo
MeSHMeStID
Odkaz na tabulku LV_MeridloState, kde je uvedeno, zda se měřidlo dalo skladem, či se vyskladnilo na stroj
MeSHEmplID
Odkaz na tabulku Zaměstnanec, kde zjistíme konkrétní osobu, která si měřidlo půjčila/vrátila.
MeSHDateTime
Typ Datum a čas, který se vloží automaticky při vzniku
MeSHTimeStamp
Ochrana proti přepsání více uživateli 52
Zde je ukázán kód SQL Server databáze pro tabulku Meridlo. Kódy pro ostatní tabulky najdeme na CD ve složce SQL databáze: /*==============================================================*/ /* Table: Meridlo */ /*==============================================================*/ create table dbo.Meridlo ( MeriID int not null, MeriPoziID int null, MeriKateID int not null, MeriMeStID int not null, MeriEmplIDChange int null, MeriDateTimeChange datetime null, MeriNr nvarchar(100) not null, MeriName nvarchar(255) not null, MeriDesc nvarchar(255) null, MeriIsActive bit not null, MeriTimeStamp int null, constraint PK_MERIDLO primary key (MeriID) on "PRIMARY" ) on "PRIMARY" go alter table dbo.Meridlo add constraint FK_Meri_Empl foreign key (MeriEmplIDChange) references dbo.Employee (EmplID) go alter table dbo.Meridlo add constraint FK_Meri_Kate foreign key (MeriKateID) references dbo.Kategorie (KateID) go alter table dbo.Meridlo add constraint FK_Meri_MeSt foreign key (MeriMeStID) references dbo.LV_MeridloState (MeStID) go alter table dbo.Meridlo add constraint FK_Meri_Pozi foreign key (MeriPoziID) references dbo.Pozice (PoziID) go
53
4.7 Struktura ovládání menu V této části práci rozeberu strukturu ovládání menu výdejního automatu. Výdejní automat se ovládá pomocí dotykové obrazovky na hlavním panelu umístěném přímo na tubusu automatu vedle dvířek. Všechna data se načítají z SQL databáze výdejního automatu popsané v předešlé kapitole. Program je napsán v C# a je součástí CD ve složce Program menu. Program se spouští souborem „KolotocClientTouch.exe“ ve
složce
MWKolotocClientTouch.
Kompletní
struktura
ovládání
(toolbox)
je zobrazena v příloze 6.
Obrázek 39: Ovládací panel výdejního automatu
Pro připojení k SQL databáze slouží tento connection string: Server=NX73174IMO;Database=Kolotoc;Trusted_Connection=True; Trusted_Connection znamená, že práva k přihlášení přebírá aktuálně přihlášený lokální uživatel. Proto není nutné žádný databázový uživatel ani login. Jediný uživatel je defaultně vytvořený uživatel sa (systém admin). Úvodní obrazovka před přihlášením jakéhokoli uživatele zobrazuje seznam všech přihrádek A – H a jejich pater 1-10. U každé přihrádky je zobrazen počet kusů skladem versus přehled všech kusů předmětů v přihrádce.
54
Obrázek 40: Úvodní obrazovka ovládání výdejního automatu
Při kliknutí na jednotlivé přihrádky se zobrazí její obsah, viz. další obrázek.
Obrázek 41: Zobrazení veškerého obsahu přihrádky 4-C
Další pokračování ve struktuře menu závisí na přihlášení uživatele podle jeho práv. Jsou dvě možnosti. První možností jsou práva administrátorská, kde lze provádět více operací a pak práva uživatelská.
55
4.7.1 Uživatelská část Prvně si popíšeme uživatelskou část. Uživatel se do systému přihlásí pomocí čipové karty, která se ověří v databázi výdejního automatu. Samozřejmě uživatel musí mít nastaveno v databázi, že je aktivní. Pokud by měl uživatel nastavena navíc práva pouze pro čtení, mohl by pouze prohlížet a nebylo by mu umožněno výdej měřidla. Do systému se lze přihlásit i ručním přihlášením zaměstnance.
Obrázek 42: Přihlašovací obrazovka pro ruční přihlášení
Zde je kód pro přihlášení a ověření loginu uživatele: public ActiveUser UserAdd(string userURI, string userLogin, string pwd) //přihlašení uživatele, ověření loginu a hesla { using (new WriterAutoLocker(this._auctionLock)) { UserRemove(userURI); //url adresa mezi uživatelem a serverem ArrayList aParm = new ArrayList(); ParameterSer parm = new ParameterSer(); parm.ParName = "@userLogin"; parm.ParType = TypeOfPar.String; parm.ParValueString = userLogin; aParm.Add(parm); DSUsers ds = UsersGet(null,null, "where userLogin = @userLogin", aParm, true); if (ds.UsersAll.Rows.Count == 0) throw new Exception("User not found. (GetUserRow)"); DSUsers.UsersAllRow drU = (DSUsers.UsersAllRow)ds.UsersAll.Rows[0]; if (drU.UserIsActive==false) throw new Exception("BL.AccountNotActive","Your account is not active"); //user neni aktivní - exception if (pwd != null) { if( pwd!= drU.UserPwd) throw new Exception("Text.PasswordIncorrect", "The password is incorrect"); //error message, špatné url } DSActiveUsers.ActiveUserRow drA = _tableActiveUsers.AddActiveUserRow(userURI, drU.UserID, drU.UserLogin, drU.UserName, DateTime.Now, DateTime.MinValue, linkedLines, DateTime.MinValue); _tableActiveUsers.AcceptChanges(); return drA; } }
56
Obyčejný uživatel na své obrazovce uvidí svoje údaje a dvě ikony viz. obrázek. Uživateli není umožněno vrátit měřidlo, z důvodu kontroly měřidla u vedoucího, který po kontrole sám vrátí měřidlo do správné přihrádky, protože má nastavena administrátorská práva.
Obrázek 43: Ikony pro zaměstnance s uživatelskými právy
Přes ikonu „Vydaná měřidla“ si uživatel zobrazí měřidla, která si už sám vypůjčil. Uživatel si přes ikonku „Výdej“ vybere z automatu určité měřidlo. Probíhá to tak, že si na začátku vybere, na jaký stroj potřebuje měřidlo. Stroj lze vyhledat i pomocí fulltextu na jeho kód stroje.
Obrázek 44: Výběr stroje pro výdej měřidla
Následuje okno pro výběr kategorie viz. další obrázek. Uživateli je zde umožněno i vrátit se o krok zpět. I zde funguje vyhledávací pole podle kódu kategorie. Lze si zde prohlížet i další podkategorie.
57
Obrázek 45: Výběr kategorie pro výdej měřidla
Posledním výběrem je samotné měřidlo v dané kategorii a pro konkrétní stroj. Na této obrazovce vidíme, zda je měřidlo skladem, případně kdo si ho už vypůjčil a na jaký stroj. Je zde i uvedena už i konkrétní přihrádka. Měřidlo i zde lze vyhledat pomocí jeho kódu nebo jeho názvu.
Obrázek 46: Výběr konkrétního měřidla
Kód pro vyhledávání v databázi pomoci selektu: public DSMeridlo MeridloGet(string where) { DbConnection conn = ConnectionOpen(); //otevření připojení k databazi DbTransaction tr = conn.BeginTransaction(IsolationLevel.ReadCommitted); //otevření transakce DSMeridlo ds = new DSMeridlo(); DbDataAdapter da = CATIConfig.CreateDbDataAdapter(factoryCATIDB); da.SelectCommand = CATIConfig.CreateDbCommand(factoryCATIDB, "select * from MeridloAll " + where, conn, tr);
58
da.Fill(ds.MeridloAll); //naplnění databáze, z databaze sql dotazem "select * from MeridloAll " + where da.SelectCommand = CATIConfig.CreateDbCommand(factoryCATIDB, "select * from MeridloMachineXrefAll where MeMaMeriID in (select MeriID from MeridloAll " + where+")", conn, tr); da.Fill(ds.MeridloMachineXrefAll); //naplnění databáze, z databaze sql dotazem "select * from MeridloMachineXrefAll where MeMaMeriID in (select MeriID from MeridloAll " + where + ")" da.SelectCommand = CATIConfig.CreateDbCommand(factoryCATIDB, "select * from MeridloRekalibrace where MeReMeriID in (select MeriID from MeridloAll " + where + ")", conn, tr); da.Fill(ds.MeridloRekalibrace); //naplnění databáze, z databaze sql dotazem "select * from MeridloRekalibrace where MeReMeriID in (select MeriID from MeridloAll " + where + ")" da.SelectCommand = CATIConfig.CreateDbCommand(factoryCATIDB, "select * from SavedFileAll where FileMeReIDFiles in (select MeReID from MeridloRekalibrace where MeReMeriID in (select MeriID from MeridloAll " + where + "))", conn, tr); da.Fill(ds.SavedFileAll); //naplnění databáze, z databaze sql dotazem "select * from SavedFileAll where FileMeReIDFiles in (select MeReID from MeridloRekalibrace where MeReMeriID in (select MeriID from MeridloAll " + where + "))" tr.Commit(); //commit transakce conn.Close(); //uzavrení připojení k databazi return ds; }
Poslední obrazovka shrnuje veškeré informace o daném měřidle a po jejím dokončení se výdejní automat pootočí do správné polohy a otevře danou přihrádku. Zároveň do databáze uloží, že je měřidlo vyskladněno, datum, čas a kdo si ho vypůjčil.
Obrázek 47: Shrnutí informací o vydávajícím měřidle
59
4.7.2 Administrátorská část Když se vrátíme na začátek, tak uživatel s právy administrátora (vedoucí, mistr) uvidí na základní obrazovce mimo předešlých ikon uživatele i dvě následující ikony. Přes ikonu „Vrátit“ lze vrátit dané měřidlo zpět do přihrádky. Také má možnost si rovnou otevřít vybranou přihrádku, stačí jen vybrat v patře pozici přihrádky A-H a patro 1-10.
Obrázek 48: Ikony pro zaměstnance s administrátorskými právy
Na obrazovce je vidět seznam všech vydaných měřidel viz. další obrázek. Dle vyhledání kódu či názvu měřidla lze dané měřidlo rychle vybrat. Vidíme zde informace o měřidle, na jaký stroj je půjčený, kdo si ho vypůjčil a jeho datum a čas. Po výběru měřidla se nám zobrazí souhrnné informace podobné jako u výdeje měřidla. Automat se poté opět natočí do správné pozice, otevře danou přihrádku a do databáze se uloží údaj, že je měřidlo opět skladem.
Obrázek 49: Vrácení měřidla
60
Poslední ikonka „Kalibrace“ slouží k nakalibrování výdejního automatu. Při kliknutí na ikonu se nám otevře následující okno viz. obrázek. Jsou zde uvedeny konkrétní pozice inkrementálního čidla pro každou přihrádku. Pokud zjistíme nesprávné hodnoty pro natočení pozice přihrádek, lze manuálním otočením automatu pomocí klíčku uložit nové hodnoty pro správnou pozici.
Obrázek 50: Kalibrace přihrádek
Na poslední část ovládání menu výdejního automatu je potřeba další program ve složce Client a to „KolotocClient.exe“, který je součástí CD ve složce Program menu\Client. Tento program slouží pro uživatele s právy administrátora a to pro správu měřidel, kategorií, strojů a pozic. Lze zde zakládat, mazat či evidovat kategorie, měřidla i stroje. Pro uživatele je takto jednodušší správa databáze, než přes SQL Server.
Obrázek 51: Program pro správu měřidel a kategorií
61
Kód pro ukládání měřidel: public void MeridloSave(DSMeridlo ds) { DbConnection conn = ConnectionOpen(); //otevření připojení k databázi DbTransaction tr = conn.BeginTransaction(); //otevření transakce Log(conn, tr, Log(conn, tr, //uloženi změn Log(conn, tr, //uloženi změn LogIconn, tr,
(int)LogObject.Meridlo, ds.MeridloAll); //uložení změn (int)LogObject.MeridloMachineXref, ds.MeridloMachineXrefAll); (int)LogObject.MeridloRekalibrace, ds.MeridloRekalibrace); (int)LogObject.SavedFile, ds.SavedFileAll);
MyUpdate mu = new MyUpdate(conn, tr); //vytvoření instance, třída pro práci s update MSSQL mu.AddOperation("Meridlo", ds.MeridloAll); //přidaní tabulky, do fronty dotazu pro ulozeni zmen mu.AddOperation("MeridloMachineXref ", ds.MeridloMachineXrefAll); //přidání tabulky, do fronty dotazu pro uložení změn mu.AddOperation("MeridloRekalibrace ", ds.MeridloRekalibrace); //přidání tabulky, do fronty dotazu pro uložení změn mu.DoUpdates(); //odeslaní update do databáze tr.Commit(); //commit transakce conn.Close(); //uzavření připojení k databázi }
Kód pro smazání měřidel: public void MeridloDelete(DbConnection iConn, DbTransaction iTr, int meriID) { DbConnection conn = ConnectionOpen(); //otevření připojení k databázi DbTransaction tr = conn.BeginTransaction(); //otevření transakce DSMeridlo ds = MeridloGet(conn, tr, "where meriID =" + meriID.ToString()); //načtení daz z databáze podle dotazu where if (ds.MeridloAll.Rows.Count != 1) throw new Exception("MeridloNotExist"); //ošetření prázdného datasetu tabulky meřidlo DatasetDeleteAllRows(ds); //vymazáni všech řádků MeridloSave(ds); // uložení přes MeridloSave tr.Commit(); //commit transakce conn.Close(); //uzavření pripojeni k databázi }
62
5 Testování zapojení V této části popíši zapojování a testování celého zařízení výdejního automatu na měřidla. Rozdělil jsem testování na dvě části. V první části se zaměřím na vytvoření modelu v domácím prostředí, na kterém budu testovat funkčnost jednotlivých součástek a vliv rušení. Také vyzkouším funkčnost naprogramované části pro ovládání motoru přes desku FEZ Cobra II. V druhé části testu se již přeneseme do firmy, kde dojde ke kompletnímu sestavení výdejního automatu a jeho propojení s SQL databází a ovládání pomocí programu ovládacího menu.
5.1 Testování doma Zde se budu zabývat zapojením jednotlivých hardwarových komponent a jejich testování při otáčení vnitřního tubusu ve výdejním automatu. Veškeré součástky koupila firma KOVO KOUKOLA s.r.o. a já jsem si je zapůjčil na testování zapojení. Sestavil jsem dřevný model pro jedno patro s jedněmi dvířky pro otevírání. Kotouč jsem rozdělil na 8 částí, přesně tak jak to bude u výdejního automatu. Na dvířka jsem zapojil i elektrický zámek s vyhazovací pružinou.
Obrázek 52: Dřevěný model s dvířky
Na hlavní desku jsem umístil jistič, do kterého jsem přivedl 230V, přes který jsem zapojil frekvenční měnič. Frekvenční měnič řídí otáčky asynchronního motoru, který uprostřed otáčí vnitřním kotoučem.
63
Obrázek 53: Zapojení jističe, frekvenčního měniče a asynchronního motoru
Na konec hřídele, kterou otáčí asynchronní motor, jsem umístil inkrementální čidlo pro snímání otáček, které převádí pohyb na elektrický signál. Vše jsem propojil přes spínací desku, kterou jsem propojil s programovací řídící deskou.
Obrázek 54: Kompletní zapojení modelu pro testování
Spínací desku jsem nahradil nepájivým polem, kde jsem zapojil obvod pouze pro ovládání jedněch dvířek, pro snímání otáček, řízení frekvenčního měniče a spojení s deskou FEZ Cobra II (Net) jsem zde nahradil deskou Panda II, ke kterému jsem připojil FEZ Touch screen panel. Vše jsem napájel počítačovým zdrojem.
64
Nepájivé pole Nepájivé pole je opakovaně použitelná pomůcka k navrhování prototypů elektrických obvodů a pro experimentování s obvody bez letování součástek. Nepájivé pole je zhotoveno z plastové izolační desky s otvory v rastru 2,54 mm (1/10 palce), obvyklém pro integrované obvody v DIL pouzdrech. Uchycení součástek a jejich propojení zajišťují kontaktní hřebínky s pružinami zasunuté zespodu. Vývody součástek je možné opakovaně zasouvat do pružinových kontaktů a zapojení obvodu tak měnit. Pokud je potřeba propojení, ke kterému nestačí propojovací hřebínky, použije se kousek drátu, který se zastrčí do otvorů stejně jako součástka. Součástky i propojovací dráty je možné bez poškození zasunovat a vytahovat. Pomocí nepájivých kontaktních polí lze navrhovat široké spektrum obvodů, od malých analogových a digitálních obvodů až po kompletní CPU. [19] FEZ Touch screen panel Tento 2,4 palcový TFT displej má plnou 16-bitovou barevnou grafiku na 240x320 pixelů. Panel s dotykovou obrazovkou je ideální pro kompaktní uživatelské rozhraní. Displej je přímo podporován pro FEZ Panda II. FEZ Panda (založená na čipové sadě USBizi) nemá na vysoké úrovni grafické knihovny jako FEZ Cobra (na základě EMX modulu), takže nelze načíst JPG a GIF přímo, ale GHI poskytuje grafické knihovny na pomoc při přípravě na tomto displeji.
Obrázek 55: Zapojení nepájivého pole s FEX Cobra a FEZ Touch screen panelem
65
K řídící desce jsem poté připojil notebook, přes který jsem nahrál veškerý program do programovatelné řídící vývojové desky s procesorem.
Obrázek 56: Připojení na notebook a nahrání programu
Přes tlačítka na řídící desce FEZ Panda II jsem začal testovat otáčení, kde jsem si zjišťoval optimální rychlost pro otáčení a ideální rychlost pro dojetí na určitou pozici. Zde jsem i zkoušel, o kolik mi přejede nastavenou pozici a tak jsem určil i přesnost – toleranci dotočení. Vše jsem pak dolaďoval přesným nastavením v programu. Zkoušel jsem, zda se mi odemknou dvířka při dosažení zadané pozice. Testoval jsem program, zda se správně testuje nejkratší směr pro otáčení a jestli mi nuluje hodnota při otočení celé otáčky enkodéru. Zde byly bohužel impulzy tak krátké, že se mě nedařili pokaždé zachytit, proto jsem nakonec použil indukční snímač pro nulování pozice. Hodnoty pozice otáčení jsem sledoval na připojeném FEZ Touch screen panelu. Toto je pak krásně vidět na videu uloženém na CD ve složce Videa.
Obrázek 57: Měření údajů na FEZ Touch screen panelu
66
Testoval jsem, jestli mi inkrementální čidlo při otočení o 360° ukáže 1000 kroků, bohužel zde se mi díky velikému rušení nedařilo dosáhnout přesného čísla. Vždy mi to ukázalo menší či větší hodnoty. Zkusil jsem to tedy vyřešit izolováním kabelů pomocí alobalu.
Obrázek 58: Izolování proti rušení
Sice jsem takto dosáhl lepších hodnot, ale i toto moc nepomohlo. Rušení jsem měřil pomocí Saleae 8ch 24MHz logic analyzer napojeným na kanál A a B z enkoderů a s výstupem na PC přes program Logic Analyzer. Výstup programu je vidět i na obrázku 60.
Obrázek 59: Saleae 8ch 24MHz logic analyzer
Nakonec jsem to vyřešil výměnou frekvenčního měniče za typ Altivar 12 ATV12HU15M2. Všechny frekvenční měniče Altivar jsou standardně vybaveny vestavěnými odrušovacími filtry a tento model též v sobě obsahuje proudovou ochranu.
67
Obrázek 60: Měření rušení na PC přes Logic Analyzer
Nakonec jsem tedy dosáhl uspokojujících výsledků a mohl jsem ukončit první fázi testování a přejít do druhé fáze a to testování ve firmě. Na CD ve složce Videa jsou umístěny i videa z testování otáčení, měření pozice a otevírání dvířek.
5.2 Testování ve firmě Firma KOVO KOUKOLA s.r.o. dodala vyrobený tubus výdejního automatu podle návrhu. Na horní patro tubusu jsem pak umístil veškerý hardware. Asynchronní motor na otáčení, frekvenční měnič Altivar 12 na řízení otáček, inkrementální čidlo na snímání otáček, indukční snímač pro nulování pozice.
Obrázek 61: Zapojené vrchní patro výdejního automatu
Také jsem zde umístil switch pro připojení firemních PC, připojení počítače na ovládacím panelu a propojení s vývojovou deskou FEZ Cobra II (Net) s procesorem 68
Cortex®-M3. Do menší počítačové skříně jsem pak umístil zdroj pro spínací desku a tuto spínací desku připojenou na vývojovou deskou FEZ Cobra II.
Obrázek 62: Zapojení PC zdroje, spínací desky a FEZ Cobra II
Poslední důležitou částí horního zapojení je rozvaděč, kde jsou jističe pro napájení 230V a frekvenční měnič. Jsou zde rozvedeny dráty pro osvětlení a elektrické zámky všech dvířek. Je zde také zapojen přívod pro počítač v ovládací skříni.
Obrázek 63: Zapojení rozvaděče pro výdejní automat
Další důležitou částí je ovládací panel, kde je umístěn počítač s dotykovým monitorem. Na panelu je dále umístěna čtečka karet, numerická klávesnice, tlačítko nouzové zastavení, přepínač na směr otáčení a tlačítko na odemčení všech pozic. Poslední dvě jmenované jsou funkční jen při použití manuálního klíčku z boku panelu. 69
Obrázek 64: Ovládací pult – ze předu a z boku
Při otevření ovládacího panelu je vidět zapojení počítače a monitoru. Napájení je přivedené z rozvaděče. Zde se opět bohužel ukázal nevyhovující počítač se SATA diskem, protože ve firmě jsou otřesy od velkých strojů a disk po krátké době odešel. Nakonec jsem počítač vyměnil za Intel NUC 5i3ryk s SSD diskem. Jedná se o Mini počítač s integrovaným CPU Intel Core i3 5010U 2.1GHz Broadwell, Intel HD Graphic 5500, 2x SO-DIMM DDR3 1600Mhz, m.2, GLAN, WiFi, BT 4.0, mHDMI, mDP, 4x USB 3.0, VESA.
Obrázek 65: Mini počítač Intel NUC 5i3ryk
SSD SSD je v informačních technologiích typ datového média, které na rozdíl od magnetických pevných disků neobsahuje pohyblivé mechanické části a má mnohem nižší spotřebu elektrické energie. Z konstrukčního hlediska jsou SSD disky obecně považovány také za odolnější vůči mechanickému poškození. Velkou výhodu SSD disků představuje jejich přístupová doba, která je oproti klasickým diskům výrazně
70
nižší, a tak se práce s počítačem stává svižnější. SSD disky zároveň dokáží nabídnout řádově vyšší rychlost čtení i zápisu než běžné pevné disky s rotujícími plotnami. To se pak projeví na zkrácení doby bootování systému, svižnější práci s náročnějšími programy. SSD napodobuje rozhraní používané pro pevné disky (typicky SATA), aby je mohl snadno nahradit. [20]
Obrázek 66: Zapojení v ovládacím pultu – vlevo staré PC, vpravo nové PC
Poslední fází bylo už jen spuštění celého výdejního automatu a propojení s SQL databází a odzkoušení funkčnosti s ovládacím menu. Řešil jsem zde chyby s propojením databáze, kde se musela nastavit správná IP adresa. Také chyby v SQL databázi při poškozených clusterech na disku, proto jsem potom přešel na SSD disk.
71
Obrázek 67: Chybové hlášky
Nakonec proběhlo spuštění celého výdejního automatu na měřidla, kde se zaměstnanci přihlašovali přes čtečku, přes menu si vybrali měřidlo, došlo k natočení stroje do správné pozice a k odemčení správných dvířek. Do databáze se pak zapisovali údaje o vyskladnění měřidla a další potřebné údaje.
Obrázek 68: Celý výdejní automat zasazený v provozu
72
6 Závěr 6.1 Splnění cílů Cílem této práce byl návrh a vytvoření funkčního výdejního automatu pro příjem a výdej měřidel. Cíl práce se podařilo splnit. Výdejní automat je nyní zasazený v provozu ve firmě KOVO KOUKOLA s.r.o., splnil veškerá očekávání firmy a funguje na 100%. Kapacita přihrádek je dostatečně velká pro všechny typy měřidel. Ověřování a přihlašování uživatelů přes čtečku funguje správně, tedy neoprávněný uživatel nemůže výdejní automat použít. Výdejní automat na měřidla splnil tyto požadavky: − Úspora pracovní síly, − umožnil nonstop výdej a příjem měřidel, nástrojů, − je jednoduchý na obsluhu zaměstnancem, − je jednoduchý na správu pro vedoucího, − dává přehled o stavu skladu nástrojů či měřidel, − uchovává v historii přehled o výdeji nástrojů jednotlivým zaměstnancům, − umožňuje omezování výdeje měřidel různým zaměstnancům, − umí přiřadit nástroje a měřidla k různým kategoriím, − dochází k odebrání nástroje až v okamžiku potřeby, − zvýšil bezpečnost proti odcizení nástrojů, − ověřuje uživatele podle evidenčních karet. Během práce jsem využil veškerých svých znalostí a i těch, které jsem získal během studia. Využil jsem zde znalosti získané z předmětu elektrických obvodů a číslicových systémů
pro
návrh
spínací
desky,
programování,
architektury
počítačů
a mikroprocesorové techniky pro programování řídící desky FEZ Cobra II a programu pro ovládání menu před ovládací panel, databázových systému a webových technologií pro návrh SQL databáze a návrh plošných spojů pro vytvoření návrhu spínací desky v programu EAGLE.
73
6.2 Problémy a jejich řešení Během práce se vyskytli problémy s rušením signálů při testování, které se ale povedlo odstranit výměnou frekvenčního měniče za jiné zařízení. Díky krátkým nulovacím impulsům z enkodéru se musel použít indukční snímač s lepšími vlastnostmi. Díky vibracím ve firmě se zjistila i špatná odolnost klasických disků, které se vyřešilo opět výměnou za lépe odolnější SSD disky. Po získaných zkušenostech můžu říct, že bych část spínací desky řešil jinak. Místo části ovládání rychlosti otáčení pomocí optočlenů, bych použil obvod analog optocoupler IL300 pro plynulejší řízení otáček, neboť původní řešení je řízeno po skocích.
6.3 Možnosti rozšíření práce, další pokračování Díky plně funkčnímu výdejnímu automatu firma do budoucnosti plánuje rozšířit výdejní automat o možnosti kalibrace, kdy bude uchovávat údaje o měřidlech, zda jsou zkalibrovány. Vydávat měřidla na kalibrace a přijímat zpět. Bude hlídat i datum konce kalibrace. Případné rozšíření databáze či ovládacího programu pro výdejní automat by neměl být problém. V plánu firmy je také přejít z inkrementálního snímače na absolutní rotační snímač. Neboť výdejní automat na měřidla plní ve firmě svůj účel, plánuje ho firma vyrobit ve více kusech a použít i v ostatních svých provozech.
74
Seznam použité literatury [1]
Výdejní automaty. Výdejní automaty. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://www.sielaff.cz/produkty/vydejni-automaty
[2]
Informace o programu EAGLE. EAGLE Online. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://www.eagle.cz/info.htm
[3]
Tři veteráni: uživatelské srovnání integrovaných prostředí pro jazyk C#. zive.cz. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://www.zive.cz/Clanky/Triveterani-uzivatelske-srovnani-integrovanych-prostredi-pro-jazyk-C/sc-3-a135680/default.aspx
[4]
LACKO, Ľuboslav. Mistrovství v SQL Server 2012. Computer Press, 2013. ISBN 978-80-2513-773-4.
[5]
Stopařův průvodce po databázích. dotnetportal.cz. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://www.dotnetportal.cz/clanky/serial/7/Stoparuv-pruvodce-po-databazich
[6]
Elektrické motory. ELEKTRO. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://www.odbornecasopisy.cz/flipviewer//2015/25/_25_2015/index.html#p=1
[7]
Ota Roubíček: Elektrické motory a pohony – příručka techniky, volby a užití vybraných druhů, BEN – technická literatura, Praha 2004, ISBN 80-7300-092-X
[8]
Princip – asynchronní motor. Pohonnatechnika.cz. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://www.pohonnatechnika.cz/skola/motory
[9]
Přehled a zapojení motorů. myLMS. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://mylms.cz/text-prehled-a-zapojenimotoru/#kotvanakratko230400
[10] Napájení asynchronních motorů z měničů. elektroprumysl.cz. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://www.elektroprumysl.cz/pohony-menice-aenergetika/napajeni-asynchronnich-motoru-z-menicu [11] Frekvenční měniče. elektromotry.cz. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://www.elektromotory.cz/podpora/poradna-neboli-jak-nato/frekvencni-menice-proc-a-jak [12] Princip optických enkodérů polohy pro řízení motorů. automatizace.hw.cz. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://automatizace.hw.cz/clanek/2006022801 75
[13] Inkrementální čidlo. AJP-Tech. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://www.ajptech.cz/produkty/prumyslova-automatizace/baumersenzory/snimace/snimace-otacek-a-uhlu/inkrementalni/ [14] Indukční snímače – co je potřeba vědět pro správnou volbu. OEM Automatic. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://www.oemautomatic.cz/Products/Elektricke_stroje/Indukcni_snimace/Zasad y_indukcni_detekce_krivky_detekce_a_znaceni/Indukcni_snimace__co_je_potreba_vedet_pro_spravnou_volbu/604954-603767.html [15] Bezkontaktní indukční snímače přiblížení – obecný popis. automatizace.hw.cz. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://automatizace.hw.cz/komponenty-mereni-a-regulace/indukcni-snimacepriblizeni-obecny-popis.html [16] FEZ Cobra II (Net). GHI electronics. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: https://www.ghielectronics.com/catalog/product/482 [17] Úvod do architektury Cortex-M3. Pandatron.cz – ISSN 1803-6007. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://pandatron.cz/?1252&uvod_do_architektury_cortex-m3_-_dil._1 [18] Použití rotačních enkodérů. elektronika.kvalitne.cz. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: http://elektronika.kvalitne.cz/ATMEL/necoteorie/tutorial/RotaryEncoder/RotaryE ncoder.html [19] Nepájivé pole. Wikipedie. [online]. 27.4.2016 [cit. 2016-04-27]. Dostupné z: https://cs.wikipedia.org/wiki/Nepájivé_pole [20] Zrychlete si počítač prostřednictvím SSD disku. PCWorld. [online]. 27.4.2016 [cit.
2016-04-27].
Dostupné
z:
http://pcworld.cz/hardware/tip-zrychlete-si-
pocitac-prostrednictvim-ssd-disku-16484
76
Seznam obrázků Obrázek 1: Detail spirálového výdejního systému ........................................................... 9 Obrázek 2: Výdejní automat s 3-D mechanizmem ......................................................... 10 Obrázek 3: Návrh výdejního automatu pro potřeby firmy ............................................. 14 Obrázek 4: Zvolený typ asynchronního motoru ............................................................. 17 Obrázek 5: Frekvenční měnič SYNTHESIS syn10 s 220 05 af ..................................... 19 Obrázek 6: Rozdělení snímačů otáček ............................................................................ 20 Obrázek 7: Princip fotoelektrického snímání ................................................................. 21 Obrázek 8: Detekce kvadraturních signálů A a B........................................................... 22 Obrázek 9: Inkrementální čidlo E6C2-CWZ6C 1000P/R 2M ........................................ 22 Obrázek 10: Princip činnosti indukčního snímače ......................................................... 23 Obrázek 11: XS112BLPAL2 Indukční čidlo XS1 M12 ................................................. 24 Obrázek 12: Programovací deska FEZ Cobra II (Net) ................................................... 25 Obrázek 13: Procesor Cortex-M3 ................................................................................... 26 Obrázek 14: Skříňový zámek elektrický s vyhazovací pružinou .................................... 27 Obrázek 15: Osvětlení LED páska.................................................................................. 27 Obrázek 16: počítač HP ProDesk 400 G1 ...................................................................... 28 Obrázek 17: dotykový LCD monitor V-Touch 1722 5U ................................................ 28 Obrázek 18: USB numerická klávesnice ........................................................................ 29 Obrázek 19: switch HP 1405G-05 .................................................................................. 29 Obrázek 20: USB čtečka IS Tiny .................................................................................... 30 Obrázek 21: Rozvaděč .................................................................................................... 30 Obrázek 22: Vstupní napětí ............................................................................................ 31 Obrázek 23: Konektor propojení FEZ Cobra II a spínací desky .................................... 32 Obrázek 24: Zapojení desky a její konektory ................................................................. 33 Obrázek 25: Zapojení s DC/DC měničem ...................................................................... 33 Obrázek 26: Směr otáčení ............................................................................................... 34 Obrázek 27: Základní zapojení enkodér ......................................................................... 34 Obrázek 28: Optočlen ..................................................................................................... 35 Obrázek 29: Vstupy a schéma zapojení pro enkodér ...................................................... 36 Obrázek 30: Klopný obvod D - IC5A - 74HCT74N ...................................................... 36 Obrázek 31: Výstup indukčního snímače ....................................................................... 36 Obrázek 32: Konektor ovládání a obvod zapojení.......................................................... 37 Obrázek 33: Výstup pro ovládání ................................................................................... 38 77
Obrázek 34: Obvod pro ovládání dvířek a směru otáčení .............................................. 38 Obrázek 35: Obvod a výstup pro frekvenční měnič ....................................................... 39 Obrázek 36: Schéma zapojení HW zařízení ................................................................... 40 Obrázek 37: Ovládač stiskací s hřibovým knoflíkem, stiskni-táhni ............................... 41 Obrázek 38: SQL databáze v MS SQL Server Management Studio .............................. 48 Obrázek 39: Ovládací panel výdejního automatu ........................................................... 54 Obrázek 40: Úvodní obrazovka ovládání výdejního automatu ...................................... 55 Obrázek 41: Zobrazení veškerého obsahu přihrádky 4-C .............................................. 55 Obrázek 42: Přihlašovací obrazovka pro ruční přihlášení .............................................. 56 Obrázek 43: Ikony pro zaměstnance s uživatelskými právy........................................... 57 Obrázek 44: Výběr stroje pro výdej měřidla .................................................................. 57 Obrázek 45: Výběr kategorie pro výdej měřidla ............................................................ 58 Obrázek 46: Výběr konkrétního měřidla ........................................................................ 58 Obrázek 47: Shrnutí informací o vydávajícím měřidle .................................................. 59 Obrázek 48: Ikony pro zaměstnance s administrátorskými právy .................................. 60 Obrázek 49: Vrácení měřidla .......................................................................................... 60 Obrázek 50: Kalibrace přihrádek .................................................................................... 61 Obrázek 51: Program pro správu měřidel a kategorií ..................................................... 61 Obrázek 52: Dřevěný model s dvířky ............................................................................. 63 Obrázek 53: Zapojení jističe, frekvenčního měniče a asynchronního motoru ............... 64 Obrázek 54: Kompletní zapojení modelu pro testování ................................................. 64 Obrázek 55: Zapojení nepájivého pole s FEX Cobra a FEZ Touch screen panelem ..... 65 Obrázek 56: Připojení na notebook a nahrání programu ................................................ 66 Obrázek 57: Měření údajů na FEZ Touch screen panelu ............................................... 66 Obrázek 58: Izolování proti rušení ................................................................................. 67 Obrázek 59: Saleae 8ch 24MHz logic analyzer .............................................................. 67 Obrázek 60: Měření rušení na PC přes Logic Analyzer ................................................. 68 Obrázek 61: Zapojené vrchní patro výdejního automatu................................................ 68 Obrázek 62: Zapojení PC zdroje, spínací desky a FEZ Cobra II .................................... 69 Obrázek 63: Zapojení rozvaděče pro výdejní automat ................................................... 69 Obrázek 64: Ovládací pult – ze předu a z boku .............................................................. 70 Obrázek 65: Mini počítač Intel NUC 5i3ryk .................................................................. 70 Obrázek 66: Zapojení v ovládacím pultu – vlevo staré PC, vpravo nové PC................. 71 Obrázek 67: Chybové hlášky .......................................................................................... 72 Obrázek 68: Celý výdejní automat zasazený v provozu ................................................. 72
78
Seznam použitých zkratek 3D – Trojdimenzionální – trojrozměrný AC – Střídavé napětí AM – Asynchronní motor ARM – Advanced RISC Machine CD – Compact Disc ČR – Česká Republika ČSN – Česká soustava norem DBMS – Database Management Dystem – Systém řízení báze dat DC – Stejnosměrné napětí DVI – Digital Visual Interface EAGLE – Easily Applicable Graphical Layout Editor ECMA – European Computer Manufacturers Association HP – Hewlett-Packard HW – Hardware ID – Identifikace IDE – Integrated Drive Electronics ISO – International Organization for Standardization LCD – Liquid Crystal Display LED – Light Emitting Diode MS SQL – Microsoft Structured Query Language NET – Network PC – Personal computer RAM – Random Access Memory SATA – Seriál Advanced Technology Attachment SSD – Solid state drive SW – Software TTL – Transistor Transistor Logic – Tranzistorově tranzistorová logika USB – Universal Serial Bus VCC – Vstupní napětí
79
Přílohy Příloha 1 - Výdejní automat – sestava 1
80
Příloha 2 - Výdejní automat – sestava 2
81
Příloha 3 - Spínací deska
82
Příloha 4 - Princip zapojení
83
Příloha 5: ER model databáze
84
Příloha 6 - Struktura ovládání menu
85
Obsah přiloženého CD Na přiloženém CD se v kořenovém adresáři nachází tato bakalářská práce ve formátu bakalarska_prace.pdf s jednoduchým návodem Návod.doc pro obsluhu programu. Obsah složek: Dokumentace HW − Asynchronní motor BN 71B (Specifikace v pdf) − Frekvenční měnič Altivar 12 ATV12HU15M2 (Manuál v pdf) − Kabely pro frekvenční měniče (Specifikace v pdf) − Inkrementální čidlo E6C2-CWZ6C 1000P/R 2M (Specifikace v pdf) − Indukční čidlo XS1 M12 (Parametry v pdf) − Programovací deska FEZ Cobra II (Schéma v pdf) − Procesor Cortex-M3 (Specifikace v pdf) Součástky − DC-DC měnič SCW05.pdf − Klopný obvod D 74HCT74N.pdf − Optočlen PC817.pf − Optočlen PC847.pdf − Relé LEG-12F.pdf − Schmittův obvod 74HCT14N.pdf − Tranzistor BC547.pdf Plošný spoj v EAGLE − DESKA V.203.brd − DESKA V.203.sch Program CPU − CarouselControl.cs − IntegratedSocket.cs − MFNet.cs − Program.cs − XmlSerializer.cs
86
Program menu − Client - KolotocClient.exe − KoukolaCarouselService − MWKolotocClientTouch - KolotocClientTouch.exe SQL Databáze − KoukolaKolotoc.bak − CreateTables.sql Přílohy BC − Příloha 1 - Sestava.pdf − Příloha 2 - Sestava.pdf − Příloha 3 - Spínací deska.pdf − Příloha 4 - Princip.pdf − Příloha 5 - ER model databáze.pdf − Příloha 6 - Struktura ovládání.pdf Video − Video z testování Fotky − Fotky v max. kvalitě
87