ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická BAKALÁŘSKÁ PRÁCE Márcis Šic

Podobné dokumenty
Základní normalizované datové přenosy

DUM 06 téma: Tvorba makra pomocí VBA

Automatizované měřicí systémy se sběrnicí IEEE 488 (GPIB)

MS Excel makra a VBA

16. Číslicový měřicí systém se sběrnicí IEEE 488 (základní seznámení)

SEMESTRÁLNÍ PROJEKT Y38PRO

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií

IPZ laboratoře. Analýza komunikace na sběrnici USB L305. Cvičící: Straka Martin, Šimek Václav, Kaštil Jan. Cvičení 2

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

LABORATORNÍ CVIČENÍ Střední průmyslová škola elektrotechnická

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

enos dat rnici inicializaci adresování adresu enosu zprávy start bit átek zprávy paritními bity Ukon ení zprávy stop bitu ijíma potvrzuje p

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Obsah Úvodem... 5 Co je to vlastně formulář... 6 Co je to šablona... 6 Jak se šablona uloží... 6 Jak souvisí formulář se šablonou...

MĚŘICÍ SYSTÉMY A2B38EMB P14 1

Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

Konektory a Kabely. Aneb zařízení integrovaná do základní desky a konektory a kabeláž pro připojení externích zařízení

Tabulkový procesor. Základní rysy

Vzorce. StatSoft. Vzorce. Kde všude se dá zadat vzorec

Popis programu EnicomD

Laboratorní cvičení z předmětu Elektrická měření 2. ročník KMT

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

Školení obsluhy PC stručný manuál obsluhy pro používání PC

Obslužný software. PAP ISO 9001

Obr. P1.1 Zadání úlohy v MS Excel

ALGORITMIZACE A PROGRAMOVÁNÍ

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Vrstvy periferních rozhraní

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Systém sběru dat z RS232 do MS Excel

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing.

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

MBus Explorer MULTI. Uživatelský manuál V. 1.1

Software pro formování dielektrika kondenzátorů

Svolávací systém Uživatelský manuál

Použití UART a radia na platformě micro:bit

Principy komunikace s adaptéry periferních zařízení (PZ)

FORTANNS. 22. února 2010

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem

Systém řízení sběrnice

Část 3 Manuál pro správce

Profilová část maturitní zkoušky 2017/2018

Připojení přístroje A4101 k aplikaci DDS2000

Komunikace modulu s procesorem SPI protokol

Fakulta informačních technologií VUT v Brně Ústav počítačových systémů Periferní zařízení, cvičení IPZ Analýza komunikace na sběrnici USB

DUM č. 6 v sadě. 31. Inf-7 Technické vybavení počítačů

Zpravodaj. Uživatelská příručka. Verze

Pravidla a plánování

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Postupy práce se šablonami IS MPP

Aplikace pro srovna ní cen povinne ho ruc ení

Uživatelská příručka pro ředitele škol

Manuál pro mobilní aplikaci Patron-Pro. verze pro operační systém Symbian

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze Kontakty 08/ Obsah

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Kontingenční tabulky v MS Excel 2010

DATABÁZE MS ACCESS 2010

Ing. Michal Martin. Spojení PLC CLICK s NA-9289

Profilová část maturitní zkoušky 2013/2014

Programovací prostředek AmexCLV-V2.0

MIDAM Simulátor Verze 1.5

Vstupní požadavky, doporučení a metodické pokyny

Práce se styly 1. Styl

IMPORT DAT DO DATABÁZE

VISUAL BASIC. Přehled témat

Microsoft Word základní

Manuál pro práci s modulem Otázky a odpovědi

Sériové komunikace KIV/PD Přenos dat Martin Šimek

aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš tomas.d@centrum.cz

Tvorba kurzu v LMS Moodle

Excel - databáze. Opakování. Soubor, který jsme upravovali. Upravený soubor. Hrubá mzda = počet kusů * Kč za kus B6=B4*B5

Windows Live Movie Maker

1/1 ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE PROVOZNĚ EKONOMICKÁ FAKULTA PŘIJÍMACÍ ŘÍZENÍ 2017/2018

Semestrální práce 2 znakový strom

DUM 11 téma: Úvod do příkazové řádky

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

FFUK Uživatelský manuál pro administraci webu Obsah

Voltampérová charakteristika diody

9. Rozšiřující desky Evb_Display a Evb_keyboard

TP /b P - POPIS ARCHIVACE TYP Měřič INMAT 57 a INMAT 57D

Úvod do MS Access. Modelování v řízení. Ing. Petr Kalčev

Universal Serial Bus (USB)

Excel 2007 praktická práce

Princip funkce počítače

Microsoft Access. Typy objektů databáze: Vytvoření a návrh nové tabulky. Vytvoření tabulky v návrhovém zobrazení

A4300BDL. Ref: JC

Stručný postup k použití programu PL7 Junior (programování TSX Micro)

Práce s programem MPVaK

Transkript:

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická BAKALÁŘSKÁ PRÁCE 2008 Márcis Šic

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická Katedra měření BAKALÁŘSKÁ PRÁCE Programové vybavení pro řízení měřících aparatur s rozhraním IEEE 488 Vedoucí práce : Ing. Jan Kučera Praha 2008 Autor: Márcis Šic

Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady (literaturu, projekty, SW atd.) uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu 60 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ů (autorský zákon). V Praze dne.. podpis

Poděkování Touto cestou bych chtěl poděkovat všem, jež mi pomáhali při tvorbě této práce. Obzvláště bych rád poděkoval svému vedoucímu bakalářské práce Ing. Janu Kučerovi za trpělivost a cenné rady, které mi v průběhu tvorby poskytoval.

Anotace Bakalářská práce se zabývá tvorbou programu pro ovládání měřících aparatur v laboratoři metrologie elektrických veličin pomocí sběrnice GPIB. Tento program by měl nahradit stávající verzi s využitím sady příkazů VISA (The Virtual Instrument Software Architecture). Program je vyvíjen v prostředí VBA (Visual Basic for Applications), který je součásti kancelářského balíku MS Office. Celý program je navržen tak, aby bylo dosaženo co největší univerzálnosti a aby bylo možno využít co nejvíce funkcí použitých zařízení a sběrnice. Annotation The Bachelor work is dealing with a design of program for controlling measuring equipments in laboratories of metrology electric characteristics, using GPIB bus. This program should replace the current version by using a new set of VISA (The Virtual Instrument Software Architecture) instructions. The program is developed in the development system VBA (Visual Basic for Applications), which is included in office software package MS Office. The whole program is designed to gain maximum generality and to use as many functions of used devices and bus as possible. 1

Obsah 1 Úvod... 4 1.1 Požadavky na zpracování... 5 2 Sběrnice IEEE 488... 6 2.1 Topologie sběrnice... 6 2.2 Fyzická vrstva sběrnice... 7 2.2.1 Základní parametry... 7 2.2.2 Fyzické zapojení a signály... 8 2.3 Principy komunikace... 10 2.3.1 Možnosti komunikace po sběrnici... 11 2.4 Standardy sběrnice IEEE 488... 12 2.5 Vrstva ovladačů a software... 14 2.5.1 Knihovna VISA... 14 2.5.1.1 Základní operace... 15 2.6 Struktura příkazů GPIB... 16 3 Vývojové prostředí VBA... 18 3.1 Úvod do VBA... 18 3.2 Orientace ve VBE... 18 3.3 Použití VBA... 20 3.3.1 Příkaz OnTime... 21 3.3.2 Absolutní adresování... 22 4 Software pro ovládání měřících aparatur po sběrnici IEEE 488... 23 4.1 Uživatelské rozhraní aplikace... 23 4.1.1 Seznam zařízení... 25 4.1.2 Protokol o průběhu... 27 4.1.3 Ovládací prvky programu... 27 4.1.4 Typy měření a jejich nastavení... 28 4.1.5 Oblast výsledků... 31 4.2 Konstanty a proměnné... 32 4.3 Funkce programu... 35 4.3.1 GUI INIT... 35 4.3.2 Najít zařízení... 36 4.3.3 Test připojení... 37 4.3.4 Spustit měření... 38 4.3.5 Ostatní funkce... 39 4.3.6 Uživatelské příkazy... 40 4.3.6.1 Vkládání hodnot z buňky do příkazu... 40 4.3.6.2 Čekání před odměrem... 41 4.3.7 Ohlašování chyb komunikace... 41 5 Závěr... 42 Literatura... 43 Obsah CD... 44 2

