ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická – Katedra měření
Diplomová práce Sběr a vizualizace dat získaných měřením indukčnostním snímačem.
Praha 2007
Tomáš Doležal
České vysoké učení technické v Praze
Fakulta elektrotechnická
Katedra měření 13138
Školní rok
2005/2006
ZADÁNÍ DIPLOMOVÉ PRÁCE
Student
Tomáš Doležal
Obor
Letecké informační a řídicí systémy
Název tématu:
Sběr a vizualizace dat získaných měřením indukčnostním snímačem Zásady pro vypracování:
Navrhněte a realizujte rozhraní (obvodové řešení i programové vybavení) mezi měřicím systémem řady NX 7021 a PC, zajišťující přenos dat z měřicího systému NX 7021 pomocí USB rozhraní požadovanou rychlostí nejméně 2400 vzorků za sekundu při rozlišení 14 bitů. Měřicí systém NX 7021 obsahuje mikroprocesor 8051 pro komunikaci a hradlové pole Xilinx XC3030A pro měření. Je třeba proto nejprve navrhnout a realizovat rozhraní pro tento procesor, aby mohl komunikovat po USB sběrnici jako slave. Pro experimenty použijte obvod FT232BM od firmy FTDI . Dále navrhněte a odlaďte programové vybavení pro nadřazené PC, které umožní v jednom okně zobrazovat změřený signál včetně nastavení časové základny a synchronizace a druhé okno použít pro záznam přechodových dějů s možností archivace a pozdější analýzy tohoto děje. Tento program by dále měl umožnit volbu konkrétního typu měřícího systému, aby byl univerzálně využitelný i pro další měřící systémy firmy Intronix. Postupně by tedy měly být řešeny následující dílčí úkoly: 1) Návrh zapojení a příslušného plošného spoje s obvodem FT232BM zajišťujícím komunikaci. 2) Návrh komunikačního protokolu pro přenos dat. 3) Návrh a odladění programového vybavení pro PC zajišťující komunikaci s využitím navrženého protokolu. 4) Analýza maximální použitelné rychlosti přenosu dat a minimalizace odezvy pro tento typ obvodu. 5) Návrh a odladění programu pro archivaci a zobrazení dat. ii
Seznam odborné literatury: [1] Dokumentace jednotky NX 7021 firmy Intronix [2] Dokumentace obvodu FT232 firmy FTDI
Vedoucí diplomové práce:
Ing. František Mazánek
Datum zadání diplomové práce:
28. listopad 2005
Termín odevzdání diplomové práce:
19. leden 2007
L.S.
Doc. Ing. Karel Draxler, CSc. garant oboru
Doc. RNDr. Tomáš Bílek, CSc. proděkan
V Praze dne 28.11.2005
iii
Prohlášení Prohlašuji, že jsem svou diplomovou práci vypracoval samostatně a použil jsem pouze podklady (literaturu, projekty, SW atd.) uvedené v přiloženém seznamu.
V Praze dne ……………………
……………………………… Podpis
Poděkování Na tomto místě bych rád poděkoval Ing. Miroslavu Růžičkovi za poskytnutí prostředků pro tvorbu této diplomové práce, Ing. Františku Mazánkovi, Ing. Petru Černohorskému, Ing. Michalu Ditrichovi, Ing. Janu Roháčovi a Doc. Ing. Karlu Draxlerovi, CSc. za poskytnutí cenných rad a v neposlední řadě svému nejbližšímu okolí za podporu při studiu.
iv
ANOTACE Diplomová práce se zabývá modernizací měřícího systému NX7021 firmy Intronix s.r.o. a je koncipována do dvou částí: První část se zabývá návrhem zapojení a příslušným plošným spojem s obvodem FT232BM zajišťujícím USB komunikaci mezi měřícím systémem NX7021 a osobním počítačem. Výsledkem práce je navržení komunikačního protokolu a vytvoření programu pro zajištění komunikace. Druhá část se zabývá návrhem, vývojem a testováním programového vybavení pro nadřazené PC. Toto programové vybavení bude zobrazovat měřený signál, přechodové děje a bude umožňovat archivaci dat.
v
THE ANNOTATION The diploma thesis focuses on modernization of NX7021 system and is divided into two parts: The first part describes scheme of the linkage and printed circuit with FT232BM converter which provides USB communication between NX7021 and personal computer. The result of this part is communication protocol and software for communication handling. The second part describes designing, programming and testing of the software application for the superior unit (personal computer). This program displays measured signal, transient performance of this signal and backups measured data.
vi
Obsah 1
ROZBOR ZADÁNÍ...................................................................................................... 1 1.1 1.2 1.3
2
POPIS MĚŘÍCÍHO SYSTÉMU NX7021 ......................................................................... 1 TECHNICKÉ PARAMETRY MĚŘÍCÍHO SYSTÉMU NX7021............................................. 2 KOMUNIKAČNÍ PROTOKOL MĚŘÍCÍHO SYSTÉMU NX7021 .......................................... 2
USB (UNIVERSAL SERIAL BUS) ROZHRANÍ....................................................... 5 2.1 HISTORIE USB ........................................................................................................ 5 2.2 ZÁKLADNÍ VLASTNOSTI A PARAMETRY USB ............................................................ 6 2.2.1 Základní vlastnosti ............................................................................................. 6 2.2.2 Přenosové rychlosti ............................................................................................ 6 2.3 POPIS USB – SPECIFIKACE ....................................................................................... 7 2.3.1 Fyzická vrstva .................................................................................................... 7 2.3.1.1 Architektura USB sběrnice ......................................................................... 8 2.3.1.2 Mechanické vlastnosti přenosového média USB ......................................... 9 2.3.1.3 Napájení USB sběrnice ............................................................................. 12 2.3.1.4 Přenos signálů a jejich úrovně na sběrnici USB......................................... 13 2.3.1.5 Přenos a kódování dat ............................................................................... 14 2.3.2 Linková vrstva .................................................................................................. 15 2.3.2.1 Pakety....................................................................................................... 16 2.3.2.2 Typy přenosů na sběrnici USB.................................................................. 19 2.3.2.3 Přidělování kapacity šířky pásma .............................................................. 21 2.3.3 Řídící přenos .................................................................................................... 21 2.3.3.1 Enumerace – rozpoznávání zařízení .......................................................... 21 2.3.3.2 Nejdůležitější položky deskriptoru zařízení............................................... 22
3
POPIS OBVODU FT232BM ..................................................................................... 25 3.1 ZÁKLADNÍ VLASTNOSTI FT232BM........................................................................ 25 3.2 BLOKOVÉ SCHÉMA FT232BM ............................................................................... 26 3.3 POPIS VÝVODŮ FT232BM..................................................................................... 29 3.3.1 UART rozhraní ................................................................................................. 29 3.3.2 USB rozhraní.................................................................................................... 30 3.3.3 EEPROM rozhraní ........................................................................................... 30 3.3.4 Řízení spotřeby ................................................................................................. 31 3.3.5 Pomocné signály .............................................................................................. 31 3.3.6 Napájecí vývody ............................................................................................... 32 3.4 MEZNÍ ÚDAJE ........................................................................................................ 33
4
NÁVRH PŘEVODNÍKU ........................................................................................... 34 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9
PRVNÍ KROKY ....................................................................................................... 34 NAPÁJENÍ PŘEVODNÍKU Z MĚŘICÍHO SYSTÉMU NX7021 ......................................... 34 PŘIPOJENÍ EEPROM............................................................................................. 35 PŘIPOJENÍ OSCILÁTORU ......................................................................................... 36 ROZHRANÍ PRO PŘIPOJENÍ INDIKAČNÍCH LED......................................................... 37 PŘIPOJENÍ MĚŘICÍHO SYSTÉMU NX7021 K PC ........................................................ 38 ANALÝZA MAXIMÁLNÍ POUŽITELNÉ RYCHLOSTI PŘENOSU DAT................................ 39 SCHÉMA ZAPOJENÍ PŘEVODNÍKU ............................................................................ 40 VZHLED A POPIS PLOŠNÉHO SPOJE .......................................................................... 41
vii
5
NÁVRH PROGRAMOVÉHO VYBAVENÍ ............................................................. 42 5.1 APLIKACE ............................................................................................................. 42 5.1.1 Základní informace a použití ............................................................................ 42 5.1.2 Programovací jazyk, IDE (Integrated Development Environment).................... 42 5.1.3 Hardwarové a softwarové nároky ..................................................................... 42 5.2 KOMUNIKACE SE ZAŘÍZENÍM ................................................................................. 42 5.2.1 Komunikační systém NX7021 ........................................................................... 42 5.2.2 Měření v samostatném vláknu........................................................................... 44 5.2.3 Předávání naměřených dat aplikační vrstvě...................................................... 45 5.2.4 Objekt modulu NX7021 .................................................................................... 45 5.3 UŽIVATELSKÉ ROZHRANÍ ....................................................................................... 45 5.3.1 Styl „Průvodce“ ............................................................................................... 45 5.3.2 Formuláře hlavní aplikace................................................................................ 46 5.3.3 Připojení .......................................................................................................... 46 5.3.4 Volba režimu a nastavení měření ...................................................................... 47 5.3.5 Měření.............................................................................................................. 49 5.3.6 Vzorkování ....................................................................................................... 49 5.3.7 Kontrola rozsahu.............................................................................................. 50 5.3.8 Osciloskop........................................................................................................ 51 5.3.9 Čtení hodnot..................................................................................................... 52 5.3.10 Zobrazení historie......................................................................................... 54 5.3.11 Komponenta „LCD Display“........................................................................ 56 5.4 PREZENTACE NAMĚŘENÝCH DAT ........................................................................... 56 5.4.1 Zobrazení naměřených dat................................................................................ 56 5.4.2 Uložení naměřených dat ................................................................................... 56 5.4.3 Export naměřených dat..................................................................................... 58 5.5 VOLBA TYPU MĚŘÍCÍHO SYSTÉMU .......................................................................... 58
6
ZÁVĚR....................................................................................................................... 59
7
LITERATURA........................................................................................................... 60
8
OBSAH PŘILOŽENÉHO CD................................................................................... 61
9
PŘÍLOHY .................................................................................................................. 62
viii
Seznam obrázků Obrázek 1.1 - Konektor a zásuvka typu Din 5-kolíkový.………………..………………..…...1 Obrázek 2.1 - Low Speed zařízení………………………………………...…….……………..7 Obrázek 2.2 - Full Speed nebo High Speed zařízení………………………..……………........7 Obrázek 2.3 - Logické vrstvy zařízení USB…………………………………..……..….……..8 Obrázek 2.4 - Stromová struktura sběrnice USB………………………………...…...………..9 Obrázek 2.5 - Průřez kabelem pro USB…………………………………………...……….…10 Obrázek 2.6 - Typy konektorů pro USB……………………………………………...………11 Obrázek 2.7 - Průběh signálů D+ a D- při přenosu paketu……………………………...……13 Obrázek 2.8 - NRZI kódování………………………………………………...………………14 Obrázek 2.9 - Příklad dat vysílací části přenosové cesty………………………...……...……15 Obrázek 2.10 - Přenos po sběrnici v časových rámcích…………………………..…….……16 Obrázek 2.11 - Složení paketů z jednotlivých polí…………………………………..………16 Obrázek 2.12 - Příklad přepínání průběhů mezi LS a FS komunikací……………….....……19 Obrázek 2.13 - Posloupnost operací při řídícím přenosu…………………………………..…20 Obrázek 2.14 - Posloupnost operací při přenosu objemných dat…………………..…...….…20 Obrázek 3.1 - Blokové schéma obvodu FT232BM……………………………..………....…26 Obrázek 3.2 - Rozložení vývodů obvodu FT232BM na pouzdru LQFP-32……....…....……29 Obrázek 4.1 - Napájení převodníku………………………………………………...….…..…35 Obrázek 4.2 - Připojení EEPROM………………………………………………........………36 Obrázek 4.3 - Připojení krystalu…………………………………………………….......……37 Obrázku 4.4 - Připojení indikačních LED…………………………...……………….………37 Obrázek 4.5 - Použité konektory datového vodiče…………………...………………....……38 Obrázek 4.6 - Schéma zapojení převodníku…………………………..……….……..………40 Obrázek 4.7 - Osazovací schéma desky……..………………………...………….…..………41 Obrázek 5.1 - Připojení………………………………………..………...……………………47 Obrázek 5.2 - Volba režimu – Osciloskop………………………………...……..………...…48 Obrázek 5.3 - Vzorkování………………………………………..………...…………………49 Obrázek 5.4 - Kontrola rozsahu………………………………………..……...………...……51 Obrázek 5.5 - Osciloskop……………………………………….....……………………….…52 Obrázek 5.6 - Čtení hodnoty……………………………………….....………………………53 Obrázek 5.7 - Historie………………………………………..………...……………………..54 Obrázek 5.8 - Použitá VCL knihovna pro display…...…………………...…………………..56
ix
Seznam tabulek Tabulka 2.1 - Typy paketů a jejich popis……………………………...……….……..………17 Tabulka 3.1 - UART rozhraní…………………………………………...………..…..………29 Tabulka 3.2 - USB rozhraní………………………………………………...…….…..………30 Tabulka 3.3 - EEPROM rozhraní…………………………………….……...………..………30 Tabulka 3.4 - Řízení spotřeby………………………………………………...…..…..………31 Tabulka 3.5 - Pomocné signály (OC značí otevřený kolektor) ………………...….....………32 Tabulka 3.6 - Napájecí vývody…………………………………………………...…..………33 Tabulka 3.7 - Mezní údaje…………………………………………………………..…..……33 Tabulka 4.1 - Zapojení jednotlivých vývodů konektorů………………………..…….………38
x
Seznam příloh Příloha 1 - Vzhled měřícího systému NX7021 bez převodníku……….....…………..………60 Příloha 2 - Vzhled měřícího systému NX7021 s převodníkem…………..……....…..………60 Příloha 3 - Převodník RS232/USB…………..…..……………...…………...…....………….61 Příloha 4 - Výkres desky ze strany součástek……………………………….…….….………61 Příloha 5 - Výkres desky ze strany spojů………………………...……….…...….…..………62 Příloha 6 - Osazovací schéma desky…………..…..…...……………………...……......…….62 Příloha 7 - Velikost desky plošného spoje…………………………………….….……..……63 Příloha 8 - SOF – začátek rámce…………..………………………………………..……...…63 Příloha 9 - TOKEN (OUT) – pověřovací paket…………….…………...….…….......………64 Příloha 10 - DATA – datový paket………………………………………………....…...……64 Příloha 11 - ACK – potvrzovací paket………………………………………...…....……...…65
xi
1 Rozbor zadání Diplomová práce, zadaná a vykonávaná ve firmě Intronix s.r.o., se zabývá modernizací měřícího systému NX7021, který komunikuje s nadřazeným PC po sériové lince RS232. První část, zabývající se návrhem a realizací rozhraní mezi měřícím systémem NX7021 a PC, zajišťující přenos dat z měřícího systému NX7021 pomocí USB rozhraní požadovanou rychlostí nejméně 2400 vzorků za sekundu při rozlišení 14 bitů. Druhá část diplomové práce se zabývá návrhem, vývojem a testováním programového vybavení pro nadřazené PC. Toto programové vybavení umožní v jednom okně zobrazovat změřený signál včetně nastavení časové základny a synchronizace. Druhé okno se použije pro záznam přechodových dějů s možností archivace a pozdější analýzy tohoto děje.
1.1 Popis měřícího systému NX7021 Měřící systém pro připojení indukčnostního snímače NX7021 viz příloha 1 umožňuje změřit pomocí diferenciálního indukčnostního snímače jednorázový děj. Počet změřených vzorků je nastavitelný v rozsahu 1..16384. Vzorkovací frekvence je nastavitelná v rozsahu 450..2400 vzorků/sec. Měřící rozsah je
±200μm, rozlišení 0,1μm. Pro hrubé nastavení
snímače a přípravu měření je k dispozici pomocný rozsah ±1000μm s rozlišením 1μm. Při tomto rozsahu nelze provádět vzorkování s nastavitelnou frekvencí. Systém vrací aktuální hodnotu snímače pouze na dotaz PC (max. frekvence dotazů je cca 50Hz). Napájení systému
zajišťuje externí síťový
zdroj, komunikace s nadřízeným
probíhá po sériové lince RS232. Komunikační kabel
je typu
NULL MODEM,
PC tj. s
překříženými vodiči RxD, TxD. Indukčnostní snímač je k systému připojen 5-kolíkovým konektorem typu DIN viz obrázek 1.1.
Obrázek 1.1 - Konektor a zásuvka typu Din 5-kolíkový
1
1.2 Technické parametry měřícího systému NX7021 Počet kanálů:
1
Rozsah a rozlišení:
a) měřicí rozsah ±200μm, rozlišení 0,1μm b) nastavovací rozsah ±1000μm, rozlišení 1μm, nelze vzorkovat s nastavitelnou frekvencí
Počet vzorků:
1..16384
Vzorkovací frekvence:
450..2400 vzorků/sec Frekvence se zadává pomocí dělicího poměru n podle vztahu f = 28800/div, kde div je v rozsahu (12..64)
Maximální chyba:
3LSB v celém teplotním rozsahu
Komunikace:
RS232, 8-bitů, 1-stopbit, bez parity proti chybám je přenosový protokol zabezpečený kontrolním součtem
Komunikační rychlost:
115.2kBd Ke komunikaci se používají vodiče TxD, RxD a GND, kabel musí být typu NULL MODEM.
Napájení:
9..12Vac, 200mA, zajištěno pomocí externího síťového zdroje
Rozsah pracovních teplot:
10 - 40 ºC
Pracovní prostředí:
Systém je určen pro provoz v prostředí bez nadměrné prašnosti, agresivních par nebo plynů s relativní vlhkostí do 80%
Rozměry š x v x h:
105 x 45 x 190mm
1.3 Komunikační protokol měřícího systému NX7021 Nadřízené PC ovládá měřící systém prostřednictvím příkazů, na které měřící systém vrací odpověď. Příkaz začíná synchronizačním bytem s hodnotou AAh, následuje kód příkazu, případné datové byty a kontrolní součet. Formát odpovědi je obdobný, výjimku tvoří odesílání naměřených hodnot v měřícím režimu (vzorkování). Vykonání některých příkazů může trvat až 40ms, proto hodnota timeoutu by neměla být menší než tato hodnota. Komunikační rychlost je 115,2kBd, timeout pro odpověď 200ms.
2
V použité verzi jsou implementovány následující příkazy:
a). Příkazy pro měření 1) Vyčtení hodnoty snímače – rozsah ±1000μm Příkaz:
| AA | 00 | cs |
Odpověď: | AA | 00 | sts | sL | sH | cs | 2) Vyčtení hodnoty snímače – rozsah ±200μm Příkaz:
| AA | 01 | cs |
Odpověď: | AA | 01 | sts | sL | sH | cs | 3) Spuštění vzorkování – rozsah ±200μm Příkaz:
| AA | 02 | div | scntL | scntH | cs |
Odpověď: | AA | 02 | cs | sts0 | data0L | data0H | sts1 | data1L | data1H |… 4) Zastavení vzorkování Příkaz:
| AA | 03 | cs |
Odpověď: | AA | 03 | cs | Poznámka: Měření se ukončí i při přijetí libovolného jiného příkazu.
b) Příkazy pro konfiguraci systému 1) Načtení konstant z EEPROM Příkaz:
| AA | 04 | cs |
Odpověď: | AA | 04 | g1L | g1H | g2L | g2H | offs | cs | 2) Načtení s/n z EEPROM Příkaz:
| AA | 05 | cs |
Odpověď: | AA | 05 | s/n | cs | 3) Zápis konstant do EEPROM Příkaz:
| AA | 06 | g1L | g1H | g2L | g2H | offs | cs |
Odpověď: | AA | 06 | cs |
3
Vysvětlivky: cs
kontrolní součet modulo 256
sts
stav šlapky (0 = nesešlápnuto)
sH|L
hodnota snímače
div
dělitel udávající vzorkovací rychlost 28800/div (12..64)
scntH|L
počet vzorků (1..16384)
stsx
| cs3 | cs2 | cs1 | cs0 | s | n2 | n1 | n0 | cs - kontrolní součet modulo 16 ze stsx, dataxL, dataxH s - stav šlapky (0 = nesešlápnuto) n - pořadové číslo vzorku modulo 8
dataxH|L
naměřená data
g1H|L
zesílení kanálu - nastavovací rozsah ±1000μm
g2H|L
zesílení kanálu - měřicí rozsah ±200μm
offs
posun nuly mezi rozsahy
s/n
16B obsahujících sériové číslo systému
Měřící režim vzorkování se ukončí po naměření zadaného počtu vzorků, nebo po zaslání libovolného příkazu (nebo postačuje poslat byte s hodnotou AAh a počkat cca 50ms). Další technické podrobnosti lze najít také v literatuře [3].
4
2 USB (Universal Serial Bus) rozhraní 2.1 Historie USB Standard USB je vyvíjen od první poloviny devadesátých let dvacátého století. Největší zásluhu na vývoji nese organizace USB Implementers Forum (USB-IF). Tuto organizaci tvoří zástupci firem z oblasti softwaru a hardwaru. Jedná se o firmy Intel, Microsoft, HewlettPackard, Compaq a Philips. Sběrnice USB vznikla jako reakce na potřebu rychlé, univerzální a pro uživatele snadno obsluhovatelné propojení mezi počítačem a periferiemi, umožňující připojit více zařízení k jedné sběrnici za chodu počítače i zařízení. V roce 1996 byl uveřejněn standard USB 1.0. Firma Intel začala vyrábět a implementovat řadiče USB do základních desek nových počítačů a zásuvných karet pro starší počítače. V této době však nebylo rozhraní USB podporováno operačními systémy. Nová verze 1.1 standardu USB byla vyvinuta v roce 1998. Tato verze již byla podporována operačními systémy, tím se začínal rozrůstat počet periferií připojovaných ke sběrnici USB. Začaly se také vyvíjet velice oblíbené přenosové paměťové moduly (Flash Disk). Ve verzi 1.1 byly definovány dva základní typy rozhraní USB, lišící se různou přenosovou rychlostí. Prvním typem jsou nízkorychlostní zařízení (LS: Low-Speed), která dosahují maximální přenosové rychlosti do 1.5Mb/s a přenáší menší objem dat. Do této skupiny patří například klávesnice, počítačové myši, pákové ovladače atd. Druhým typem jsou plnohodnotná zařízení (FS: Full-Speed), která mají maximální přenosovou rychlost do 12Mb/s a jsou primárně určena pro přenos dat jako je např. digitální zvuk, komprimované video atd. Zatím poslední verze 2.0 zveřejněná v dubnu roku 2000, rozšiřuje standard o třetí typ zařízení, kterým jsou vysokorychlostní zařízení (HS: High-Speed) s přenosovou rychlostí do 480Mb/s. Díky tomuto zařízení lze pomocí USB připojovat k počítači také zařízení s velkým objemem dat, jako jsou například disky, připojení k síti, zařízení pro zpracování obrazu atd. Rostoucí trh s mobilními zařízeními (mobilní telefony, digitální fotoaparáty, PDA atd.) přinutil USB-IF vyvinout nový standard On –The-Go (dále OTG) rozšiřující verzi 2.0 pro tato zařízení. Standard OTG umožňuje propojovat některá zařízení pomocí USB přímo bez stolního hostitelského počítače.
5
2.2 Základní vlastnosti a parametry USB USB je sériová sběrnice, data se přenáší po jednotlivých bitech a to diferenčně (pro snížení vlivu rušení), po dvou vodičích. Datové vodiče nesou vzájemně negované signály. Napěťové úrovně jsou v rozsahu 0 až 3,3V. USB konektor obsahuje pouze čtyři vývody VBUS (+5V), D–, D+ a GND.
2.2.1 Základní vlastnosti •
rozhraní je typu Plug&Play (automatická indikace připojování a odpojování zařízení za provozu)
•
sériové rozhraní
•
přenosová rychlost až 480Mb/s (dle verze USB), možno připojit až 127 zařízení
•
možnost napájení zařízení přímo z konektoru 5V (běžně lze odebrat 100 mA (Low Power Part), po speciálním přihlášení až 500mA (High Power Part))
•
podpora operačnímy systémy Windows 98/2000/Me/XP, Linux, MAC OS-8, OS-9, OS-X
•
indikace chyb přenosu a možnost korekce, indikace vadné periferie
•
jednoduchý protokol
•
propojování je řešeno pomocí několika úrovňové hvězdicové struktury. USB zařízení pracují ve verzi 1.1 a nověji ve verzi 2.0. Tyto standardy se z vnějšího
pohledu odlišují hlavně přenosovými rychlostmi.
2.2.2 Přenosové rychlosti •
Low Speed (LS) 1.5Mb/s, standard 1.1/2.0, zařízení připojuje pull-up rezistor 1,5kΩ mezi D- a 3,3V
•
Full Speed (FS) 12Mb/s, standard 1.1/2.0, zařízení připojuje pull-up rezistor 1,5kΩ mezi D+ a 3,3V
•
High Speed (HS) 480Mb/s, standard 2.0, zařízení se detekují stejně jako zařízení Full Speed s tím, že změna rychlosti se řeší programově. Připojení pull-upů na D+ nebo D- zároveň hubu sděluje, že je připojeno zařízení,
protože jinak jsou linky taženy směrem k 0V pomocí pull-downů (snižovacích rezistorů) velikosti 15kΩ. Schématické zapojení je znázorněno na obrázcích 2.1 a 2.2.
6
Obrázek 2.1 - Low Speed zařízení
Obrázek 2.2 - Full Speed nebo High Speed zařízení
2.3 Popis USB – specifikace V této podkapitole jsou popsány základní vlastnosti fyzické a linkové vrstvy sběrnice USB podle specifikace verze 1.1. Specifikace standardu USB definuje architekturu sběrnice, elektrické a mechanické vlastnosti jednotlivých prvků, přenosový protokol a datový tok na sběrnici.
2.3.1 Fyzická vrstva Do fyzické vrstvy patří architektura sběrnice, její mechanické vlastnosti, elektrické a napájecí vlastnosti sběrnice, signálové vlastnosti a kódování dat. Všechny tyto části jsou popsány v následujících podkapitolách, podrobnější informace lze nalézt ve specifikaci USB verze 1.1 v literatuře [5] a pro verzi 2.0 v literatuře[6].
7
2.3.1.1 Architektura USB sběrnice Sběrnice USB je složena z prvků: •
hostitele (HOST)
•
rozbočovače (HUB)
•
koncového zařízení (DEVICE)
Dále sběrnici tvoří propojení vždy mezi dvěma prvky typu point-to-point. Každý prvek se skládá z několika logických vrstev viz obrázek 2.3. Komunikace mezi hostitelem a koncovým zařízením probíhá přes logické komunikační kanály (pipes).
Obrázek 2.3 - Logické vrstvy zařízení USB
Topologie sběrnice má stromovou strukturu, jak je zobrazeno na obrázku 2.4. Hostitel tvoří centrální jednotku každé sběrnice a zároveň je spolu s kořenovým rozbočovačem první vrstvou sběrnice. V každé sběrnici USB může být pouze jeden hostitel, který řídí přidělování přenosového média metodou výzvy (polling) v logickém kruhu, tj. všechna zařízení poslouchají na síti a pokud zachytí pověření (token) se svojí adresou, odpoví na něj. S použitým adresováním lze připojit až 127 nezávislých zařízení k jednomu hostiteli. Stejně jako kořenový, tak i ostatní rozbočovače rozšiřují sběrnici o další přípojné body a zvyšují počet vrstev sběrnice. Většina rozbočovačů je součástí složeného zařízení, které má v jednom fyzickém pouzdře kromě rozbočovače i koncové zařízení. Takové zařízení je připojeno ke svému rozbočovači a patří tak logicky do další vrstvy. Specifikací USB 1.1 je
8
pro LS a FS zařízení povoleno nejvýše pět vrstev včetně kořenového rozbočovače, pro USB 2.0 (FS, HS) je počet povolených vrstev sedm, tyto hodnoty vycházejí z maximálních dovolených zpoždění signálu pro jednotlivé úseky sběrnice a z maximální doby na odpověď zařízení hostitelskému počítači. Koncové zařízení obsahuje několik logických bran (endpoints) s vlastní FIFO pamětí, přes které zařízení komunikuje s hostitelem. Jednotlivé brány jsou sdruženy do rozhraní (interface). Každé rozhraní představuje pro hostitele jednu nezávislou funkci zařízení. Například zařízení fungující jako scanner, tiskárna a kopírka může mít tři rozhranní viditelné pro uživatele hostitelského počítače jako tři samostatné zařízení.
Obrázek 2.4 - Stromová struktura sběrnice USB
2.3.1.2 Mechanické vlastnosti přenosového média USB Mechanické vlastnosti sběrnice definují povolené hodnoty parametrů, typy vodičů a konektorů. Na obrázku 2.5 je znázorněn průřez propojovacím kabelem mezi prvky sběrnice USB. Kabel obsahuje dvě dvojice vodičů a stínění. Jedna dvojice vodičů je napájecí (GND, VBUS) a
9
druhá dvojice je datová (D+, D-). Pro FS a HS zařízení je pro datové vodiče předepsán kroucený dvoudrát s vnějším stíněním. Pro LS zařízení je tento požadavek pouze jako doporučení.
Obrázek 2.5 - Průřez kabelem pro USB
Specifikací povolená délka kabelu je dána vlastnostmi použitých vodičů a požadovanými elektrickými vlastnostmi sběrnice, mezi které patří doba zpoždění, útlum, doba náběžné a sestupné hrany signálů pro datové vodiče a úbytek napětí pro napájecí vodiče. Specifikace povoluje maximální délku kabelu 5 metrů.
a) konektor a zásuvka typu A
10
b) konektor a zásuvka typu B
c) konektor a zásuvka typu Mini B
d) konektor a zásuvka typu Mini A
e) zásuvka typu Mini AB Obrázek 2.6 - Typy konektorů pro USB
Každý kabel, s výjimkou kabelů pevně připojených k LS zařízení, je opatřen dvěma konektory s nezaměnitelným tvarem. Tím je zajištěno jednoduché použití a vyloučena možnost nesprávného připojení. Konektor typu „A“ má obdélníkový průřez viz obrázek 2.6 a) a slouží k připojení kabelu k výstupu z hostitelského počítače nebo rozbočovače.
11
Konektor typu „B“ je čtvercového průřezu viz obrázek 2.6 b) a kabel je jím připojen k zařízení nebo na vstup rozbočovače. Vzhledem k novým menším zařízením připojovaným pomocí USB, byl specifikací 2.0 přidán nový typ konektoru označovaný jako „Mini-B“ viz obrázek 2.6 c), který má přibližně poloviční výšku než konektor typu „B“. Specifikací jsou povoleny dva propojovací kabely, první s konektory typu „A“ a „B“ a druhý s konektory „A“ a „Mini-B“. Pro doplnění přehledu je na obrázku 2.6 d) nový konektor pro OTG zařízení označený „Mini-A“, jako alternativa k původnímu konektoru s novým označením „Standard-A“. Kabely s tímto konektorem mohou být dlouhé 4,5 metrů. Na obrázku 2.6 e) je zásuvka typu „Mini-AB“ určená pro OTG zařízení, která může být připojena jako zařízení i jako hostitel.
2.3.1.3 Napájení USB sběrnice Všechna zařízení připojená k USB sběrnici lze z hlediska způsobu napájení rozdělit na tři skupiny: •
s malým odběrem proudu (low-power bus-powered device)
•
s velkým odběrem proudu (high-power bus-powered device)
•
s vlastním napájením (self-powered device)
Pro každou skupinu je definovaný maximálně možný odebíraný proud a minimální napětí, při kterém musí být zařízení schopno pracovat. Zařízení může být z hlediska napájení v jednom ze tří stavů: •
režim obecného zařízení - v tomto stavu se zařízení nachází po připojení ke sběrnici dokud mu není přiřazena vlastní adresa
•
funkční režim zařízení
•
režim pozastavení činnosti zařízení (suspend mode)
Zařízení napájená ze sběrnice s malým odběrem proudu mohou odebírat maximálně 100mA, kromě režimu spánku, kdy mohou odebírat nejvýše 0,5mA. Dále musí být schopna pracovat již od napětí 4,4V. Toto napětí se měří na začátku přívodního kabelu u konektoru typu „A“. Zařízení, která ve funkčním režimu odebírají více než 100mA, patří do skupiny zařízení napájených ze sběrnice s velkým odběrem proudu. Jejich odběr nesmí překročit 100mA pro režim obecného zařízení a musí pracovat od napětí 4,4V. Ve funkčním režimu zařízení nesmí odebírat více než 500mA a musí pracovat od napětí 4,75V, obě napětí jsou měřena na konci přívodního kabelu u konektoru typu „A“. Pro režim spánku je povolen maximální odběr
12
2,5mA. Mezi tato zařízení patří rozbočovače napájené po sběrnici. Pro ně je předepsán i maximální úbytek napětí 350mV mezi vstupním portem a výstupními porty. Zařízení s vlastním napájením mohou mít USB řadič napájen buď z vlastního zdroje nebo ze sběrnice, v tom případě zařízení může odebírat maximálně 100mA. Sběrnicové napájení je většinou využito pro komunikaci zařízení s hostitelským počítačem při vypnutém vlastním napájení. Největší možný úbytek napětí na propojovacím kabelu je 125mV, což je jeden z faktorů omezující největší povolenou délku propojovacího kabelu.
2.3.1.4 Přenos signálů a jejich úrovně na sběrnici USB Přenos signálů je zajištěn dvojicí signálových vodičů D+ a D-, signály těchto vodičů jsou inverzní. Tolerované hodnoty výstupu budičů jsou pro nízkou úroveň signálu VOL≤0,3V při zátěži RPU=1,5kΩ proti napětí 3,6V a pro vysokou úroveň signálu VOH≥2,8V při zátěži RPD=1,5kΩ proti napětí 0V. Budiče vysílačů jsou třístavové, aby mohl probíhat obousměrný poloduplexní přenos. Podle specifikace musí být oba budiče datových signálů schopny vydržet trvalý zkrat proti druhému signálu, napájení VBUS, GND a stínění kabelu. Přenos dat probíhá po paketech, které jsou ohraničeny událostmi „začátek paketu“ (SOP) a „konec paketu“ (EOP), viz obrázek 2.7. SOP je detekován přechodem ze stavu nečinné sběrnice do stavu překlopení datových signálů do opačné úrovně. EOP je definován jako přechod do stavu SEO přibližně na dobu přenosu 2 bitů následovaný stavem klidové sběrnice, nebo začne vysílání dalšího paketu.
Obrázek 2.7 - Průběh signálů D+ a D- při přenosu paketu
13
2.3.1.5 Přenos a kódování dat USB je jednomastrová sběrnice, všechny aktivity vycházejí z nadřazeného počítače. Data se vysílají v paketech o délce 8 až 64 bytů (1024 bytů pro izochronní přenos). Počítač může požadovat data od zařízení, ale žádné zařízení nemůže začít vysílat samo od sebe. Veškerý přenos dat se uskutečňuje v rámcích o délce přesně 1ms (pro LS a FS zařízení). Uvnitř těchto rámců mohou být postupně zpracovávány pakety pro několik zařízení. Slave (podřízené zařízení) se musí sesynchronizovat na datový tok. Protože hodinový signál není přenášen po zvláštní lince, získávají se hodiny přenosu přímo z datového signálu. USB používá pro přenos dat po sběrnici kódování NRZI (Non Return To Zero), při něm je datová logická jednička reprezentována jako neměnný stav signálů na vodičích sběrnice a datová logická nula jako změna z jednoho stavu do druhého viz obrázek 2.8.
Obrázek 2.8 - NRZI kódování
Z použitého kódování plyne, že sekvence logických nul v datech způsobuje změnu stavu na sběrnici při každém bitu. Naproti tomu sekvence logických jedniček nechává po celou dobu sběrnici ve stejném stavu. Jelikož se přenos synchronizuje pomocí změny stavu na sběrnici je změna zajištěna i pro sekvenci logických jedniček vkládáním bitu (bit stuffing). Při něm se po každých vyslaných šesti datových jedničkách vloží navíc jedna nula, tím dojde minimálně jednou za sedm bitů ke změně stavu a tím i synchronizaci sběrnice viz obrázek 2.9. Současně je vkládání bitu využito k zabezpečení přenosu. Každý paket obsahuje za účelem synchronizace speciální byte, tzv. SYNC-byte.
14
Obrázek 2.9 - Příklad dat vysílací části přenosové cesty
Při dekódování se každá logická nula po šesti logických jedničkách vyřadí. Pokud je přijato sedm a více jedniček nastaví se chyba a celý paket se ignoruje. Speciálním případem je poslední bit před koncem paketu, kdy může dojít v rozbočovači k prodloužení tohoto bitu, který přijímač detekuje jako další bit před koncem paketu. Pokud je tento nadbytečný bit jako šestá logická jednička, kterou nenásleduje žádný datový přenos, je paket v pořádku přijat i bez předpokládané následující logické nuly. Zařízení obsahuje jednotku SIE (Serial Interface Engine). K výměně dat mezi SIE a zbytkem zařízení slouží buffery (vyrovnávací paměti) FIFO (First In First Out). Architektura FIFO představuje paměti schopné postupně přijímat a vysílat data podobně jako posuvné registry. FIFO umožňuje vzájemně sladit rozdílné rychlosti USB sběrnice a USB zařízení. Zařízení USB má obecně několik pamětí FIFO, jejichž prostřednictvím je možno přenášet data. K adrese zařízení se pak navíc přidává adresa tzv. koncového bodu (ENDP). Tato adresa udává, kam se data mají uložit, nebo odkud se mají vyzvednout (udávají použitou FIFO).
2.3.2 Linková vrstva Přenos na sběrnici je organizován do časových rámců (frames). V nich se přenášejí informace v paketech seskupených do přenosů pro jednotlivé zařízení. Každý rámec je určen speciálním paketem označující začátek rámce (SOF) viz obrázek 2.10. Rámce mají pro LS a FS zařízení délku 1ms±500ns. HS zařízení používají mikrorámce (microframes), které jsou
15
dlouhé 125μs±62,5ns. Řazení paketů v jednotlivých rámcích není pevně dané a určuje ho hostitel, jak je popsáno níže.
Obrázek 2.10 - Přenos po sběrnici v časových rámcích
2.3.2.1 Pakety Jsou definovány čtyři skupiny paketů: •
pověřovací (Token)
•
datový (Data)
•
potvrzovací (Handshake)
•
speciální (Special)
Pakety a jejich rozdělení do skupin jsou znázorněny v tabulce 2.1. Každý paket je složen z několika různě dlouhých polí, celý paket má délku v násobcích bytů. Bity jednotlivých bytů jsou posílány od nejméně významného (Lsb) po nejvíce významný (Msb). Následující obrázek 2.11, zobrazuje jednotlivé složení paketů z polí tak, jak jsou bity vysílány, tj. v pořadí z leva doprava.
Obrázek 2.11 - Složení paketů z jednotlivých polí 16
Každý paket začíná synchronizačním polem SYNC, které je dlouhé jeden byte a má hodnotu 128. Toto pole zajišťuje synchronizaci přijímače na vyslaná data. Další pole, které každý paket obsahuje, je identifikační pole PID (Packet IDentifier field) určující druh paketu. Pole PID je dlouhé osm bitů, z nichž čtyři bity nesou informaci a zbylé čtyři jsou jejich doplňkem. Pokud negace jedné čtveřice bitů neodpovídá druhé nebo je zjištěna neznámá kombinace, je celý paket zařízením ignorován. Přehled možných typů paketů je v tabulce 2.1, jejichž kódy lze nalézt v literatuře [5].
Tabulka 2.1 - Typy paketů a jejich popis Skupina paketů
Typ paketu
Pověřovací (Token)
OUT
Přenos dat od hostitele k zařízení.
IN
Přenos dat ze zařízení k hostiteli.
SETUP
Konfigurační přenos od hostitele.
SOF Datový (Data)
Popis
Označuje začátek rámce.
DATA0
Sudý datový paket (první v přenosu).
DATA1 Potvrzovací (Handshake)
Lichý datový paket.
ACK
Potvrzení bezchybného přijmu dat.
NAK
Data nebyla přijata nebo vyslána.
STALL
Brána zařízení je pozastavena nebo konfigurační požadavek není podporován.
Speciální (Special)
PRE
Označuje LS přenos tak, aby rozbočovače zapnuly LS zařízení k nim připojené.
Pověřovací pakety typu OUT (vysílací), IN (přijímací) a SETUP (konfigurační-speciální případ vysílacího paketu) obsahují adresu složenou ze dvou polí. Prvním polem je adresa zařízení ADDR určující zdroj nebo cíl následujících datových paketů. Má délku 7 bitů, proto může být v jedné síti až 127 zařízení (adresa 0 je určena pro nenakonfigurované zařízení). Druhé pole ENDP obsahuje adresu USB brány (endpoint) v rámci jednoho zařízení a má délku čtyř bitů, což určuje maximální počet bran v zařízení. LS zařízení může obsahovat maximálně tři brány, na rozdíl od FS zařízení, které může mít až šestnáct bran. Všechna
17
zařízení musí mít alespoň bránu 0 s řídícím typem přenosu, ostatní mohou být jakéhokoliv typu. Pro vysílací a konfigurační typ určuje pole ADDR a ENDP příjemce datových paketů v přenosu. Pro přijímací typ je polem ADDR a ENDP určeno, kdo bude následující datové pakety vysílat. Adresní pole jsou chráněna pětibitovým polem CRC5 (Cyclic Redundancy Check ) s generujícím polynomem G(X) = X5+X2+1. Mezi skupinu pověřovacích paketů patří i paket začátku rámce (SOF – Start of Frame). Kromě pole PID obsahuje paket i pole s číslem rámce a jeho ochranu pomocí pole CRC5. Pole s číslem rámce je dlouhé jedenáct bitů a jeho hodnota se s každým rámcem zvětšuje cyklicky mezi 0 a 2047. Standard nezajišťuje doručení tohoto paketu, protože zařízení na paket neodpovídají a pokud nepotřebují ke své činnosti synchronizaci sběrnice, pak tento paket ignorují. Pověřovací pakety smí vysílat pouze hostitel, který tak řídí přístup na sběrnici. Pověřovací pakety jsou zařízeními ignorovány, pokud nekončí značkou EOP a nemají délku tři byty. Další skupinou jsou datové pakety. V této skupině jsou dva typy paketů lišící se pouze polem PID, které určuje zda se jedná o sudý datový paket (DATA0) nebo lichý datový paket (DATA1). Při vyslání dvou a více datových paketů za sebou se oba typy střídají, čímž se synchronizuje datový přenos. Hlavní částí datových přenosů je datové pole, které může být dlouhé 0 až 1023 bytů. Délka je závislá na typu přenosu a na hardwarové velikosti paměti vstupní brány. Datové pole je chráněno dvoubytovým polem CRC16 s generujícím polynomem G(X) = X16+X15+X2+1. Poslední základní skupinou jsou potvrzovací pakety. Obsahují pouze pole PID a slouží k informování o stavu předchozích přenosů. Do této skupiny patří tři pakety, prvním z nich je kladné potvrzení (ACK). Tento paket posílá hostitel jako reakci na přenosy zahájené paketem typu IN nebo zařízení jako reakci na přenosy zahájené pakety typu OUT nebo SETUP. Dalším typem je záporná odpověď (NAK), tu posílá zařízení jako odpověď, že nemůže dočasně přijmout data poslaná hostitelem (v rámci přenosu zahájeného paketem OUT) nebo že nemá žádná data k odeslání (přenos zahájený paketem IN). Zařízení pak může přijmout nebo odeslat data v rámci dalšího přenosu bez zásahu hostitele. Posledním paketem je záporná odpověď se zastavením (STALL). Zařízení posílá tento paket při nemožnosti přijmout nebo vyslat data bez dalšího zásahu hostitele. Navíc tento paket posílá zařízení jako reakci na nepodporovaný konfigurační přenos.
18
Speciální skupinou je paket PRE, kterým hostitel označuje přenos po LS zařízení. Tento paket je určen speciálně pro rozbočovače. Po sběrnici probíhají zároveň FS a LS přenosy, proto musí být LS zařízení od sítě odpojena, dokud není přenos typu LS. Bez odpojování by LS zařízení přijímala i FS přenosy, které by špatně interpretovala. Po paketu PRE musí hostitel čekat nejméně po dobu čtyř bitů FS přenosu než začne vysílat, aby měl rozbočovač čas na připojení LS zařízení. Na obrázku 2.12 je příklad takového přenosu.
Obrázek 2.12 - Příklad přepínání průběhů mezi LS a FS komunikací
2.3.2.2 Typy přenosů na sběrnici USB Pro USB sběrnici jsou definovány čtyři typy přenosu dat: •
řídící přenos (Control Transfer) – používají se k řízení hardware, pracují s vysokou prioritou a automatickým zabezpečením chyb; přenosová rychlost je vysoká, na jeden dotaz lze přenést až 64 bytů,
•
přenos přes přerušení (Interrupt Transfer) – používají zařízení, která periodicky vysílají menší množství dat - typicky myš, klávesnice,
•
hromadný přenos (Bulk Transfer) – je vhodný pro přenos velkých množství dat se zabezpečením. Priorita přenosu je nízká, takže tento typ není vhodný pro časově kritické operace - typicky skener, tiskárna, flash disk,
•
izochronní přenos (Isochronous Transfer) – je vhodný pro přenos velkých množství dat definovanou rychlostí (nejvyšší priorita) bez jejich zabezpečení. Je vhodný pro systémy, kdy je chyba menším zlem než jeho výpadek - typicky vnější zvukové karty. LS zařízení mohou využívat pouze řídící přenos a přenos přes přerušení. Obecně je
každý přenos složen z pověření, datového přenosu a potvrzení. Řídící přenos má dvě nebo tři části v závislosti na potřebě přenosu dat. V první části je vyslán hostitelem paket s konfiguračním pověřením následovaný datovým paketem s požadavkem, popis požadavků je v literatuře [5]. Pokud je požadavek v pořádku přijat, zařízení vyšle potvrzení úspěchu. V požadavku je obsažena informace o případném přenosu dalších dat v rámci řídícího přenosu. Přenos dat je řízen podle stejných pravidel jako přenos 19
objemných dat, všechny datové pakety mají vždy stejný směr přenosu. Řídící přenos ukončuje stavová část a pozná se opačným směrem toku dat než byla vysílaná data, jak je znázorněno na obrázku 2.13.
Obrázek 2.13 - Posloupnost operací při řídícím přenosu
Při přenosu objemných dat je zaručeno jejich bezchybné doručení kontrolou chyb a případným opakováním paketů. Není však zaručeno zpoždění, s jakým jsou data doručena, viz kapitola 2.3.2.3. Přenos je třífázový s výjimkou nulové délky dat, kdy přenos neobsahuje datový paket. Při čtení dat ze zařízení vyšle hostitel IN paket, na který zařízení zareaguje odesláním dat nebo odpovědí NAK, pokud nemá data připravena, ale může je odeslat později a nebo odpovědí STALL, pokud je brána pozastavena. Úspěšné obdržení dat hostitel potvrdí zprávou ACK. Jestliže hostitel nezašle žádné potvrzení, znamená to chybu přenosu. Při vysílání dat do zařízení je situace obdobná. Zařízení může odpovědět ACK, pokud data byla přijata v pořádku a hostitel může poslat další datový paket, NAK pokud data přišla v pořádku, ale zařízení je nezpracovalo a hostitel bude muset poslat paket znovu, STALL pokud je brána mimo provoz a hostitel by neměl ve vysílání paketů pokračovat, nebo zařízení nepošle žádnou odpověď, pokud přišla data poškozená, v tom případě hostitel vyšle znovu stejný paket. Posloupnost přenosů je zobrazena na obrázku 2.14.
Obrázek 2.14 - Posloupnost operací při přenosu objemných dat
20
Časový přenos má stejné fáze a pravidla jako přenos objemných dat. Rozdíl mezi nimi je v systému přidělování kapacity šířky pásma. U časových přenosů vysílá hostitel pověření s periodou, kdy je zařízení schopno vysílat či přijímat data. Tímto se šetří přenosová kapacita média. Více o přidělování kapacity je v následující kapitole. Izochronní přenos má pouze dvě fáze, příjemce nepotvrzuje přijetí a proto není doručení dat zaručeno. Používá se k přenosu souvislého toku dat.
2.3.2.3 Přidělování kapacity šířky pásma Přidělování kapacity sběrnice řídí výlučně hostitelský počítač. Rozvrhování přenosů v rámci není specifikováno standardem USB a je proto různé podle implementace hostitele. Jsou předepsány pouze limitující pravidla. Periodickým přenosům (izochronní a přenos přes přerušení) může být přiděleno nejvýše 90% rámce (80% mikrorámce pro HS sběrnici). Zbylých 10% je primárně přiděleno řídícím přenosům. Pokud zbývá nějaká kapacita z rámce, je přidělena přenosu objemných dat.
2.3.3 Řídící přenos Každé zařízení musí mít nejméně jednu obousměrnou řídící bránu s adresou 0 (endpoint 0). Po připojení zařízení ke sběrnici je pro hostitele viditelná pouze tato brána a skrz ní může být zařízení přidělena adresa a provedena konfigurace. Tento proces se označuje jako enumerace zařízení a je popsán v následující kapitole 2.3.3.1. Při enumeraci zasílá zařízení informace o sobě pomocí deskriptorů. Hostitel zahajuje řídící přenosy vysláním konfiguračního požadavku, jehož struktura je popsána ve specifikaci [5], [6]. Všechny zařízení musí minimálně reagovat na sadu standardních požadavků viz specifikace [5], [6].
2.3.3.1 Enumerace – rozpoznávání zařízení USB podporuje Plug&Play, takže každé USB zařízení, které připojíme, musí být automaticky rozpoznáno operačním systémem. Enumerace (vyčítání parametrů) zařízení spočívá v tom, že se operační systém dotazuje nově připojeného zařízení na určité parametry ve formě tzv. deskriptorů (přesně definovaných bloků dat). Počítač tato data požaduje prostřednictvím odpovídajících řídících dotazů na endpoint 0.
21
Rozbočovač rozpozná připojení nového zařízení tak, že dojde ke „zdvihnutí“ linky D+ nebo D-, potom se provedou následující kroky: 1) rozbočovač informuje hostitelský počítač (host), že je připojeno nové zařízení, 2) host se dotáže rozbočovače, na který port je zařízení připojeno, 3) host nyní ví, na který port je zařízení připojeno a vydá příkaz tento port aktivovat a provést reset USB sběrnice, 4) rozbočovač vyvolá USB reset (nulovací signál) o délce 10ms a uvolní pro zařízení proud 100mA. Jednotka SIE následně vyvolá reset mikrokontroléru a tak je zařízení připraveno, 5) než zařízení obdrží vlastní sběrnicovou adresu, je možno se na něj obracet přes implicitní adresu 0. Host čte první byty deskriptoru zařízení, aby stanovil délku datových paketů, 6) host přiřadí zařízení jeho sběrnicovou adresu, 7) host si pomocí nové sběrnicové adresy načte všechny informace obsažené v deskriptoru zařízení, 8) host přiřadí zařízení jednu z možných konfigurací. Zařízení pak může odebírat tolik proudu, kolik je stanoveno v aktivovaném konfiguračním deskriptoru. Tím je tedy připraveno k použití.
2.3.3.2 Nejdůležitější položky deskriptoru zařízení Univerzálnost sběrnice USB je také založena na možnosti připojovat k hostiteli zařízení různého charakteru. Tuto vlastnost umožňují deskriptory, kterými je zařízení popsáno pro potřeby sběrnice a toku dat. Jsou to datové struktury definovaného formátu, které zařízení vyšle jako reakci na požadavek hostitele. Je definováno několik typů deskriptorů: •
deskriptor zařízení
•
deskriptor konfigurace
•
deskriptor rozhraní
•
deskriptor brány
•
deskriptor textového řetězce
Pro HS zařízení jsou definovány i další typy popsané v literatuře [6]. Deskriptory jsou hierarchicky zřetězeny. Díky tomu lze využít možnosti více konfigurací, rozhraní a bran a tím i větší flexibility zařízení. Programově lze pak za běhu měnit vlastnosti výběrem z nabízených deskriptorů. Správné nastavení deskriptorů je jednou z podmínek úspěšné enumerace zařízení.
22
Každý deskriptor začíná dvoubytovou hlavičkou. První byte je délka deskriptoru a druhý je identifikátor typu deskriptoru. Deskriptor zařízení mají všechna zařízení pouze jeden. V něm jsou základní informace o zařízení a použité specifikaci USB, podle které se zařízení chová. Mezi základní informace patří kód třídy (definovaný organizací USB-IF), ke které zařízení patří a případně používaný protokol třídy, velikost paměti brány 0, která musí být minimálně 8 bytů a maximálně 64 bytů, indexy textových řetězců popisující výrobce a zařízení v textové podobě. Velice důležité jsou pole idVendor a idProduct, což jsou identifikátory výrobce VID (Vendor ID) a výrobku PID (Product ID). Na základě těchto dvou polí vybere hostitelský systém vhodný ovladač zařízení. Označení výrobku si určuje výrobce sám. Přidělení kódu výrobce provádí organizace USB-IF. Posledním polem v deskriptoru zařízení je počet možných konfigurací zařízení. Pro každou konfiguraci musí být samostatný konfigurační deskriptor i se všemi hierarchicky svázanými deskriptory. Deskriptor zařízení obsahuje: •
VID (Vendor ID) – číselný identifikátor výrobce (16b)
•
PID (Produkt ID) – číselný identifikátor výrobku (16b)
•
Manufacturer ID – odkaz na řetězec identifikující výrobce
•
Manufacturer – odkaz na řetězec popisující výrobce
•
Product – odkaz na řetězec popisující výrobek
•
Serial Number – odkaz na řetězec sériového čísla
•
Počet konfigurací – počet konfiguračních deskriptorů
Deskriptor konfigurace určuje počet rozhraní zařízení v konfiguraci. Každé zařízení může mít více konfigurací, například s různým druhem napájení zařízení, nebo jiným rozložením bran pro jednotlivé rozhraní. Deskriptor obsahuje také informace o režimu napájení a maximální velikosti odebíraného proudu ze sběrnice. Tyto informace může hostitel využít pro řízení napájení sběrnice. Dále obsahuje celkovou velikost všech deskriptorů posílaných při požadavku o odeslání deskriptoru konfigurace. S ním se posílají deskriptory všech rozhraní konfigurace, deskriptory bran rozhraní a vlastní deskriptory třídy zařízení. Deskriptor rozhraní popisuje rozdělení bran pro jednu funkci zařízení (například zařízení fungující jako fax, scanner a tiskárna může mít tři deskriptory rozhraní). Deskriptor obsahuje informace o počtu bran patřících k rozhraní a o třídě zařízení, ke které funkce zařízení představovaná rozhraním patří.
23
Každá brána může být využita pouze v rámci jednoho rozhraní. Výjimkou je brána 0, která je dostupná pro celé zařízení, a proto se neuvažuje do počtu bran v deskriptoru rozhraní a není ani popsána vlastním deskriptorem brány. Pro větší flexibilitu, je možné definovat alternativní nastavení pro každé rozhraní a tím lze měnit vlastnosti bran za běhu, bez vlivu na ostatní rozhraní. Deskriptor brány popisuje vlastní nastavení brány, tj. typ a adresu brány, největší možnou velikost datového paketu, který lze branou najednou přenášet a pro časový typ brány také periodu přenosu. Pro izochronní typ brány hostitel používá hodnotu v poli maximální velikosti dat při časovém rozvrhování paketů v rámci. Deskriptor textového řetězce popisuje jednak podporované jazyky textů, které lze ze zařízení získat požadavkem GetDeskriptor a pak texty samotné. Všechny texty jsou v kódování UNICODE definovaném v literatuře [7]. Texty mohou být libovolně využity v závislosti podle funkce zařízení, především jsou však určeny k předání pro člověka srozumitelného popisu pro jednotlivé konfigurace a rozhraní. Počet podporovaných jazyků je omezen pouze maximální délkou deskriptoru a proto jich může být až 126.
24
3 Popis obvodu FT232BM Firma FTDI Chip vyrábí obvody FT232BM a FT245BM pracující jako konvertory USB - UART a USB - FIFO.
3.1 Základní vlastnosti FT232BM Tato kapitola uvádí stručný výčet vlastností obvodu FT232BM. Hardwarové vlastnosti: •
jednočipový převodník USB – UART,
•
plný handshake a plné rozhranní signálů modemu,
•
podpora 7/8 bitového přenosu, 1/2 stop-bitů a parity (lichá, sudá, značená, mezerová, bez parity),
•
přenosová rychlost nastavitelná v širokých mezích: o 300Bd až 3MBd (TTL), o 300Bd až 1MBd (RS232), o 300Bd až 3MBd (RS422, RS485),
•
přijímací buffer velikosti 384B, vysílací buffer velikosti 128B
•
nastavitelný time-out přijímače,
•
podpora X-On/X-Off handshake,
•
zabudovaná podpora pro událostní znaky a přerušení linky,
•
automaticky řízený vysílací buffer pro rozhranní RS485,
•
podpora režimů USB suspend/resume pomocí signálů SLEEP# a RI#,
•
podpora pro napájení USB zařízení s vysokým odběrem pomocí signálu PWREN#
•
integrovaný konvertor úrovní UART a řídicích signálů pro 5V a 3,3V logiku,
•
integrovaný regulátor 3,3V pro USB obvody,
•
integrovaný obvod Power-On Reset,
•
integrovaná násobička kmitočtu ze 6 na 48MHz (fázový závěs PLL),
•
jednoduché napájení v rozsahu 4,4V až 5,25V,
•
kompatibilita se standardy USB 1.1 a USB 2.0 (částečná, nedokáže zajistit přenosovou rychlost 480Mb/s),
•
možnost uložení VID, PID, sériového čísla a popisu výrobku do vnější EEPROM,
•
EEPROM programovatelná přímo v aplikaci přes USB.
25
3.2 Blokové schéma FT232BM
Obrázek 3.1 - Blokové schéma obvodu FT232BM
Popis blokového schéma obvodu FT232BM: 3,3V LDO regulátor (LDO – Low Drop-Out) Generuje 3,3V referenční napětí pro buzení USB vysílače. Vyžaduje vnější blokovací kondenzátor připojený mezi vývody 3V3OUT a GND. Také zajišťuje napětí 3,3V pro vývod RSTOUT#. Lze je použít i pro buzení vnějších logických obvodů pracujících s 3,3V logikou do odběru 5mA. USB přijímač/vysílač Poskytuje fyzické rozhranní pro USB kabel. USB DPLL Provádí detekci hodinového a datového signálu z příchozího NRZI kódování USB. Oscilátor 6MHz Generuje referenční hodinový kmitočet 6MHz, který je odvozen z vnějšího krystalu.
26
Násobička hodin Ze 6MHz vytváří referenční kmitočet 12MHz pro SIE, UPE a UART FIFO. Také generuje 48MHz referenční hodiny pro USB DPLL a generátor přenosové rychlosti. SIE (Serial Interface Engine) Provádí paralelně-sériovou a sériově-paralelní konverzi USB dat. Ve shodě se standardem USB 1.1 zajišťuje vkládání a vyjímání synchronizačních bitů a CRC5/CRC16 generaci/testování v datovém proudu USB. UPE (USB Protocol Engine) Spravuje datový tok z řídicího koncového bodu USB. Dvoubránový TX bufer (128B) Data z výstupního koncového bodu USB se ukládají do dvoubránového TX bufferu odkud jsou vyjímána vnějším vysílacím registrem UART pod správou UART FIFO řadiče. Dvoubránový RX bufer (384B) Data z přijímacího UART registru se ukládají do dvoubránového RX bufferu před tím, než jsou vyjmuta SIE při dotazu na data ze vstupního koncového bodu. UART FIFO řadič Ovládá přenos dat mezi RX/TX buffery a vysílacím a přijímacím registrem UART. UART Zajišťuje 7/8 bitovou paralelně-seriovou a seriově-paralelní konverzi dat na RS232 (RS422, RS485) rozhraní. Řídící signály podporované jednotkou UART zahrnují RST, CTS, DSR, DTR, DCD a RI. UART poskytuje aktivační signál vysílače (TXDEN) k ovládání RS485 vysílačů. UART podporuje RTS/CTS, DSR/DTR a X-On/X-Off handshaking. Je-li handshaking vyžadován, je řešen hardwarově proto, aby se dosáhlo co nejkratších odezev. UART také podporuje RS232 přerušení a detekci stavu linek. Generátor přenosové rychlosti Obsahuje 14bitovou předděličku a 3bitový registr pro jemné nastavení přenosové rychlosti (dělí celým číslem + zlomek). Lze naprogramovat přenosové rychlosti od 300Bd do 3MBd.
27
Generátor resetu Poskytuje spolehlivý reset po připojení napájení (power-on reset). Přídavný vstup RESET# a výstup RSTOUT# dává ostatním zařízením možnost resetovat obvod FT232BM nebo se nechat resetovat od něj. V průběhu resetu je RSTOUT# ve vysoké impedanci, jinak je buzen ze zabudovaného regulátoru 3,3V. RSTOUT# může být použit pro řízení 1,5kΩ pull-upu na vývodu USBDP, je-li vyžadována zpožděná USB enumerace. Také může být použit pro reset vnějších obvodů. RSTOUT# zůstane ve stavu vysoké impedance zhruba 2ms po tom, co VCC překročí 3,5V a současně běží oscilátor a současně je RESET# v log. 1. RESET# by měl být připojen na VCC, jinak je vyžadováno připojit na něj resetovaní obvod. EEPROM rozhraní Přestože může obvod FT232BM pracovat i bez vnější EEPROM 93C46, doporučuje se tuto paměť připojit. EEPROM slouží k uložení VID, PID, sériového čísla, řetězce popisu výrobku a hodnoty odebíraného proudu. EEPROM je také vyžadována v případě, že je k počítači připojen více než jeden obvod FT232BM (unikátní sériové číslo se pak sváže s unikátním virtuálním sériovým portem). Další parametry zahrnují „Repote Wake Up“, izochronní přenos dat, „Soft Pull Down Power-Off“ a deskriptor na úrovni standardů USB 1.1 nebo USB 2.0. EEPROM musí být v 16 bitové šíři jako například Microchip 93LC46B nebo ekvivalentní. Musí být schopna pracovat na rychlosti 1Mb/s při napájení 4,4 až 5,25V. EEPROM je programovatelná přímo na desce pomocí speciálního programu, nebo funkcemi uživatelského rozhranní. To dovoluje osadit desku prázdnou EEPROM a naprogramovat ji přímo při vývoji. Není-li EEPROM připojena (nebo je prázdná), použije obvod FT232BM výchozí hodnoty VID, PID, popisu výrobku a proudového odběru. V tomto případě nebude USB deskriptor obvodu obsahovat sériové číslo.
28
3.3 Popis vývodů FT232BM Rozložení vývodů obvodu na pouzdru LQFP-32 zobrazuje obrázek 3.2. Pro popis se vývody sdružují do skupin podle své funkce.
Obrázek 3.2 - Rozložení vývodů obvodu FT232BM na pouzdru LQFP-32
3.3.1 UART rozhraní UART rozhraní obsahuje datové linky UART a řídící signály modemu. Tabulka 3.1 - UART rozhraní Vývod
Signál
Typ
Popis
25
TXD
výstup
výstup vysílaných dat
24
RXD
vstup
vstup přijímaných dat
23
RTS#
výstup
signál modemu
22
CTS#
vstup
signál modemu
21
DTR#
výstup
signál modemu
20
DSR#
vstup
signál modemu
19
DCD#
vstup
signál modemu
18
RI#
vstup
signál modemu
16
TXDEN
výstup
aktivuje vysílač dat pro RS485
29
Signál RI# se používá pro Remote Wakeup. Je-li volba Remote Wakeup aktivována (v EEPROM), lze přechod RI# do log. 0 použít k aktivaci hostitelského řadiče z režimu USB suspends. Po přepnutí od režimu Bit Bang, lze každý z těchto vývodů konfigurovat nezávisle na ostatních, jako vstup nebo výstup.
3.3.2 USB rozhraní USB rozhraní obsahuje datové signály pro připojení k USB.
Tabulka 3.2 - USB rozhraní Vývod
Signál
Typ
Popis
7
USBDP
vstup/výstup
8
USBDM vstup/výstup USB signál D-
USB signál D+(vyžaduje 1,5kΩ pull-up směrem k 3V3OUT nebo RSTOUT#)
3.3.3 EEPROM rozhraní EEPROM rozhraní obsahuje signály pro připojení konfigurační EEPROM. Všechny tyto vývody jsou po resetu ve třetím stavu.
Tabulka 3.3 - EEPROM rozhraní Vývod
Signál
Typ
32
EECS
vstup/výstup
1
EESK
výstup
2
EEDATA
vstup/výstup
Popis Chip Select paměti hodinový signál paměti datový vstup/výstup
30
3.3.4 Řízení spotřeby Řízení spotřeby podporuje režim USB suspend a možnost napájení zařízení přímo z USB.
Tabulka 3.4 - Řízení spotřeby Vývod
Signál
Typ
Popis přejde do log. 0 v režimu USB suspend. Typicky se používá
10
SLEEP#
výstup jako power-down (vypínač) vnějšího konvertoru TTL na RS232 pro aplikace typu konvertor USB <=> RS232 přejde do log. 0 po provedení konfigurace skrze USB; v režimu
15
PWREN# výstup USB suspend je v log. 1. Typicky se používá pro řízení odběru vnější logiky pomocí vnějšího P-kanálového MOSFETu
14
PWRCTL
vstup
PWRCTL = 0, napájeno z USB; PWRCTL = 1, napájeno z vlastního (vnějšího) zdroje;
3.3.5 Pomocné signály Pomocné signály zahrnují reset, vývody pro připojení krystalu, nebo vnějšího zdroje synchronizace a další speciální funkce.
31
Tabulka 3.5 - Pomocné signály (OC značí otevřený kolektor) Vývod
Signál
Typ
4
RESET#
vstup
Popis lze použít pro reset FT232BM vnějším obvodem, v opačném případě zapojíme na VCC výstup zabudovaného generátoru resetu; zůstává ve vysoké impedanci asi 2ms po náběhu VCC nad 3,5V (když současně běží krystalový oscilátor),
5
RSTOUT#
výstup
potom se napojí na vnitřní 3,3V regulátor; aktivace RESET# = 0 vede k přechodu RSTOUT# do vysoké impedance, RSTOUT# není ovlivněn resetem vyvolaným USB sběrnicí
12
TXLED#
výstup(OC) vytvoří impuls do log. 0 při vyslání dat na USB
11
RXLED#
výstup(OC) vytvoří impuls do log. 0 při příjmu dat přes USB vstup 6MHz oscilátoru; lze napájet z vnějšího zdroje hodin (práh přepínání je
27
XTIN
vstup
VCC/2; takže při buzení z vnějšího obvodu musí mít signál CMOS úrovně 5V, nebo přepínací úroveň okolo 2,5V)
28
XTOUT
výstup
31
TEST
vstup
výstup 6MHz oscilátoru (lze použít pro vnější obvody); v režimu USB suspend je oscilátor zastaven TEST = 1 pro normální režim; TEST = 0 pro testování funkce obvodu (provádí výrobce)
3.3.6 Napájecí vývody Napájecí vývody slouží pro připojení napájecího napětí obvodu, definici napěťových úrovní rozhraní UART a přivedení vyhlazeného napájecího napětí pro zabudovanou násobičku kmitočtu (analogová část obvodu).
32
Tabulka 3.6 - Napájecí vývody Vývod
Signál
Typ
Popis výstup zabudovaného regulátoru; musí být zablokován kondenzátorem kapacity 33nF;
6
3V3OUT
výstup
přednostně je tento regulátor určen k napájení vnitřní logiky, lze jej však použít i pro napájení vnějších obvodů do odběru 5mA
3, 26
VCC
napájení
napájení 5V jádra a zabudovaného regulátoru; rozsah 4,4V až 5,25V napájecí napětí pro UART rozhraní v rozsahu 3 až 5,25V (vývody 10, 11, 12, 14, 15, 16, 18 až 25);
13
VCCIO
napájení pokud UART spolupracuje s obvody 3,3V logiky, připojíme VCCIO na vnější 3,3V zdroj, jinak jej spojíme s VCC (pak mají vývody UART rozhraní 5V úrovně)
9, 17
GND
napájení napájecí a signálová zem
30
AVCC
napájení napájení zabudované násobičky hodin (analogová část)
29
AGND
napájení napájení zabudované násobičky hodin (analogová část)
3.4 Mezní údaje Zde jsou uvedeny mezní údaje obvodu FT232BM.
Tabulka 3.7 - Mezní údaje Parametr
Povolený rozsah
Skladovací teplota
-65 °C až +150 °C
Provozní teplota
0 °C až +70 °C
Napájecí napětí
-0,5V až +6V
Vstupní napětí
-0,5V až VCC +0,5V
Výstupní proud
max. 24mA
Výkonová ztráta (VCC = 5,25V)
500mW
33
4 Návrh převodníku 4.1 První kroky První myšlenky se odvíjely od zadaných kritérií, překonstruovat měřící systém NX7021 tak, aby byl schopen komunikovat po USB sběrnici s co nejmenšími realizačními náklady. Realizační úvod vedl k odstranění součástek podporující komunikaci po sběrnici RS232, jedná se zejména o tlumivku, obvod MAX232 a jeho pomocné kondenzátory. Uvolněné místo na plošném spoji po součástkách podporujících komunikaci po sběrnici RS232 je však nevhodné pro implementaci převodníku. Proto je převodník navržen na zvláštním plošném spoji, který je umístěn a připevněn nad součástky plošného spoje NX7021 pomocí jednořadých soklů. Pomocí těchto soklů je zajištěno napájení převodníku, vstup signálů RxD, TxD od procesoru AT89C52 (který je umístěn na plošném spoji NX7021) a výstup převodníku v úrovni USB signálu ( VBUS (+5V), D+, D-, GND). Výstup z měřicí jednotky NX7021 je pomocí konektoru CAN 9, na jehož vstup jsou přivedeny USB signály (VBUS +5V pin 4, Data+ pin 2, Data- pin 3, GND pin 5). Tento konektor je ponechán kvůli požadavku na zachování mechanické konstrukce zařízení.
4.2 Napájení převodníku z měřicího systému NX7021 Napájení převodníku je zajištěno z +5V části měřicího systému NX7021. Na obrázku 4.1 je uvedeno schéma zapojení napájení z měřícího systému NX7021. Napájení získané ze sběrnice USB je použito k řízení vývodu RESET#. Pokud je USB hostitel nebo měřicí systém NX7021 vypnut, bude RESET# v log. 0 a obvod zůstane v resetu. Je-li RESET# v log. 0 je také RSTOUT# v log. 0, takže USBDP neodebírá z 1,5kΩ pull-upu žádný proud. Když je obvod FT232BM v resetu, jsou vývody UART rozhraní ve třetím stavu. Tyto vývody mají zabudovány 200kΩ zdvihací rezistory proti VCCIO a tak jsou „slabě“ taženy k log. 1.
34
Obrázek 4.1 - Napájení převodníku
4.3 Připojení EEPROM Obrázek 4.2 znázorňuje připojení sériové EEPROM typu 93C46A (lze použít i 93C56 nebo 93C66) k obvodu FT232BM. Vývod EECS je přímo napojen na signál CS paměti. Vývod EESK je přímo napojen na signál SK paměti. Vývod EEDATA je napojen přímo na datový vstup (DIN), na tento vývod je připojen i datový vstup (DOUT) paměti. Aby se zabránilo konfliktům, je připojení provedeno přes odpor 2,2kΩ. Při resetu obvodu FT232BM (vyvolaném buď připojením napájení nebo přes USB sběrnici) se testuje, zda je EEPROM připojena a zda obsahuje platná data. Pokud je obojí splněno, jsou data EEPROM použita pro definici deskriptorů USB. V opačném případě se použije výchozí hodnota.
35
EEPROM potvrzuje platný požadavek stažením signálu DOUT do log. 0. Pro test této podmínky je nezbytný pull-up hodnoty 10kΩ. Pokud není příkaz potvrzen, je tedy vývod EEDATA vytažen směrem k log. 1 a tak FT232BM detekuje neplatný příkaz nebo nepřipojení paměti.
Obrázek 4.2 - Připojení EEPROM
4.4 Připojení oscilátoru Obrázek 4.3 zobrazuje zapojení dvouvývodového keramického rezonátoru (krystalu). V tomto případě se musí použít vnější zatěžovací kondenzátory 27pF.
36
6 MHz
Obrázek 4.3 - Připojení krystalu
4.5 Rozhraní pro připojení indikačních LED Obvod FT232BM má dva vývody určené pro připojení LED indikujících příjem nebo vysílání dat. Při příjmu/vysílání přejde vývod RXLED#/ TXLED# ze stavu vysoké impedance do log. 0 (jedná se o výstup typu otevřený kolektor), takže lze indikovat přenos dat. Pro prodloužení impulsu na délku, kterou je uživatel schopen sledovat, je použit zabudovaný monostabilní klopný obvod. Na obrázku 4.4 je zobrazeno zapojení LED diod k obvodu FT232BM.
Obrázku 4.4 - Připojení indikačních LED
37
4.6 Připojení měřicího systému NX7021 k PC Připojení měřicího systému NX7021 k PC je provedeno USB kabelem, který má na jednom konci USB konektor typu „A“ a na druhém konci konektor CAN 9 (samička). Zapojení jednotlivých pinů obou konektorů popisuje tabulka 4.1. Konektor CAN 9 je použit kvůli požadavku na zachování mechanické konstrukce měřicího systému NX7021. Signály jsou však USB úrovně.
Tabulka 4.1 - Zapojení jednotlivých vývodů konektorů USB
CAN 9
číslo vývodu
barva vodiče
číslo vývodu
význam
1
rudá
4
+5V
2
bílá
3
D-
3
zelená
2
D+
4
černá
5
GND
Na obrázku 4.5 jsou zobrazeny použité konektory datového vodiče, USB konektor viz obrázek 4.5 a) a konektor CAN 9 viz obrázek 4.5 b). Z obrázku 4.5 je též patrné rozmístění, vzhled a popis jednotlivých vývodů konektorů.
a) USB konektor typu A
b) CAN 9 konektor, samice
Obrázek 4.5 - Použité konektory datového vodiče
38
4.7 Analýza maximální použitelné rychlosti přenosu dat Komunikační rychlost není závislá jen na nastavení komunikační rychlosti mezi měřícím systémem NX7021 a PC, ale závisí také na komunikační rychlosti mezi mikroprocesorem AT89C52 firmy ATMEL a převodníkem FT232BM firmy FTDI. Z mikroprocesoru je použit pro komunikaci asynchronní kanál dostupný na linkách TxD (pin 11, port P3.1) a RxD (pin 10, port P3.0). Linky jsou kříženy a vedeny přímo do převodníku na RxD (pin 24), TxD (pin 25). V této fázi komunikace nastává omezení komunikační rychlosti. Mikroprocesor je nastaven na nízkou komunikační rychlost a tím je také omezen počet vysílaných vzorků z mikroprocesoru do převodníku na 2400vzorků/s. Což je žádaná hodnota v zadání diplomové práce. Pro zvýšení komunikační rychlosti je možné aplikovat některé body z následujících možností: •
zvýšení frekvence oscilátoru mikroprocesoru
•
vhodné nastavení dělícího poměru čítače/časovače
•
změna modu mikroprocesoru.
V měřícím systému NX7021 je nastavena komunikační rychlost mikroprocesoru na 115,2kBd. K mikroprocesoru je připojen krystal o velikosti 18,432MHz, z hodnoty krystalu je jednoduše odvozen instrukční cyklus, který trvá 641ns. Výpočet přenosové rychlosti mikroprocesoru AT89C52 (SMOD = 0): v=
f OSC SMOD 1 18432000 ⋅ = ⋅ = 115200 Bd (65536 − TH 2 ) 32 (65536 − FFFB ) 32 kde: TH2
je obsah čítače/časovače 2
SMOD je bit ovlivňující přenosovou rychlost (násobení 1x nebo 2x) fOSC
je pracovní kmitočet mikroprocesoru (18,432MHz)
Další omezení komunikační rychlosti by mohlo nastat převodem převodníku FT232BM. Převodník FT232BM je schopen používat standardní přenosové rychlosti v rozsahu 300Bd až 3MBd. Dále je možné nastavovat i další rychlosti odvozené od základního kmitočtu 3MHz viz literatura [4, 9]. Komunikace mezi převodníkem FT232BM a PC je nastavena v režimu Full Speed, přenosová rychlost je tedy 12Mb/s. Tuto část komunikace jsem pro kontrolu správného přenosu dat měřil na osciloskopu AGILENT 54621d v režimu logického analyzátoru. Naměřená data jsem vygeneroval pomocí CSV formátu do programu Microsoft Excel a následně zpracoval grafy viz přílohy 8, 9, 10 a 11.
39
4.8 Schéma zapojení převodníku Obrázek 4.6 zobrazuje celkové schéma převodníku. Podle kterého je proveden návrh plošného
spoje pomocí programu ORCAD. Schéma je vytvořeno pomocí dokumentace
k obvodu FT232BM od firmy FTDI viz literatura [4].
Obrázek 4.6 - Schéma zapojení převodníku
40
4.9 Vzhled a popis plošného spoje Příloha 4 uvádí výkres desky plošného spoje ze strany součástek. Následují plošný spoj ze strany spojů viz příloha 5 a osazovací schéma desky viz obrázek 4.7. Velikost desky plošného spoje je uvedena v příloze 7.
Návrh plošného spoje je vytvořen v programu
ORCAD. Velikost plošného spoje se odvíjí od velikosti a připojovacích pinů měřicího systému NX7021. Z důvodu malého místa je plošný spoj navržen z SMD součástek, kromě krystalu. Plošný spoj převodníku je upevněn na plošném spoji měřicího systému NX7021 pomocí jednořadých soklů (jednoduše rozebíratelný spoj). Těmito sokly je vyřešeno napájení (VCC, GND), vstupy (RxD, TxD) a výstupy (D+, D-, VBUS, GND).
Obrázek 4.7 - Osazovací schéma desky
Hodnoty součástek použitých na plošném spoji: R1,2 = 27Ω
C1, 2 = 27pF
D1, 2 – LED diody(TxD rudá, RxD zelená)
R3 = 4,7kΩ
C3, 4, 5, 6, 8 = 100nF
U2 - 93C46 – EEPROM paměť (16b)
R4 = 1,5kΩ
C7 = 33nF
U1 - FT232BM – jednočipový převodník
R5,8 = 10kΩ
C9 = 33μF
X1 – krystal 6MHz
R6 = 470Ω R7 = 2,2kΩ R9,10 = 330Ω R11 = NIC chyba 41
5 Návrh programového vybavení 5.1 Aplikace 5.1.1 Základní informace a použití Aplikace byla vytvořena na základě požadavku firmy Intronix s.r.o.. Další nároky na aplikaci stanovila škola jako zadavatel diplomové práce. Použití bude spočívat k prezentaci možností měřícího systému NX7021 a k měřícím účelům. Aplikace je založena na jednoduchosti ovládání. Ovládání celé aplikace je řešeno pouze třemi tlačítky „Zpět“, „Další“ a „Zavřít“.
5.1.2 Programovací jazyk, IDE (Integrated Development Environment) Aplikace byla naprogramována v jazyce C++, ve vývojovém prostředí C++ Builder verze 6.0 (build 10.161) s využitím VCL (Visual Component Library) knihoven tohoto prostředí.
5.1.3 Hardwarové a softwarové nároky Pro provoz aplikace je zapotřebí počítač vybavený USB rozhraním což předem vylučuje operační systémy Windows 95 a nižší verze ze seznamu podporovaných operačních systému. Aplikace byla testována na Windows 98, Windows 2000 a Windows XP. Se spuštěním aplikace na systému Windows NT (SP 4.0) by neměl být problém, toto však testováno nebylo.
5.2 Komunikace se zařízením 5.2.1 Komunikační systém NX7021 Komunikace se systémem NX7021 je realizována metodami třídy ModulNx7021Class. Třída nabízí tyto metody: •
připojení zařízení
•
odpojení zařízení
•
zjištění měřené hodnoty
•
spuštění vzorkování
•
ukončení vzorkování
•
čtení sériového čísla
42
Měření probíhá dvojím způsobem. Pokud se jedná o měření aktuální hodnoty v rozsahu 200μm (rozlišení 0,1μm ) nebo 1000μm (rozlišení 1μm ), jedná se o měření jednorázové, kdy je na zařízení vyslána sekvence bytů viz literatura [3] nebo kapitola 1.3 a ihned je přečtena odpověď, kterou je aktuální hodnota v daném rozsahu. Při režimu vzorkování se měří s rozlišením 0,1μm. Pro začátek měření se odešle inicializační příkaz uveden v literatuře [3] nebo v kapitole 1.3 se stanovením počtu vzorků 450..2400vz/s pro měření a tyto vzorky jsou posléze nepřetržitě ze zařízení čteny. Toto vzorkování lze předčasně ukončit, stejně jako lze zařízení kdykoli odpojit. Se zařízením se komunikuje pomocí API (Application Programming Interface) funkcí systému Windows kdy je komunikace se zařízením realizována pomocí funkcí pro čtení a zápis do souboru. Připojení zařízení tedy spočívá v určení čísla portu a volání metody CreateFile: device__handle = ::CreateFile( com_name, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0 );
if (device__handle == INVALID_HANDLE_VALUE) return false; DCB
dcbCommPort = {0};
dcbCommPort.DCBlength = sizeof (DCB); ::GetCommState(device__handle, &dcbCommPort); ::BuildCommDCB("115200,N,8,1", &dcbCommPort); ::SetCommState(device__handle, &dcbCommPort); COMMTIMEOUTS
ctmoOld = {0};
COMMTIMEOUTS
ctmoNew = {0};
::GetCommTimeouts(device__handle, &ctmoOld); ctmoNew.ReadTotalTimeoutConstant = 512; ::SetCommTimeouts(device__handle, &ctmoNew);
V ukázce zdrojového kódu můžete vidět způsob, jakým se zařízení připojuje. Posílání příkazů do zařízení spočívá v zápisu sekvence bytů, jejichž význam je popsán v kapitole 1.3.
43
Zároveň je potřeba každou změřenou hodnotu zkontrolovat a to pomocí kontrolního součtu, což je mechanismus pro odhalení chyb při komunikaci. Příklad komunikace se zařízením je uveden v následujícím výpisu zdrojového kódu metody ZjistiHodnotu: vysledek = false; if (JePripojeno() == false) return vysledek; bool podarilo_se = &skutecne_zpracovano, NULL);
::WriteFile(device__handle,
data_in,
in_size,
if (podarilo_se == false) return vysledek; if (skutecne_zpracovano == in_size) { ::ReadFile(device__handle, data_out, out_size, &skutecne_zpracovano, NULL); if (skutecne_zpracovano == out_size) { if (nx7021::CheckControlSoucet(data_out, out_size) == true) { vysledek = true; } } }
5.2.2 Měření v samostatném vláknu Nepřetržité vzorkování vyžadovalo použít samostatné vlákno, protože bylo zapotřebí naměřené výsledky zároveň zobrazovat do grafu aplikace. V samostatném vláknu jsou data nepřetržitě čtena ze zařízení a odesílána do druhého vlákna, které data zobrazuje. Vlákno, které čte hodnoty ze zařízení musí pracovat téměř v reálném čase. Z tomuto důvodu mu musela být
přiřazena
vyšší priorita.
Vlákno
je v aplikaci představováno
třídou
VzorkovaniThread jejíž inicializace je znázorněna níže: vzorkovani_thread = new VzorkovaniThread(true); vzorkovani_thread->FreeOnTerminate = true; vzorkovani_thread->SetDevice(device__handle); vzorkovani_thread->Priority = tpHighest; vzorkovani_thread->SetMsgWindow(msgw); vzorkovani_thread->SetSoubor(statistika_soubor); vzorkovani_thread->OnTerminate = OnThreadTerminate;
Vlákno je samostatným objektem, proto mu musíme předat informace o zařízení, ze kterého se budou číst naměřené hodnoty. Zároveň je zapotřebí předat informaci, kam se budou naměřené hodnoty předávat.
44
5.2.3 Předávání naměřených dat aplikační vrstvě Jednoduchým způsobem jak předávat naměřené hodnoty aplikační vrstvě spočívá ve využití mechanismu zpráv systému Windows, kdy si vlákno drží handle na hlavní formulář aplikace, kterému posléze posílá informace o naměřené hodnotě a zároveň informuje, že měření bylo ukončeno. Hodnoty zaslané tímto způsobem si aplikace čte v handleru zpráv hlavního formuláře a ihned po obdržení zobrazuje. ::PostMessage(msg_window, WMU_SET_GRAPH, namerena_hodnota, 0);
Vzhledem k rychlosti jakým je zařízení schopno posílat naměřené hodnoty aplikaci, není programem zobrazována každá naměřená hodnota, ale zhruba každá padesátá. V případě kdy by se zobrazovala skutečně každá naměřená hodnota, aplikace by byla zahlcena požadavky na vykreslení hodnot do grafu. Všechna naměřená data, se ale ukládají do souboru. Tento způsob předávání hodnot platí pouze pro vzorkovací režim. Pokud je zavolána funkce pro čtení jedné hodnoty, není žádné vlákno vytvořeno a funkce přímo vrací výsledek.
5.2.4 Objekt modulu NX7021 Aplikační vrstvě je zařízení zpřístupněno výše zmíněnou třídou ModulNx7021Class, která obsluhuje veškerou práci se zařízením. Dokonce tato třída interně vytváří a spravuje vlákno používané ve vzorkovacím režimu. Objekt vlákna je tvořen třídou VzorkovaniThread, která je odvozena od třídy TThread z knihovny objektů VCL.
5.3 Uživatelské rozhraní 5.3.1 Styl „Průvodce“ Aplikace je realizována jako průvodce, který jednoduchým způsobem zpřístupňuje funkce programu. Myšlenka vychází ze způsobu jakým je program používán: •
připojení zařízení
•
výběr módu měření
•
nastavení parametrů měření
•
měření
•
ukončení měření
•
další měření opět s jiným nastavením
•
prohlížení historie provedených měření
45
Tento způsob návrhu uživatelského rozhraní byl zvolen po zkušenosti, kdy všechny funkce byly umístěny na jednom formuláři a ovládání programu se stalo příliš složitým. Při použití průvodce má uživatel v jeden moment na formuláři k dispozici maximálně několik ovládacích prvků. Netradiční myšlenkou bylo úplné odstranění ovládacích prvků pro připojení a následné odpojení zařízení. Místo toho jsou tyto funkce skryty za další krok průvodce. Po výběru portu pro připojení uživatel pouze klikne na tlačítko „Další“,
které ho přesune na následnou
záložku průvodce a zároveň automaticky vybere port a připojí se.
5.3.2 Formuláře hlavní aplikace Formulář hlavní aplikace je tvořen dvěma částmi: •
horní částí, jejíž obsah se mění v závislosti na právě zobrazené záložce
•
dolní částí, která obsahuje tlačítka pro navigaci průvodcem a v některých režimech také LCD display a vizuální komponentu (tzv. progresbar) pro zobrazení průběhu vzorkování.
Horní část aplikace obsahuje vizuální komponentu Notebook, která zapouzdřuje jednotlivé záložky průvodce.
5.3.3 Připojení Na této záložce viz obrázek 5.1 je k dispozici komponenta TComboBox pro výběr portu pro připojení zařízení. Po kliknutí na tlačítko „Další“, dojde k automatickému výběru portu a následnému připojení zařízení k nadřazenému PC. Zároveň se zobrazí záložka pro volbu režimu měření. Pokud se připojení nezdaří, zobrazí se chybové hlášení „(zařízení se nepodařilo připojit)“ vedle komponenty TComboBox a záložka pro připojení zůstane zobrazena.
46
Obrázek 5.1 - Připojení
5.3.4 Volba režimu a nastavení měření Po připojení může uživatel zvolit režim měření, nebo si může zobrazit historii již provedených měření. Pro pouhé čtení hodnot nejsou k dispozici žádná další nastavení a po kliknutí na tlačítko „Další“ začne požadované měření. Vzorkování, kontrola rozsahu nebo osciloskop viz obrázek 5.2, již nastavení obsahuje a uživatel může přímo ve spodní části formuláře změnit nastavení vybraného režimu ještě před začátkem měření. Typicky se jedná o počet měření a různé mezní hodnoty.
47
Obrázek 5.2 - Volba režimu – Osciloskop
Zde máme volbu Počet měření, kde můžeme zvolit počet měřených vzorků (jsou to druhé mocniny dvou od 8 do 16384 a LOOP (nekonečná smyčka)). Dále je zde volba Hodnota tj. spouštěcí hodnota (tzv. trigger) s volbou náběžné nebo sestupné hrany. Osciloskop umožňuje tři režimy měření: -
Auto: tento režim čeká na spouštěcí (triggrovací) podmínku, není-li tato podmínka splněna, spouští měření po určitém čase (nastaveno na pět sekund). Po odměření průběhu se cyklus opakuje.
-
Norm: tento režim čeká na spouštěcí (triggrovací) podmínku, není-li tato podmínka splněna, nespustí se měření. Po odměření průběhu se cyklus opakuje.
-
Single: tento režim čeká na spouštěcí (triggrovací) podmínku, není-li tato podmínka splněna, nespustí se měření. Splní-li se podmínka, změří se jen jeden průběh a měření se ukončí.
48
5.3.5 Měření Měření je prezentováno dvěma způsoby, grafem a tabulkou. Tabulka je použita pro čtení hodnot, graf pro vzorkování, pro kontrolu rozsahu a osciloskop. Protože měřící systém NX7021 podporuje přímo pouze vzorkovací režim, jsou ostatní dva režimy simulovány právě s pomocí vzorkovacího režimu.
5.3.6 Vzorkování V tomto režimu jsou naměřená data zobrazována do grafu viz obrázek 5.3. Počet měření závisí na nastavení ze záložky pro volbu režimu. Měřící systém NX7021 nepodporuje nepřetržité vzorkování proto je toto simulováno aplikací. Při nepřetržitém měření je zařízení dotázáno na maximální počet hodnot a po jejich odeslání aplikaci je tento příkaz zadán znovu. Pokud si uživatel přeje v kteroukoli chvíli měření ukončit, klikne na tlačítko „Zpět“. Zařízení podporuje funkci pro náhlé zastavení vzorkování.
Obrázek 5.3 - Vzorkování
49
Funkce pro započetí měření. void TfrmMain::Start() { if (pocetMereni == "LOOP") { modul_nx7021.SpustitVzorkovani(Handle, 16384); nepretrziteVzorkovani = true; } }
Ta je automaticky volána v případě nepřetržitého měření: void __fastcall TfrmMain::OnFrmMainMessage(TMessage & Message) { switch (Message.Msg) { case WMU_VLAKNO_UKONCENO: { if (nepretrziteVzorkovani) { Start(); break; }
Okenní procedura hlavního formuláře obsluhuje zprávy pro ukončení měření a zároveň vyhodnocuje zprávu o přijetí právě naměřené hodnoty. Toto je signalizováno zprávou WMU_SET_GRAPH jejíž parametr obsahuje naměřenou hodnotu. Tato zpráva je zasílána z měřícího vlákna. Naměřená hodnota je zobrazena na grafu a zároveň uložena do historie měření, které je po ukončení měření uloženo do souboru.
5.3.7 Kontrola rozsahu Kontrola rozsahu viz obrázek 5.4 (rozsah nastaven na ±200) vychází ze vzorkovacího režimu s tím rozdílem, že zobrazení do grafu se aktivuje, až ve chvíli, kdy naměřená hodnota překročila stanovené meze. Tato kontrola je součástí reakce na zprávu WMU_SET_GRAPH, kdy se každá naměřená hodnota kontroluje jestli její hodnota splňuje zadanou podmínku. Pokud ji nesplňuje, hodnoty se začnou zobrazovat do grafu. Pokud nebylo během měření započato zobrazování do grafu, historie měření se nevytvoří.
50
Obrázek 5.4 - Kontrola rozsahu
5.3.8 Osciloskop Tento mód měření je také založen na vzorkovacím režimu, kdy jsou změřená data vyhodnocována podobně jako při kontrole rozsahu. Při splnění příslušných podmínek jsou pak zobrazena do grafu viz obrázek 5.5. V této záložce měření máme možnost nastavovat rozsahy os v průběhu měření: •
osa y - velikost hodnoty/dílek
•
osa x - počet vzorků/dílek
51
Obrázek 5.5 - Osciloskop
5.3.9 Čtení hodnot V tomto módu nejsou data zobrazována do grafu, ale jsou vypisována do tabulky viz obrázek 5.6. Čtení hodnoty je stejné pro měření v rozsahu ±200μm s rozlišením 0,1μm a měření v rozsahu ±1000μm s rozlišením 1μm. V tabulce se ke každé naměřené hodnotě generuje čas (ze systémových hodin), datum, příslušný rozsah a naměřená hodnota. Aktuálně změřená hodnota je podbarvena modře.
52
Obrázek 5.6 - Čtení hodnoty
Systém NX7021 disponuje funkcí pro jednorázové měření hodnoty a tento požadavek je na zařízení odesílán v pravidelných intervalech, posléze je zobrazován do tabulky. switch (rgCteciRezim->ItemIndex) { case CTENI_HODNOTA_200: { result = modul_nx7021.PrectiHodnotu200(); break; } case CTENI_HODNOTA_1000: { result = modul_nx7021.PrectiHodnotu1000(); break; } } int aktRadek = scCteniHodnoty->RowCount; if (scCteniHodnoty->Cells[0][1].IsEmpty() == false) { scCteniHodnoty->RowCount += 1; }
53
else {aktRadek -= 1;} scCteniHodnoty->Cells[0][aktRadek] = datum; scCteniHodnoty->Cells[1][aktRadek] = cas; scCteniHodnoty->Cells[2][aktRadek] = rozsah; scCteniHodnoty->Cells[3][aktRadek] = (AnsiString)result; if (scCteniHodnoty->Row == scCteniHodnoty->RowCount - 2) { scCteniHodnoty->Row = aktRadek; } cd999->Value = result;
5.3.10 Zobrazení historie Zobrazení historie viz obrázek 5.7 se otevře v případě, když se při volbě režimu vybere položka Historie. Záložka obsahuje v levé části seznam provedených měření a v pravé části graf, který zachycuje historii měření vybranou v pravé části formuláře. Zároveň jsou k dispozici informace o provedeném měření.
Obrázek 5.7 - Historie
54
Níže zobrazený kód je ukázkou funkce, která zobrazuje strom se seznamem naměřených dat. Strom je tvořen vizuální komponentou TTreeView, do které jsou postupně vloženy všechny položky historie načtené při startu programu, nebo vytvořené během jeho chodu. Poněvadž je možné jednotlivá měření z historie mazat (a to dokonce rekurzivně), obsahuje každé měření příznak (measure→GetSmazatPoUkonceni) určující, zda-li nebylo měření odstraněno. V takovém případě není ve stromu zobrazeno. void TfrmMain::FillHistory() { tvHistorie->Items->Clear(); for (int idx = 0; idx < measuresMemory->GetMeasuresCount(); idx++) { COneMeasure * measure = measuresMemory->GetMeasure(idx); if (measure != NULL && *(measure->GetSmazatPoUkonceni()) == false) { char measureDate[12] = {0}; strcpy(measureDate, measure->GetInfo()->datum); char yearText[32] = {0}; char monthText[32] = {0}; char dayText[32] = {0}; strcpy(yearText, measureDate); yearText[4] = 0; strcpy(monthText, measureDate + 5); monthText[2] = 0; strcpy(dayText, measureDate + 8); dayText[2] = 0;
Následuje funkce pro rekurzivní mazání položek z historie: void TfrmMain::DeleteMeasures(TTreeNode * nodeToDel) { if (nodeToDel->Count > 0) { for (int idx = 0; idx < nodeToDel->Count; idx++) { TTreeNode * node = nodeToDel->Item[idx]; if (node->Count > 0) DeleteMeasures(node); if (node->Data != NULL) { COneMeasure * measure = (COneMeasure *)node->Data; if (measure != NULL) { *(measure->GetSmazatPoUkonceni()) = true; } } } } }
55
5.3.11 Komponenta „LCD Display“ Jedním z požadavků bylo zobrazování naměřených hodnot na LCD display. Byla použita tato knihovna viz obrázek 5.8.
Obrázek 5.8 - Použitá VCL knihovna pro display
5.4 Prezentace naměřených dat 5.4.1 Zobrazení naměřených dat Data jsou zobrazována do grafu nebo do tabulky. Graf je tvořen komponentou TChart a aplikace obsahuje čtyři instance této třídy (vzorkování, kontrola rozsahu, osciloskop a historie). V grafu se zobrazují naměřené hodnoty y-osa: hodnota změřeného vzorku, x-osa: počet naměřených vzorků. Tabulka je komponentou TStringGrid a je použita při čtení hodnot. Pokud je při měření zobrazen graf, je na něm v jednom okamžiku zobrazeno maximálně 2048 hodnot. Při prohlížení historie měření jsou hodnoty zobrazeny všechny.
5.4.2 Uložení naměřených dat Data jsou do souboru ukládána částečně v binárním formátu a částečně ve formátu textovém. Hlavička souboru je tvořena strukturou SMeasureInfo a zbytek souboru pak jednotlivými hodnotami měření.
56
struct SMeasureInfo { SMeasureType measureType; int min; int max; char datum[12]; char cas[10]; char popis[256]; };
Tato struktura obsahuje informace, které se automaticky vyplní pro každé provedené měření a jsou zobrazena v režimu Historie. Hodnoty měření jsou v souboru uloženy jako text. Je tedy možné je jednoduše číst. Historie se automaticky ukládá do adresáře aplikace a název souboru je tvořen datem a časem měření. Soubor měření má koncovku nx8. Třída, která aplikaci poskytuje prostředky pro správu historie se jmenuje CMeasures a obsahuje funkce pro přidávání dat do historie, vyhledávání jednotlivých měření a dále umožňuje mazat výsledky měření. class CMeasures { char directory[MAXPATH]; std::vector
measures; HANDLE nWindow; void Notify(NotificationType nType); public: CMeasures(void) {} ~CMeasures(void); void Load(const char * dir); void Add(const signed short * data, int pocetPolozek, SMeasureType measureType, const char * date = NULL, const char * time = NULL); void Close(void); void InitializeNotificator(HANDLE handle); const char * GetLastMeasureName(void); const COneMeasure * GetMeasureByName(const char * name); void Clear(); int GetMeasuresCount(void); COneMeasure * GetMeasure(int index); void AddRandomMeasures(); };
57
5.4.3 Export naměřených dat Naměřená data je možné exportovat do formátu Excel XML, který je možné otevřít aplikací Microsoft Excel (verze XP a výše) a v tomto programu dále zpracovávat. Funkce pro export je přístupná přes kontextové menu seznamu měření na záložce Historie. Funkce pro export vygeneruje XML soubor ve formátu, který byl převzat z pokusně vytvořené tabulky, uložené programem Excel právě do XML formátu. Tato funkce je velmi užitečná v případě, když chceme naměřené hodnoty zobrazit v grafu programu Excel, způsobem, který nelze použít v naší aplikaci.
5.5 Volba typu měřícího systému Volba typu jiného měřícího systému v této aplikaci není vhodná. Jelikož jiné měřící systémy firmy Intronix s.r.o. používají jiný komunikační protokol a jsou koncipovány na jiném principu. Aplikace rozšířená pro volbu typu měřícího systému by byla zbytečně rozsáhlá, což by vedlo k její nepřehlednosti a složitosti. Z tohoto důvodu je lepší volit, pro každý měřící systém jinou aplikaci, do které se můžou použít bloky kódu aplikace navržené v této diplomové práci.
58
6 Závěr Tato diplomová práce nabízí řešení modernizace měřícího systému NX7021 pro firmu Intronix s.r.o.. V první části diplomové práce byl proveden stručný výtah ze specifikace USB verze 1.1 a částečně i z verze 2.0, ze kterého je možné pochopit funkci jednotlivých částí a vrstev sběrnice. Výtah je proveden do větší hloubky než bylo nezbytně nutné pro řešení zadání tak, aby byl získán širší úhel pohledu na tuto relativně novou sběrnici. Podrobnější výtah ze sběrnice byl vypracován také proto, že se jedná o perspektivní multifunkční rozhraní, které stále více vytlačuje starší sériové rozhraní RS232 a to nejen pro počítačové periferie, ale i pro některé průmyslové systémy, jako jsou systémy pro konfiguraci a sběr dat. Vzhledem k tomu, že se práce zabývá implementací rozhraní USB s využitím dostupných vyráběných obvodů, musel být takový obvod nejprve vybrán z rozsáhlé nabídky dostupných obvodů. Na základě vyhodnocení všech dostupných informací o použitelných obvodech, byl vybrán převodník RS232/USB od firmy FTDI, typ obvodu FT232BM. Tento převodník jsem vyhodnotil jako nejvhodnější pro tuto implementaci a posléze byl doporučen i firmou Intronix s.r.o.. S vybraným obvodem byl navržen a realizován plošný spoj připojený k mikroprocesoru AT89C52 firmy Atmel pomocí asynchronního kanálu. Největší podíl praktické části diplomové práce zaujímá vytvoření programového vybavení pro uživatelské ovládání měřícího zařízení NX7021. Programovou výbavu lze rozdělit do několika částí: •
jednorázové měření - na zařízení je vyslán požadavek o naměřenou hodnotu, odpověď je pak ihned přečtena. Odpověď je aktuální hodnota v daném rozsahu. Tato hodnota se vypisuje do tabulky s naměřenými hodnotami.
•
metoda vzorkování - zde se odešle inicializační příkaz se stanovením počtu hodnot pro měření, tyto hodnoty jsou posléze ze zařízení nepřetržitě čteny. Naměřené hodnoty jsou v této metodě vykreslovány do grafu.
•
archivace a export naměřených dat - data jsou ukládána do souboru částečně v binárním formátu (hlavička souboru) a částečně ve formátu textovém (data oddělena středníkem). Naměřená data je možné exportovat do formátu Excel XML, který je možné otevřít aplikací Microsoft Excel a v tomto programu je lze dále zpracovávat.
59
7 Literatura [1] Bajer J., Hanzálek Z., Šusta R.: Logické systémy pro řízení, Vydavatelství ČVUT, Praha 2000, ISBN 80-01-02147-5
[2] Vedral J., Fisher J.: Elektronické obvody pro měřící techniku, Vydavatelství ČVUT, Praha 1999, ISBN 80-01-01950-0
[3] Dokumentace jednotky NX7021 firmy Intronix Interní dokumentace firmy Intronix s.r.o.
[4] Dokumentace obvodu FT232BM firmy FTDI [online] URL:, [cit. 19. 09. 2006]
[5] Universal Serial Bus Specifikation Revision 1.1. [online] URL:, [cit. 20. 10. 2006]
[6] Universal Seriál Bus Specifikation Revision 2.0. [online] URL:, [cit. 23. 10. 2006]
[7] The Unicode Standard. Worlwide Charakter Endcoding Version 3.0. [online] The Unicode Consortium, Addison – Wesley Publishing Copany, Reading, Massachusetts. URL:, [cit. 26. 10. 2006]
[8] Kocourek P.: Přenos Informace, Vydavatelství ČVUT, Praha 2004, ISBN 80-01-02892-5
[9] Matoušek D.: USB prakticky 1. díl, Vydavatelství BEN, Praha 2003, ISBN 80-7300-103-9
[10] Louis D., Mejzlík P., Virius M.: Jazyky C a C++ podle normy ANSI/ISO Vydavatelství GRADA, Havlíčkův Brod 1999, ISBN 80-7169-631-5
60
8 Obsah přiloženého CD Obsah kořenového adresáře přiloženého CD: /NX7021
Spustitelná verze spolu se zdrojovými kódy programu NX7021.
/doc
Elektronická podoba diplomové práce.
/OVLADAČ
Spustitelná verze ovladače pro připojení měřícího zařízení k PC.
61
9 Přílohy
Příloha 1. Vzhled měřícího systému NX7021 bez převodníku
Příloha 2. Vzhled měřícího systému NX7021 s převodníkem
62
Příloha 3. Převodník RS232/USB
Příloha 4. Výkres desky ze strany součástek
63
Příloha 5. Výkres desky ze strany spojů
Příloha 6. Osazovací schéma desky
64
Příloha 7. Velikost desky plošného spoje SOF (označuje začátek rámce) 500ns/dílek, TTL
Příloha 8. SOF – začátek rámce
65
TOKEN (pověřovací paket) 500ns/dílek, TTL
Příloha 9. TOKEN (OUT) – pověřovací paket DATA 500ns/dílek, TTL
Příloha 10. DATA – datový paket
66
ACK (potvrzení) 500ns/dílek, TTL
Příloha 11. ACK – potvrzovací paket
67