2012
Střední průmyslová škola elektrotechnická Brno, Kounicova 16
Model osobního výtahu
Autoři:
Petr Filakovský Jakub Krejzek
Konzultanti:
Ing. Miroslava Odstrčilíková Antonín Veselý
Prohlašujeme, že jsme naši práci vypracovali samostatně. Jako podklady jsme použili literaturu a software, který je uvedeny v přiloženém seznamu. V Brně dne 24. 4. 2012 Podpis:
……............................................ Petr Filakovský
…................................................. Jakub Krejzek
Poděkování Rádi bychom poděkovali prostřednictvím této soutěže Antonínu Veselému za podporu při tvorbě tohoto projektu a za možnost se vzdělávat v kroužku programovatelných automatů. Poděkování patří i Ing. Miroslavě Odstrčilíkové, která nám ochotně poskytla školní laboratoře a zapůjčila školní vybavení.
Obsah 1.
Úvod .......................................................................................................................... - 7 -
2.
Metodika .................................................................................................................... - 8 2.1.
Rozdělení výtahů dle ČSN ISO 4190-1:................................................................. - 8 2.1.1. Rozdělení výtahů dle druhu pohonu............................................................ - 8 -
2.2.
Stanovení technických požadavků na výtahy ......................................................... - 9 -
2.3.
Obecný popis ........................................................................................................ - 10 -
2.4.
Blokové schéma .................................................................................................... - 11 -
3.
Příjem a zpracování dat ........................................................................................... - 12 3.1.
Komunikace .......................................................................................................... - 12 -
3.2.
Vstupy a výstupy .................................................................................................. - 13 Řídící prvky ............................................................................................................. - 14 -
4. 4.1.
N-kodér pro měření otáček ................................................................................... - 14 -
4.2.
PID regulátor ........................................................................................................ - 15 4.2.1. Proporcionální složka regulátoru .............................................................. - 15 4.2.2. Integrační složka regulátoru ...................................................................... - 15 4.2.3. Derivační složka regulátoru....................................................................... - 15 4.2.4. Nastavení PID regulátoru .......................................................................... - 16 -
4.3.
Hallovy sondy ....................................................................................................... - 17 -
4.4.
Řízení motorů ....................................................................................................... - 17 4.4.1. Automatické odpojení napájení pro motory pomocí tranzistorů a diod ... - 19 -
5.
Bezpečnostní prvky ................................................................................................. - 20 5.1.
Tenzometr ............................................................................................................. - 20 -
5.2.
Světelné závory jako indikace překážky .............................................................. - 20 -
5.3.
Teplotní čidlo ........................................................................................................ - 21 -
6.
Informační prvky ..................................................................................................... - 21 6.1.
Sedmi segmentový a alfanumerický maticový bodový LED displej ................... - 21 -
6.2.
Informační LCD displej 16x2 ............................................................................... - 22 -
6.3.
GONG – Melodický generátor ............................................................................. - 23 -
7.
Ovládací prvky ........................................................................................................ - 24 7.1.
Maticová klávesnice ............................................................................................. - 24 -
7.2.
Přivolávací tlačítka s podsvícením ....................................................................... - 24 -
8.
Výsledky .................................................................................................................. - 25 8.1.
Komunikace .......................................................................................................... - 25 8.1.1. Příklad použitého kódu v AVR Studiu ...................................................... - 26 8.1.2. Příklad použitého kódu v DetStudiu ......................................................... - 27 -
8.2.
Vstupy a výstupy .................................................................................................. - 28 8.2.1. Příklad použitého kódu v AVR Studiu ...................................................... - 30 -
8.3.
N-kodér pro měření otáček ................................................................................... - 31 8.3.1. Příklad použitého kódu v DetStudiu pro měření otáček............................ - 31 -
8.4.
PID regulátor ........................................................................................................ - 31 8.4.1. Část kódu v procesu Quick: ...................................................................... - 31 -
8.5.
Hallovy sondy ....................................................................................................... - 32 8.5.1. Kód v procesu Interrupt_0: ....................................................................... - 32 8.5.2. Část kódu v procesu Quick: ...................................................................... - 32 -
8.6.
Řízení motorů ....................................................................................................... - 33 -
8.7.
Tenzometr ............................................................................................................. - 33 -
8.8.
Sedmi segmentový a alfanumerický maticový bodový LED displej ................... - 34 8.8.1. Použitý kód v AVR Studiu: ....................................................................... - 34 8.8.2. Část použitého kódu v AVR Studiu pro zobrazení šipky nahoru: ............ - 35 -
8.9.
Přivolávací tlačítka s podsvícením ....................................................................... - 35 8.9.1. Použitý kód v AVR Studiu pro vyhodnocení tlačítek: .............................. - 36 Hlavní řídící algoritmus ........................................................................................... - 37 -
9. 9.1.
Řídící podprogramy .............................................................................................. - 37 -
10.
Závěr ........................................................................................................................ - 37 -
11.
Seznamy .................................................................................................................. - 38 -
11.1.
Seznam použité literatury.................................................................................. - 38 -
11.2.
Seznam obrázků ................................................................................................ - 38 -
11.3.
Seznam tabulek ................................................................................................. - 39 -
12. 12.1.
Přílohy ..................................................................................................................... - 39 Stavba Modelu .................................................................................................. - 39 12.1.1.
Kompletní plošný spoj s H můstky .................................................... - 39 -
12.1.1.
Příklad použitého kódu v DetStudiu pro podprogram privolani_1 .... - 39 -
12.1.2.
Příklad použitého kódu v DetStudiu pro podprogram odv_1_dolu ... - 40 -
1. Úvod Dnešní moderní výtahy jsou složité zařízení, které slouží k přepravě osob a nákladu. Skládající se z několika částí a to z mechanické části, řídící a informační jednotky. Zajímali jsme se o všechny, ale hlavní důraz byl kladen na řídící a informační jednotku. Cílem našeho projektu bylo realizovat model osobního výtahu, který by se měl co nejvíce podobat reálnému zařízení, které musí splňovat technické požadavky a bezpečnostní předpisy podle norem. Model je řízen prostřednictvím programovatelného automatu AMiNi2D od firmy AMiT. Jelikož počet vstupů a výstupů byl nedostačující, využily jsme mikroprocesorů ATMEGA16 od firmy Atmel, protože s nimi máme zkušenosti. Proto bylo nezbytné naprogramovat polo-duplexní komunikační protokol. Pro horizontální posun výtahu byl použit stejnosměrný motor řízený PID regulátorem. Byly použity Hallovy sondy jako bezkontaktní spínače. Infrazávory zjišťují bezpečný nástupu pasažérů. Model dále obsahuje teplotní čidlo a čidlo přetížení, které jsou součástí kabiny výtahu. Jako vizuální prvky jsou použity sedmi segmentové LED displeje, alfanumerické maticové bodové LED displeje, informační LCD displej a klávesnice pro odbavení cestujících do požadovaného patra.
-7-
2. Metodika V době vzniku prvního výtahu, asi okolo roku 236 př. n. l., který sestrojil slavný řecký učenec Archimédes, kabina pouze visela na laně a do výšky ji zvedal ruční vrátek. Nyní žijeme v moderní době a ve všem je přísný řád, který stanovují normy a zákony. Nahlédli jsme do norem a model jsme se snažili vytvořit tak, aby výtah odpovídal co nejvíce skutečným požadavkům a náležitostem. Tyto normy jsou uvedeny v zákoníku, viz nařízení vlády č. 27/2003 Sb.
2.1. Rozdělení výtahů dle ČSN ISO 4190-1: třída I.
výtahy určené pro dopravu osob
třída II.
výtahy určené pro dopravu osob a nákladů
třída III.
výtahy určené pro zdravotnictví - dopravu lůžek
třída IV.
výtahy určené pro dopravu nákladů s obsluhou
třída V.
malé nákladní výtahy
třída VI.
výtahy s intenzívním provozem (rychlost 2,5 m/s a více)
Tabulka 1 Rozdělení výtahů 2.1.1. Rozdělení výtahů dle druhu pohonu 1)Elektrické výtahy - ČSN EN 81-1 2)Hydraulické výtahy - ČSN EN 81-2 3)Elektrické a hydraulické malé nákladní výtahy - ČSN EN 81-3
-8-
2.2. Stanovení technických požadavků na výtahy Řídili jsme se pouze tímto výběrem norem, které byly pro nás důležité, viz nařízení vlády č. 27/2003 Sb. ) 1.4 Kontrola zatížení (včetně nadměrné rychlosti) 1.6 Ovládání 1.6.4 Elektrické obvody výtahů musí být namontovány a zapojeny tak, aby b) bylo možné vypínání napájení pod zatížením; 2. Nebezpečí pro osoby nacházející se mimo klec 2.2 Výtah musí být konstruován a vyroben tak, aby zabraňoval riziku sevření osob, je-li klec v některé z koncových poloh. 4. Jiná nebezpečí 4.3 Vyvažovací závaží musí být namontováno tak, aby se zabránilo jakémukoliv riziku střetnutí s klecí nebo pádu na klec. 4.6 Výtahy musí být konstruovány a vyrobeny tak, aby mohly dokončit jízdu v případě, že teplota v prostoru výtahového stroje přesáhne maximum stanovené dodavatelem výtahu, ale aby nereagovaly na další příkazy. 4.8 Klec výtahu musí být odpovídajícím způsobem osvětlena, pokud je obsazena.
-9-
2.3. Obecný popis 1. Výtahový stroj 2. Klec 3. Nosná lana 4. Vyvažovací závaží 5. Vodítko klece 6. Vodítko vyvažovacího závaží 7. Bezpečnostní nárazník klece 8. Nárazník vyvažovacího závaží 9. Rozvaděč 10. Ovládací přístroj 11. Hnací planžeta ovládacího přístroje 12. Omezovač rychlosti 13. Napínací kladka omezovače rychlosti 14. Výtahová šňůra 15. Pohon samočinných dveří 16. Valivý vodič klece 17. Zachycovač klece 18. Ochranná lišta kabinových dveří 19. Vodící kladka 20. Zpomalovací spínač 21. Koncový spínač Obrázek 1 Celkové uspořádání osobního výtahu s elektrickým pohonem; obrázek jsme převzali z[1]
- 10 -
2.4. Blokové schéma V blokovém schématu vidíme dva mikroprocesory ATmega16, které mají za úkol zpracovávat vstupní periferie. Nasbírané informace procesor vyhodnotí a pošle po sériové lince RS485 do PLC. PLC tyto informace přezkoumá a přepošle je do procesorů. Ty je opět vyhodnotí a zapíše se hodnota na výstupech podle dané situace. Přivolávací tlačítka
Stavové tlačítka pro dveře
PORT K 74HC573
PORT E 74HC573
PORT L 74HC573
PORT F 74HC573
ATmega16 Fotozávory
PORT M 74HC573
PORT G 74HC573
PORT H 74HC573
Ovládání PID Eternet
Analogový výstupy 4x
Segmentový alfanumerický LED displej
Maticový bodový displej (řádky)
Maticový bodový displej (sloupce)
Podsvícení přivolávacích tlačítek
Hallovy sondy Přepínání směru N-kodér Spínání motoru Digitální vstupy 8x
Digitální výstupy 8x
PORT I 74HC573
Ovládání motorů dveří
PORT J 74HC573
Osvětlení
PLC AMiNi2D (RS485) A B G RS232 +24
GND
Analogový vstupy 8x Tenzometr Teplotní čidlo
LCD displej s řadičem HD44780 Maticová klávesnice podsvícená 4x4
ATmega16
Obrázek 2 Blokové schéma - 11 -
3. Příjem a zpracování dat 3.1. Komunikace Komunikace mezi AMiNi2D a mikroprocesory ATmega16 je zprostředkována pomocí RS485 (sériová komunikace). Komunikace po standardní lince RS232 využívá celkem 3 vodiče, jeden pro posílání a druhý k přijímání dat (GND, Rx a Tx). Napětí na těchto vodičích je v rozmezí ±10V a je porovnáváno se zemí. Logické jedničce odpovídá napětí -10V a logické nule +10V. Komunikační linka RS485 používá pouze dva vodiče, označené A a B. Napětí je porovnáváno mezi nimi z toho vyplývá, že nemohou vysílat i přijímat současně ale musí se řídit směr komunikace. Klidový stav je definován tak, že na vodiči A je vyšší napětí než na B. K této komunikaci je zapotřebí IO MAX 485, který je připojený k mikroprocesoru a zajišťuje převod napěťových úrovní.
Obrázek 3 MAX 485
- 12 -
3.2. Vstupy a výstupy Pro rozšíření vstupů a výstupů používáme dva mikroprocesory ATmega16, ale pokud bychom využívaly přímo jejich porty, museli bychom použít nejméně čtyři procesory. Tomu jsme se vyhnuli použitím IO 74HC573. Z pravdivostní tabulky tohoto obvodu vyplývá, že pokud na jeho vstupy přivedeme kombinaci jedniček a nul, na vstup Latch Enable (LE) přivedeme logickou jedničku a aktivujeme výstupy Output Control (OC) logickou nulou, tak se hodnoty na vstupech přenesou na výstup. Po nastavení LE do log. 0 zůstanou hodnoty na výstupu zachovány, do doby než je změníme stejným postupem. Pokud je na OC log. 1 výstupy jsou ve vysoko impedančním stavu.
Obrázek 4 Vnitřní schéma s tabulkou IO 74HC573
- 13 -
4. Řídící prvky 4.1. N-kodér pro měření otáček Pomocí světelné závory neboli optického N-kodéru měříme počet otáček motoru. Měření je provedeno pomocí PLC. Výstupní signál ze světelné závory je log.0 nebo log.1. Tento signál je velice malý na to, aby ho PLC zpracovalo a proto bylo nezbytné použít zesilovač, který se nastaví na takové zesílení, že log.1 je v rozmezí 16 - 30V.
Obrázek 5 Schéma zapojení operačního zesilovače pro světelnou závoru
- 14 -
4.2. PID regulátor Regulátor má za úkol regulovat otáčky motoru. Regulátor bude dodávat výkon tak, aby požadované otáčky byly rovny se skutečnými. Regulátor pak slouží pro plynulé zrychlení a zpomalení kabiny výtahu. Přenos PID regulátoru je dán: FR ( s ) = K R ∗ (1 +
1 + TD ) TI
(1)
4.2.1. Proporcionální složka regulátoru Použití samotného proporcionálního regulátoru vede ke vzniku trvalé regulační odchylky. Zvětšováním zesílení K lze trvalou regulační odchylku zmenšit. Vzniká však nebezpečí, že dojde k tzv. nestabilitě regulačního obvodu, tj. stavu, kdy regulovaná veličina kmitavě nebo i nekmitavě neomezeně narůstá až k dorazu nebo poškození zařízení. K odstranění trvalé regulační odchylky se do činnosti regulátorů obvykle přidává integrační složka. Ideální P regulátor popisuje rovnice (2), kde K R představuje zesílení regulátoru.
FR ( p) = K R
(2)
4.2.2. Integrační složka regulátoru Integrační složka odstraňuje trvalou regulační odchylku. Výstup z integračního regulátoru přetrvává, i když vstupní odchylka je již nulová. Zvětšováním podílu integrační složky (neboli zmenšováním T I ) kmitavost regulačního pochodu obecně roste. Do jisté míry ji lze zmírnit přidáním derivační složky. Ideální I regulátor popisuje rovnice (3), kde K I je integrační (rychlostní) konstanta.
FR ( p ) =
KI p
(3)
4.2.3. Derivační složka regulátoru Derivační složka může v předstihu kompenzovat změny regulované veličiny, a proto se jí využívá k tlumení zákmitů regulačního pochodu. Princip je v tom, že jakmile se po změně žádané nebo skutečné (v důsledku poruch) hodnoty regulované veličiny začne regulovaná veličina znovu blížit své (nové) žádané hodnotě, způsobí derivační složka chování regulátoru preventivně změnu jeho zesílení „špatným“ směrem (tj. „od“ žádané hodnoty). Derivační složka chování se často používá k zamezení překmitu průběhu regulačního pochodu. Ideální D regulátor je popsán rovnicí 4, kde K D je derivační konstanta.
FR ( p) = K D ∗ p
(4)
- 15 -
4.2.4. Nastavení PID regulátoru Nastavení PID regulátoru není jednoduchá záležitost. Existuje řada metod jak spolehlivě nastavit PID regulátor (např. Ziegler-Nicholsonova nebo Cohen-Coonova). Nastavení spočívalo v metodě pokus-omyl, jelikož jsme neznali přenos regulované soustavy. Při nastavení regulátoru jsem se řídil podle přiložené tabulky 3. Zvýšení složky
KR TI
Rychlost odezev zvyšuje
Stabilita odezev snižuje
snižuje
zvyšuje
zvyšuje zvyšuje TD Tabulka 2 Vliv jednotlivých PID parametrů na regulační činnost; tabulku jsme převzali z [6]
Regulátor P w
u - porucha
+
e=w-x
+ ∑
y
I
∑
D
Obrázek 6 Blokové schéma regulace
- 16 -
∑
Regulovaná soustava
X - regulovaná veličina
4.3. Hallovy sondy Jedná se o dvě Hallovy sondy s operačním zesilovačem. Fungují na principu Hallova jevu. Slouží jako bezkontaktní tlačítka, která umožní: • přesný dojezd kabiny výtahu • zjištění aktuálního patra, ve kterém se kabina výtahu nachází • obsluha nastavení regulátoru pro zrychlení a zpomalení. Jsou upevněny na kabině výtahu, tak že první sonda na spodní části kabiny koresponduje s místem nástupu a tím zajistí přesný dojezd do podlaží. Druhá sonda je umístěna tak, že když výtah zastaví v některém podlaží, tak je přesně v mezipatře, což umožní stejnou brzdnou dráhu oběma směry.
Vstupní napájení 5-24V
Senzor
Výstupní signál
Obrázek 7 Schéma zapojení Hallovy sondy
4.4. Řízení motorů Měli jsme k dispozici motorky z Číny, které nejsou příliš kvalitní. Každý z nich pracuje na jiném provozním napětí, proto jsme použili regulovatelný stabilizátor LM350T. Pro přepínání směru otáčení jsou použity unipolární tranzistory zapojené do H můstku.
Obrázek 8 Schéma zapojení H můstku s regulovatelným stabilizátorem - 17 -
Unipolární tranzistory mají vývody označené G, S a D (gate, drain, source), jak je patrné z obrázků 9. Funkce je podobná jako u bipolárních tranzistorů (vývody se nazývají emitor, báze a kolektor) source je jako emitor, gate je báze a drain kolektor.
Obrázek 9 Označení vývodů unipolárního tranzistoru Pro správné sepnutí unipolárního tranzistoru je potřeba napětí alespoň 9V, to můžeme vidět na obrázku 10. Z grafu je možné vyčíst, že při napětí 20V mezi GS (gate-source) se odpor sepnutého tranzistoru pohybuje okolo 0,1Ω. V našem případě by mohlo být napětí i menší, protože motory odebírají proud cca 0,5A, ale přesto jsme použili další stabilizátor nastavený na napětí 18V. Toto napětí je přes malé bipolární tranzistory přivedeno na výkonové tranzistory.
Obrázek 10 graf znázorňující závislost odporu tranzistoru na vstupním napětí
- 18 -
4.4.1. Automatické odpojení napájení pro motory pomocí tranzistorů a diod Toto zapojení slouží pro bezpečné odpojení motorů od napájení, aby nedošlo ke shoření motorů. Krajní polohy dveří jsou určené koncovým spínači, které bezpečně odpojí napájení
Koncové spínače
Připojení H můstku
Ovládání procesorem
Připojení k řadiči Obrázek 11 Schéma zapojení pro odpojení motoru
- 19 -
5. Bezpečnostní prvky 5.1. Tenzometr Pro měření hmotnosti jsme na modelu použili tenzometrický snímač, který je umístěný na kabině výtahu a je přišroubovaný k ocelovému lanku. Pro měření hmotnosti se většinou používají čtyři tenzometry v můstkovém zapojení, ale v našem případě jsme použili pouze jeden snímač a zbytek můstku jsme nahradili odpory. V praxi se pro kompenzaci používají nejčastěji čtyři tenzometry. Dají se sehnat i tenzometry už kompenzovaný, ale ty se samozřejmě dělají na konkrétní typ materiálu, aby ta teplotní kompenzace fungovala korektně
Obrázek 12 Tenzometrický snímač; obrázek jsme převzali z[7]
5.2. Světelné závory jako indikace překážky Světelné závory se skládají z fototranzistoru a Infračervené diody. Slouží jako bezpečnostní prvek, aby nedošlo k sevření pasažérů dveřmi. Pokud je paprsek přerušen, tak procesor vyhodnotí, že do kabiny vstupuje překážka a oddaluje se proces zavření dveří.
Obrázek 13 Schéma zapojení světelné závory
- 20 -
5.3. Teplotní čidlo Teplotní čidlo slouží jako bezpečnostní prvek. V případě, že teplota v prostoru výtahového stroje přesáhne maximální teplotu stanovenou dodavatelem výtahu, musí výtah dokončit jízdu, a poté nesmí reagovat na další příkazy. Použily jsme lineární teplotní čidlo s měřítkem 10.0 mV/°C. Čidlo je připojené k PLC, které pomocí A/D převodníku určuje aktuální teplotu. V případě přesáhnutí stanovené teploty PLC vyhodnotí poruchový stav.
Výstupí signál
Napájení 4-20V
Obrázek 14 Schéma zapojení teplotního čidla
6. Informační prvky 6.1. Sedmi segmentový a alfanumerický maticový bodový LED displej Slouží jako informační zobrazovací prvky. Jsou připojeny k mikroprocesoru. Ten však dokáže poskytnout proud do 20 mA na jeden výstupní pin a proto jsou displeje spínány pomocí tranzistorového pole ULN2003A z Darlingtonových transistorů. Každý kanál je dimenzován na 50V/500 mA a vydrží špičkové proudy 600 mA. Všechny displeje jsou zapojeny sériově, takže na každém se zobrazí stejný obrazec. Sedmi segmentové LED displeje zobrazují aktuální patro, ve kterém se kabina nachází. Na alfanumerických maticových bodových LED displejích se zobrazují směrové šipky. Jedná se o dynamický displej, který využívá setrvačnost lidského oka. Postupně, ale rychle, se přepisují řádky a sloupce. Pokud šipka nesvítí, tak to znamená, že si výtah nikdo nepřivolal a ani v něm nikdo necestuje. Pokud šipka pouze svítí, tak si výtah někdo přivolal. Pokud šipka běží, tak ve výtahu někdo cestuje a pokud šipka nesvítí, tak se ve výtahu nikdo nenachází.
Obrázek 15 Segment znázorňující 0 - 21 -
Obrázek 16 Schéma zapojení alfanumerického maticového bodového LED displeje
6.2. Informační LCD displej 16x2 Součástí displeje je řadič HD44780 a podsvícení. Displej slouží jako informační zařízení nacházející se v kabině výtahu. Jsou na něm zobrazené poruchové stavy a nahrazuje segmentové a maticové LED displeje.
Obrázek 17 LCD displej
- 22 -
6.3. GONG – Melodický generátor Gong slouží jako znamení možnosti nástupu a výstupu. Je realizován pomocí integrovaného obvod SAE800 od firmy Siemens. V tomto obvodu nalezneme vlastní stabilizátor napětí, generátor zvuku, řídící logiku, výkonový zesilovač a tepelnou ochranu, která odpojí zesilovač od napájení v případě přehřátí. Funkčnost gongu spočívá v tomto jednoduchém zapojení(viz obr.10). Vstupy integrovaného obvodu E1 a E2 slouží ke spuštění gongu a zároveň určují počet tónů gongu. Pokud na vstup E1 nebo na E2 přivedeme napětí větší než 1,6V, rozezní se tóny dle následující tabulky: E1 1 0 1
E2 0 1 1
Mod Jeden tón Dva tóny Tři tóny
Tabulka 3 Možnost typu znělky
Obrázek 18 Schéma zapojení pro SAE 800
- 23 -
7. Ovládací prvky 7.1. Maticová klávesnice Tato klávesnice je umístěna v kabině výtahu, kde slouží k zadávání patra do kterého chtějí pasažéři jet. Je připojená přez čtyři rychlé diody ke druhému procesoru. Tyto diody jsou připojeny na výstupy procesoru, zbylé čtyři vývody z klávesnice jsou připojeny na vstupy. Procesor zjišťuje stisknutou klávesu tak, že na jednotlivé výstupy se přivádí logická nula a čte se stav na vstupech. Pokud je na vstupu také logická nula znamená to, že daná klávesa je stisknuta.
Obrázek 19 zapojení tlačítek na desce maticové klávesnice
7.2. Přivolávací tlačítka s podsvícením Tlačítka slouží pro přivolání výtahu. Při zmáčknutí se rozsvítí, když v kabině nikdo není. Pokud se nerozsvítí, tak se výtah nepřivolá.
Obrázek 20 Přivolávací tlačítko s podsvícením; obrázek jsme převzali z[8]
- 24 -
8. Výsledky 8.1. Komunikace Komunikace s mikroprocesory probíhá tak, že PLC stanice vyšle datový rámec a čeká na odpověď od procesoru a to jak při čtení tak při zápisu dat. Proměnné, které se čtou a zapisují do procesorů, jsou v řádkové matici. Komunikace je nastavená na rychlost 19200Bd. Jeden znak je 8 bitů. Jeden stop bit a žádný paritní bit. Příjem dat je ve stanici realizován v podprogramu, který je spuštěn po přijetí jednoho znaku. V tomto podprogramu je modul ComRead, který zapisuje přijaté znaky do řádkové matice. Je zde také zpracování přijatého rámce, který se spustí až po posledním přijatém znaku. Čtení a zápis do jednotlivých procesorů se provádí voláním podprogramu např. call zapis_pr_1 (zápis do procesoru číslo 1) Po zavolání tohoto podprogramu se provedou následující operace: 1. Zjistí se, které proměnné se změnili od minulého běhu programu (odečítání matic). 2. Proměnné, které se změnili, se zapíšou do matice a vyšle je modul ComWrite. 3. Provede se záloha matice pro další běh programu. 4. Modulem ComWrite se vyšle rámec. 5. Spustí se Timeout (20ms), bude se čekat na odpověď. 6. Program se nyní zasekne ve smyčce while. 7. Pokud přijde, odpověď program pokračuje dál. 8. Pokud vyprší Timeout, spustí se další podprogram a bude se opakovat poslední přenos. V podprogramu pro přijímání znaků se provádí tyto operace: 1. Po přerušení se spustí Timeout (maximální mezera mezi přijatými znaky) a modul ComRead načte jeden znak. 2. Při druhém přerušení se zjistí celkový počet znaků v řetězci (druhé číslo je vždy počet znaků), Timeout se spouští znovu při každém přerušení a tím se vynuluje. Pokud se počet přijatých znaků modulem ComRead rovná počtu znaků uvedeném v druhém přijatém čísle zastaví se Timeout a zpracuje se přijatý rámec.
- 25 -
8.1.1. Příklad použitého kódu v AVR Studiu Tento kód je umístěn v přerušení od přijatého znaku a zajišťuje zpracování přijatého rámce. ISR(USART_RXC_vect) // přerušení od přijatého znaku { timeout_start(); // spustí se timeout pole_rx[rx] = UDR; //přijatý znak se zkopíruje do pole_rx if (rx==1) // pokud jsou přijaté dva znaky tak se do proměnné { // pocet_znaku_rx zapíše celkový počet znaků pocet_znaku_rx = pole_rx[1]; } rx++; if (rx>1 && (pocet_znaku_rx == rx))//pokud jsou přijaté všechny znaky { // provede se zpracování rx = 0; if (pole_rx[0]==1)// kontrola jestli je zpráva určena pro { // tento procesor (procesor číslo 1) timeout_stop(); switch (pole_rx[2])// podle řídicího znaku se vybere daná akce { case 11 : rs485_zapis_pole(); // zápis proměnných break; case 22 : rs485_posli_pole(); // poslání proměnných do PLC break; case 33 : rs485_posli_odpoved(); // kontrola zda je funkční spojení s procesorem break; } } } }
- 26 -
8.1.2. Příklad použitého kódu v DetStudiu Let A = 3 Let znaky = 3 MtxSub mat_1_pom2, mat_1, mat_1_pom//odečtení matic For i, 0.000, 10.000, 1.000 // zjištění zda se matice změnila Let @p = if(mat_1_pom2[0,i]!=0,true,false) If @p Let Let Let Let Let Endif Endfor
mat_1_v[0,A] = i A = A + 1 mat_1_v[0,A] = mat_1[0,i] A = A + 1 znaky = znaky + 2
MtxCopy mat_1_pom, NONE, NONE, mat_1, NONE, NONE, NONE, NONE, NONE.0 // záloha matice Let mat_1_v[0,0] = 1 Let mat_1_v[0,1] = znaky Let mat_1_v[0,2] = 11 Let pr_rx_cislo = 1 Let pr_rx_prikaz = 11 ComWrite :01000, mat_1_v, 0, znaky, NONE, NONE Let @wait = true
//bude se cekat na odpoved o uspesnem //zapsani
While @wait Endwhile TmoStop :05000
- 27 -
8.2. Vstupy a výstupy V našem případě jsme použili 3 IO 74HC573 na vstupy a 6 na výstupy. Při použití jako výstupy mají obvody trvale aktivovaný výstup (OC je přímo spojen se zemí), u vstupních obvodů je spojen LE s napájením (+5V). Výstupní obvody mají svoje vstupy (1D až 8D) spojeny s portem C (PC0 až PC7) obr. 6, vstupy LE jsou připojeny k portu A, vstupní obvody mají výstupy (1Q až 8Q) spojeny s portem B (PB0 až PB7) obr. 7
Obrázek 21 Schéma zapojení ATmega16 s IO 74HC573 jako výstup
- 28 -
Obrázek 22 Schéma zapojení ATmega16 s IO 74HC573 jako vstup Tímto způsobem jsme si vytvořili další vstupní a výstupní porty, které máme označené písmeny E až M. Poslední PORT M má řídící vstup připojený na jeden pin portu D (PD4). Pro snadné použití jsme vytvořili jednoduchou knihovnu, která umožňuje snadný zápis a čtení z portů. Pro zápis stačí napsat "zapis_na_port(název portu, hodnota)", např. takto "zapis_na_port(PORTH , x)", kde x je hodnota posílaná na port H. Čtení z portu je podobné ale nejdříve se musí zadat proměnná, do které se uloží stav na portu a do závorek název portu "hodnota = cti_z_portu(název portu)" např. takto "x = cti_z_portu(PORTL)".
- 29 -
8.2.1. Příklad použitého kódu v AVR Studiu #include
#include #include "bitove_operace.h" #define PORTE 0b11000001 // definice pro výběr portů #define PORTF 0b11000010 #define PORTG 0b11000100 #define PORTH 0b11001000 #define PORTI 0b11010000 #define PORTJ 0b11100000 #define PORTK 0b10000000 #define PORTL 0b01000000 void inicializace_radic_74hc573() { DDRA = 0xff; // nastavení portů pro správnou funkci DDRC = 0xff; DDRB = 0x00; PORTA = 0b11000000; //klidový stav sbi(PORTD,4); //na tomto pinu je ovládání portu M } void zapis_na_port(unsigned char port,unsigned char hodnota) { PORTA = port; //tímto se zapne řadič, do kterého se zapisuje hodnota PORTC = hodnota; //proměnná se zapíše na výstup _delay_us(10); PORTA = 0b11000000; } unsigned char cti_z_portu(unsigned char port) { unsigned char hodnota; PORTA = port; //tímto se zapne řadič, ze kterého se čte hodnota _delay_us(10); hodnota = PINB; //hodnota na vstupu se zapíše do proměnné PORTA = 0b11000000; return hodnota; //proměnná, kterou vrací funkce } unsigned char cti_z_portu_M() { unsigned char hodnota; cbi(PORTD,4); _delay_us(10); hodnota = PINB; sbi(PORTD,4); return hodnota; }
- 30 -
8.3. N-kodér pro měření otáček V DetStudiu je blok RMP1 přímo určený pro měření otáček za minutu. Blok je v přerušení ProclTR03 a je zpracováván v jazyku LA (jazyk logických adres). 8.3.1. Příklad použitého kódu v DetStudiu pro měření otáček RPM1 0x020C, 10.000, otacky_m //blok určený pro měření otáček za minutu
8.4. PID regulátor PID regulátor je v DetStudiu umístěn v procesu Quick s periodou 20 ms. Vstup regulátoru tvoří otáčky změřené modulem RMP1 a proměnnou s požadovanými otáčkami. Výstupní proměnná je vložena do modulu AnOut. Rozsah hodnot výstupu PID regulátoru je 0100 a napětí na výstupu PLC je v rozsahu 0-5V. Parametry regulátoru jsou v řádkové matici “parametry“ a jsou nastaveny takto:
KR TI
0,008 2
0,01 TD Dolní mez akčního zásahu 0 Horní mez akčního zásahu 100 Neutrální mez akčního zásahu 0 Pásmo necitlivosti 10 Zpoždění derivace 0 Tabulka 4 Parametry regulátoru 8.4.1. Část kódu v procesu Quick: PID pid_inp_reg, otacky_m, pid_out, pid_mode, parametry AnOut #AO00_0, pid_out, 5.000, 0.000, 5.000, 0.000, 100.000
- 31 -
8.5. Hallovy sondy Protože jsme nenašli žádný vhodný modul, který by umožňoval přičítání a odčítání hodnoty podle směru kterým se výtah pohybuje, tak jsme využili procesu přerušení. Výstupní signál z obou snímačů je přiveden na dva digitální vstupy, a v programu jsou dva procesy přerušení při sestupné hraně. V těchto procesech jsou dvě podmínky, které zajišťují přičtení nebo odečtení hodnoty. Protože při sepnutí snímače vzniká velké rušení a proces přerušení se několikrát opakuje, musí se hodnota sondy změnit pouze při prvním přerušení a poté se 200 ms hodnoty nemění. To je zajištěno druhou podmínkou a další částí kódu, která je umístěna v procesu Quick. 1. Zde je popsáno zpracování kódu při přerušení od spodní sondy: 2. V první podmínce je @Alias3, který je nastaven na true, pokud bude false tak se zbytek kódu přeskočí. 3. Ve druhé podmínce je @smer, pokud je true přičte se 1, pokud bude false odečte se 1. 4. Nyní se @Alias3 nastaví na false a pomocná proměnná D se vynuluje. 5. Po dalším přerušení se nic nestane, protože @Alias3 je false. 6. V procesu Quick, který má periodu 20 ms, se k proměnné D přičítá 1. 7. Pokud se D = 10 tak se @Alias3 nastaví opět na true. 8.5.1. Kód v procesu Interrupt_0: If @Alias3//pokud je false nic se neprovede If @smer//pokud je true přičte se 1, jinak se odečte 1 Let sonda_spodni = sonda_spodni + 1 Else Let sonda_spodni = sonda_spodni - 1 Endif Let @Alias3 = false//nyní se nastaví na false, aby se při //dalším přerušení nic nestalo Let D = 0//proměnná se vynuluje, aby zpoždění trvalo 200 //ms Endif 8.5.2. Část kódu v procesu Quick: Let @Alias5 = If(D>10,true,false) If @Alias5 //pokud je D vetší jak 10 tak se D vynuluje a //@Alias3 se nastaví na true Let D = 0 Let @Alias3 = true Endif let D = D + 1
- 32 -
8.6. Řízení motorů Motory pro otevírání dveří jsou zapojené na H můstky a ty jsou připojeny k pomocným tranzistorům pro automatické odpojení napájení. Tlačítka, která slouží k vypnutí motorů jsou zároveň připojena na vstup portu K. Pomocné tranzistory mají jeden vstupní signál a jsou připojeny na port I. Hodnoty na portech I a K jsou posílány do PLC, kde jsou v proměnných vytvořeny aliasy pro snadné ovládání. Tímto způsobem lze jedním bitem dveře otevřít a zavřít. Další dva aliasy představují tlačítka a lze jimi zjistit stav dveří.
8.7. Tenzometr . Na jedné polovině můstku je zapojený víceotáčkový trimr nutný pro vyvážení můstku. Operační zesilovač je zapojený jako invertující. Má zesílení pevně nastavené na 30 000. Toto jednoduché zapojení je ale pro přesné měření nepoužitelné, v našem případě se nejvíce projevuje závislost na teplotě, díky které se napětí na výstupu neustále mění. Proto jsme použily malý ventilátor, který je umístěný nad elektronikou a chladí OZ a ostatní součástky. Díky tomu je na výstupu OZ napětí, které kolísá jen velmi málo (+/- 10mV), citlivost je cca 100mV na 100g. Protože kabina výtahu je trvale zavěšená na tenzometru a tenzometr s dlouhodobým zatížením ztrácí citlivost, musí se při každém zapnutí provést kalibrace na nulovou hmotnost. Odpor tenzometru je v nezatíženém stavu přibližně 2kΩ. Napájení OZ je 15V ze samostatného stabilizátoru
Část můstku s trimrem pro vyvážení
Tenzometrický snímač
Obrázek 23 Schéma zapojení operačního zesilovače pro tenzometrický snímač
- 33 -
8.8. Sedmi segmentový a alfanumerický maticový bodový LED displej Sedmi segmentový displej je připojený k portu E prvního mikroprocesoru. Z PLC stanice se posílá číslo které má být zobrazeno na displeji, to se vloží do funkce “ obsluha_sedmisegmentoveho_displeje“. V této funkci se podle zobrazovaného čísla vybere odpovídající hodnota, která se zapíše na port E. 8.8.1. Použitý kód v AVR Studiu: unsigned char obsluha_sedmisegmentoveho_displeje(unsigned char x) {//vstupní i výstupní proměnná je typu unsigned char unsigned char y=0; switch (x)// x je číslo poslané z PLC { // zde se do proměnné y přiradí správná hodnota //na displeji je možně zobrazit čísla 0 až 9 ale v //našem případe by stačily čísla 1 až 4 case 0 : y = 0x3f; // cislo 0 break; case 1 : y = 0x06; // cislo 1 break; case 2 : y = 0x5b; // cislo 2 break; case 3 : y = 0x4f; // cislo 3 break; case 4 : y = 0x66; // cislo 4 break; case 5 : y = 0x6d; // cislo 5 break; case 6 : y = 0x7d; // cislo 6 break; case 7 : y = 0x07; // cislo 7 break; case 8 : y = 0x7f; // cislo 8 break; case 9 : y = 0x6f; // cislo 9 break; } return y; // hodnota, kterou funkce vrací Maticový LED displej je ovládaný mikroprocesorem přes porty F a G. Port G je určen pro sloupce a port F pro řádky. K portu G jsou připojeny přes odpor 1k3 PNP tranzistory typu BC327. Řádky displeje jsou připojené přes předřadné odpory 180Ω. Zobrazování probíhá tak, že se postupně jednotlivé sloupce připojují přes tranzistory na +5V, a na port ke kterému jsou připojeny řádky se pošle odpovídající hodnota. Funkci pro obsluhu maticového displeje jsme umístili do knihovny, protože použitý kód má přibližně 150 řádků. V knihovně jsou definovány čtyři různé zobrazení šipky. Ze stanice se posílá číslo 0 až 4, které určuje zobrazení šipky. Při poslání čísla 0 se nezobrazí nic.
- 34 -
8.8.2. Část použitého kódu v AVR Studiu pro zobrazení šipky nahoru: if (mat_lcd == 1)// hodnota 1 odpovídá šipce nahoru { port_pro_sloupce=0b11111110; //tímto se vybere 1 sloupec port_pro_radky = 0b00000100; //zapsání hodnoty do proměnné //port_pro_radky zapis_na_port(PORTF,port_pro_radky); // obě proměnné se //zapíšou na výstupní porty zapis_na_port(PORTG,port_pro_sloupce); _delay_ms(1); // zpožděni 1 ms aby byly zobrazované body správně vidět port_pro_sloupce=0b11111101; port_pro_radky = 0b00000010; zapis_na_port(PORTG,port_pro_sloupce); zapis_na_port(PORTF,port_pro_radky); _delay_ms(1); port_pro_sloupce=0b11111011; port_pro_radky = 0b01111111; zapis_na_port(PORTG,port_pro_sloupce); zapis_na_port(PORTF,port_pro_radky); _delay_ms(1); port_pro_sloupce=0b11110111; port_pro_radky = 0b00000010; zapis_na_port(PORTG,port_pro_sloupce); zapis_na_port(PORTF,port_pro_radky); _delay_ms(1); port_pro_sloupce=0b11101111; port_pro_radky = 0b00000100; zapis_na_port(PORTG,port_pro_sloupce); zapis_na_port(PORTF,port_pro_radky); _delay_ms(1); zapis_na_port(PORTG,255); //na konci se musí všechny //tranzistory vypnout, jinak by poslední sloupec svítil až do //dalšího opakováni programu }
8.9. Přivolávací tlačítka s podsvícením Přivolávací tlačítka jsou připojeny k portu H, a jejich podsvícení je zapojeno přes předřadné odpory na port K. Stav tlačítek se zjišťuje tak, že se nejdříve přečte hodnota na portu a potom se pomocí příkazu switch vyhodnotí, které tlačítko je stisknuté. Do PLC se posílá číslo tlačítka 1 až 6. Pro podsvícení tlačítek je v PLC vytvořeno 8 aliasů které představují jednotlivá tlačítka. Proměnná, ve které jsou vytvořeny, je poslána do procesoru, kde se zapíše přímo na výstupní port.
- 35 -
8.9.1. Použitý kód v AVR Studiu pro vyhodnocení tlačítek: pole_2[3] = cti_z_portu(PORTL); //přečteni hodnoty z portu tlačítek switch (pole_2[3]) { // vyhodnoceni stisknutých tlačítek case 253 : tlacitko = 1; break; case 251 : tlacitko = 6; break; case 247 : tlacitko = 2; break; case 239 : tlacitko = 5; break; case 223 : tlacitko = 3; break; case 191 : tlacitko = 4; break; } pole_2[0]= tlacitko; // hodnota tlačítka je zapsána do pole, které se posle do PLC
- 36 -
9. Hlavní řídící algoritmus Hlavní řídící program má na starost PLC. Hlavní program se skládá z několika switchů, které jsou umístěny v hlavním procesu Proc00. První switch s proměnnou tlačítka slouží pro přivolání výtahu. Ostatní switche s proměnnou tlačítka2 slouží k načtení tlačítek z klávesnice, která se nachází v kabině výtahu. Těla cyklů switch se skládají z podprogramů, které zajišťují bezpečný pohyb kabiny do žádoucího patra, zavření a otevření dveří a spínání melodického generátoru. Po ukončení cyklů se musí vše vynulovat kromě hodnot v proměnných sonda_horni a sonda_spodni. Poté se proces opakuje. Příklad použitého kódu je v příloze
9.1. Řídící podprogramy Podprogramy jsou téměř identické. V podprogramech pro přivolání jsou navíc rozhodovací podmínky, které zjišťují, v jaké pozici se kabina nachází. Rozdíl v podprogramech odv_x_dolu a odv_x_nahoru je akorát ve směru otáčení motoru. Příklad použitého kódu je v příloze
10. Závěr Díky řešení této práce jsme se mnohé naučili, i když na projektu je spousta nedostatků, tak základní funkční principy odpovídají skutečnosti. Hlavní řídící jednotkou je PLC AMiNi2D a mikroprocesory ATmega16 slouží pro rozšíření vstupů a výstupů. Za pomocí našich zkušeností z předchozího roku jsme byli schopni vyvinout vlastní komunikační protokol po sériovém rozhraní RS485.Všechny dílčí části použité na modelu byly předem odzkoušeny a jsou funkční. Jediné co jsme nestihli zprovoznit, jsou optické závory a tenzometr.
- 37 -
11. Seznamy 11.1.Seznam použité literatury [1] JANOVSKÝ, Lubomír; DOLEŽAL, Josef. Výtahy a eskalátory. Praha : SNTL – nakladatelství technické literatury, 1980. 695 s. [2] What is PID – Tutorial overview. Firemní materiál ExperTune, Inc. Dostupné na http://www.expertune.com/tutor.html [3] Mann Burkhard - C pro mikrokontroléry BEN - technická literatura - 03/2003 [4] http://www.i-vytahy.cz/ [5] www.amit.cz [6] http://www.amit.cz/support/cz/aplikacni_poznamky/ap0042_cz_01.pdf [7] http://cs.wikipedia.org/wiki/Tenzometr [8] http://www.gme.cz/
11.2.Seznam obrázků Obrázek 1 Celkové uspořádání osobního výtahu s elektrickým pohonem; obrázek jsme převzali z[1] 10 Obrázek 2 Blokové schéma - 11 Obrázek 3 MAX 485 - 12 Obrázek 4 Vnitřní schéma s tabulkou IO 74HC573 - 13 Obrázek 5 Schéma zapojení operačního zesilovače pro světelnou závoru - 14 Obrázek 6 Blokové schéma regulace - 16 Obrázek 7 Schéma zapojení Hallovy sondy - 17 Obrázek 8 Schéma zapojení H můstku s regulovatelným stabilizátorem - 17 Obrázek 9 Označení vývodů unipolárního tranzistoru - 18 Obrázek 10 graf znázorňující závislost odporu tranzistoru na vstupním napětí - 18 Obrázek 11 Schéma zapojení pro odpojení motoru - 19 Obrázek 12 Tenzometrický snímač; obrázek jsme převzali z[7] - 20 Obrázek 13 Schéma zapojení světelné závory - 20 Obrázek 14 Schéma zapojení teplotního čidla - 21 Obrázek 15 Segment znázorňující 0 - 21 Obrázek 16 Schéma zapojení alfanumerického maticového bodového LED displeje - 22 Obrázek 17 LCD displej - 22 Obrázek 18 Schéma zapojení pro SAE 800 - 23 Obrázek 19 zapojení tlačítek na desce maticové klávesnice - 24 Obrázek 20 Přivolávací tlačítko s podsvícením; obrázek jsme převzali z[8] - 24 Obrázek 21 Schéma zapojení ATmega16 s IO 74HC573 jako výstup - 28 Obrázek 22 Schéma zapojení ATmega16 s IO 74HC573 jako vstup - 29 Obrázek 24 Schéma zapojení operačního zesilovače pro tenzometrický snímač - 33 Obrázek 23Plošný spoj výkonové čás - 41 -
- 38 -
11.3.Seznam tabulek Tabulka 1 Rozdělení výtahů ................................................................................................................ - 8 Tabulka 2 Vliv jednotlivých PID parametrů na regulační činnost; tabulku jsme převzali z [6] .......... - 16 Tabulka 3 Možnost typu znělky ......................................................................................................... - 23 Tabulka 4 Parametry regulátoru ....................................................................................................... - 31 -
12. Přílohy 12.1.Stavba Modelu 12.1.1. Kompletní plošný spoj s H můstky
12.1.1.
Příklad použitého kódu v DetStudiu pro podprogram privolani_1
Let patro = 0 //požadované patro Let @while_p_0 = If((tlacitka2 == 0),true,false) While @while_p_0 Let @while_p_0 = If((tlacitka2 == 0),true,false) Let stav = sonda_spodni - patro Let @stav0 = if((stav == 0),true,false) //pokud je splněno kabina se nachází v místě přivolání Let @stav1 = if((stav > 0),true,false)
- 39 -
//pokud je splněno kabina se nachází nad patrem přivolání Let @stav2 = if((stav < 0),true,false) //pokud je splněno kabina se nachází pod patrem přivolání If @stav0 //kabina se nachází v místě přivolání, zazní //melodický generátor a otevřou se dveře PulseOut #DO00_1, 1, 500.000, 1.000, 600.000, 0, @Pulseout Call dvere_5_o Call dvere_3_o Else If @stav1 //kabina se nachází nad patrem přivolání //směr otáčení motoru se nastaví směrem dolů a spustí se //motor, který poběží na 1000 ot/min Let @smer = false Call zpozdeni BinOut @smer, 0x0000, #DO00_0 Let pid_inp_reg = 1000 Let stav = 0 Repeat Let @zadana_h = If((stav == sonda_horni),true,@zadana_h) Until @zadana_h //cyklus s podmínkou na konci //neustále se ověřuje, zda proměnná stav souhlasí s proměnnou //sonda_horni až tento stav nastane, otáčky motoru se sníží //na 500 ot/min If @zadana_h Let pid_inp_reg = 500 EndIF Repeat Let @zadana_s = If((stav == sonda_spodni),true,@zadana_s) Until @zadana_s //cyklus s podmínkou na konci //neustále se ověřuje, zda proměnná stav souhlasí s proměnnou //sonda_spodni až tento stav nastane, otáčky motoru se nastaví //na 0 ot/min, zazní melodický generátor, otevřou se dveře a //pomocné aliasy se vynulují If @zadana_s Let pid_inp_reg = 0 PulseOut #DO00_1, 1, 500.000, 1.000, 600.000, 0, @Pulseout Call dvere_5_o Call dvere_1_o Let @zadana_h = false Let @zadana_s = false EndIf EndIf EndIf EndWhile 12.1.2. Příklad použitého kódu v DetStudiu pro podprogram odv_1_dolu Let stav = 0 Repeat
//požadované patro
- 40 -
Let @stav0 = false //nulování Let @smer = false //nastavení směru otáčení motoru Call zpozdeni BinOut @smer, 0x0000, #DO00_0//motor se nastaví na 1000 ot/min Let @zadana_s = false Let @zadana_h = false Let @while_p_1 = true Until @while_p_1 Let pid_inp_reg = 1000 Repeat Let @zadana_h = If((stav == sonda_horni),true,@zadana_h) Until @zadana_h//cyklus s podmínkou na konci //neustále se ověřuje, zda proměnná stav souhlasí s proměnnou //sonda_horni až tento stav nastane, otáčky motoru se sníží //na 500 ot/min If @zadana_h Let pid_inp_reg = 500 EndIf Repeat Let @zadana_s = If((stav == sonda_spodni),true,@zadana_s) Until @zadana_s//cyklus s podmínkou na konci //neustále se ověřuje, zda proměnná stav souhlasí s proměnnou //sonda_spodni až tento stav nastane, otáčky motoru se nastaví //na 0 ot/min, zazní melodický generátor a otevřou se If @zadana_s Let @stav0 = true Let pid_inp_reg = 0 PulseOut #DO00_1, 1, 500.000, 1.000, 600.000, 0, @Pulseout Call dvere_5_o Call dvere_1_o EndIf
Obrázek 24Plošný spoj výkonové části
- 41 -