Seznam obrázků Obr. 2.1 a) Lineární konfigurace, b) Hvězdicová konfigurace... 6 Obr. 2.2 Struktura IEEE 488... 8 Obr. 2.3 Stavový model... 11 Obr. 2.4 STB Status byte (stavový bajt)... 12 Obr. 2.5 Stromová struktuta příkazů... 16 Obr. 3.1 Integrované vývojové prostředí (IDE) ve VBA... 19 Obr. 3.2 a) Položka References v menu VBE, b) Okno References... 21 Obr. 4.1 Uživatelské rozhraní aplikace... 24 Obr. 4.2 Sloupce seznamu přístrojů... 25 Obr. 4.3 Ukázka protokolu o běhu programu... 27 Obr. 4.4 Výběr typu měření... 29 Obr. 4.5 Iterační vyvažování... 30 Obr. 4.6 Parametry pro Závislost v čase... 30 Obr. 4.7 Výpis odměřených hodnot... 31 Obr. 4.8 Řádek pole MeasureSet... 34 Obr. 4.9 Vývojový diagram pro tlačítko GUI INIT... 35 Obr. 4.10 Příklad výsledku funkce Najít zařízení... 36 Obr. 4.11 Vývojový diagram pro tlačítko Najít zařízení... 37 Obr. 4.12 Vývojový diagram pro tlačítko Test připojeni... 37 Obr. 4.13 Vývojový diagram pro tlačítko Spustit měření... 38 3

1 Úvod Úkolem této bakalářské práce je vytvořit program, který bude schopen ovládat měřící aparatury přes sběrnici IEEE 488 za použití knihovny příkazů VISA. Program je určen pro všestranné užití podle čehož je vytvořena celá jeho struktura. Aplikace bude využívána na Katedře měření v laboratořích metrologie elektrických veličin. Sběrnice IEEE 488 je velice často používána pro měření v laboratorních podmínkách. Prakticky jedinou podmínkou pro využívání tohoto rozhraní je mít centrální řídící jednotku, tedy v drtivé většině PC vybavené přídavnou kartou s tímto rozhraním a zařízení podporující toto rozhraní, kterých je velké množství. Program je vytvořen jako sešit v aplikaci MS Excel za použití vývojového prostředí VBA (Visual Basic for Applications) do něhož byl vložen modul pro příkazy VISA. Od programu se očekává, že bude schopen dlouhodobého měření bez potřeby interakce uživatele a zároveň možnost souběžného využívání aplikace MS Excel pro další účely. Díky použité sadě příkazů by měl být rychlejší, stabilnější a měl by zachovávat kompatibilitu i se staršími přístroji. Dále je program možno lépe upravovat z hlediska uživatelského rozhraní, což v praxi znamená, že nebude nutno zasahovat do zdrojového kódu v případě, že budeme chtít posunout vstupní buňky na jinou pozici než výchozí pozici. Práce je tematicky členěna do hlavních částí. První část je věnována seznámení se s vývojovým prostředím, sběrnicí a instrukční sadou. Druhá část je věnována samotné implementaci programu a třetí část se zabývá testováním programu. 4

1.1 Požadavky na zpracování Funkce Nastavování přístrojů po sběrnici Přístroje bude možno nastavit pomocí příkazů zadaných uživatelem. Měření po sběrnici Program bude schopen měření požadovaných hodnot. Typ požadované hodnoty bude specifikován uživatelem. Výpis odměřených hodnot Program bude zajišťovat výpis hodnot přehledným způsobem vzhledem k způsobu měření. Možnosti měření Jeden odměr do řádku Při tomto měření se bude provádět právě jeden odměr a výpis bude prováděn do jednoho řádku. Hodnoty v tomto řádku budou odpovídat údajům získaným při posledním měření Více odměrů pod sebe Toto měření bude prováděno stejným způsobem jako měření typu Jeden odměr do řádku, ale výsledky budou vypisovány vždy do nového řádku, který bude bezprostředně následovat za posledním, jenž je naplněn hodnotami. Závislost na čase S tímto měřením je možno měřit, aniž by byla nutná asistence uživatele. Pouze na začátku měření je nutno zadat dobu měření a vzorkovací periodu. Po zahájení měření již bude měření prováděno automaticky. Uživatelské příkazy Do programu by měly být implementovány uživatelské příkazy, umožňující větší interakci mezi uživatelem a aplikací. 5

2 Sběrnice IEEE 488 V první části této kapitoly je popsána sběrnice IEEE 488, známa také jako GPIB (General Purpose Interface Bus) nebo HP-IB(Hewlett-Packard Instrument Bus), dále jen GPIB, z hlediska jejího fyzického zapojení. Dále také vyšší vrstvy, jako jsou například ovladače, jednotlivé protokoly a jejich rozdíly. Poslední část této kapitoly bude věnována programovacímu rozhranní VISA. 2.1 Topologie sběrnice Měřící systémy založené na standardu sběrnice GPIB jsou složeny z na sobě nezávislých funkčních jednotek (dále jen FJ) a sběrnicí jsou pouze spojeny. Tento systém se nejvíce rozšířil pro využití v laboratorním prostředí. Konfigurace měřícího systému z hlediska topologie se dělí na dvě hlavní varianty a to na lineární a hvězdicovou konfiguraci (obr. 2.1). Třetí možností je kombinace dvou předchozích dohromady. Tyto možnosti zapojení celého systému nám umožňují vytvoření prakticky libovolného měřícího obvodu splňujícího naše požadavky. Obr. 2.1 a) Lineární konfigurace, b) Hvězdicová konfigurace 6

2.2 Fyzická vrstva sběrnice Tato kapitola popisuje jednotlivé části fyzické vrstvy a jejich vlastnosti. 2.2.1 Základní parametry Při používání sběrnice GPIB je nutno dodržet jisté podmínky a omezení, které jsou dány vlastnostmi sběrnice. Hlavními limitujícími parametry jsou hodnoty uvedené v tab. 2.1. Tab. 2.1 Srovnání parametru sběrnice podle použití HS488 Parametr IEEE 488 IEEE 488 s HS488 Počet FJ 15 15 Max. délka sběrnice 20 m 15 m Max. vzdálenost mezi FJ 4 m (průměrně na sběrnici 2 m) 1 m Max. přenosová rychlost 1 MB (typicky 250 až 500 kb/s) 8 MB/s Existují tři typy zařízení, která se dají ke sběrnici připojit. Prvním typem jsou tzv. Posluchači, jenž jsou schopni pouze přijímat data, pokud jsou k tomu instruováni. Druhým typem je Mluvčí, jenž je schopen data posílat a posledním typem zařízením Kontrolér. Kontrolér je schopen řídit operace probíhající na sběrnici. V převážné většině se však vyrábí zařízení, která jsou kombinaci dvou a více typů. Minimálním požadavkem pro to, aby bylo možno po sběrnici správně komunikovat je, aby obsahovala alespoň jeden Kontrolér a alespoň jedno zařízení typu Posluchač nebo Mluvčí. Pokud je připojeno více Kontrolérů, tak je vždy aktivní pouze jeden a ten je schopen řízení předat dalšímu. Některé limitující hodnoty lze zvýšit použitím zařízení pro rozšíření sběrnice. Samotná sběrnice je založena na negativně pravdivostní logice, což definuje vztah mezi logickou a elektrickou hodnotou (tab. 2.2). Elektrické hodnoty odpovídají úrovním TTL a díky použité logice je sběrnice částečně chráněna vůči šumu. 7

Tab. 2.2 Elektrické a logické úrovně Logická hodnota Elektrická hodnota O (FALSE) 2.0 V (High) 1 (TRUE) 0.8 V (Low) 2.2.2 Fyzické zapojení a signály Samotná sběrnice je tvořena 24 vodiči (obr. 2.1) v stíněném pouzdře, z nichž je 8 datových (DIO1 DIO8) 5 pro vysílání jednovodičových zpráv (ATN, IFC, REN, SRQ, EOI) 3 pro řízení přenosu dat (DAV,NRFD,NDAC), tzv. Handshake lines 8 zemních vodičů Konektor pro připojení je navržen tak, aby bylo možno zapojit více FJ do jednoho uzlu. Toho je dosaženo tím, že je každý konektor průchozí. Z jedné strany se zapojuje do FJ nebo do jiného konektoru a na druhé straně se konektor používá pro připojení Obr. 2.2 Struktura IEEE 488 jiného kabelu. propojovacího Datové linky DIO (Data Input/Output bits) Datové vodiče jsou určeny pro data, nebo interfacové zprávy (stykové zprávy). Podle stavu na lince ATN se určí, zda jde o data nebo tyto zprávy. Všechny zprávy a i většina dat používá 7 bitový ASCII či ISO kód. Linky pro řízení přenosu dat Tyto vodiče jsou určeny pro zajištění bezchybného přenosu a zaručují přizpůsobení nejpomalejšímu připojenému zařízení. Tyto linky fungují asynchronně. Použití těchto signálů je například při korespondenci nazývané Handshake. 8

