VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky
Dálkové řízení osciloskopu bakalářská práce
Autor: Petr Snášel Vedoucí práce: Ing. David Matoušek Jihlava 2011
Vysoká škola polytechnická Jihlava Tolstého 16, 586 01 Jihlava
ZADÁNÍ BAKALÁŘSKÉ PRÁCE
Autor práce:
Petr Snášel
Studijní program:
Elektrotechnika a informatika
Obor:
Počítačové systémy
Název práce:
Dálkové řízení osciloskopu
Cíl práce:
Navrhněte a realizujte propojovací modul pro komunikaci mezi digitálními osciloskopy RIGOL a počítačem pro vzdálený tisk oscilogramů. Propojovací modul bude s osciloskopy komunikovat pomocí rozhraní RS-232 C. Po stisku tlačítka na příslušném pracovišti dojde k přepnutí komunikace nadřazeného počítače k danému osciloskopu, stažení oscilogramu a jeho tisku. Dále vytvořte ovládací program pro Windows, který zajistí tisk oscilogramů.
Při
návrhu
a
realizaci
zvolte
vhodný
typ
mikrokontroléru s ohledem na poměr výkon:cena, uvažte působení rušivých signálů na přenos, blokujte možnost přepnutí spoje v okamžiku probíhající komunikace.
Ing.Bc. David Matoušek
Ing. Bc. Michal Vopálenský, Ph.D.
vedoucí bakalářské práce
vedoucí katedry Katedra elektrotechniky a informatiky
Anotace Práce se zabývá popisem návrhu a výroby přepínače pro komunikaci s více než jedním osciloskopem pomocí sériové linky, dále popisem komunikace počítače s přepínačem. Součástí práce je vlastní zařízení a software pro jeho ovládání a tisk oscilogramů.
Klíčová slova Osciloskop, přepínání, RS-232.
Anotation This thesis describe design and manufacture of switch for communication with more than one scope through serial interface, communication between computer and switch. The switch and software for its control and oscillogram printing is part of this work.
Keywords Scope, switching, RS-232.
Poděkování Na tomto místě bych rád poděkoval vedoucímu bakalářské práce, Ing. Bc. Davidu Matouškovi za pomoc a připomínky, bez nichž by tuto práci nebylo možno dokončit.
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/a 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ím licence. V Jihlavě dne 3. 1. 2012 ...................................................... Podpis
Obsah Obsah ................................................................................................................................ 7 1
2
Úvod a cíl práce ........................................................................................................ 9 1.1
Úvod ................................................................................................................... 9
1.2
Cíl práce ............................................................................................................. 9
Teoretická část ........................................................................................................ 10 2.1
Volba způsobu přepínání.................................................................................. 10
2.2
Volba procesoru ............................................................................................... 10
2.3
Způsob propojení přepínače s počítačem ......................................................... 11
2.4
Způsob připojení osciloskopů .......................................................................... 11
2.5
Volba signalizace stavu zařízení ...................................................................... 12
2.6
Volba napájení zařízení .................................................................................... 12
2.7
Úvaha o vývojovém prostředí pro software procesoru v přepínači ................. 12
2.8
Krátké představení vývojového prostředí µVision .......................................... 13
2.9
Úvaha o vývojovém nástroji pro software v počítači....................................... 14 Krátké představení vývojového prostředí C++ Builder................................ 15
2.10 3
Praktická část .......................................................................................................... 16 3.1
Návrh zapojení přepínače ................................................................................. 16
3.1.1
Zapojení napájecí části.............................................................................. 18
3.1.2
Zapojení invertorů a relé ........................................................................... 18
3.1.3
Zapojení procesoru ................................................................................... 18
3.1.4
Zapojení displeje ....................................................................................... 18
3.2
Návrh desky plošného spoje............................................................................. 19
3.3
Osazení desky plošného spoje.......................................................................... 21
3.4
Software přepínače – vybavení AT89C52 ....................................................... 25
3.4.1
Hlavní část ................................................................................................ 25
3.4.2
Obsluha přerušení sériové linky, popis komunikačního protokolu .......... 25 7
3.5
Oživení zařízení ............................................................................................... 27
3.6
Řídící část softwaru přepínače – aplikace v počítači ....................................... 27
3.6.1
Struktura zdrojových kódů řídící aplikace ................................................ 27
3.6.2
Knihovna pro práci se sériovým portem ................................................... 28
3.6.3
Knihovna pro řízení a uživatelské rozhraní .............................................. 29
3.6.4
Popis automatických funkcí řídící aplikace .............................................. 30
3.6.5
Popis uživatelských funkcí řídící aplikace ................................................ 30
3.6.6
Popis nastavení řídící aplikace .................................................................. 31
3.7 4
Používání přepínače v praxi ............................................................................. 32
Závěr ....................................................................................................................... 33 4.1
Řešení pomocí rozšiřující desky portů do počítače.......................................... 33
4.2
Řešení pomocí USB rozbočovačů propojených do počítače ........................... 33
4.3
Řešení pomocí samostatného modulu bez počítače ......................................... 33
4.4
Stávající řešení ................................................................................................. 34
Citovaná literatura........................................................................................................... 35 Seznam obrázků ............................................................................................................ 36 Seznam tabulek ............................................................................................................. 37 Seznam zdrojových kódů ............................................................................................. 38 Seznam zkratek ............................................................................................................. 39 Přílohy ............................................................................................................................ 40
8
1 Úvod a cíl práce 1.1 Úvod Téma bakalářské práce jsem vybíral z témat nabídnutých vyučujícími, protože v mém současném zaměstnání se nenašel žádný projekt vhodný pro bakalářskou práci. Toto konkrétní téma jsem vybral na základě mých zkušeností s propojením počítače jednočipového procesoru řady 8051. Dále mě toto téma zaujalo kvůli nutnosti vytvoření hardwarové části a současného programování softwaru pro jednočipový procesor i pro počítač. Je to pro mě zajímavá výzva, protože v praxi se vždy podílím jen na části projektu, zatímco při této práci se jedná o komplexní zajištění celého projektu od návrhu a realizaci hardwaru až po programování softwaru pro jeho ovládání počítačem.
1.2 Cíl práce Cílem této práce je vhodné připojení více osciloskopů RIGOL k jednomu počítači za účelem tisku oscilogramů při praktické výuce a porovnání navrženého a zrealizovaného řešení s jinými teoretickými možnostmi. Písemná část práce také čtenáře seznamuje s praktickou stránkou tvorby vlastního zařízení a softwarového vybavení pro zajištění jeho provozu.
9
2 Teoretická část 2.1 Volba způsobu přepínání Při výběru způsobu přepínání mezi jednotlivými osciloskopy jsem se snažil o co nejjednodušší postup přepínání, který by měl zajistit vyšší spolehlivost. Zvažované možnosti byly v podstatě dvě: 1. přepínání „uvnitř rámců“ 2. přepínání „po rámcích“ První možnost je složitější a méně spolehlivá. Umožňovala by souběžný přenos dat z více osciloskopů naráz. Tato možnost by sice zvýšila celkovou propustnost a uživatelské pohodlí, ale po přihlédnutí k reálnému využití zařízení jsem tuto možnost zamítl jako zbytečně složitou. Navíc by tato varianta znemožnila oddělení sériových linek jednotlivých osciloskopů navzájem od sebe pomocí relé a zvýšila by celkové náklady na zařízení. Druhá možnost je jednoduchá a spolehlivá. V jeden okamžik se komunikuje pouze s jedním osciloskopem, ostatní uživatelé čekají na uvolnění zařízení. Tato možnost dovoluje použití relé a jednoduššího programu v procesoru. Zjednodušuje také celou konstrukci přepínače.
2.2 Volba procesoru Pro přepínač je ideální procesor s hardwarovým UARTem a s více porty kvůli připojení ovládacích tlačítek a přepínacích relé. Program pro tento procesor není příliš složitý (viz. 2.1) a ani neklade vysoké nároky na rychlost. Díky tomu lze vybírat z velmi širokého spektra nabízených procesorů. Jednoduchost programu nevyžaduje ani ISP – programování v aplikaci. Z důvodu ceny procesoru (cca 40 Kč), dostupnosti programátoru a znalosti procesoru z výuky jsem vybral procesor AT89C8252. Tento procesor
má
hardwarový
plně
duplexní
vstupně/výstupních portů. (1)
10
UART
a
32
programovatelných
2.3 Způsob propojení přepínače s počítačem K propojení přepínače s počítačem jsem zvolil rozhraní RS232 C opět kvůli jednoduchosti a spolehlivosti. Příkazy pro ovládání přepínače i odezvy přepínače jsou velice jednoduché a podle mého názoru není třeba vytvářet nějaký složitý komunikační protokol. Není potřeba přenášet žádná složitější (myšleno objemnější) data a proto není kladen důraz ani na přenosovou rychlost. K implementaci tohoto rozhraní do zařízení je zapotřebí pouze převodník napěťových úrovní a ve starších počítačích toto rozhraní většinou bývá zastoupeno. V novějších počítačích tomu tak být sice nemusí, ale v případě, že počítač toto rozhraní neobsahuje, lze jej jednoduše doplnit buď pomocí rozšiřující desky nebo převodníků USB/RS232.
2.4 Způsob připojení osciloskopů Ze zadání je dané připojení osciloskopů pomocí rozhraní RS-232 C. Po důkladném zvážení jsem zamítl propojování obou linek. Komunikační linka pro přepínač je tedy důsledně oddělena od komunikační linky pro osciloskopy. Důvod pro propojení linek by byl pouze v případě souběžné komunikace s více osciloskopy v jeden okamžik nebo snaha ušetřit porty na počítači. Při zvoleném způsobu komunikace je možné veškeré řízení zajistit v počítači a není tedy potřeba v přepínači linku zavádět do procesoru. Šetření portů na počítači zřejmě není dostatečný důvod k teoretickému snižování spolehlivosti zařízení. Při testování osciloskopu jsem zjistil maximální možnou rychlost osciloskopu 19200 baudů. Osciloskop umožňuje přepnout i rychlost 38400 baudů, ale tuto rychlost si nezapamatuje a při novém zapnutí nastaví 9600 baudů. Zvolil jsem tedy rychlost 19200 baudů. Nicméně tato rychlost není v softwaru pevně daná, ale je možno ji nastavit pro případ, že by se na všech osciloskopech prováděl např. upgrade firmwaru, který by chybu se zapamatováním rychlosti odstranil. Specifikace standardního RS-232 C uvádí maximální možnou délku vodičů pro rychlost 19200 baudů 15m nebo délku vodiče s kapacitou 2500pF. (2) Při použití kvalitních vodičů a této rychlosti by tedy teoreticky neměl být problém dosah až cca 50m, což pro reálnou aplikaci přepínače bude určitě dostačovat.
11
2.5 Volba signalizace stavu zařízení Možnosti signalizace jsou dnes velmi široké, od jednoduchého rozsvícení LED až po zobrazování stavu na nějakém LCD panelu. Pro zařízení přepínače pro deset osciloskopů se jako nejvhodnější signalizační zařízení jeví sedmi-segmentový displej. Čísly 0 – 9 lze zobrazit, se kterým osciloskopem právě probíhá komunikace. Navíc toto řešení není zbytečně drahé (displej cca 70 Kč, dekodér cca 40 Kč). Signalizace pomocí LED nebo pomocí malého LCD displeje by v tomto případě nebyla vhodná kvůli vzdálenosti uživatele od přepínače v reálném provozu. Ostatní možnosti by zase zbytečně zvýšily náklady na výrobu zařízení.
2.6 Volba napájení zařízení Při zvažování jaké napájení pro zařízení použít jsem vycházel z proudových požadavků jednotlivých částí zařízení. Řádové maximální odběry jednotlivých částí: 1. procesor – 40mA 2. displej při rozsvícení všech segmentů – 7x 30mA 3. relé při sepnutí – max. 500mA Všechny ostatní části přepínače mají v poměru s těmito částmi vlastní odběr již zanedbatelný. K napájení bude tedy zapotřebí zdroj, který řádově zabezpečí alespoň 750mA při sepnutí relé. Dále pro displej je typické napětí 8V. Rozhodl jsem se tedy použít zdroj 9V/1A, který je běžně dostupný za cca 100 Kč. Z tohoto napětí s pomocí stabilizátoru 7805 snížím napětí na 5V pro všechny TTL prvky a s pomocí diody snížím napětí na cca 8V pro displej.
2.7 Úvaha o vývojovém prostředí pro software procesoru v přepínači Při výuce jsem se seznámil s vývojovým prostředím µVision společnosti Keil Elektronik GmbH, Keil software Inc. Toto prostředí umožňuje ve zkušební verzi vývoj programu pro mnou vybraný procesor v jazyce C až do velikosti 2KB a je použitelné pro nekomerční aplikace. Pro přepínač je zapotřebí pouze jednoduchý program, který se do dané velikosti vejde. A nepředpokládám komerční využití přepínače. Díky splnění těchto podmínek není potřeba nákup licence. Vyšší programovací jazyk, v tomto případě jazyk C, mi umožňuje vytvořit přehlednější program a vytvoření programu ve 12
známém prostředí µVision je samozřejmě rychlejší než v jazyce symbolických instrukcí (asembleru). S přehledností se oproti programování v asembleru snižuje také chybovost výsledného programu. Volba vývojového prostředí pro software procesoru je tedy jasná.
2.8 Krátké představení vývojového prostředí µVision Vývojové prostředí µVision pomáhá rychle vytvářet a testovat aplikace pro mikroprocesorové řady ARM, Cortex-M, C166, C251 a C51. Obrázek 1 – Náhled vývojového prostředí µVision
Obrázek 1 ukazuje vývojové prostředí µVision s již vytvořeným a nastaveným projektem. Prostředí µVision má standardní uživatelské rozhraní jako jiné běžné aplikace pro Windows. Všechny příkazy jsou přehledně uspořádány v menu a nejčastěji používané příkazy jsou rozloženy na nástrojové liště pod menu. V levé části okna jsou záložky, kde je možné zobrazit soubory projektu, nápovědu, funkce nebo šablony. Na 13
obrázku je otevřena záložka funkcí. V pravé části okna jsou vidět aktuální editované soubory se zvýrazněním syntaxe. Mezi jednotlivými soubory se lze přepínat pomocí záložek. Ve spodním okně je vidět záznam o překladu.
2.9 Úvaha o vývojovém nástroji pro software v počítači Při výběru vývojového nástroje pro software v počítači jsem vycházel z požadavků v zadání a ze svých programátorských zkušeností s nástroji firmy Borland. Již delší dobu používám v zaměstnání vývojové prostředí Delphi a při výuce jsem se seznámil s prostředím C++ Builder 2006 ve verzi Explorer, které umožňuje vývoj GUI aplikací pro prostředí MS Windows. Tyto aplikace mohou být využity pro nekomerční i pro komerční účely. Vím, že v tomto programovací prostředí lze snadno navrhnout jak grafickou podobu aplikace, tak i samotnou funkční část. Navíc je zde přímá podpora zobrazování a tisku obrázků. Další prostředí na výběr byly: Delphi a C#. Delphi jsem nevybral z důvodu použitého jazyka pascal a C# jsem zamítl, protože toto prostředí a programovací jazyk znám méně a díky tomu by mohla být nižší spolehlivost výsledného programu.
14
2.10 Krátké představení vývojového prostředí C++ Builder C++ Builder je visuální nástroj pro vytváření aplikací grafických, databázových, klientserver aplikací, knihoven DLL nebo služeb Windows. Obrázek 2 – Náhled vývojového prostředí C++ Builder
Obrázek 2 zobrazuje vývojové prostředí C++ Builderu s otevřeným projektem. Ovládání je standardní pomocí přehledného menu. Nejčastěji používané příkazy jsou rozloženy v nástrojové liště. V levé horní části okna je zobrazena struktura formuláře jako strom s komponentami. V levé spodní části je zobrazen seznam vlastností (properties) a událostí (events) aktuálně vybrané komponenty. Ve střední části okna jsou nahoře záložky s jednotlivými knihovnami a v okně pod záložkami se pak zobrazují zdrojové kódy a případně komponenty (formuláře). Jednotlivé části každé knihovny se přepínají záložkami dole. Samotný zdrojový kód (cpp), hlavičkový soubor (h), formulář (design) a historie změn (history). V pravé horní části je v první záložce struktura projektu (a jeho soubory) a ve druhé záložce je datový navigátor pro databázové aplikace. V pravé spodní části je paleta komponent, ze které lze vybírat (a přetahovat) komponenty na formulář.
15
3 Praktická část 3.1 Návrh zapojení přepínače Při návrhu zapojení jsem se nechal inspirovat katalogovými listy jednotlivých obvodů. U stabilizátoru 7805, u resetovacího obvodu TLC7705, u převodníku napěťových úrovní MAX232 i u dekodéru 74LS47 je zapojení doporučeno přímo v katalogových listech a není důvod pro změny. Obrázek 3 zobrazuje schéma zapojení. Ze schématu je zřejmé vzájemné fyzické oddělení linek jednotlivých osciloskopů s využitím spínacích kontaktů relé. Dále je patrný počet linek pro připojení maximálně deseti osciloskopů.
16
Obrázek 3 – Schéma zapojení přepínače
17
3.1.1 Zapojení napájecí části Na vstupu zařízení se předpokládá zapojení 9V síťového zdroje se správnou polaritou. Přepínač je chráněn proti přepólování pomocí dvou diod. Jedna je zapojena na vstup stabilizátoru a druhá je zapojena na společnou anodu displeje.
3.1.2 Zapojení invertorů a relé Zapojení invertorů a relé je provedeno nejjednodušším způsobem tak, aby nedošlo k překročení doporučeného výstupního proudu z invertoru. K relé je připojena blokovací dioda pro odstranění naindukovaného napětí při rozepnutí relé.
3.1.3 Zapojení procesoru Procesor AT89C52 potřebuje k zajištění provozu kromě napájení ještě zdroj hodinového signálu. V tomto zapojení je použit krystal s frekvencí 22,118MHz pro zajištění správného časování UARTu.
3.1.4 Zapojení displeje Pro displej je zapotřebí zajistit, podle katalogového listu, napájení 8V a povolené maximum je 10V. Při použití ochranné diody (proti přepólování) dojde i ke snížení napětí. Napětí ze síťového adaptéru by tedy muselo překročit cca 11V aby došlo k překročení limitu. To u zatíženého spínaného zdroje 9V nepředpokládám a proto není použita žádná další ochrana. Displej je přímo připojen k BCD dekodéru DM74LS47 a tím jsou dány možnosti zobrazení. Obrázek 4 názorně ukazuje, jaké znaky displej může zobrazovat. Obrázek 4 – Zobrazované znaky na displeji dle specifikace dekodéru displeje
18
3.2 Návrh desky plošného spoje Návrh desky plošného spoje probíhal v programu Eagle. Měl jsem k dispozici technologii výroby foto cestou. Plošný spoj je jednostranný a je doplněný drátovými propojkami. Propojky jsou v návrhu vloženy do vrstvy spojů na straně součástek a tím jsou na osazovacím plánku (Obrázek 7) zobrazeny červeně. Po návrhu se pomocí již zmíněné technologie – foto cestou – vyrobí samotná deska plošného spoje. Náhled výkresu, který se pak tiskne na fólii, zobrazuje Obrázek 5.
19
Obrázek 5 – Deska plošného spoje – náhled výkresu pro leptání
20
3.3 Osazení desky plošného spoje Po vyleptání a usušení desky plošného spoje se deska osadí součástkami podle osazovacích plánků (Obrázek 7 a Obrázek 8) a tabulky součástek (Tabulka 1). Samotné osazení desky, s ohledem na počet vyrobených kusů, probíhalo ručně s pomocí mikropájky. Poté byly osazeny patice příslušnými integrovanými obvody. Displej byl po zhodnocení viditelnosti umístěn na druhou desku plošného spoje a byl připojen drátovými propojkami, aby jej bylo možno lépe umístit. Distančními sloupky byl poté umístěn blíže k čelní straně krabičky. Po stranách krabičky jsou umístěny konektory typu canon9f. Dva jsou vyhrazeny pro připojení počítače (PC-Cmd, PC-Data) a deset konektorů (1-10) je určeno pro osciloskopy. Pro připojení osciloskopu je zapotřebí upravený propojovací kabel. Mezi vývod 9 (v původní specifikaci RS-232 signál TERI) a vývod 5 (GND) je potřeba připojit ovládací tlačítko. Přesné zapojení kabelu ukazuje Obrázek 6. Obrázek 6 – Schéma zapojení kabelu mezi přepínačem a osciloskopem
21
Obrázek 7 – Deska plošného spoje – osazovací plánek
22
Obrázek 8 – Deska plošného spoje – osazovací plánek SMD součástek
23
Tabulka 1 – Seznam součástek
Označení C1 - C5 C6, C7 C8, C9 C10 C11 D1 - D13 IC1 IC2 IC3, IC4 IC5 IC6 IC7 K1 - K10 LED1 Q1 R1 R2 R3
Popis 1µF 100nF 27pF 50V 1µF 16V 100nF 1N4004 AT89C52P6 74LS47N 74LS06N MAX232 7805T TLC7705D relé RR2A displej krystal 22,118 MHz 130Ω 1KΩ 10KΩ
24
Počet kusů 5 2 2 1 1 13 1 1 2 1 1 1 10 1 1 1 1 1
3.4 Software přepínače – vybavení AT89C52 Jak už jsem zmínil v teoretické části (viz. 2.7), software přepínače je napsán v jazyce C a není příliš složitý. Zdrojový kód i výsledný přeložený soubor hex jsou součástí elektronické přílohy. Při vytváření a úvodním nastavení projektu jsem použil postupy popsané v knize C pro mikrokontroléry ATMEL AT89S52 (3).
3.4.1 Hlavní část V hlavní části programu (viz. Zdrojový kód 1) je pouze inicializace a nekonečná smyčka s opakovaným vyhodnocením stavu tlačítek. Inicializační část nastavuje UART, odesílá do PC diagnostický text a umožní vizuálně otestovat displej. V hlavní (nekonečné) smyčce programu se vyhodnocuje, zda došlo ke změně stavu některého z připojených tlačítek a při změně se přes UART odesílají všechna aktuálně stisknutá tlačítka do počítače. Zdrojový kód 1 – funkce main void main() { unsigned int btn, last_btn, act_btn; unsigned char i; inicialize(); while(1) { btn = butt(); // cte tlacitka act_btn = btn & ~last_btn; // porovna zda jsou od minuleho cteni zmeny last_btn = btn; if (act_btn) { // je nejaka zmena ve stavu tlacitek - odesleme for (i = 1; i <= button_count; i++) { if (act_btn & 0x01) { send(i); } act_btn = act_btn >> 1; } } delay(50); // pauza } }
3.4.2 Obsluha přerušení sériové linky, popis komunikačního protokolu V části programu, která zajišťuje obsluhu přerušení od UARTu (viz. Zdrojový kód 2), se vyhodnocují a provádějí příkazy přijaté z počítače. Jsou to příkazy pro přepnutí linky na daný osciloskop, zobrazení znaku/tečky na displeji a tzv. echo (viz. Tabulka 2 a
Tabulka 3). Ze zdrojového kódu je patrné, že protokol nemá žádné kontrolní mechanismy. Ani paritní kontrolní součet, ani jiné sofistikovanější, jako je například CRC. Při daných rychlostech a množství odesílaných dat by podle mého názoru byl 25
jakýkoliv kontrolní mechanismus spíše na závadu. Složitější kód = více možností pro chyby. Tabulka 2 – Popis příkazů pro přepínač (směr z počítače do přepínače)
Příkaz (Hexadecimálně) 0x45 (Ascii „E“) 0x01 – 0x0A 0x0B 0x10 – 0x1F 0x20 0x21
Popis příkazu Echo – přepínač potvrdí přijetí odesláním znaku „e“ (0x65) Přepne linku (PC-Data) na osciloskop 1-10 Odpojí linku (PC-Data) Zobrazí na displeji znak (viz. Obrázek 4) Zhasne tečku na displeji Rozsvítí tečku na displeji
Tabulka 3 – Popis příkazů pro počítač (směr z přepínače do počítače)
Příkaz (Hexadecimálně) 0x65 (Ascii „e“) 0x01 – 0x0A
Popis příkazu Odpověď na echo Stisk tlačítka 1-10
Zdrojový kód 2 – funkce serial // rutina pro obsluhu preruseni od UARTu void serial() interrupt SIO_VECTOR { if (TI) { // preruseni po odeslani znaku TI = 0; if (serial_buffer_count > 0) { // buffer obsahuje dalsi znak, tak jej odesleme serial_next_byte(); } else { // buffer je prazdny - konec odesilani serial_sending = 0; } } if (RI) { // preruseni pri prijeti znaku RI = 0; command = SBUF; if (command >= 0x01 && command <= 0x0F) { // prikaz pro prepnuti osciloskopu scope_switch(command); } if (command >= 0x10 && command <= 0x1F) { // prikaz pro zobrazeni show(command & 0x0F); } switch (command) { case 'E': // echo send('e'); break; case 0x20: // zhasnout tecku DOT_ON = 0; break; case 0x21: // rozsvitit tecku DOT_ON = 1; break; } } }
26
3.5 Oživení zařízení Po osazení patice procesoru naprogramovaným procesorem a po připojení napájecího síťového adaptéru odešle přepínač po příkazové lince (PC-Cmd) do počítače řetězec znaků „SWITCH INIT“ (lze sledovat např. pomocí aplikace HyperTerminal ve Windows nebo na diagnostické záložce řídící aplikace) a na 0,5 s rozsvítí na displeji číslici 8.
3.6 Řídící část softwaru přepínače – aplikace v počítači Jak už jsem zmínil v teoretické části (viz. 2.9), řídící software pro ovládání přepínače je napsán v jazyce C++. Zdrojový kód i výsledná aplikace jsou součástí elektronické přílohy. Obrázek 9 a Obrázek 10 ukazují, jak řídící aplikace vypadá. Obrázek 9 – Náhled řídícího programu v počítači po tisku oscilogramu
3.6.1 Struktura zdrojových kódů řídící aplikace Zdrojové kódy aplikace jsou rozděleny na dvě části: knihovna pro práci se sériovým portem a knihovna pro řízení a uživatelské rozhraní.
27
3.6.2 Knihovna pro práci se sériovým portem Knihovna pro práci se sériovým portem je postavena na komponentě TThread. Tato komponenta je určena pro práci s vlákny. V této knihovně jsou funkce na otevření a řízení sériového portu, dále funkce pro čtení a odesílání dat přes sériový port. Funkce knihovny jsou společné pro ovládání obou portů, jak ovládacího (PC-Cmd) tak datového (PC-Data). Jediný rozdíl je pouze v prioritě obou výsledných vláken. Pro datový port je, z důvodu většího množství dat posílaného nepřetržitě, zvýšena priorita vlákna. Ve funkcích, ve kterých by mohl nastat konflikt z důvodu souběžných operací (souběžná volání z vlákna daného portu a z hlavního vlákna), jsou použity semafory. Zdrojový kód 3 ukazuje využití techniky vláken pro čtení ze sériového portu. Ve funkci se inicializuje fronta znaků, pak následuje hlavní smyčka vlákna a za ní uvolnění fronty. Jediná podmínka hlavní smyčky je příznak ukončení vlákna. V hlavní smyčce se opakovaně testuje, zda je již port inicializován a v případě, že ano je opakovaně prováděno čtení z portu a zápis do fronty. Pro semafor je zde použita společná proměnná QueueInUse. Zdrojový kód 3 – hlavní funkce vlákna – Execute void __fastcall TComPortThread::Execute() { //---- Place thread code here ---unsigned long l; unsigned char buff[65536]; Queue = new TQueue; while (!Terminated) { if ((ComPort != INVALID_HANDLE_VALUE) && Active) { PortInUse = true; ReadFile(ComPort, buff, sizeof(buff), &l, NULL); PortInUse = false; for (int i = 0; QueueInUse && (i <= 5); i++) { Sleep(5); } QueueInUse = true; if (l > 0) { for (unsigned long i = 0; i < l; i++) { Queue->Push(reinterpret_cast
(buff[i])); } } QueueInUse = false; } Sleep(10); } delete Queue; Queue = NULL; }
Zdrojový kód 4 zobrazuje funkci pro čtení znaků uložených ve funkci Execute. Je zde vidět použití semaforu pomocí společné proměnné QueueInUse. Zdrojový kód 4 – funkce pro výběr znaků z fronty unsigned char __fastcall TComPortThread::Pop() {
28
for (int i = 0; QueueInUse && (i <= 50); i++) { Sleep(5); } QueueInUse = true; unsigned char res = reinterpret_cast(Queue->Pop()); QueueInUse = false; return res; }
Při tvorbě této knihovny jsem využil části z knihy C++ Builder (4).
3.6.3 Knihovna pro řízení a uživatelské rozhraní Knihovna pro řízení a uživatelské rozhraní je postavena na standardní komponentě TForm (uživatelský formulář). Řízení je zajištěno pomocí časovače (viz. Zdrojový kód 5). Tento časovač pomocí funkcí Count a Pop opakovaně v intervalu 50 milisekund testuje, zda ve vlákně obsluhující ovládací port, nejsou požadavky na tisk. V případě, že jsou přijaty nové požadavky na tisk, pak je podle daných pravidel vyřizuje. Zdrojový kód 5 – funkce obsluhy časovače void __fastcall TForm1::TimerCmdTimer(TObject *Sender) { char b; unsigned long dw = GetTickCount(); AnsiString a; if (cp->Count() > 0) { b = LogChar(cp->Pop()); if (b == 'e') { switch_ready = true; } if ((b >= 0x01) && (b <= 0x0A) && switch_ready) { if (zapis_do_image || tisk_image || (btn_time[b] + StrToIntDef(EditBtnTimeout->Text, btn_timeout_def) > dw)) { blikej = 0x10 | b; blikej_cnt = 10; } else { PrepareDownload(b, dw); // :STOP DownloadImage(); // :HARDcopy EndDownload(); // :RUN :KEY:LOCK DIS } } } }
Uživatelské rozhraní je řešeno standardní obsluhou pomocí událostí. Jediná výjimka je blokování událostí v případě aktivního načítání oscilogramu z osciloskopu. Při načítání se aplikace automaticky přepne na první záložku. Jednak aby bylo vidět, co se načítá a jednak aby nedošlo k nechtěným akcím například pomocí diagnostických tlačítek. Dále je blokována událost stisku tlačítka pro tisk na první záložce. Tím by mělo být zajištěno bezproblémové přenesení oscilogramu a jeho tisk.
29
3.6.4 Popis automatických funkcí řídící aplikace Řídící aplikace při spuštění otestuje, zda je připojena hardwarová část na port nastavený v záložce nastavení. V případě, že hardwarová část není k dispozici, aplikace na tuto skutečnost upozorní a všechny komunikační funkce zůstanou neaktivní. Ostatní části aplikace jsou i přesto přístupné. V případě, že je hardwarová část připojena, aplikace se přepne do režimu, kdy očekává uživatelskou výzvu k tisku pomocí tlačítek u jednotlivých osciloskopů. Z důvodu snadnější diagnostiky závad dává tuto skutečnost aplikace najevo 0,5 s dlouhým probliknutím tečky na displeji přepínače. Po stisku tlačítka u osciloskopu pošle přepínač požadavek počítači. V případě, že je přenosová linka volná a je splněna podmínka minimálního času od minulého stisku stejného tlačítka, aplikace pošle přepínači požadavek na přepnutí linky směrem k danému osciloskopu a pošle osciloskopu sekvenci příkazů pro stažení kopie obrazovky do počítače. V průběhu přenosu je na displeji přepínače zobrazeno číslo přepnuté linky a problikává tečka. V případě úspěšného přenesení vytiskne aplikace oscilogram označený číslem osciloskopu, aktuálním datem a časem na tiskárně, která je vybrána v záložce nastavení a uloží oscilogram do složky historie. V případě neúspěchu (celkového nebo datového timeoutu) aplikace ukončí přenos. V obou případech aplikace uvolní osciloskop i linku, zhasne displej přepínače a vrátí se do režimu čekání na stisk tlačítka. V případě dalšího požadavku na tisk v průběhu přenosu nebo před vypršením času, určeného nastavením timeoutu tlačítka, aplikace na 4 sekundy na displeji rozbliká číslo osciloskopu, ze kterého tento nevyřízený požadavek vzešel. Po těchto 4 sekundách vrátí na displej původní číslo. Případný předchozí přenos probíhá bez přerušení dál.
3.6.5 Popis uživatelských funkcí řídící aplikace Na záložce náhled je zobrazen poslední přenesený oscilogram bez ohledu na úspěch přenosu. Tento náhled lze vytisknout pomocí tlačítka tisk. Na záložce historie má pokročilejší uživatel k dispozici všechny oscilogramy uložené po úspěšném přenosu. Jsou zde k dispozici pro případ výpadku proudu nebo jiné poruchy, kdy se úspěšně přenesený oscilogram nevytiskne. Vybraný oscilogram se vždy zobrazí a pomocí tlačítka tisk ho lze vytisknout. 30
Na záložce diagnostika může pokročilý uživatel provádět diagnostické úkony potřebné při odstraňování případných závad. Je zde k dispozici ovládání displeje (včetně tečky), ovládání přepínače linek, odeslání echo-znaku a sledování přijatých/odeslaných znaků. Jednotlivé příkazy se přímo aktivují stiskem daného tlačítka. U příkazu zobrazení a přepnutí je potřeba před použitím vybrat co se má na displeji zobrazit nebo kam se má linka přepnout.
3.6.6 Popis nastavení řídící aplikace Tabulka 4 obsahuje popis parametrů nastavení, které zobrazuje Obrázek 10. Při uložení nastavení, pomocí tlačítka uložit konfiguraci, dojde k odpojení a novému připojení obou komunikačních portů, obdobně jako při startu aplikace. Tabulka 4 – Popis nastavení řídící aplikace
Název nastavení Port přepínače Port dat Rychlost přepínače Rychlost dat Text osciloskop Odsazení zleva Velikost textu Zoom [%] Tiskárna Timeouty – Tlačítko Timeouty – Celkový Timeouty – Data
Popis nastavení Název portu, kde je připojen port přepínače označený „PC-Cmd“ Název portu, kde je připojen port přepínače označený „PC-Data“ Rychlost nastavená v přepínači (standardně 19200 baudů) Rychlost nastavená na osciloskopech (standardně 19200 baudů) Text tisknutý na začátku oscilogramu Odsazení textu i oscilogramu od kraje stránky Velikost úvodního textu oscilogramu Procento zvětšení oscilogramu (standardně 1400) Název tiskárny určené pro tisk oscilogramů Určuje čas od posledního stisku tlačítka, kdy je možno znovu tisknout Určuje maximální čas, po kterém je příjem oscilogramu ukončen Určuje maximální čas mezi jednotlivými přijatými byty
31
Obrázek 10 – Náhled nastavení řídícího programu v počítači
3.7 Používání přepínače v praxi V praxi je předpokládáno pouze pasivní používání řídící aplikace. Uživatel tedy uvidí pouze hardwarovou část přepínače a řídící počítač bude uživatelsky využíván jen ve výjimečných případech. Tabulka 5 obsahuje popis stavů přepínače, pomocí nichž by se měl běžný uživatel snadno zorientovat. Obdobnou tabulku obsahuje i návod k obsluze přepínače, který je součástí příloh. Tabulka 5 – Popis stavů přepínače
Na displeji Nic nesvítí Svítí číslo Svítí číslo a bliká tečka
Rychle bliká číslo Bliká pouze tečka Bliká číslo 8
Stav přepínače Přepínač je připraven na požadavky nebo je vypnutý Přepínač přepnul linku a čeká data z osciloskopu Přepínač přenáší data z osciloskopu, jehož číslo zobrazuje Přepínač právě vyřizuje jiný přenos nebo není splněna podmínka minimálního časového odstupu. Uživatel osciloskopu, jehož číslo bliká, opakuje požadavek později Chybový stav (restartuje se řídící aplikace) Chybový stav (opakovaně se restartuje přepínač)
32
4 Závěr Při úvahách nad touto prací jsem postupně objevoval i jiná možná teoretická řešení, která bych závěrem popsal a porovnal se svým stávajícím řešením.
4.1 Řešení pomocí rozšiřující desky portů do počítače Toto řešení by bylo výrazně dražší. Základní rozšiřující deska portů např. od firmy Moxa stojí asi 3400 Kč. Řešení stále předpokládá použití řídícího počítače. Odpadl by sice vývoj a konstrukce zařízení přepínače a bylo by možno přenášet data z více osciloskopů najednou, ale všechny osciloskopy by byly fyzicky spojeny do počítače a při jakékoliv poruše nebo poškození jednoho z osciloskopů by hrozilo poškození všech ostatních osciloskopů i počítače. Použití optických oddělovačů v tomto řešení, by ho ještě více prodražily. Oproti stávajícímu řešení by toto bylo nejenom dražší, ale nesplnilo by základní požadavek fyzické oddělení osciloskopů navzájem od sebe.
4.2 Řešení pomocí USB rozbočovačů propojených do počítače Toto řešení by nebylo výrazně dražší ani při použití rozbočovačů s napájením, které by teoreticky prodloužilo maximální vzdálenost osciloskopů od počítače. Pět metrů dle specifikací USB je v reálném použití naší aplikace málo. Nicméně by se vyskytly potíže s identifikací jednotlivých osciloskopů a byl by problém zajistit uživatelskou odezvu (požadavky na tisk). Stejně jako při řešení s rozšiřující deskou, by byl problém s fyzickým oddělením osciloskopů.
4.3 Řešení pomocí samostatného modulu bez počítače Toto řešení by sice mělo nejekonomičtější provoz díky absenci řídícího počítače, ale bylo zamítnuto už ve fázi úvah z důvodu potřeby tisku na síťové tiskárně a problémům s implementací ovladačů tiskárny do takového modulu.
33
4.4 Stávající řešení Při přibližném sečtení částek za součástky mi vychází asi 800 Kč. Nejdražší položka je 10 relé po 43 Kč. Toto řešení sice vyžaduje běh řídícího počítače, ale splňuje všechny zadané požadavky a je spolehlivé. Navíc má snadnou obsluhu a jednoducho detekci poruch. Použitá sběrnice RS-232 zaručuje, že zařízení přepínače bude možné připojit i k novějším počítačům. A to buď s pomocí rozšiřující desky portů přímo v počítači nebo pomocí převodníků USB – RS-232. Podle tohoto shrnutí považuji práci za úspěšnou.
34
Citovaná literatura 1. Corporation, Atmel. AT89S52. Atmel Corporation. [Online] 6 2008. [Citace: 27. 12 2011.] http://www.atmel.com/dyn/resources/prod_documents/doc0401.pdf. 2. Dept, Electronic Industries Association. Engineering. Interface between data terminal equipment and data communication equipment employing serial binary data interchange.
[Online]
1969.
[Citace:
27.
12
2011.]
http://books.google.cz/books?id=Tp08AAAAIAAJ. 3. Ing. Matoušek, David. C pro mikrokontroléry ATMEL AT89S52. Praha : BEN technická literatura, 2007. ISBN 80-7300-215-9. 4. Ing.Matoušek, David. C++ Builder. Praha : BEN - technická literatura, 2010. ISBN 978-80-7300-258-9. 5. Wikipedie. [Online] [Citace: 29. 12 2011.] http://cs.wikipedia.org/.
35
Seznam obrázků Obrázek 1 – Náhled vývojového prostředí µVision ....................................................... 13 Obrázek 2 – Náhled vývojového prostředí C++ Builder ................................................ 15 Obrázek 3 – Schéma zapojení přepínače ........................................................................ 17 Obrázek 4 – Zobrazované znaky na displeji dle specifikace dekodéru displeje ............. 18 Obrázek 5 – Deska plošného spoje – náhled výkresu pro leptání .................................. 20 Obrázek 6 – Schéma zapojení kabelu mezi přepínačem a osciloskopem ....................... 21 Obrázek 7 – Deska plošného spoje – osazovací plánek.................................................. 22 Obrázek 8 – Deska plošného spoje – osazovací plánek SMD součástek ....................... 23 Obrázek 9 – Náhled řídícího programu v počítači po tisku oscilogramu ....................... 27 Obrázek 10 – Náhled nastavení řídícího programu v počítači ........................................ 32
36
Seznam tabulek Tabulka 1 – Seznam součástek ....................................................................................... 24 Tabulka 2 – Popis příkazů pro přepínač (směr z počítače do přepínače) ....................... 26 Tabulka 3 – Popis příkazů pro počítač (směr z přepínače do počítače) ......................... 26 Tabulka 4 – Popis nastavení řídící aplikace .................................................................... 31 Tabulka 5 – Popis stavů přepínače ................................................................................. 32
37
Seznam zdrojových kódů Zdrojový kód 1 – funkce main ........................................................................................ 25 Zdrojový kód 2 – funkce serial ....................................................................................... 26 Zdrojový kód 3 – hlavní funkce vlákna – Execute ......................................................... 28 Zdrojový kód 4 – funkce pro výběr znaků z fronty ........................................................ 28 Zdrojový kód 5 – funkce obsluhy časovače.................................................................... 29
38
Seznam zkratek UART – část hardwaru překládající mezi paralelním a sériovým způsobem přenosu dat ISP – možnost programování procesoru v aplikaci bez externího programátoru GUI – grafické uživatelské rozhraní SMD - součástka pro povrchovou montáž plošných spojů Ascii – kódová tabulka, která definuje znaky angl. abecedy a další znaky v informatice CRC – funkce pro detekci chyb při přenosech nebo ukládání dat (4)
39
Přílohy Vlastní oživené zařízení pro přepínání. Návod k obsluze přepínače Elektronická příloha na CD (aplikace, zdrojové kódy).
40