NRFD (Not Ready For Data) Indikuje, zda je zařízení připraveno přijmout byte zprávy. Linka je buzena všemi zařízeními pří přijímání zprávy, Posluchači při přijímání datových zpráv a Mluvčími při použití HS488 (kap. 2.2.1). NDAC (Not Data ACcepted) Tato linka nám signalizuje, jestli zařízení přijalo nebo naopak nepřijalo data. Linku budí všechna zařízení, která přijímají příkazy a také všemi Posluchači, jenž přijímají data. DAV (Data Valid) Pomocí této řídící linky se určuje, zda jsou data stabilní a mohou tedy být zařízením přijata. Linka je buzena Kontrolérem, pokud posílá povely, nebo Mluvčím ve chvíli kdy posílá datové zprávy. Linky pro řízení sběrnice Vodiče tohoto typu jsou určeny pro řízení sběrnice jako takové. Každá jednotlivá linka svým stavem určuje nějaký stav sběrnice a ten je dále využit při návrhu obslužného software. ATN (ATteNtion) Je určeno pro oznamování, že na datových vodičích (DIO) se nachází instrukce a ne data. Pokud je tedy ATN nastaveno na TRUE, na vodičích se vyskytují interfacové zprávy (kap. 2.3) a pokud je FALSE, tak jsou na linkách přístrojové zprávy (kap. 2.3). Linka ATN je používána i se signálem EOI při provádění paralelních hlášení (Parallel poll, kap.2.3.1). IFC (InterFace Clear) Systémový Kontrolér používá tuto linku pro resetování sběrnice a nastavení sama sebe na tzv. Kontrolér ve službě (Controller-in-Charge). Tato linka se využívá při inicializaci sběrnice. REN (Remote ENable) Linka je buzena Kontrolérem a umožňuje zařízením přejít do místního či vzdáleného režimu. Pokud je na této lince TRUE, zařízení přejde do vzdáleného módu ve chvíli, kdy je adresováno Kontrolérem. Jestliže je linka nastavena na FALSE všechna zařízení se vrátí do místního módu. Do tohoto módu lze přejít i stiskem určitého tlačítka na přístroji. SRQ (Service ReQuest) Zařízení budí tuto linku ve chvíli, kdy požadují, aby je systémový Kontrolér obsloužil. Kontrolér se poté dotazuje každého zařízení připojeného ke sběrnici, dokud nenajde to, které požadovalo obsluhu. Následně provede veškeré nutné operace. EOI (End-Or-Identify) Tento signál je používán pro označení konce přenosu dat. Linka je buzena posledním bajtem dat v průběhu přenosu. A jak již bylo řečeno u signálové linky ATN, je používán při paralelním hlášení. 9

2.3 Principy komunikace Abychom byli schopni správně komunikovat, musí byt zajištěno, aby bylo možno každé zařízení jednoznačně identifikovat. K tomu se využívá adresování, jež zaručuje, že každému zařízení je přidělena unikátní adresa v rozsahu 1 30. Tato adresa se nastavuje pomocí ovládacích prvků na každém přístroji. U některých přístrojů lze nastavit i sekundární adresu. To jestli zařízení tuto možnost umožňuje, najdeme v manuálu k danému přístroji. Adresu je samozřejmě možné změnit i přes sběrnici. Jak již bylo řečeno v kap. 2.2.1, v každém provozu schopném systému se musí nacházet alespoň jeden systémový Kontrolér, který řídí komunikaci na sběrnici. Samotná komunikace probíhá mezi jednou vysílací jednotkou a jednou nebo několika přijímacími jednotkami. Směr přenosu jako takový není rozlišen. Směr je určován tak, že každá jednotka má přiřazeny dvě adresy. Jedna je přijímací (MLA) a druhá vysílací (MTA). Adresy jsou odlišeny pomocí dvou bitů a to konkrétně pomocí 6. a 7.. Prvních pět bitů je stejných. Na sběrnici se komunikuje pomocí dvou druhů zpráv, jimiž jsou Interfacové zprávy a Přístrojové zprávy, které jsou rozlišovány pomocí signálové linky ATN. Interfacové Zprávy Interfacové zprávy mohou obsahovat jednak adresy funkčních jednotek, ale i univerzální příkazy, sekundární příkazy a adresované příkazy. Univerzální příkazy jsou určeny pro vykonání určité činnosti ve všech přístrojích připojených na sběrnici GPIB najednou, bez toho aniž by musela být tato zařízení adresována. Adresované příkazy jsou určeny pro jednotlivá zařízení a tudíž je nutno zařízení adresovat. Z tohoto důvodu je nastavování přístrojů tímto způsobem pomalejší. Univerzálních příkazů je však méně a nedají se tudíž použít na detailnější ovládání přístrojů. Přístrojové zprávy Zprávy tohoto typu se dělí na programovací příkazy, naměřená hodnoty a vnitřní stavy přístroje. Více o těchto zprávách není nutno hovořit, neboť jejich názvy mluví za vše. 10

2.3.1 Možnosti komunikace po sběrnici Možnosti komunikace po sběrnici jsou dvě. Nazýváme je Sériové hlášení (Serial poll) a Paralelní hlášení (Parallel poll). Aby bylo možno komunikaci provádět, existují v přístrojích různé registry, které určují jejich aktuální stav. Tyto registry lze nastavovat nebo mohou být čteny. Každý z přístrojů je z tohoto hlediska popsán Stavovým modelem. Stavový model Stavový model nám umožňuje zjišťovat stav přístroje pomocí registrů, které jsou zabudovány v každém přístroji a jejich struktura a význam je předem dán standardem IEEE-488.1(kap. 2.4). Avšak každý registr obsahuje povinné části a části, které jsou dány výrobcem a jejich význam je tedy nutno hledat v manuálu k danému přístroji. Na obr. 2.3 vidíme základní strukturu registrů. U každého stavového registru je ještě pomocný registr, kterým je možno maskovat jednotlivé bity. Pokud tedy nechceme, aby kontrolér reagoval Obr. 2.3 Stavový model na některé události, tak to učiníme nastavením právě tohoto registru a logickým násobením s původním stavovým. Tyto pomocné registry mají v názvu obsaženo slovo Enable. Sériové hlášení Tento typ komunikace nám umožňuje získávání specifických informací z přístrojů, která požadují obsluhu a vyhledávání těchto přístrojů. Mechanismus sériového hlášení 11

Obr. 2.4 STB Status byte (stavový bajt) je založen na stavu STB (obr. 2.4) a na žádosti přístroje o obsluhu (SRQ). Pokud tedy přístroj vyšle signál SRQ a řídící kontrolér tento signál detekuje. Je tento přístroj adresován a je přečten jeho STB, kde je ověřován bit RQS. Podle vyhodnocení je provedena adekvátní akce. Pokud chceme určovat důvod signalizování SRQ detailněji můžeme použít Event Register Byte. Díky způsobu komunikace je tento způsob hlášení pomalejší. Paralelní hlášení Schopností tohoto typu komunikace je možnost zjišťování stavu několika přístrojů současně. Stavová informace se nachází v jediném bitu a tudíž je možné získávat paralelní hlášení i z osmi přístrojů najednou v rámci jednoho volání. Každý přístroj má přidělen Individuální stavový bit (IST Individual Status Bit). Hodnotou tohoto bitu se určuje směr, kterým jsou data přenášena. Každé zařízení musí být před použitím paralelního hlášení nastaveno. Při nastavení je přístroji přidělena jedna linka z DIO1 DIO8 na níž bude moci odpovídat. Pro ukončení paralelního hlášení je nutno tuto schopnost opět vypnout. Výhodou tohoto typu komunikace je rychlost, avšak je omezen pouze na některé operace. 2.4 Standardy sběrnice IEEE 488 Proto, aby bylo možno sběrnici GPIB používat různými výrobci a tedy aby byla zaručena jednoznačnost jednotlivých parametrů. Bylo nutno zavézt určité standardy. Vzhledem k vývoji techniky se postupně vytvořilo několik těchto standardů, které specifikují jednotlivé vrstvy sběrnice. Každá z těchto verzí doplňuje či upravuje tu předchozí. IEEE-488 Tato varianta standardu byla zcela první, která byla publikována. Specifikovala především parametry, které jsou uvedeny v tab. 2.1 a definovala jednotlivé vodiče sběrnice (kap. 2.2.2). To by obecně nestačilo pro možnost širšího použití, a proto byly 12

přidány další vrstvy standardu. Tyto vrstvy umožňovaly větší univerzálnost. Tento standard se používal především u prvotní verze sběrnice, označované HP-IB. IEEE-488.1 V celém znění se tento standard označuje jako ANSI/IEEE 488.1 [IEC 60625-1] IEEE Standard Digital Interface for Programmable Instrumentation. V této verzi je definována fyzická a elektrická vrstva. Dále pak signálové a komunikační protokoly, respektive jejich nižší úrovně. Konkrétně je specifikován způsob adresování, předávání řízení a Handshaking. Jsou zde také specifikovány čtyři základní typy zařízení, jako je Mluvčí, Posluchač, Kontrolér a Systémový kontrolér společně s jejich možnostmi. Oblasti, jež tato verze standardu nezahrnuje, se týkají především kompatibility zařízení a poškození dat. Z hlediska kompatibility přístrojů, zde nebyly definovány především minimální požadavky na jednotlivé typy zařízení, díky čemuž může zařízení obsahovat veškeré funkce nebo jen vybrané. Tím je dána možnost vzniku systému se zařízeními, která mají různé schopnostní úrovně. Z tohoto důvod není také zaručena schopnost komunikace a při jejím vykonávání může dojít k selhání. Pokud se podíváme na oblast dat, tak zde byl hlavním problémem formát dat. To jak byla data formátována, záleželo především na výrobci daného zařízení. Také zde nebyl zcela definován signál EOI (kap. 2.2.2), který mohl být téměř libovolný. Další velkou mezerou byla nepřítomnost specifikace sledu příkazů a odpovědí na ně. V tomto standardu je definován i stavový bajt obecně s přesnou definicí pouze jednoho bitu. Ostatní bity mohou mít různé významy, což záleželo opět na výrobci. S tím také souviselo to, že nebyly specifikovány vztahy mezi jednotlivými stavovými registry uvnitř přístroje Zde popsané mezery v definici standardu se řešili individuálně pro každý měřící systém a ošetřovaly se v programovém kódu. Později byl vytvořen standard IEEE- 488.2, který tyto mezery ve specifikacích odstranil. IEEE-488.2 Tento standard byl navržen, aby usnadnil základní proces komunikace s přístroji. Specifikuje standardy kódů, formáty dat, protokoly a snaží se zahrnout oblasti, které byly v IEEE-488.1 opomenuty. Součástí je i specifikace SCPI (kap. 2.6) 13

HS488 V rámci rostoucích nároků na přenosovou rychlost byla sběrnice opatřena protokolem pro vysokorychlostní přenos nazývaným HS488 (High Speed Data Transfers), který umožňuje ve spojení s příkazy, pro tento protokol určenými, dosáhnou mnoho násobně vyšší rychlosti (tab. 2.1). 2.5 Vrstva ovladačů a software Ovladače jsou nejzákladnější softwarovou vrstvou spojující hardware a uživatelské aplikace. Tvoří rozhraní, díky němuž není nutno, aby programátor nebo uživatel musel znát detailně hardware, ale stačí, aby používal příkazy k tomuto účelu určené. Implementace ovladače je závislá na typu operačního systému což je v našem případě MS Windows. Pro používání zařízení na sběrnici GPIB je nutné mít tyto ovladače přítomné v našem systému. Tyto ovladače jsou do systému zaváděny dynamicky, což znamená, že při detekci zařízení je ovladač zaveden do paměti a při odpojeni z pamětí odstraněn. O samotných ovladačích není nutno příliš hovořit. Podstatnější částí vzhledem k tématu práce je VISA knihovna, která bude popsána v následující kapitole (kap. 2.5.1). 2.5.1 Knihovna VISA Pro programování je vhodnější mít k dispozici funkce zařízení a ne jen vlastnosti rozhraní sběrnice. V rámci toho je potřeba udržet kompatibilitu mezi jednotlivými zařízeními a rozhraními sběrnic. Tohoto je dosaženo právě pomocí VISA. Výsledkem je struktura jednodušší na pochopení, která zároveň redukuje počet funkcí, jež se musí uživatel naučit nebo pochopit. Tím se i krátí čas potřebný pro vývoj aplikací pro různá rozhraní. Jinak řečeno, VISA zajišťuje transparentní komunikaci mezi zařízeními a programem. Těchto výhod je dosaženo vytvořením velice malé instrukční sady, jež obsahuje takové příkazy, jež plně postačují na obsluhu a využití všech funkcí přístrojů. Při používání VISA knihovny využíváme tři základní části, jimiž jsou atributy, události a operace. Atributy jsou parametry, kterými lze nastavit vlastnosti, chování zařízení nebo relací. Atributy lze podle potřeby použít jako lokální či globální. Události známe spíše 14

pod pojmem asynchronní komunikace, což v praxi znamená, že nejsou závislé na procesu (programu) a musíme určit, jak budou ošetřeny stavy, které mohou nastat. Operace jsou samotnými funkcemi, které používáme pro komunikaci s přístroji popřípadě řadičem sběrnice. Vysvětlovat zde jednotlivé operace by bylo mimo téma této práce, ale pro lepší pochopení samotné práce je nutno popsat alespoň základní funkce (kap. 2.5.1.1) použité v programu, jež je úkolem této práce. Detailnější informace lze najít v [1], [2]. 2.5.1.1 Základní operace Základními operacemi, jež jsou při vývoji aplikací pomocí VISA používány, jsou viopen () viclose () viwrite () viread () visetattribute () Každá funkce v rámci knihovny vrací číselnou hodnotu, která značí, jestli byla operace úspěšná či ne. viopen / viclose Jak je z názvů těchto dvou funkcí patrné, slouží k otevření resp. k ukončení spojení mezi uživatelskou aplikací a používaným zařízením. Ještě před samotným vytvořením spojení, tedy voláním viopen() je nutno vytvořit spojení se správcem zdrojů pomocí funkce viopendefaultrm(). Toto spojení je možno ukončit funkcí viclose(). Např. status = viopendefaultrm(defaultrm) status = viopen(defaultrm, "GPIB0::1::INSTR", VI_NULL, VI_NULL, session) status = viclose (session) viwrite / viread Funkce jsou určeny pro zápis instrukcí do zařízení a pro čtení dat ze zařízení. Např. status = viwrite(session, buffer, Length(buffer), retcount) status = viread(session, buffer, MAX_CNT, retcount) 15

visetattribute Funkce slouží k nastavování atributů zařízení. Nejčastějším použitím je nastavení timeoutu, jež nám značí, jak dlouho jsou data čí instrukce platné. Opačnou funkcí k této je vigetattribute(), která nám vrátí stav požadovaného atributu pro vybrané zařízení. Např. status = visetattribute(session, VI_ATTR_TMO_VALUE, 5000) Význam jednotlivých parametru ve funkcích je možno najít např. v [2]. 2.6 Struktura příkazů GPIB Standardem pro komunikaci po sběrnici je SCPI (Standard Commands for Programmable Instruments, [6]). SCPI je souhrnem pravidel, kterak má probíhat komunikace přístroje s řídící jednotkou a jak mají být formátovány příkazy pro zařízení. Tato pravidla musí být navržena tak, aby nezáleželo na přenosovém protokolu a ani technickém řešení. Příkazy se pro jednotlivé přístroje mohou lišit, ale musí být dodržena určitá struktura. Hierarchii příkazu lze znázornit pomocí stromové struktury, jako třeba na obr. 2.5. Do jakých skupin jsou příkazy pro daný přístroj řazeny, se můžeme dočíst v příslušném manuálu. Obr. 2.5 Stromová struktuta příkazů Samotným příkazem přístroji říkáme jak se má v tomto stromě pohybovat. Standard SCPI proto také definuje dvě oddělovací značky, určující směr pohybu. Značka : nám říká, že máme pokračovat směrem k listům stromu, kdežto ;, že máme zůstat v aktuální větvi. Použití těchto značek vidíme na příkladech :MEAS:CURR:DC? 2, 0.01 SAMP:COUN20;:TRIG:SOUR EXT kde první příkaz provede odměr (MEASure) stejnosměrného (DC) proudu (CURRent) na rozsahu 2 A s přesností 0,01 A. Druhy by při externím trigrování 16

(TRIGger: SOURce EXTernal) provedl čtení dvaceti vzorků (SAMPle: COUNt20). Každý z těchto příkazů má také jiný účel, z hlediska zasílaní dat. První obsahuje znak? říkající přístroji, že má získané hodnoty poslat. To znamená, že bude po řídícím prvku systému požadovat obsluhu, nahozením bitu SRQ (Service ReQuest). Druhý příklad tento symbol neobsahuje a je tedy pouze nastavovací. Odměr musí být proveden například posláním příkazu READ?. 17

3 Vývojové prostředí VBA V této kapitole je popsáno samotné vývojové prostředí a práce v něm. Jsou zde ukázány jednoduché úkony, jež nám prostředí poskytuje. Úkolem této kapitoly není naučit čtenáře prácí s celým VBA, ale pouze ukázat některé často používané postupy a možnosti, jež by měli zpřehlednit samotný zdrojový kód a ukázat jak bylo při tvorbě programu postupováno. 3.1 Úvod do VBA VBA neboli Visual Basic for Applications, je prostředkem pro tvorbu programového kódu v rámci jiné aplikace. VBA je součástí kancelářského balíku MS Office. VBA jako takové je odvozeno od programovacího jazyka Visual Basic, avšak jeho instrukční sada byla upravena tak, aby bylo možno co nejlépe využívat jeho funkcí v aplikaci, v které bude vytvořený program spouštěn. V případě této práce se jedná o program Excel. 3.2 Orientace ve VBE VBE je zkratkou pro Visual Basic Editor a je takto označováno takzvané IDE (Integrated Development Environment), což je prostředí, ve kterém je program psán a slouží zároveň i pro překlad a ladění programu. To jak vypadá okno VBE je vidět na obr. 3.1. Nejdůležitějšími částmi prostředí jsou okna, vyznačená v obrázku čísli. Do samotného IDE se dostaneme pomocí tlačítka v nástrojové liště Excelu. Okno Projektu Na obr. 3.1 je toto okno označeno 1. Okno slouží k orientaci mezi jednotlivými projekty a mezi jejich částmi. Částmi zde rozumíme Formuláře (Forms), Moduly (Modules) a Moduly tříd (Class Modules). V rámci formulářů lze vytvořit klasická okna s tlačítky a jinými komponentami, jak jsme zvyklí z jiných aplikací. V našem programu je pomocí formuláře vytvořeno okno nápovědy. Moduly slouží jako místo, kde můžeme psát kód aplikace. Pokud máme v naší aplikaci více tlačítek, můžeme pro každé tlačítko 18

vytvořit samostatný modul a jeho kód psát do něho, čímž dosáhneme přenositelnosti kódu, neboť moduly lze snadno exportovat do jiných pracovních sešitů Excel. Obr. 3.1 Integrované vývojové prostředí (IDE) ve VBA Zároveň je možno tento kód následně použít ve více listech jednoho sešitu, aniž bychom ztratili přehlednost a nehrozí nám nechtěné smazání kódu v případě odstranění příslušného listu. Poslední jmenované, tedy moduly tříd, slouží k vytváření vzorů objektů, jež mohou mít nějaké vlastnosti a metody. Objektem muže byt cokoliv, třídou to, co můžeme popsat pomocí námi definovaných pojmů. Hlavím rozdílem je skutečnost, že třída nic nedělá a nezabírá paměť. Abychom s třídou mohli pracovat, musíme ji inicializovat jako objekt. Okno vlastností Slouží pro zobrazení vlastností modulu nebo jiných komponent. Tyto vlastnosti lze měnit a v rámci aplikace bylo toto okno používáno především pro změnu jména modulu, neboť automaticky přidělované jméno nám jednoznačně neříkalo, ke kterému tlačítku patří a tím byla do jisté míry zhoršena přehlednost kódu. Na obrázku obr. 3.1 je toto okno označeno 3. 19

Okno zdrojového kódu Toto okno má pouze jediný účel a to zápis zdrojového kódu a orientaci v něm. V horní části tohoto okna vidíme dva rozbalovací seznamy. Seznam vpravo nám slouží k zobrazení a přechodu mezi funkcemi v daném modulu. Funkce napsaná ve VBA je většinou označována jako tzv. makro, ale v rámci této práce je budeme označovat jako funkce nebo procedury. V obrázku obr. 3.1 vidíme okno pro zápis kódu pod číslem 2. Panel nástrojů V horní části obrazovky na obr. 3.1 jsou umístěny panely nástrojů. Zde stojí za zmínku hlavně tlačítka pro spuštění, pozastavení a zastavení běžícího programu respektive makra. Využití těchto tlačítek je především při ladění. 3.3 Použití VBA Jazyk jako takový je standardním programovacím jazykem a z toho důvodu se nijak podstatně neodlišuje od jiných. Bohužel jsou zde použity některé konvence, které se v jiných jazycích již nepoužívají. Jako příklad lze uvést přiřazování hodnot do proměnných a porovnávání obsahu dvou proměnných. Prakticky ve všech dnes používaných jazycích se používá pro porovnávání znak == a avšak zde mezi těmito operacemi není rozdíl a používají pouze jedno rovnítko. To jaká operce se má provést se rozlišuje pomocí rozhodovacích příkazů jako je if () nebo while (). Pokud pomineme některé malé nedostatky (např. tečková notace je neúplná), je používání poměrně intuitivní a s trochou cviku je i pohodlné. Vhledem k návrhu naší aplikace je třeba umět plánovat spouštění částí kódu a napevno definovat (adresovat) některé buňky. K tomu nám slouží funkce, které jsou popsané v kapitolách kap. 3.3.1 (plánování spouštění) a kap. 3.3.2 (adresování buněk). Abychom mohli v rámci VBA používat operace z knihovny VISA, je nutné mít nainstalované ovladače a musíme vložit referenci na knihovnu s těmito metodami. Vložení reference na knihovnu se provede přes menu VBE,do něhož se dostaneme tak, jak je ukázáno na obr. 3.2a) a v okně, které se nám následně otevře obr. 3.2b) stiskneme tlačítko Browse, načež se nám otevře klasická nabídka pro otevření souboru, jak ji 20

známe z jiných aplikací. Pomocí tohoto okna najdeme soubor visa32.dll. Poté je již možno plně využívat funkcí této knihovny. Provedení celé této operace může být požadováno po prvním otevření souboru na počítači, na kterém nebyl předtím používán, či byl použit na jiném PC. Jednoduše řečeno, soubor při přenášení mezi počítači referenci ztrácí. Obr. 3.2 a) Položka References v menu VBE, b) Okno References 3.3.1 Příkaz OnTime Tento příkaz slouží k plánování spouštění procedur. Syntaxe příkazu je Application.OnTime(EarliestTime, Procedure, LatestTime, Schedule) kde parametr EarliestTime udává, kdy má být procedura Procedure spuštěna a LatestTime do jaké doby je povolení spuštění platné. Parametr Schedule slouží pro aktivaci nebo deaktivaci naplánované úlohy. Pokud chceme naplánovanou úlohu deaktivovat, musí být zadány stejné parametry jako při aktivaci, ale s tím rozdílem, že parametr Schedule = false oproti aktivaci, kdy je true. Formát jednotlivých parametrů lze najit na [5]. Důležité však je, pamatovat si, že funkce, jež má být volána, nesmí mít parametry. 21

3.3.2 Absolutní adresování Pojem absolutní adresování je spojen se samotným prostředím Excel. Ve VBA se s takto určovanou buňkou pracuje téměř stejně jako s komponentou. V Excelu existují dva způsoby, jak lze adresovat buňky. Prvním je absolutní adresování, které je pro náš účel výhodné a budeme ho proto používat. Druhým je relativní adresování, jež má také svoje výhody, ale v rámci naší implementace pro nás nejsou přínosem. Absolutní určování pozice buňky má tu výhodu, že pokud dojde k vložení řádku nebo sloupce před takto adresovanou buňku je pozice námi požadované buňky aktualizována všude, kde je použita. Toho lze dosáhnout dvěma způsoby. Jako první si uvedeme postup, kdy použijeme standardní označení buňky. Toto označení se skládá ze sloupce a řádku (např. D4 ). Pokud před označení sloupce a řádku vložíme symbol $ dosáhneme tím absolutního adresování. Obecně to lze zapsat ve tvaru $<sloupec>$<řádek>. Druhou metodou jak dosáhnout našeho cíle, je pojmenování cílové buňky. Pokud tak učiníme, buňka je jednoznačně určena a lze se na ni kdykoliv odkazovat, bez ohledu na to co se v sešitě provádělo. Konkrétní postupy a vlastnosti užité přímo v aplikaci budou popsány v následující kapitole, neboť jejich význam pro tuto aplikaci je lépe pochopitelný v souvislosti s jejich použitím. Celkově lze říci, že VBA je poměrně dobrým nástrojem pro vytváření doplňků do hostitelských aplikací, avšak jeho možnosti jsou omezené. Aplikace by neměly být příliš rozsáhlé, a pokud tomu tak je, musí se v kódu udržovat přehlednost a modularita. 22

4 Software pro ovládání měřících aparatur po sběrnici IEEE 488 Tato kapitola bude pojednávat o tvorbě, vlastnostech, postupech použitých při tvorbě programu a především o práci s tímto programem. Tento program byl vytvářen jako novější verze již existujícího. Tomu odpovídají jeho funkce, které jsou z existující odvozeny, avšak program byl vytvářen nezávisle. Pro lepší přechod uživatele ze starší verze na novou bylo uživatelské rozhranní navrženo tak, aby se podobalo starší verzi. Hlavním cílem bylo přepracování programu do podoby využívající příkazy VISA a nebyla zde používána kombinace se starší verzí instrukcí. Program byl primárně vytvářen ve verzi Excel 2003 tak, aby byl spustitelný jak v této verzi, tak i ve verzi Excel 2007. Tento postup byl zvolen kvůli kompatibilitě grafických prvků, neboť při opačném postupu by mohlo dojít špatnému zobrazování těchto prvků ve starších verzích Excel. Pro snadnější orientaci v kódu je tlačítku s určitým názvem přiřazen modul, jehož jméno se shoduje. Podrobněji je tato vlastnost popsána v kap. 4.1.3. 4.1 Uživatelské rozhraní aplikace Hned na začátku je nutné si popsat prvky, které vidíme po spuštění našeho programu. Vzhled aplikace po spuštění vidíme na obr. 4.1, kde jsou také zvýrazněny ty komponenty, které je nutno znát, abychom byly schopni správně ovládat aplikaci. Jak vidíme, tak aplikace má vzhled standardního listu sešitu Excel s přidanými komponentami. Jsou zde jednak tlačítka určená pro samotné ovládání aplikace, ale také pasivní prvky určené pro sledování stavu běhu programu. Účel jednotlivých komponent bude vysvětlen v následujících kapitolách. Veškeré použité komponenty jsou standardního typu. Excel nabízí ještě komponenty typu ActiveX, ale pro větší bezpečnost a stabilitu programu se používá právě zmíněných standardních prvků. Se sešitem je nadále možno pracovat jako s normálním souborem Excelu bez jakýchkoliv omezení. Veškeré zde používané hodnoty jsou uvažovány v základním nastavení, tedy po prvním spuštění originálního souboru. Všude kde je to nutné, bude tato informace v textu připomenuta. 23

Obr. 4.1 Uživatelské rozhraní aplikace Vzhledem k výše uvedenému faktu, je i příprava před zahájením samotného měření z velké části tvořena standardními úkony, běžně používanými při práci s Excelem. V krátkosti si tento postup popíšeme Otevřeme sešit Excelu Vyplníme hodnoty v seznamu přístrojů a vybereme typ měření Pokud nevíme, na kterých adresách jsou přístroje, lze využít funkce tlačítka Najít zařízení (kap. 4.3.2) Provedeme inicializaci uživatelského rozhraní tlačítkem GUI INIT (kap. 4.3.1) Pokud proběhl GUI INIT v pořádku, pokračujeme načtením hodnot ze Seznamu zařízení a posláním inicializačních příkazů přístrojům. To vše pomocí tlačítka Test připojení (kap. 4.3.3) Vybereme, zda mají či nemají být posílány zakončovací příkazy (FINISHcmds). To učiníme zaškrtnutím, případně odškrtnutím, zaškrtávacího boxu označeného Posílat FINISHcmds (kap. 4.3.5). 24

Provedením všech předchozích kroků v daném pořadí jsme připravili vše potřebné pro zahájení měření, jehož provádění je zahájeno po stisku tlačítka Spustit měření (kap. 4.3.4) 4.1.1 Seznam zařízení Na obr. 4.1 je tato část rozhraní označena 1. Nadpis každého sloupce (obr. 4.2) nám říká význam hodnoty, jež musí, nebo může buňka v tomto sloupci obsahovat. Některé z těchto položek Obr. 4.2 Sloupce seznamu přístrojů jsou povinné a musí tedy být vyplněni. Za povinné jsou považovány především hodnoty Aktivní/Neaktivní Adresa Sloupec výsledku cmds Zadání těchto hodnot je kontrolováno při inicializaci (viz kap. 4.3.1). Formát seznamu Velmi důležitou věcí, kterou musí uživatel znát, je jak program určuje, kde se seznam nachází a jak musí být vyplněn. Určení počátku seznamu je řešeno pomocí absolutního adresování buněk (kap. 3.3.2). Jméno buňky určující seznam přístrojů musí byt nastaveno na _deviceslist a v aktivním listu musí být právě jedna tato buňka. Pokud tomu tak není nelze načíst konstanty ani příkazy pro přístroje, v důsledku čehož nelze dále pokračovat v měření a program se stane nefunkčním. Nepřítomnost buňky s tímto názvem je detekována, ale dále se s touto informací nepracuje. Z tohoto důvodu je na uživateli, aby zajistil její přítomnost. V základním nastavení sešitu je tato buňka umístěna na začátku seznamu přístrojů a obsahem buňky je text označující sloupec Seznam přístrojů. Pokud budeme buňku přesouvat, musíme dávat pozor na následné umístění dalších sloupců, jinak může dojít ke stavu, kdy například hodnotě Adresa bude odpovídat hodnota Sloupec výsledku a podobně, což je nežádoucí a může dojít k chybě. Pokud 25

bychom chtěli předělat pořadí jednotlivých hodnot, tak to lze, ale je již třeba tuto úpravu provézt přímo ve VBA pomocí konstant k tomuto účelu určených (kap. 4.2). Další podmínkou, kterou je nutno splnit, je zadávání hodnot do sloupce Aktivní/Neaktivní. Hodnoty v jednotlivých řádcích musí navazovat. Nesmí tedy nastat situace, kdy v buňce není zadána hodnota a přitom v následujících řádcích zadány jsou. Program sice správně určí počet zařízení a kolik jich je aktivních, ale nemusí již správně určit, které hodnoty se mají načítat. Pokud jde o povinné položky seznamu, tak většina z nich musí být vyplněna pouze v případě, že zařízení je nastaveno jako aktivní. V opačném případě o jejich nevyplnění nebude uživatel informován a nepřítomnost jejích hodnot nebude brána v potaz. Hodnoty v seznamu V následující tabulce (tab. 4.1) jsou uvedeny jednotlivé sloupce seznamu a formát, v kterém musí být zadány. Tab. 4.1 Sloupce a jejich hodnoty Sloupec Typ Hodnota Povinný Seznam přístrojů text libovolná NE Aktivni/Neaktivni číslo 0 nebo 1 ANO Adresa číslo 1 až 30 ANO (pokud aktivní) Sloupec výsledku číslo 1 až 65535 ANO (pokud aktivní) INITcmds text příkaz NE cmds text příkaz ANO (pokud aktivní) FINISHcmds text příkaz NE Omezení sloupců výsledků je dáno specifikacemi MS Excel. Stejnou hodnotou je omezen i počet řádků výsledku. Dodržováním této hodnoty bude zaručena zpětná kompatibilita se staršími verzemi Excel. Pouze nejnovější verze MS Excel podporuje vyšší hodnoty. Hodnotou příkaz je myšlen text obsahující příkazy pro zařízení a případně definované uživatelské příkazy a to uzavřené mezi znaky /. Pokud tedy jde o používání tohoto seznamu, lze říci, že je jednoduché a snadné, při dodržení jistých pravidel. Tato pravidla jsou nastavena tak, aby udržovala konzistenci dat, ale zároveň umožnila jistou volnost v přizpůsobení uživatelem. 26

4.1.2 Protokol o průběhu Okno protokolu slouží jako pasivní zobrazovací prvek. To znamená, že jeho pomocí nelze ovládat běh programu, ale pouze v něm můžeme sledovat, co právě program provádí a v jakém stavu se nachází. V dalším textu budeme tento prvek pro zjednodušení označovat jako log. Okno logu nalezneme v pravé části obrazovky, jak je ukázáno na obr. 4.1 a označeno číslem 2. Jelikož výpis do logu je poměrně nákladnou operací z hlediska běhu programu, je ovládání tohoto prvku navrženo tak, že pokud nepotřebujeme, aby byl výpis prováděn, lze jej deaktivovat. Deaktivace výpisu je závislá na tom, zda je log zobrazen či nikoliv. Zobrazení nebo skrytí logu je umožněno pomocí tlačítka s označením LOG (více viz kap. 4.3.5). To nám umožňuje poněkud urychlit běh programu. Ukázku Obr. 4.3 Ukázka protokolu o běhu programu toho, co se do logu vypisuje vidíme na obr. 4.3. Je zde vidět průběh inicializace (kap. 4.3.1) a testu připojení (kap. 4.3.3). Mazání obsahu logu je možné dvěma způsoby. Jedním je ruční mazání pokud si chceme uchovat jen nějaké informace a smazat ty, které nejsou v tu chvíli podstatné. Další možností je smazání veškerého obsahu logu, pomocí tlačítka k tomuto účelu vytvořenému s nápisem Clear LOG (kap. 4.3.5). 4.1.3 Ovládací prvky programu Ovládacími prvky jsou v našem případě myšlena tlačítka (CommandButton), kterých se v naší aplikaci vyskytuje osm a jeden zaškrtávací box (CheckBox). Ovládacími proto, že je jimi možno ovládat běh programu. Na obr. 4.1 jsou tyto prvky označeny číslem 3. Tlačítka jsou rozdělena do dvou skupin, aby byla zajištěna přehlednost. 27

Každému tlačítku je přiřazena jedna funkce, jejíž vykonávání je zahájeno po stisku příslušného prvku. Více o funkcích jednotlivých tlačítek je uvedeno v kap. 4.3. Pro pořádek si však uvedeme názvy tlačítek, které odpovídají názvům modulů, do kterých je kód programu rozdělen. Názvy jsou uvedeny v tabulce tab. 4.2. Tab. 4.2 Ovládací prvky a jejich název, typ a volaná funkce Označení komponenty Název komponenty/modulu Typ komponenty Volaná funkce GUI INIT bt_gui_init CommandButton GUIInit Najít zařízení bt_search_devices CommandButton SearchDevices Test připojení bt_connection_test CommandButton ConnectionTest Spustit měření bt_measure CommandButton RunMeasuring LOG bt_log CommandButton Log Clear LOG bt_log_clear CommandButton LogClear Stop bt_stop CommandButton StopMeasuring Help bt_help CommandButton Frm_Help.Show Posílat FINISHcmd chb_fincmdset CheckBox --- V tabulce vidíme, že u tlačítka bt_help se nevolá obecná funkce, ale přímo metoda pro zviditelnění formuláře. U zaškrtávacího boxu chb_fincmdset není volána žádná funkce. Důvodem je to, že se zde nevykonává žádná významná akce při změně stavu. Je pouze vypsána informace o změně hodnoty do logu. Všechny volané funkce uvedené v tab. 4.2 jsou procedury, které jsou volané základní metodou vytvořenou VBA podle druhu akce provedené na ovládacím prvku (v našem případě akce Click). Avšak z hlediska modularity jsou pro nás důležitější právě funkce uvedené, neboť v případě, že budeme chtít funkčnost jednoho tlačítka použít v jiném listu, stačí pouze nově vytvořené komponentě říci, aby volala právě jednu z uvedených metod. 4.1.4 Typy měření a jejich nastavení Dalšími velmi významnými součástmi našeho programu jsou prvky označené na obr. 4.1 číslem 4. Vzhledem k průběhu měření je nejdůležitější komponentou z této skupiny rozbalovací seznam cb_choice (obr. 4.4). Jsou vytvořeny tři typy měření. Každý z nich má svůj účel a použití. Názvy jednotlivých typů měření by měli uživateli 28

Obr. 4.4 Výběr typu měření říci jak bude přibližně odměr vypadat. Avšak pro lepší pochopení si je podrobněji rozebereme. Společnou vlastností všech druhů odměru je to, že respektují zadané inicializační a zakončovací příkazy. Podmínkou pro zahájení odměru je vybrání jednoho platného typu měření. Bez jeho vybrání není program schopen dále pokračovat, neboť neví, jakým způsobem má provádět odměr a výpis jeho výsledků. Jeden odměr do řádku Tento typ odměru je nejzákladnější a je vytvořen pro provedení jednoho odměru, bez jakékoliv další návaznosti. Výpis výsledků měření je prováděn do prvního řádku oblasti výsledků (kap. 4.1.5) a s provedením každého dalšího odměru je tento řádek přepisován novějšími hodnotami. Užití této varianty měření je hlavně pro provádění informativního odměru, nebo odzkoušení funkčnosti navrženého měřícího systému. Samozřejmě ji můžeme používat pro standardní měření, ale vzhledem k způsobu provádění výpisu výsledku není příliš výhodnou. Více odměrů pod sebe Je obdobou předchozího způsobu provádění odměru, ale je zde upraven způsob, jakým jsou vypisovány výsledky. Ty jsou zde zobrazovány pod sebe a tudíž se nám zachovává historie hodnot získaných předchozími odměry. Díky této vlastnosti má tato varianta mnohem více možností použití. Využít této varianty měření zahrnuje možnosti předchozího typu a dále ho rozšiřuje. Hlavními možnostmi použití je měření charakteristik a dlouhodobé sledování měřených veličin v případě, kdy potřebujeme provádět odměry v různých časových intervalech v námi určené okamžiky. Dále může být použit pro iterační vyvažování. 29

Obr. 4.5 Iterační vyvažování Postup iteračního vyvažování v rámci tohoto typu měření může být následující (obr. 4.5). Pro fyzické provádění nastavování nám postačí jeden voltmetr a generátor. V rámci Oblasti výsledků vložíme např. do sloupce D dvě počáteční hodnoty pro nastavení generátoru, jež je vstupem můstku. Generátorem tyto hodnoty nastavíme a na voltmetru odečteme stav na výstupu můstku po provedení změny vstupní hodnoty a vypíšeme jej do sloupce C. Do dalších řádků sloupce D již vložíme některý ze vzorců používaný pro výpočet vyvážení (Excel umí pracovat i s komplexními čísli). S postupujícím počtem odměrů se budeme blížit nulové odchylce. Závislost na čase Poslední typ měření, jež je v naší aplikaci implementován. Tento způsob je již zcela automatizován a od uživatele požaduje pro svoji činnost nastavení hodnot, které najdeme hned pod rozbalovacím seznamem (obr. 4.6). Pro nastavení parametrů je potřeba znát pouze dobu, po kterou chceme měření provádět a interval po kterém se mají jednotlivé odměry provézt. Obr. 4.6 Parametry pro Závislost v čase Počet odměrů je spočítán automaticky podle vztahu (1), (1) 30

kde X je počet odměrů a T měření, T vzorkování jsou celková doba měření a interval provádění odměrů v sekundách. Měnit hodnotu v řádku určujícím počet odměru je tedy zbytečné a nežádoucí. Výpočet si provádí program sám podle zadaných parametru a zobrazená hodnota je pouze informativní. Vzhledem k tomu, že není nijak hlídán vstup těchto hodnot do výpočtu, je nutné zadávat kladné hodnoty. Program je však vytvořen tak, aby nemohlo dojít ke kolizi v případě, že zadaná hodnota intervalu je kratší než doba nutná pro provedení odměrů. Nastavení hodnoty určující čas provedení dalšího měření je proto prováděno po ukončení všech nutných měřících akcí. 4.1.5 Oblast výsledků Abychom mohli dále využívat výsledky měření, musí být tyto hodnoty někam vypisovány. K tomuto účelu nám slouží právě Oblast výsledků, primárně navržena pro tento účel. Aby byl program schopen tuto oblast určit, je zde použit stejný způsob jako při určování pozice Seznamu zařízení (kap. 4.1.1) s tím rozdílem, že zde je nutno mít zadán název počáteční buňky oblasti jako _resultlist. Při prvním spuštění originálního souboru se buňka s tímto názvem nachází na pozici A39. Pro změnu její pozice platí opět stejná pravidla jako v případě Seznamu zařízení. Abychom mohli oblast výsledků správně používat, je třeba se držet několika pravidel. Důležité je pamatovat na to, že první sloupec oblasti je vždy vyhrazen pro výpis času provedení odměru. Pokud si tedy do tohoto sloupce Obr. 4.7 Výpis odměřených hodnot vložíme nějaké hodnoty, tak budou pokaždé přepsány tímto údajem. Pokud budeme z nějakého zařízení odečítat více hodnot při jednom odměru, musíme si dobře nastavit hodnotu v Seznamu zařízení určující, v kterém sloupci má být výsledek vypsán. Program nekontroluje, zda je buňka prázdná a tak může dojít při špatném nastavení k přepisování údajů z jednotlivých zařízení. 31

Stejná situace může nastat i v případě, že použijeme některý sloupec pro nastavování hodnot v příkazu pro zařízení. Na obr. 4.7 je ukázán příklad výpisu. 4.2 Konstanty a proměnné V programu je používáno poměrně velké množství konstant potřebných pro správný průběh měření i jiných operací. Jako konstanty jsou využívány takové údaje, které se v kódu často opakují a zápis pouhou hodnotou by učinil program nepřehledným a význam těchto dat by byl nejasný. Dále jsou takto použity hodnoty, jež jsou v rámci programu nastavovány jen jednou nebo opakovaně v rámci jedné funkce, ale v průběhu měření se nemění. Veškeré konstanty používané v rámci celého programu jsou deklarovány v modulu PublicFunctions a jejich význam udává komentář. To nám umožňuje v případě nutnosti pozměnit formátování či funkčnost aplikace změnou hodnoty na jednom místě, načež se tato změna dále distribuuje do ostatních částí programu. V této kapitole budou popsány především ty konstanty, které může uživatel za nějakým účelem měnit, ale budou ukázány i konstanty, které měnit nelze ale je dobré je znát. Veškeré konstanty, které používá více modulů programu, jsou deklarovány jako veřejné (Public), aby k nim mohlo být přistupováno. SelectedBook a SelectedList Tyto dvě hodnoty jsou příkladem konstant, které nelze měnit. Jsou však hlavními konstantami, potřebnými v průběhu používání všech funkcí. Z počátku byly používány jako typ String (textový řetězec) a obsahovaly název sešitu (SelectedBook) a listu (SelectedList), se kterým se bude pracovat při vykonávání programu. Bohužel toto se neosvědčilo a konstanty byly předělány na typ Object (struktura hodnot), který obsahoval sadu hodnot blíže určující vybraný list respektive sešit. Správné nastavení těchto hodnot je velice podstatné. Pokud se špatně nastaví, program není schopen další činnosti. Způsob jak může uživatel ovlivnit nastavení těchto konstant, je použití tlačítka GUI INIT, v rámci jehož funkce se tyto konstanty nastavují. 32

Timeout Pomocí této konstanty je možno globálně nastavit parametr posílaný do přístroje, určující jak dlouho se má čekat na vyřízení žádosti (příkazu). Nastavování tohoto času globálně, by se mohlo zdát nešikovné, ale opak je pravdou. Touto konstantou můžeme nastavit základní dobu čekání a můžeme ji volit poměrně malou (postačí i 500 ms). Pokud tato doba nestačí, například při odměru hodnot, program využívá jiné mechanizmy, dovolující čekání na provedení akce. SeparationSign a UserCmd Slouží k rozpoznávání jednotlivých příkazů pro zařízení (SeparationSign) a vnořených uživatelských (UserCmd). Jsou vybrány tak, aby nekolidovaly s příkazy přístrojů. To znamená, že žádný známý příkaz pro zařízení je neobsahuje. Pokud by se ale takovýto příkaz přeci jen našel, je možno změnou hodnot těchto konstant docílit další funkčnosti. BUS_INTERFACE U počítače, na kterém bude tento program spouštěn, se předpokládá přítomnost GPIB karty. Pokud je v systému zapojena pouze jedna karta, není třeba hodnotu této konstanty měnit (počáteční hodnota je GPIB0 ). Pokud ovšem do systému vložíme další GPIB kartu, bude její označení jiné (např. druhá karta v systému má označení GPIB1 ). Určení karty, která má být použita se provede právě změnou této konstanty. Z toho plyne, že program je schopen pracovat zároveň pouze s jedním interfacem. Program nebyl vytvořen pro používání více rozhraní naráz proto, že se nepředpokládá, že bude použito tak velké množství jednotek. MeasureSet V případě této proměnné se již nejedná zcela o konstantu. MeasureSet je dvojrozměrné pole, uchovávající veškeré informace získané z oblasti Seznam zařízení. Obsah jednoho řádku pole nám ukazuje obr. 4.8. 33

Obr. 4.8 Řádek pole MeasureSet Přímo s tímto polem souvisí další konstanta offset. Tato konstanta nám říká, o kolik položek jsou posunuty první příkazy. Pole bylo původně navrženo tak, aby dynamicky měnilo svou velikost podle aktuálního množství aktivních zařízení a maximálního počtu příkazu. Avšak při změně velikosti občas docházelo k výskytu chyby a proto se přešlo k statické velikosti tohoto pole. To je nastaveno na 30 řádků (resp. zařízení) a 50 sloupců (45 příkazů pro zařízení). Ač jsou hodnoty z tohoto pole používány ve více modulech a tím pádem musí byt definováno jako Public, je deklarace pole provedena ve speciálním modulu ComunitaionValues, vytvořenému výhradně pro toto pole a funkce s ním pracující. Procedury mimo tento modul z pole pouze čtou. Tab. 4.3 Seznam některých konstant a proměnných Název Hodnota Popis ONE_TO_LINE Jeden odměr do řádku MORE_TO_MULTIPLE_LINES Více odměrů pod konstanty určující typ metení sebe TIME_CHARACTERISTIC Závislost na čase SeparationSign / znak oddělující jednotlivé příkazy UserCmd # určuje znak určený pro identifikaci uživatelských příkazů DataSeparation, znak oddělující jednotlivé hodnoty v případě že jich přístroj vrací více MAX_DEVICES 30 maximální počet adres zařízení touto konstantou lze změnit dobu timeout 1000 TIMEOUTu nastavovanou pro všechny přístroje DevicesNameColumn 0 DevicesActiveColumn 1 určují pořadí jednotlivých sloupců, jež se DevicesAddressColumn 2 načítají do pole dat DevicesResultColumn 3 DevicesCmdsColumn 4 ListOffset 2 offset pozic hodnot v seznamu zařízení offset 2 offset v poli MeasureSet BUS_INTERFACE GPIB0 nastavení interfacu sběrnice pokud je v PC vice karet GPIB WAITX #wait uživatelský příkaz pro čekání X ms ADDX #add uživatelský příkaz zaměňující se za sloupec určený jeho parametrem 34

Ostatní konstanty Další konstanty jsou uvedeny v tabulce tab. 4.3. Jejich účel není nutno popisovat příliš detailně. Nepředpokládá se, že budou měněny i když je to možné. Pokud by bylo přeci jen nutné je měnit, jejich význam je v tabulce dostatečně vysvětlen. 4.3 Funkce programu Program má z hlediska cíle implementace pouze jednu funkci a to ovládání měřících aparatur. Tato funkce je v programu rozdělena do několika kroků. Každý z nich má pro zajištění správného běhu programu důležitý úkol. V této kapitole budou popsány právě tyto jednotlivé kroky, které jsou rozděleny do několika funkcí a jejich vykonávání je rozděleno mezi několik ovládacích prvků v uživatelském rozhraní. 4.3.1 GUI INIT Stisknutím tlačítka s označením GUI INIT se spustí procedura, jejímž úkolem je načtení proměnných a konstant (kap. 4.2), jež jsou nutné pro správný běh celého programu. Vývojový diagram na obr. 4.9 ukazuje přibližnou strukturu běhu jednotlivých funkcí. Přibližnou z toho důvodu, že například funkce ReportIt je volána několikrát v průběhu inicializace. Tato funkce má však za úkol pouze vypisovat informace pro uživatele a z hlediska ovládání zařízení není až tak podstatná. Nejsou zde také uvedený funkce kontrolující konzistenci zadaných hodnot. Jako první je volána funkce SetConstants, jejímž úkolem je nastavení veškerých hodnot nutných pro funkčnost uživatelského rozhraní a část proměnných zajišťujících průběh měření. Samotná tato funkce nastavuje pouze konstanty SelectedBook a SelectedList. Další hodnoty jsou nastavovány v speciálních funkcích, které tato Obr. 4.9 Vývojový metoda volá. diagram pro tlačítko Druhou volanou procedurou je GetDeviceCount. Tato metoda je GUI INIT volána funkcí SetConstants a má za úkol zjistit počet přístrojů vyplněných v Seznamu zařízeni a kolik z nich je nastaveno jako aktivní. Tyto údaje jsou 35

udržovány v proměnných DevicesCount a ActiveDevicesCount. Funkce si hlídá, zda je alespoň jedno zařízení nastaveno jako aktivní, pokud tomu tak není, zablokuje tlačítka pracující s přístroji. Třetí funkcí je GetMeasueType, opět volanou pomocí SetConstants. Procedura naplňuje proměnnou SelectedMeasureType. Ta nám říká, jaký typ měření je vybrán. Je zde ověřováno, zda byl nějaký typ měření vybrán. Poslední volanou metodou je GetMeasureDelay, informující program v případě měření typu Závislost na čase, jaká je prodleva mezi odměry. Hodnota této prodlevy je uložena v poli TimeValues. Průběh celého procesu inicializace není spojen s nastavováním zařízení na sběrnici a proto není ošetřen proti několika spuštěním naráz. Neošetření této situace je umožněno také tím, že v průběhu provádění této operace není použito příkazu Application.OnTime (kap. 3.3.1). Inicializace konstant obsahuje mechanizmus vyhodnocující, zda jsou tyto hodnoty zadány a případně jestli je toto zadání korektní z hlediska jejich formátu. To znamená, jestli je kupříkladu v sloupci Adresa zadaná hodnota číslo. V případě příkazů pro zařízení je pouze ověřováno, zda jsou nějaké příkazy zadány a pokud ne je to vyhodnocováno pouze jako varování. Jako varování je to vyhodnocováno proto, že nemůžeme vědět, zda si uživatel přeje konkrétní typ příkazů posílat. 4.3.2 Najít zařízení Pokud zapneme přístroj, je na jeho displeji po krátkou dobu zobrazena adresa, pod kterou ho můžeme na sběrnici nalézt. Avšak pokud z nějakého důvodu na přístroj nevidíme, či jsme si adresu nestihly zapamatovat, můžeme využít schopnosti tlačítka Najít zařízení. Funkce tohoto tlačítka je, najít zapnutá zařízení na všech připojených GPIB kartách a zobrazit výsledky hledání do logu. Příklad výsledku hledání můžeme vidět na obr. 4.10. Funkce používá pro nalezení zařízení Obr. 4.10 Příklad výsledku funkce Najít zařízení operaci z knihovny VISA 36