ýESKÉ VYSOKÉ UýENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ
DIPLOMOVÁ PRÁCE
2009
Jan SobČslavský
ýESKÉ VYSOKÉ UýENÍ TECHNICKÉ V PRAZE FAKULTA ELEKTROTECHNICKÁ KATEDRA MċěENÍ
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
Doc. Ing. Karel Draxler, CSc.
Jan SobČslavský Praha 2009
Oficiální zadání (jen v papírové podobČ)
Prohlášení Prohlašuji, že jsem svou práci vypracoval samostatnČ a použil jsem pouze podklady (literaturu, internetové zdroje, software) uvedené v pĜiloženém seznamu. Nemám žádný závazný dĤvod proti užití této práce pro školní úþely ve smyslu § 60 Zákona þ.121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zmČnČ nČkterých zákonĤ (autorský zákon).
V Praze dne ………………………
………………………….….
Podpis
Anotace Cílem této diplomové práce je implementovat poþítaþový program, který bude realizovat zobrazení kalibrované a pravé vzdušné rychlosti letu, barometrické výšky letu, vertikální rychlosti a Machova þísla. Zobrazení bude odpovídat souþasným ukazatelĤm aerometrických pĜístrojĤ na letadle. Hodnoty dynamického a statického tlaku pro výpoþet zmínČných veliþin budou získávána ze systému pro mČĜení tlaku DPI-145. Program by mČl sloužit pro kalibraci aerometrických pĜístrojĤ a pro úþely výuky.
Annotation The aim of this diploma thesis is to implement a computer program, which will realize a displaying of calibrated and true flight airspeed, barometric flight altitude, vertical speed and Mach number. The displaying will correspond to actual indicators of aerometrical gauges on an aircraft. Dynamic and static pressure values for computation of the mentioned quantities will be obtained from the pressure measurement system DPI-145. The program is to serve for a calibration of aerometrical gauges and for teaching purposes.
PĜedmluva U souþasných letadel, létajících velkými rychlostmi a ve velkých výškách, jsou letové a pilotážnČ navigaþní pĜístroje hlavním zdrojem informací o pohybu, poloze a dráze letadla. PĜi letu bez vnČjší viditelnosti, v noci, v mlze a v mracích jsou jediným zdrojem tČchto informací. Na jejich provozní spolehlivosti a pĜesnosti tedy závisí bezpeþnost letu letadla. Proto se na tyto pĜístroje klade Ĝada požadavkĤ: -
minimální hmotnost, rozmČry a cena,
-
vysoká bezporuchovost,
-
dostateþná pĜesnost a citlivost,
-
necitlivost na rušení,
-
malá spotĜeba energie,
-
jednoduché a pohodlné odþítání údajĤ pĜístroje ve dne i v noci a další.
PodČkování Zejména bych chtČl podČkovat panu Doc. Ing. Karlu Draxlerovi, CSc., vedoucímu mé diplomové práce. Dále panu Ing. Pavlu Paþesovi, a to pĜedevším za radu pĜi Ĝešení dynamiky ruþiþky. RovnČž panu Ing. Martinu Šilhavému ze spoleþnosti DataCon MSI s.r.o., výhradnímu zastoupení spoleþnosti Druck Ltd. v ýeské republice, za konzultaci ohlednČ systému pro mČĜení tlaku DPI-145 od spoleþnosti Druck Ltd.
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
7
Obsah 1. ÚVOD ....................................................................................................................................9 2. TEORETICKÁ ýÁST .......................................................................................................10 2.1. MċěENÍ VÝŠKY LETU ......................................................................................................10 2.1.1. Definice výšky letu ..................................................................................................10 2.1.2. Popis barometrické metody mČĜení výšky letu .......................................................11 2.1.3. Odvození závislosti statického tlaku vzduchu na výšce ..........................................13 2.1.4. Nastavení barometrických výškomČrĤ ....................................................................17 2.2. MċěENÍ VZDUŠNÉ RYCHLOSTI LETU ...............................................................................18 2.2.1. Definice vzdušné rychlosti letu ...............................................................................18 2.2.2. Odvození vztahu pro mČĜení kalibrované a skuteþné (pravé) vzdušné rychlosti....18 2.3. MċěENÍ MACHOVA ýÍSLA ..............................................................................................22 2.3.1. Odvození vztahu pro mČĜení Machova þísla ..........................................................22 2.4. MċěENÍ VERTIKÁLNÍ RYCHLOSTI ....................................................................................23 2.4.1. Definice vertikální rychlosti ...................................................................................23 2.5. PěÍKLADY UKAZATELģ V SOUýASNOSTI VYRÁBċNÝCH AEROMETRICKÝCH PěÍSTROJģ ..24 2.6. SYSTÉM PRO MċěENÍ TLAKU DPI-145 ............................................................................30 2.6.1. Základní popis systému pro mČĜení tlaku DPI-145 ................................................30 2.6.2. Rozhraní RS-232.....................................................................................................32 2.6.3. Rozhraní GPIB .......................................................................................................36 2.6.4. Stykové obvody rozhraní RS-232 u systému pro mČĜení tlaku DPI-145 ................37 3. IMPLEMENTACE UKAZATELģ NA PC .....................................................................38 3.1. PROGRAMÁTORSKÁ DOKUMENTACE ...............................................................................38 3.1.1. Volba vývojových nástrojĤ, seznámení se s technologií .NET a jazykem C# .........38 3.1.2. Knihovna tĜíd Windows Forms...............................................................................43 3.1.3. Grafická knihovna GDI+ .......................................................................................45 3.1.4. Rozhraní .NET VISA API pro komunikaci s mČĜicím pĜístrojem ...........................47 3.1.5. Popis tĜíd implementovaného programu Air Data System.....................................50 3.2. UŽIVATELSKÁ DOKUMENTACE .......................................................................................61 3.2.1. ZprovoznČní programu ...........................................................................................61 3.2.2. PĜíprava systému DPI-145 pro komunikaci s PC ..................................................61 7
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
8
3.2.3. Popis uživatelského rozhraní aplikace ...................................................................63 4. ZÁVċREýNÉ ZHODNOCENÍ ........................................................................................67 5. POUŽITÉ PODKLADY ....................................................................................................68
PĜílohy: A. OBSAH PěILOŽENÉHO CD-ROM
8
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
9
1. ÚVOD
ZamČĜení první þásti této diplomové práce je þistČ teoretické. Nejprve bylo totiž nutno seznámit se s definicemi jednotlivých aerometrických veliþin a odvodit vztahy pro jejich výpoþet, a to ze známých hodnot dynamického a statického tlaku vzduchu. ZároveĖ bylo nezbytné projít si souþasné ukazatele aerometrických pĜístrojĤ na letadle, neboĢ podobné ukazatele mČly být implementovány na PC. Na závČr teoretické þásti byly prostudovány technické parametry systému pro mČĜení tlaku DPI-145, a to pĜedevším typy zabudovaných senzorĤ tlaku a možnosti jeho komunikace s PC. Druhá þást se pak vČnuje hlavnímu tématu, kterým je implementace ukazatelĤ aerometrických pĜístrojĤ na PC. DĤležitou roli zde hrála volba vývojových nástrojĤ, kde svými pĜednostmi jasnČ zvítČzila platforma Microsoft .NET a speciálnČ pro ni vyvinutý programovací jazyk C#. Jako vývojové prostĜedí bylo zvoleno Microsoft Visual Studio 2005. K tvorbČ grafického uživatelského rozhraní aplikace byla použita knihovna tĜíd Windows Forms a pro vykreslení ukazatelĤ grafická knihovna GDI+, jež jsou obČ souþástí rámce .NET Framework. Komunikaci se systémem DPI-145 zajišĢuje knihovna VISA, konkrétnČ NI-VISA (implementace knihovny VISA od spoleþnosti National Instruments).
9
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
10
2. TEORETICKÁ ýÁST 2.1. MČĜení výšky letu 2.1.1. Definice výšky letu Podle obecné definice je výška svislá vzdálenost hladiny, bodu nebo pĜedmČtu považovaného za bod, mČĜená od dané základní úrovnČ. Svislice je siloþára zemského gravitaþního pole procházející mČĜeným bodem a bodem základní úrovnČ. Na základČ této definice rozeznáváme výšku geometrickou a výšku geopotenciální. Geopotenciální výška na rozdíl od geometrické neuvažuje zmČnu gravitaþního zrychlení s výškou a poþítá s konstantním gravitaþním zrychlením rovným gravitaþnímu zrychlení v nulové výšce g (0) . Vztah mezi geopotenciální výškou H geopot [m ] a geometrickou výškou H geom [m] je následující: H geom
H geopot =
³ 0
g (hgeom ) g (0 )
⋅ dhgeom =
r0 ⋅ H geom r0 + H geom
,
(2.1.1)
kde g (hgeom ) [m ⋅ s −2 ] je gravitaþní zrychlení odpovídající geometrické výšce hgeom , dhgeom [m] pĜírĤstek geometrické výšky a r0 [m] polomČr ZemČ. Protože se gravitaþní zrychlení s výškou zmenšuje, je geopotenciální výška H geopot menší než geometrická výška H geom . Pro rozsah výšek, který pĜichází pĜi bČžném leteckém provozu v úvahu, je rozdíl mezi geometrickou a geopotenciální výškou zanedbatelný. Podle toho, jak je definována základní úroveĖ (úroveĖ nulové výšky h = 0), používají se v letectví následující výšky, graficky znázornČné na obr. 2.1.1: a) výška absolutní H a – základní úrovní (h = 0) je stĜední hladina moĜe na 45° zemČpisné šíĜky, b) výška relativní H r – základní úrovní (h = 0) mĤže být libovolné místo na zemi, zpravidla je to práh vzletové a pĜistávací dráhy na letišti, c) výška skuteþná H s – základní úrovní (h = 0) je prĤseþík svislice procházející letadlem se zemským povrchem,
10
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
11
d) výška letové hladiny H l – základní úrovní (h = 0) je hladina odpovídající atmosférickému tlaku 1013,25 mb (1013,25 hPa) = 29,921 in Hg, což odpovídá nulové letové hladinČ.
obr. 2.1.1 – Výšky používané v letectví
2.1.2. Popis barometrické metody mČĜení výšky letu Barometrická metoda mČĜení výšky letu vychází ze známé závislosti statického absolutního tlaku na výšce. Statický absolutní tlak vzduchu (absolutní znamená, že jeho nulová hodnota odpovídá vakuu) se mČĜí barometrickým výškomČrem, jehož stupnice je cejchovaná ve feetech nebo v metrech (1 ft = 0,30478 m). Mimo barometrické metody se dále pro mČĜení výšky letu používají elektrická, optická, parametrická a inerciální metoda. Barometrická metoda má ale z tČchto metod v souþasnosti pro letectví nejvČtší význam. Pomocí této metody je pĜedevším zajištČno vertikální rozdČlení letových hladin, což má z hlediska bezpeþnosti civilní letecké dopravy dominantní význam. Základem barometrické metody je mČĜení statického absolutního tlaku vzduchu tvoĜícího zemskou atmosféru. Zemská atmosféra je tvoĜena smČsí plynĤ, které obklopují zemČkouli, k níž je zemská atmosféra vázána gravitaþní silou a se kterou se témČĜ shodnČ otáþí. Celkový tlak vzduchu tvoĜícího zemskou atmosféru je dán hmotou vzduchového sloupce nad místem mČĜení a mČní se tedy s výškou. KromČ toho se tento tlak mČní také se zmČnou teploty a v dĤsledku cirkulace vzduchu. Celkový tlak vzduchu pC je souþtem statického tlaku vzduchu p H a dynamického tlaku vzduchu p d , tj. pC = p H + p d . Statický tlak vzduchu p H je úmČrný výšce a dynamický tlak p d rychlosti letu letadla. 11
(2.1.2)
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
12
Podle urþitých meteorologických parametrĤ se zemská atmosféra rozdČluje do Ĝady vrstev. Pro letectví je nejdĤležitČjší rozdČlení vrstev atmosféry podle prĤbČhu teploty, které je spolu se závislostí statického tlaku vzduchu a hustoty vzduchu na výšce graficky znázornČno na obr. 2.1.2.
obr. 2.1.2 – RozdČlení vrstev atmosféry podle prĤbČhu teploty
Závislost teploty T na výšce H je daná vztahem T (H ) = T0 + τ ⋅ H ,
(2.1.3)
kde T0 = 288,15 K je teplota v nulové výšce (h = 0) odpovídající atmosférickému tlaku 1013,25 mb (1013,25 hPa) = 29,921 in Hg (nulové letové hladinČ) a τ je teplotní koeficient. Od 0 do 11 km se teplota T zmenšuje pĜímo úmČrnČ s výškou a teplotní koeficient 12
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
13
τ = −6,5 ⋅ 10 −3 K ⋅ m −1 . Od 11 do 20 km je teplota T konstantní, takže teplotní koeficient τ = 0 . Od 20 do 32 km se teplota zvČtšuje pĜímo úmČrnČ s výškou a teplotní koeficient
τ = +1 ⋅ 10 −3 K ⋅ m −1 . Uvedené prĤbČhy odpovídají závislostem specifikovaným tzv. Mezinárodní standardní atmosférou MSA. Pomocí barometrických výškomČrĤ se mČĜí absolutní, relativní výška a výška letové hladiny. Skuteþnou výšku mČĜí radiovýškomČry. Pozn.: Mezinárodní standardní atmosféra MSA – Aby bylo možno stanovit jednotlivé letové veliþiny, je tĜeba znát vztahy mezi tlakem, teplotou, hustotou vzduchu a výškou. Dále je potĜeba urþit nČkteré parametry zemské atmosféry, nezbytné pro aerometrické výpoþty. Základem pro definování vztahĤ mezi tlakem, teplotou, hustotou vzduchu a výškou je tzv. Mezinárodní standardní atmosféra MSA, schválená mezinárodní leteckou organizací ICAO (International Civil Aviation Organization). Tyto vztahy vychází z teorie plynĤ a výsledkĤ meteorologických a fyzikálních mČĜení atmosféry. Odpovídají celoroþnímu a globálnímu prĤmČru nČkterých parametrĤ atmosféry získaných mČĜením.
2.1.3. Odvození závislosti statického tlaku vzduchu na výšce Odvození závislosti statického tlaku na výšce provedeme pro geopotenciální ( g = konst. ) a nikoliv geometrickou výšku ( g ≠ konst. ). Jak již bylo Ĝeþeno, tak pro rozsah
výšek, který pĜichází pĜi bČžném leteckém provozu v úvahu, je rozdíl mezi geometrickou a geopotenciální výškou zanedbatelný. Ovzduší, tvoĜící plynný obal ZemČ, zpĤsobuje svou vahou statický tlak, který nazýváme také tlakem barometrickým. Ten je nejvČtší na povrchu ZemČ a s rostoucí výškou se zmenšuje. Závislost tohoto tlaku na výšce je popsána známou Eulerovou rovnicí hydrostatiky: dp = − ρ ⋅ g ⋅ dH ,
(2.1.4)
kde dp [Pa] je pĜírĤstek tlaku, ρ [kg ⋅ m −3 ] hustota vzduchu, g = 9,80665 m ⋅ s −2 gravitaþní konstanta v nulové výšce (h = 0) odpovídající atmosférickému tlaku 1013,25 mb (1013,25 hPa) = 29,921 in Hg (nulové letové hladinČ) a dH [m] pĜírĤstek výšky. Hustota vzduchu ρ závisí na tlaku a teplotČ vzduchu. Pro odvození této závislosti vyjdeme ze stavové rovnice ideálního plynu:
13
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
14
p ⋅ V = n ⋅ Rm ⋅ T ,
(2.1.5)
kde p [Pa] je tlak plynu, V [m 3 ] objem plynu, n [mol] poþet molových jednotek v objemu V, T [K] teplota plynu a Rm = 8,314 J ⋅ K −1 ⋅ mol −1 univerzální plynová molární konstanta. Poþet molových jednotek je
n=
m , Mm
(2.1.6)
kde m [kg] je hmotnost plynu a M m [kg ⋅ mol −1 ] molární hmotnost. Dosazením a úpravou dostaneme následující vztah pro hustotu vzduchu ρ :
p ⋅V =
m ⋅ Rm ⋅ T , Mm
p=
ρ m ⋅ Rm ⋅ T = ⋅ Rm ⋅ T M m ⋅V Mm
ρ=
(2.1.7)
p⋅Mm . Rm ⋅ T
Tento vztah pak dosadíme do Eulerovy rovnice hydrostatiky:
dp = −
Zavedeme-li R =
p ⋅ Mm ⋅ g ⋅ dH . Rm ⋅ T
(2.1.8)
Mm ⋅ g = 29,271 m ⋅ K −1 jako upravenou plynovou molární konstantu Rm
pro vzduch, jejíž hodnotu dostaneme, pokud dosadíme do vztahu M m a Rm podle mezinárodní standardní atmosféry MSA a g = 9,80665 m ⋅ s −2 , což je gravitaþní konstanta v nulové výšce (h = 0) odpovídající atmosférickému tlaku 1013,25 mb (1013,25 hPa) = 29,921 in Hg (nulové letové hladinČ), pak máme vztah (2.1.8) v následující podobČ:
dp = −
p ⋅ dH . R ⋅T
Separací promČnných dostaneme:
14
(2.1.9)
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
15
p (H ) ⋅ dH , R ⋅ T (H ) dp (H ) dH =− . p (H ) R ⋅ T (H )
dp (H ) = −
(2.1.10)
Závislost teploty T na výšce H je daná vztahem (2.1.3) – viz. pĜedchozí podkapitola, takže obdržíme vztah: dp (H ) dH . =− p (H ) R ⋅ (T0 + τ ⋅ H )
(2.1.11)
Odvození vztahĤ pro rozsah výšek od 0 do 11 km:
p(H )
1 −1 ( ) ⋅ dp H = ³p(0) p(H ) ³0 R ⋅ (T0 + τ ⋅ H ) ⋅ dH H
(2.1.12)
Hodnota prvního integrálu je: p(H )
1
³( ) p(H ) ⋅ dp(H ) = [ln p(H )]
p (H ) p (0 )
= ln ( p (H )) − ln ( p(0 )) = ln
p 0
p(H ) . p (0 )
Hodnota druhého integrálu se vypoþte substituþní metodou:
H
³ 0
=
−1 R ⋅ (T 0 + τ ⋅ H −1 ⋅ R ⋅τ
T0 +τ ⋅ H
³
T0
x = T0 + τ ⋅ H
substituce
)
⋅ dH =
dx = τ ⋅ dH dH =
dx
T0 +τ ⋅H
=
³
T0
− 1 dx ⋅ = R⋅x τ
τ
1 −1 −1 ⋅ [ln (T 0 + τ ⋅ H ⋅ dx = ⋅ [ln ( x )] TT 00 + τ ⋅ H = x R ⋅τ R ⋅τ
) − ln (T 0 )] .
Z rovnosti obou integrálĤ pak získáme následující dva požadované vztahy: R ⋅τ º T0 ª§ p (0 ) · ¸¸ − 1» H = ⋅ «¨¨ τ «¬© p (H ) ¹ »¼
[m]
15
pro H = 0 ÷ 11000 m ,
(2.1.13)
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ § T0 p (H ) = p (0 ) ⋅ ¨¨ © T0 + τ ⋅ H
16
1
· R⋅τ ¸¸ ¹
pro H = 0 ÷ 11000 m ,
(2.1.14)
kde T0 = 288,15 K je absolutní teplota v nulové výšce (h = 0) standardní atmosféry,
τ = −6,5 ⋅ 10 −3 K ⋅ m −1 teplotní koeficient pro rozsah výšek od 0 do 11 km, p(0) a p(H ) tlaky vzduchu v nulové výšce a ve výšce H udané ve stejných jednotkách a R upravená plynová molární konstanta pro vzduch.
Odvození vztahĤ pro rozsah výšek od 11 do 20 km:
Pro rozsah výšek od 11 do 20 km je podle MSA teplotní koeficient τ = 0 , takže platí: T (H ) = T (11000 ) = T0 − 6,5 ⋅ 11 = 216,65 K .
(2.1.15)
Protože postup odvození je podobný, uvedeme jen výsledné odvozené vztahy: H = R ⋅ T (11000 ) ⋅ ln
p (11000 ) + 11000 p (H )
p (H ) = p (11000 ) ⋅ e
− ( H −11000 ) R ⋅T (11000 )
[m]
pro H = 11000 ÷ 20000 m , (2.1.16)
pro H = 11000 ÷ 20000 m ,
(2.1.17)
kde R je upravená plynová molární konstanta pro vzduch, T (11000) = 216,65 K teplota vzduchu ve výšce 11 km a p(11000) a p(H ) tlaky vzduchu ve výšce 11 km a ve výšce H udané ve stejných jednotkách.
Odvození vztahĤ pro rozsah výšek od 20 do 32 km:
OpČt uvedeme jen výsledný odvozený vztah: Rτ º T (20000 ) ª§ p (20000 ) · ¸¸ − 1» ⋅ «¨¨ H= τ «¬© p (H ) ¹ »¼
[m]
pro H = 20000 ÷ 32000 m , (2.1.18)
kde T (20000) = T (11000) je teplota vzduchu ve výšce 20 km, τ = +1 ⋅ 10 −3 K ⋅ m −1 teplotní koeficient pro rozsah výšek od 20 do 32 km, p(20000) a p(H ) tlaky vzduchu ve výšce 20 km
16
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
17
a ve výšce H udané ve stejných jednotkách a R upravená plynová molární konstanta pro vzduch.
2.1.4. Nastavení barometrických výškomČrĤ BČhem letu po trati mimo okrsky letišĢ probíhá let z dĤvodu Ĝízení letového provozu v letových hladinách. Na barometrickém výškomČru je proto nutné nastavit vztažný tlak na hodnotu 1013,25 mb (1013,25 hPa) = 29,921 in Hg, což odpovídá nulové letové hladinČ. VýškomČr pak ukazuje výšku letové hladiny. PĜi pĜíletu k cílovému letišti, posádka podle hlášení z vČže nastaví na barometrickém výškomČru vztažný tlak na momentální hodnotu tlaku vzduchu na prahu vzletové a pĜistávací dráhy. VýškomČr pak ukazuje relativní výšku nad letištČm a po pĜistání ukazuje nulovou hodnotu výšky. Toto nastavení se používá bČhem letu v okrsku letištČ a pĜi pĜiblížení na pĜistání. V souþasné dobČ se pro let v okrsku letištČ a pro pĜiblížení na pĜistání více používá jiného nastavení. Vztažný tlak se nastaví na momentální hodnotu tlaku vzduchu na stĜední hladinČ moĜe, kterou vypoþteme z momentální hodnoty tlaku vzduchu na prahu vzletové a pĜistávací dráhy a její známé nadmoĜské výšky. VýškomČr pak ukazuje absolutní výšku a po pĜistání ukazuje nadmoĜskou výšku vzletové a pĜistávací dráhy.
17
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
18
2.2. MČĜení vzdušné rychlosti letu 2.2.1. Definice vzdušné rychlosti letu Rozeznáváme následující definice vzdušné rychlosti:
PĜístrojová rychlost (Instrument Speed) – údaj rychlomČru bez jakékoliv korekce. Indikovaná vzdušná rychlost (Indicated Airspeed IAS) – pĜístrojová rychlost opravená o pĜístrojovou chybu danou konstrukcí rychlomČru.
Kalibrovaná vzdušná rychlost (Calibrated Airspeed CAS) – indikovaná vzdušná rychlost opravená o polohovou chybu Pitot-statické sondy (vliv draku letadla) a navíc pĜi uvažování stlaþitelnosti vzduchu.
Skuteþná (pravá) vzdušná rychlost (True Airspeed TAS) – rychlost letadla vĤþi okolnímu nerozrušenému vzduchu – kalibrovaná vzdušná rychlost opravená o vliv výšky (hustotní korekce). Vedle významu pro navigaci je vzdušná rychlost také dĤležitým parametrem v mechanice letu, neboĢ charakterizuje celkovou vztlakovou sílu pĤsobící na letadlo. 2.2.2. Odvození vztahu pro mČĜení kalibrované a skuteþné (pravé) vzdušné rychlosti Základní schéma jednoduchého rychlomČru je na obr. 2.2.1. Snímaþem tlakĤ pomocí nČhož se vzdušná rychlost mČĜí, je Pitot-statická trubice, jejíž základní popis je rovnČž souþástí obr. 2.2.1. Je to trubice, která má osu rovnobČžnou resp. totožnou s podélnou osou letadla a je umístČna na takovém místČ, aby vliv draku letadla co nejménČ ovlivnil velikost snímaných tlakĤ. PĜi letu vzniká v þelním otvoru trubice celkový tlak pC , úmČrný rychlosti pohybu letadla vzhledem k okolnímu vzduchu. Celkový tlak pC je veden do vnitĜního prostoru diferenþní tlakomČrné krabice, zatímco statický tlak p H , odpovídající výšce letu H, je snímán otvory statického tlaku po obvodu trubice a veden do pouzdra pĜístroje.
18
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
19
obr. 2.2.1 – Princip mČĜení vzdušné rychlosti
Následující odvození vztahĤ pĜedpokládá, že mČĜení se provádí pĜi podzvukových rychlostech. PĜi uvažování vlivu stlaþitelnosti vzduchu vyjdeme z termodynamické rovnice, která popisuje energetické pomČry v ose Pitot-statické sondy ve tvaru: c p ⋅ T1 +
1 2 1 v1 = c p ⋅ TH + v 2 , 2 2
(2.2.1)
kde c p [ J ⋅ kg −1 ⋅ K −1 ] je mČrná tepelná kapacita vzduchu pĜi konstantním tlaku, T1 [ K ] termodynamická teplota zbrždČného vzduchu na vstupu Pitot-statické sondy, TH [K ] termodynamická teplota nerozrušeného vzduchu pĜed trubicí, v1 [m ⋅ s −1 ] rychlost proudu vzduchu na vstupu a v [m ⋅ s −1 ] rychlost proudu vzduchu pĜed trubicí. Jelikož na vstupu trubice dojde k zbrždČní vzduchu, rychlost vzduchu v ústí v1 = 0 (stagnaþní bod) a pĜedchozí vztah pĜejde na tvar:
c p ⋅ T1 = c p ⋅ TH +
1 2 v 2
T1 v2 . = 1+ TH 2 ⋅ c p ⋅ TH
(2.2.2)
MČrnou tepelnou kapacitu pĜi stálém tlaku mĤžeme vyjádĜit jako: c p = Rm ⋅
19
κ κ −1
,
(2.2.3)
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
kde
Rm =
Rp MV
= 287,05287 J ⋅ kg −1 ⋅ K −1
je
20
mČrná
plynová
konstanta
vzduchu,
R p = 8314,32 J ⋅ K −1 ⋅ kmol −1 univerzální plynová konstanta, M V = 28,9644 kg ⋅ kmol −1 molekulová hmota vzduchu a κ = 1,4 Poissonova konstanta pro vzduch. Tím po dosazení obdržíme: T1 v 2 ⋅ (κ − 1) . =1+ TH 2 ⋅ Rm ⋅ κ ⋅ TH
(2.2.4)
Dosazením do známé rovnice izoentropického dČje, která má obecnČ tvar κ
p1 § T1 · κ −1 =¨ ¸ , p H ¨© TH ¸¹
(2.2.5)
dostaneme: p1 § v 2 ⋅ (κ − 1) = ¨¨1 + 2 ⋅ Rm ⋅ κ ⋅ TH pH ©
κ
· κ −1 ¸¸ . ¹
(2.2.6)
Z pĜedchozího vztahu je možno vyjádĜit vzdušnou rychlost v v následujícím tvaru:
v=
κ −1 ª º κ § · p «¨ C ¸ − 1» 2 κ ⋅ R ⋅ T . «¨© p H ¸¹ » κ −1 m H «¬ »¼
(2.2.7)
Tlak na vstupu Pitot-statické sondy p1 byl zároveĖ pĜeznaþen na celkový tlak pC . Celkový tlak je souþtem dynamického a statického tlaku, tj. pC = p d + p H , což po substituci dá
v=
κ −1 ª º κ § · «¨ p d + 1¸ − 1» 2 κ ⋅ R ⋅ T . ¸ «¨© p H » κ −1 m H ¹ «¬ »¼
Ze stavové rovnice je Rm ⋅ TH =
pH
ρH
, což po substituci vede na výraz:
20
(2.2.8)
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
v=
κ −1 ª º κ § · p «¨ d + 1¸ − 1» 2 κ ⋅ p H . ¸ «¨© p H » κ −1 ρH ¹ «¬ »¼
21
(2.2.9)
Pohybuje-li se letadlo v nulové výšce standardní atmosféry, bude p H = p0 = 101325 Pa (absolutní tlak vzduchu v nulové výšce MSA) a ρ H = ρ 0 = 1,2250 kg ⋅ m −3 (hustota vzduchu v nulové výšce MSA), þímž dostaneme vztah pro kalibrovanou vzdušnou rychlost s uvažováním stlaþitelnosti vzduchu:
vCAS =
κ −1 ª º κ § · p «¨ d + 1¸ − 1» 2 κ ⋅ p0 . ¸ «¨© p0 » κ − 1 ρ0 ¹ «¬ ¼»
(2.2.10)
Podle tohoto vztahu jsou cejchovány rychlomČry souþasných letadel, létajících podzvukovou rychlostí. RychlomČry kalibrované podle pĜedchozího vztahu mČĜí skuteþnou (pravou) vzdušnou rychlost pouze v podmínkách odpovídajících nulové výšce MSA. PĜedevším pro navigaþní úþely je u nČkterých letadel potĜeba znát skuteþnou (pravou) vzdušnou rychlost, pro kterou byl již odvozen vztah (2.2.8) resp. (2.2.9). Vedle dynamického a statického tlaku figuruje ve vztahu (2.2.8) kromČ konstant ještČ teplota vnČjšího vzduchu TH resp. ve vztahu (2.2.9) hustota vzduchu ρ H . Tato závislost teploty vnČjšího vzduchu na výšce resp. hustoty vzduchu na výšce se v souþasné dobČ u vČtšiny konstruovaných rychlomČrĤ pĜevádí pomocí Eulerovy rovnice hydrostatiky na závislost statického tlaku. Tato metoda je nazývána metodou hustotní korekce.
21
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
22
2.3. MČĜení Machova þísla 2.3.1. Odvození vztahu pro mČĜení Machova þísla Machovo þíslo je definováno následovnČ: M =
vTAS , a
(2.3.1)
kde vTAS je skuteþná (pravá) vzdušná rychlost a a rychlost zvuku. Rychlost zvuku lze spoþítat ze známého vztahu:
a = κ ⋅ Rm ⋅ T = κ ⋅
pH
ρH
,
(2.3.2)
kde význam jednotlivých symbolĤ byl uveden již v minulé kapitole. Dosazením do definiþního vztahu pro Machovo þíslo dostaneme:
M = vTAS ⋅
ρH κ ⋅ pH
.
(2.3.3)
Poþítáme-li stejnČ jako v pĜedchozí kapitole se stlaþitelností vzduchu, potom za vTAS dosadíme výraz (2.2.9), þímž obdržíme výsledný vztah pro výpoþet Machova þísla ve tvaru:
M =
κ −1 ª º κ § · p «¨ d + 1¸ − 1» 2 . ¸ «¨© p H » κ −1 ¹ «¬ »¼
(2.3.4)
Pomocí tohoto vztahu se kalibrují machmetry pro mČĜení Machova þísla v podzvukové oblasti, kde je M ≤ 1 . U nadzvukové oblasti nelze Machovo þíslo jednoduše explicitnČ vyjádĜit. Z odvozeného vztahu je zĜejmé, že Machovo þíslo závisí pouze na pomČru dynamického a statického tlaku. Není závislé na hustotČ vzduchu jako skuteþná (pravá) vzdušná rychlost, takže jeho mČĜení pomocí tlakomČrných krabic není zatíženo metodickou chybou jako mČĜení skuteþné (pravé) vzdušné rychlosti pomocí hustotní korekce. To je také dĤvodem, proþ se režim letu a rozestupy dopravních letadel dodržují pomocí mČĜení Machova þísla.
22
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
23
2.4. MČĜení vertikální rychlosti 2.4.1. Definice vertikální rychlosti Vertikální rychlost je definována následovnČ: vV =
dH . dt
(2.4.1)
Udává se buć ve ft/min nebo v m/s. Indikace vertikální rychlosti je dĤležitá pĜi startu a pĜistání a k dodržení zvolené výšky pĜi vodorovném letu. U bezmotorových letadel patĜí vertikální rychlost k nejdĤležitČjším letovým parametrĤm. ZpĤsoby mČĜení vertikální rychlosti jsou variometrem, þasovou derivací výšky v aerometrickém systému, inerciální metodou nebo vyhodnocením ze skuteþné (pravé) vzdušné rychlosti pĜi znalosti polohových úhlĤ letadla.
23
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
24
2.5. PĜíklady ukazatelĤ v souþasnosti vyrábČných aerometrických pĜístrojĤ Pro práci bylo nutno seznámit se pĜedevším s rĤzným provedením ukazovací þásti aerometrických pĜístrojĤ. V souþasnosti vyrábČné výškomČry se podle toho dČlí na: tĜíruþkové resp. dvouruþkové výškomČry, výškomČry v kombinaci ruþka a bubínek a moderní výškomČry v provedení ruþka a digitální displej (Digital Display Altimeters). RychlomČry, machmetry a variometry se dČlají vČtšinou pouze ruþiþkové – machmetry a variometry pouze s jednou ruþkou, zatímco rychlomČry nČkdy i s dvČma ruþkami, a to jak pro kalibrovanou, tak i pro skuteþnou (pravou) vzdušnou rychlost. Navíc bývají rychlomČry þasto kombinované s machmetrem.
PĜíklady tĜíruþkových resp. dvouruþkových výškomČrĤ
obr. 2.5.1 – VýškomČr Honeywell Bendix/King KEA-130A
obr. 2.5.2 – VýškomČr UI 5035-P
Na obr. 2.5.1 je výškomČr Honeywell Bendix/King KEA-130A. Nastavení vztažného tlaku v in Hg resp. mb se þte na otoþné stupnici tlaku prĤzorem v pevné stupnici výšek. Malá ruþka má rozsah 10000 ft na 360°, velká ruþka rozsah 1000 ft na 360° a velká terþíková ruþka s šipkou rozsah 100000 ft na 360°. Pro nastavení vztažného tlaku slouží knoflík umístČný vlevo pod ukazovací þástí pĜístroje. VýškomČr se vyrábí s interním kodérem výšky podle normy ICAO. PĜesností vyhovuje výškomČr normám FAA (Federálního leteckého úĜadu USA – Federal Aviation Administration). Rozsah: –1000 až 35000 ft. PĜesnost: ± 20 ft pro 0 ft a ± 205 ft pro 35000 ft. Nastavení vztažného tlaku: 28,1 až 31 in Hg nebo 946 až 1050 mb.
24
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
25
VýškomČr na obr. 2.5.2 je od spoleþnosti United Instruments z Anglie. VýškomČr má naprosto shodné parametry s pĜedchozím výškomČrem a rovnČž se vyrábí s interním kodérem výšky podle normy ICAO.
obr. 2.5.3 – VýškomČr LUN 1125 (tĜíruþkové provedení)
Na obr. 2.5.3 mĤžeme vidČt výškomČr LUN 1125 vyrábČný þeskou spoleþností Mikrotechna Praha a.s. Nastavení vztažného tlaku v in Hg resp. mb se þte na otoþné stupnici tlaku (4) resp. (7) prĤzorem v pevné stupnici výšek (2). Malá ruþka (3) má rozsah 10000 ft na 360°, velká ruþka (5) rozsah 1000 ft na 360° a velká terþíková ruþka s šipkou (6) rozsah 100000 ft na 360°. Pro nastavení vztažného tlaku slouží knoflík (8) umístČný vlevo pod ukazovací þástí pĜístroje. VýškomČr se vyrábí ve verzi s kodérem výšky podle normy ICAO nebo bez a v rozsahu výšek 20000 ft, 35000 ft, 50000 ft a 80000 ft. PĜesností vyhovuje výškomČr normám FAA.
PĜíklady výškomČrĤ v kombinace ruþka a bubínek
Obr. 2.5.4 pĜedstavuje výškomČr od švýcarské spoleþnosti Thommen. Odeþítání nastaveného vztažného tlaku v mb a in Hg je provedeno pomocí dvou bubínkových þíselníkĤ. Pevná stupnice výšky má rozsah 1000 ft na 360°. Bubínkový þíselník výšky udává stovky až desetitisíce ft. Pro nastavení vztažného tlaku slouží knoflík umístČný vlevo pod ukazovací þástí pĜístroje. VýškomČr se vyrábí v rozsahu výšek 20000 ft, 35000 ft a 50000 ft a svou pĜesností vyhovuje normám FAA. Nastavení vztažného tlaku: 950 až 1050 mb nebo 28,1 až 31 in Hg.
25
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
26
obr. 2.5.5 – VýškomČr Kollsman 28007
obr. 2.5.4 – VýškomČr Thommen 3A63
Na vedlejším obr. 2.5.5 je podobný výškomČr od americké spoleþnosti Kollsman. Ode-
þítání nastaveného vztažného tlaku je možné v mb a in Hg. Pevná stupnice výšky má rozsah 1000 ft na 360°. Bubínkový þíselník výšky udává stovky až desetitisíce ft. Souþástí výškomČru je kodér výšky pracující v kódu ICAO. Rozsah: –1000 až 50000 ft. Nastavení vztažného tlaku: 28,1 až 31 in Hg nebo 950 až 1050 mb.
obr. 2.5.6 – VýškomČr LUN 1125 (provedení kombinace ruþka a bubínek)
Na obr. 2.5.6 mĤžeme vidČt opČt výškomČr LUN 1125 od þeské spoleþnosti Mikrotechna Praha a.s., tentokráte ale v provedení kombinace ruþka a bubínek. Odeþítání nastaveného vztažného tlaku je možné pouze v mb, a to pomocí bubínkového þíselníku (4). Pevná stupnice výšky (2) má rozsah 1000 ft na 360°. Bubínkový þíselník výšky (3) udává stovky až desetitisíce ft. Jinak další parametry výškomČru jsou shodné jako v pĜípadČ jeho tĜíruþkového provedení. 26
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
27
Moderní výškomČry v provedení ruþka a digitální displej (Digital Display Altimeters)
obr. 2.5.8 – VýškomČr Thommen AD32
obr. 2.5.7 – VýškomČr Honeywell AM-250
VýškomČr Honeywell AM-250 na obr. 2.5.7 je moderním výškomČrem se zvýšenou pĜesností, zajišĢující dodržení redukovaných letových hladin RVSM. Je založen na pĜesném pĜevodu tlaku na elektrický signál, a to pomocí polovodiþového tenzometrického (piezorezistivního) pĜevodníku tlaku s kĜemíkovou membránou. VýškomČr pĜedstavuje již úplný aerometrický systém, neboĢ mČĜí jak statický, tak i celkový tlak pro výpoþet korigované výšky. MČĜenou výšku je možno zobrazit ve feetech a metrech a vztažný tlak v in Hg a hPa. Ukazatel výšky má analogovou þást s pohyblivou ruþkou shodnou s ruþkou u mechanických barometrických výškomČrĤ s rozsahem 1000 ft na 360°, resp. 1000 m na 360°. Místo bubínkového
þíselníku výšky je ale použit pČtimístný digitální LCD displej. Odeþítání nastaveného vztažného tlaku v in Hg a hPa je možné na samostatném digitálním LCD displeji. PĜístroj je vyrábČn i ve verzi umožĖující upozornČní posádky na dosažení zadané výšky – tzv. altitude alert, a sice varovnou lampiþkou. VýškomČr navíc vypoþítává a poté vysílá po sbČrnici Arinc 429 následující informace ostatním letadlovým systémĤm: výšku, korigovanou výšku, rychlost a vertikální rychlost. Rozsah: –2000 až 60000 ft. PĜesnost: ± 20 ft pro 0 ft a ± 120 ft pro 60000 ft. Nastavení vztažného tlaku: 28,1 až 31 in Hg nebo 945 až 1050 mb. Od pĜedchozího výškomČru se výškomČr na obr. 2.5.8 liší pouze v následujících parametrech: Rozsah: –1000 až 53000 ft. PĜesnost: ± 10 ft pro 0 ft a ± 50 ft pro 53000 ft. Nastavení vztažného tlaku: 20,67 až 31 in Hg nebo 700 až 1050 mb. VýškomČr je volitelnČ dodáván s kodérem výšky pracujícím v kódu ICAO.
27
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
28
RychlomČry-machmetry
obr. 2.5.10 – RychlomČr-machmetr Thommen 5C15
obr. 2.5.9 – RychlomČr-machmetr LUN 1170
Na obr. 2.5.9 je rychlomČr-machmetr od þeské spoleþnosti Mikrotechna Praha a.s. PĜístroj mČĜí kalibrovanou a skuteþnou (pravou) vzdušnou rychlost v rozsahu do 600 kt s dostupem do 50000 ft a hodnoty Machova þísla v rozsahu 0,5 až 0,9. Signalizuje pokles na minimální hodnotu kalibrované vzdušné rychlosti a dosažení M = 1. Kalibrovaná vzdušná rychlost je zobrazována silnou ruþkou, skuteþná (pravá) vzdušná rychlost tenkou ruþkou. Machovo þíslo udává poloha žluté ruþky na stupnici ve výseku stĜední þásti ukazatele. RychlomČr-machmetr Thommen 5C15 na obr. 2.5.10 je konstruován velmi podobnČ jako rychlomČr-machmetr LUN 1170. Ruþiþka ukazuje kalibrovanou vzdušnou rychlost proti pevné stupnici a souþasnČ v kombinaci s otoþnou pohyblivou stupnicí indikuje Machovo þíslo. Rozsah: 60 až 400 kt a 0,3 až 1 Mach. RychlomČr-machmetr Thommen MD21 na obr. 2.5.11 je založen na pĜesném pĜevodu dynamického a statického tlaku na elektrický signál. Zobrazuje kalibrovanou vzdušnou rychlost a Machovo þíslo s pĜesností na tĜi desetinná místa na LCD displejích. Rozsah: 0 až 450 kt a 0,010 až 0,999 Mach. Funguje pro rozsah výšek –1000 až 50000 ft.
28
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
29
obr. 2.5.11 – RychlomČr-machmetr Thommen MD21
Variometry
obr. 2.5.13 – Variometr UI7000
obr. 2.5.12 – Variometr Thommen 4A16
Na obr. 2.5.12 je variometr 4A16 vyrábČný švýcarskou spoleþností Thommen s rozsahem stoupání resp. klesání 6000 ft/min. Na obr. 2.5.13 je obdobný výrobek od spoleþnosti United Instruments z Anglie.
29
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
30
2.6. Systém pro mČĜení tlaku DPI-145 2.6.1. Základní popis systému pro mČĜení tlaku DPI-145 Systém pro mČĜení tlaku DPI-145 od spoleþnosti Druck Ltd. je velmi pĜesným pĜístrojem pro mČĜení tlaku urþeným pro laboratorní úþely. Vysoké pĜesnosti a stability mČĜení tlaku je mimo jiné dosaženo linearizací a teplotní kompenzací. PĜístroj disponuje až 6 mČĜícími kanály. Uživatel si mĤže zvolit z Ĝady pĜevodníkĤ zabudovaných v pĜístroji nebo pĜipojených k pĜístroji externČ. PĜístroj mĤže být vybaven následujícími pĜevodníky tlaku na elektrický signál: a) polovodiþovými tenzometrickými (piezorezistivními) pĜevodníky tlaku od spoleþnosti Druck Ltd., b) mikromechanickými rezonanþními pĜevodníky tlaku od spoleþnosti Druck Ltd., c) pĜevodníkem tlaku s rezonanþním válcem 7881 od spoleþnosti Solartron. Popis tČchto pĜevodníkĤ je možno nalézt v [1] a [6]. Námi použitý systém pro mČĜení tlaku DPI-145 v laboratoĜi je vybaven polovodiþovým tenzometrickým (piezorezistivním) pĜevodníkem tlaku s kĜemíkovou membránou PDCR900 od spoleþnosti Druck Ltd. a mikromechanickými rezonanþními pĜevodníky tlaku RPT100 a RPT200 rovnČž od spoleþnosti Druck Ltd. Rozsahy zabudovaných typĤ pĜevodníkĤ pĜi mČ-
Ĝení absolutního tlaku vzduchu jsou následující: a) pĜevodník PDCR900 – rozsah od 350 mb do 350000 mb, b) pĜevodník RPT100 – rozsah od 800 mb do 1050 mb, c) pĜevodník RPT200 – rozsah od 35 mb do 3500 mb. Uživatel mĤže ovládat pĜístroj s pomocí LCD displeje a klávesnice na þele pĜístroje nebo z poþítaþe pĜes rozhraní RS-232 nebo GPIB (IEEE-488). Vlastní komunikace mezi poþíta-
þem a mČĜícím pĜístrojem je možná pomocí pĜístrojových zpráv standardu SCPI. Systém pro mČĜení tlaku DPI-145 je standardnČ dodáván pouze s možností komunikace s poþítaþem pĜes rozhraní
RS-232.
Pro
aktivaci
rozhraní
GPIB
(IEEE-488)
bylo
nutno
u systému nechat od výrobce odblokovat softwarový klíþ, jinak patĜiþné obvody byly již z výroby integrovány na základní desce pĜístroje. Navíc mĤže pĜístroj operovat ve speciálních režimech jako barometr, letištní barometr nebo v režimu kalibrace leteckých pĜístrojĤ, ale pro zprovoznČní každého z tČchto režimĤ je nutné nechat odblokovat další softwarový klíþ. V tČchto režimech se zmČní jak formát zobrazení, tak i funkce pĜístroje s ohledem na specifické požadavky tČchto aplikací. PĜístroj je rov30
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
31
nČž schopen generovat na výstupu elektrická napČtí a proudy, které mohou být úmČrné aktuálnČ mČĜenému tlaku. Systém pro mČĜení tlaku DPI-145 mĤže být napájen ze stĜídavé elektrické sítČ nebo z nízkonapČĢového stejnosmČrného elektrického zdroje.
obr. 2.6.1 – PĜední þást systému pro mČĜení tlaku DPI-145
obr. 2.6.2 Zadní þást systému pro mČĜení tlaku DPI-145
Z blokového schématu na obr. 2.6.3 vidíme, že systém pro mČĜení tlaku DPI-145 disponuje až 6 mČĜicími kanály, z nichž první tĜi jsou urþeny pro polovodiþové tenzometrické (piezorezistivní) pĜevodníky tlaku (2 zabudované v pĜístroji a 1 externí) a další tĜi pro rezonanþní pĜevodníky tlaku (opČt 2 zabudované v pĜístroji a 1 externí). Na blokovém schématu je dále možné vidČt jako jednotlivé bloky zdroj napájení, mikroprocesorový systém, klávesnici, LCD 31
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
32
displej, analogové výstupy a stykové obvody rozhraní RS-232 a GPIB. V systému je pĜitom použit jako Ĝídicí þlen mikroprocesor od spoleþnosti Motorola.
obr. 2.6.3 – Blokové schéma systému pro mČĜení tlaku DPI-145
Systém pro mČĜení tlaku DPI-145 umožĖuje nastavení 24 rĤzných jednotek mČĜeného tlaku – jejich výþet je k dispozici v technické dokumentaci k tomuto systému [5].
2.6.2. Rozhraní RS-232 Sériové rozhraní RS-232 (Recommended Standard – 232), standardizované Electronic Industries Association (EIA), bylo pĤvodnČ urþeno ke spojení koncového datového zaĜízení DTE (Data Terminal Equipment – terminálu) s komunikaþním datovým zaĜízením DCE (Data
Communication Equipment – modemem). V prĤbČhu doby se rozhraní RS-232 zaþalo používat i mimo obor telekomunikaþní techniky, k výraznému rozšíĜení pĜispČlo zejména jeho užití v osobních poþítaþích standardu IBM. V souþasnosti (pĜes všechny jeho nedostatky – dvoubodové spojení, nízká pĜenosová rychlost a malá odolnost proti rušení) má toto rozhraní velmi výrazné postavení i v mČĜicí technice, pĜedevším je jeho použití pro mnoho aplikací dostaþující a je levnČjší oproti použití rozhraní GPIB (IEEE-488), vzhledem k tomu, že není tĜeba dokupovat pĜíslušnou desku rozhraní do poþítaþe jako u GPIB (IEEE-488), neboĢ rozhraní RS-232 bývá standardní souþástí vČtšiny PC. 32
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
33
Rozhraní RS-232 je vhodné použít pro jednoduché aplikace, kdy je tĜeba pĜipojit jeden až dva mČĜicí pĜístroje k PC. Protože rozhraní RS-232 nemá na rozdíl od rozhraní GPIB (IEEE-488) charakter sbČrnice, ale dvoubodového (point-to-point) spojení, je možné pĜes toto rozhraní pĜipojit k poþítaþi pouze tolik mČĜicích pĜístrojĤ, kolik má poþítaþ sériových portĤ (obvykle má 2 sériové porty oznaþené COM1 a COM2). PĤvodní konektor rozhraní RS-232 je s 25 kontakty (25-pinový), ale dnes se obvykle používá konektor pouze s 9 kontakty (9-pinový), který je na obr. 2.6.4.
obr. 2.6.4 – Konektor rozhraní RS-232 s 9 kontakty a vedle fotografie kabelu
Rozhraní RS-232 používá tČchto 9 základních signálĤ: 1. DCD – Data Carier Detected – signál vysílaný z DCE; sdČluje DTE, že byl detekován signál vysílaný modemem na opaþném konci komunikaþního kanálu, 2. RxD – Received Data – data pĜijímaná DTE, 3. TxD – Transmitted Data – data vysílaná DTE, 4. DTR – Data Terminal Ready – signál vysílaný z DTE; sdČluje DCE, že DTE je funkþní, 5. SG nebo GND – Signal Ground, 6. DSR – Data Set Read – signál vysílaný z DCE; sdČluje DTE, že DCE je funkþní a pĜipraveno komunikovat, 7. RTS – Request To Send – signál vysílaný z DTE; sdČluje DCE, že DTE je pĜipraveno pĜijímat data, 8. CTS – Clear To Send – signál vysílaný z DCE; sdČluje DTE, že DCE je pĜipraveno pĜijímat data od DTE a vysílat je do komunikaþního kanálu, 9. RI – Ring Indicator – signál vysílaný z DCE; indikuje vyzvánČcí signál v komunikaþním kanálu – napĜ. telefonní lince. 33
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
34
V souladu se standardem RS-232 je vždy jedno zaĜízení typu DTE a druhé typu DCE. V aplikacích RS-232 v mČĜicí technice jsou ale vždy propojována 2 zaĜízení typu DTE (zpravidla osobní poþítaþ a mČĜicí pĜístroj), a sice na krátkou vzdálenost (ĜádovČ jednotky až desítky metrĤ). V tČchto pĜípadech se používá bezmodemové propojení, v nČmž se pĜenosový kanál (napĜ. modem + telefonní linka) nahrazuje speciálním kabelem (null modem cable), který zajišĢuje vhodné propojení výstupních a vstupních signálĤ obou zaĜízení a simuluje tak, do jisté míry, þinnost modemĤ. Výrobci mČĜicích pĜístrojĤ þasto používají jen nČkteré z jmenovaných devíti standardních signálĤ a mimo to jim pĜidČlují rĤzný funkþní význam. Nejjednodušší je tzv. tĜívodiþové propojení, ve kterém je použito pouze datových vodi-
þĤ a signálové zemČ – viz. obr. 2.6.5. PĜi tĜívodiþovém propojení jsou pĜekĜíženy signály DTR a DSR a ostatní signály se propojí v konektoru tak, aby byla neustále signalizována pĜipravenost. ěízení pĜenosu dat je pak v tomto pĜípadČ možné pouze programovČ – tzv. software handshaking, kdy DTE pĜijímající data ovládá komunikaci vysíláním speciálních Ĝídicích znakĤ v kódu ASCII.
obr. 2.6.5 – TĜívodiþové propojení (null modem cable)
Dále je možné pČti- þi sedmivodiþové propojení umožĖující hardwarovČ Ĝízený pĜenos dat – tzv. hardware handshaking. Vždy je nutno nejprve prostudovat dokumentaci mČĜicího pĜístroje a teprve pak použít vhodné propojení. Po pĜeþtení dokumentace systému pro mČĜení tlaku DPI-145 [5] a po konzultaci s panem Ing. Martinem Šilhavým ze spoleþnosti DataCon MSI s.r.o., výhradním zastoupení firmy Druck Ltd. v ýeské republice, jsme nakonec zvolili kabel s tĜívodiþovým propojením výstupních a vstupních signálĤ podle obr. 2.6.5. PĜi vývoji aplikaþních programĤ pro rozhraní RS-232 využíváme specializovaných knihoven jako napĜ. námi použité knihovny VISA – viz. další þást vČnující se popisu implementace ukazatelĤ aerometrických pĜístrojĤ na PC.
34
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
35
Data se rozhraním RS-232 pĜenáší sériovČ a asynchronnČ. SériovČ znamená, že jednotlivé bity pĜenášeného znaku jsou vysílány postupnČ. AsynchronnČ znamená, že jednotlivé znaky jsou vysílány asynchronnČ, pĜitom ale pĜenos jednotlivých bitĤ každého znaku je synchronní. ýasové základny vysílaþe i pĜijímaþe totiž bČží na pĜibližnČ stejné, ale ne zcela identické frekvenci. PĜed každým pĜenášeným znakem je odvysílán tzv. start bit, který slouží k sychronizaci hodinového signálu pĜijímaþe. I když frekvence hodinových signálĤ vysílaþe a pĜijímaþe není, jak již bylo Ĝeþeno, zcela identická, pĜedpokládá se, že po dobu pĜenosu jednoho znaku nedojde k výraznému rozsynchronizování a znak tak bude pĜijat korektnČ. PĜed pĜenosem dalšího znaku dojde opČt k synchronizaci pomocí dalšího start bitu. Každý datový rámec obsahuje synchronizaþní start bit, dále volitelnČ 5 až 8 datových bitĤ, volitelnČ paritní bit a volitelný poþet stop bitĤ. Standard RS-232 umožĖuje použití modulaþní rychlosti až do 9600 Bd (BaudĤ = bit/s). NovČjší standard EIA-232 umožĖuje použití modulaþní rychlosti až do 115200 Bd. Nastavení parametrĤ pĜenosu, tj. nastavení složení datového rámce, volba sudé, liché nebo žádné parity a nastavení modulaþní rychlosti musí být pĜitom na stranČ pĜijímaþe a vysílaþe shodné. V našem pĜípadČ jsme nastavili v systému pro mČĜení tlaku DPI-145 následující parametry pĜenosu, které odpovídají výchozímu nastavení použité knihovny VISA: 9600 BAUD RATE, PARITY NONE, HANDSHAKING NONE. Do menu nastavení tČchto parametrĤ se pĜitom dostaneme postupem popsaným v následujícím odstavci. Ostatní parametry pĜenosu – poþet datových bitĤ a poþet stop bitĤ – nelze v systému pro mČĜení tlaku DPI-145 pĜenastavit a odpovídají výchozímu nastavení knihovny VISA: 8 DATA BITS, 1 STOP BIT. Pro menu nastavení RS-232 zmáþkneme tlaþítko SET-UP na panelu pĜístroje a na displeji se objeví požadavek o zadání Pin þísla. Vymaþkáme Pin þíslo (123) na numerické klávesnici a tím se dostaneme do Set-up menu. Zmáþkneme tlaþítko SCROLL pro výbČr druhé stránky Set-up menu a poté zvolíme tlaþítkem F1 volbu Comms. Pokud není odblokován softwarový klíþ pro rozhraní GPIB (IEEE-488), pak se rovnou ocitneme v menu nastavení RS-232, jinak musíme vybrat RS-232 opČtovným zmáþknutím tlaþítka F1. Paritní bit slouží k zajištČní správnosti pĜenosu a jeho použití není povinné. Je-li použit, pak definujeme, zda budeme používat sudou nebo lichou paritu, kdy je paritní (kontrolní) bit automaticky nastaven Ĝadiþem tak, aby poþet jedniþek v datovém rámci byl sudý, resp. lichý. Stop bit nebo stop bity na konci datového rámce zajišĢují minimální þasovou mezeru mezi dvČma datovými rámci tak, aby bylo možné na stranČ pĜijímaþe detekovat další synchronizaþní start bit.
35
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
36
2.6.3. Rozhraní GPIB Rozhraní GPIB (IEEE-488) má charakter sbČrnice a umožĖuje pĜipojení až 14 funkþních jednotek (mČĜicích pĜístrojĤ) pĜes toto rozhraní k Ĝídicí jednotce (osobnímu poþítaþi standardu IBM vybaveného pĜíslušnou deskou rozhraní GPIB). Rozhraní GPIB (IEEE-488) bylo navrženo koncem 60. let 20. stol. firmou Hewlett Packard s oznaþením HPIB (Hewlett
Packard Interface Bus). V roce 1975 bylo publikováno americkou standardizaþní institucí IEEE (Institute for Electrical and Electronics Engineers) jako standard IEEE-488 = GPIB (General Purpose Interface Bus). Základní parametry sbČrnice GPIB (IEEE-488): -
celkový poþet pĜipojitelných funkþních jednotek (mČĜicích pĜístrojĤ) – 14,
-
celková maximální délka sbČrnice – 20 m,
-
maximální vzdálenost mezi dvČma funkþními jednotkami (mČĜicími pĜístroji) – 2 m,
-
poþet vodiþĤ sbČrnice – 24 (8 datových DIO1 až DIO8; 3 pro Ĝízení pĜenosu dat, tzv. handshaking – DAV, NRFD, NDAC; 5 pro vysílání jednovodiþových zpráv – ATN, IFC, REN, SRQ, EOI; 8 zemnicích vodiþĤ),
-
maximální pĜenosová rychlost – 1 Mbyte/s,
-
elektrické úrovnČ signálĤ – L (< 0,8 V), H (> 2,0 V),
-
logické úrovnČ signálĤ – logická 1 (TRUE) ~ L, logická 0 (FALSE) ~ H. Pro srovnání základní parametry rozhraní RS-232:
-
celkový poþet pĜipojitelných funkþních jednotek (mČĜicích pĜístrojĤ) – vždy jedna k jednomu sériovému portu PC,
-
celková maximální délka kabelu mezi Ĝídicí jednotkou (osobním poþítaþem standardu IBM) a funkþní jednotkou (mČĜicím pĜístrojem) – stovky m,
-
poþet vodiþĤ rozhraní – vČtšinou 9,
-
maximální pĜenosová rychlost – 0,02 Mbyte/s,
-
elektrické úrovnČ signálĤ – L (–3 až –25 V), H (+3 až +25 V),
-
logické úrovnČ signálĤ
o a) datové signály – logická 1 (TRUE) ~ L, logická 0 (FALSE) ~ H, o b) Ĝídicí signály – logická 1 (TRUE) ~ H, logická 0 (FALSE) ~ L. Jelikož popis funkce sbČrnice GPIB (IEEE-488) je složitČjší a žádal by si více místa, tak pĜípadné zájemce odkazuji na literaturu [7].
36
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
37
2.6.4. Stykové obvody rozhraní RS-232 u systému pro mČĜení tlaku DPI-145 Blokové zapojení stykových obvodĤ rozhraní RS-232 u systému pro mČĜení tlaku DPI-145 je znázornČné na obr. 2.6.6. Obvod UART (Universal Asynchronous Receiver /
Transmitter) – konkrétnČ XR88C681 – je Ĝadiþ sériového pĜenosu, který provádí pĜevod paralelních dat na sériová a naopak. Princip sériové komunikace spoþívá ve vysílání jednotlivých bitĤ pĜenášeného znaku postupnČ. To má výhodu v tom, že tak ušetĜíme výstupy a vodiþe. DĤvod, proþ se Ĝadiþ UART nazývá univerzální, je hlavnČ ten, že je to Ĝadiþ programovatelný – možno u nČj nastavit parametry pĜenosu jako poþet datových bitĤ, pĜenosovou rychlost apod. Obvod UART umožĖuje duplexní pĜenos dat na sobČ nezávislým vysílaþem s výstupem TxD a pĜijímaþem se vstupem RxD.
obr. 2.6.6 – Stykové obvody rozhraní RS-232 u systému pro mČĜení tlaku DPI-145
Obvod MAX-232 pak slouží pro pĜevod signálĤ TTL úrovnČ na signály úrovnČ RS-232, kdy úrovni H odpovídá u RS-232 napČtí +3 až +25 V a úrovni L napČtí –3 až –25 V. Tento pĜevod má význam pro zvýšení odolnosti proti rušení. V osobním poþítaþi je rozhraní RS-232 Ĝešeno analogickým zpĤsobem. PC architektura používá standardnČ rozhraní RS-232 obsluhované Ĝadiþem UART podobným pĤvodnímu Ĝadiþi UART 8250 od spoleþnosti Intel.
37
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
38
3. IMPLEMENTACE UKAZATELģ NA PC 3.1. Programátorská dokumentace 3.1.1. Volba vývojových nástrojĤ, seznámení se s technologií .NET a jazykem C# Pro implementaci byl zvolen programovací jazyk Microsoft Visual C# 2.0 a jako vývojové prostĜedí Microsoft Visual Studio 2005. DĤvody volby tohoto programovacího jazyka lze shrnout do následujících dvou bodĤ: 1. jedná se o moderní objektovČ-orientovaný jazyk speciálnČ vyvinutý spoleþností Microsoft pro její platformu .NET a je zároveĖ prosazován jako hlavní jazyk této platformy, 2. je charakteristický napĜ. rychlým vývojem aplikací, pĜehlednou syntaxí pĜevzatou z jazykĤ Java a C++, vysokou typovou bezpeþností, hlídáním hranic polí, detekcí použití neinicializovaných promČnných, pĜenositelností (všude, kde bČží platforma Microsoft .NET Framework event. Mono), automatickou správou pamČti a velkým množstvím dostupné dokumentace. Platforma .NET byla oficiálnČ uvedena spoleþností Microsoft v roce 2000 jako klíþový produkt, jehož rozvoj a propagace je souþástí její dlouhodobé strategie. Microsoft .NET pĜedstavuje novou generaci systému vývoje aplikací pro operaþní systémy Windows založeném na
Ĝízeném bČhovém prostĜedí, obohaceném o neskromnou sadu základních tĜíd, nesoucím jméno .NET Framework. Hlavními dĤvody vedoucí spoleþnost Microsoft k více než þtyĜletému vývoji této platformy byly: 1. nekompatibilita jednotlivých programovacích jazykĤ a s tím související obtížná spolupráce mezi programy/knihovnami napsanými v odlišných jazycích, 2. vysoká chybovost aplikací (chyby v práci s pamČtí, neplatné konverze datových typĤ), 3. problémy s verzemi knihoven (obtížná práce s provozem více verzí knihoven – problém známý jako „DLL Hell“), 4. zastaralý a nepĜehledný zpĤsob vývoje dosavadních webových aplikací. Všechny tyto problémy efektivnČ platforma .NET Ĝeší, a to použitím již zmínČného Ĝízeného bČhové prostĜedí, systémem sestavení (assemblies), což jsou základní stavební prvky aplikací, a novou technologií ASP .NET pro vývoj webových aplikací.
38
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
39
Starší programy napsané napĜ. v jazycích C, C++ byly vždy zkompilovány pĜímo pro danou platformu, tj. zdrojový kód byl kompilací pĜeveden do strojového kódu poþítaþe typického pro danou platformu. To ve výsledku pĜináší velmi malou velikost výsledného binárního souboru a velmi dobrou rychlost bČhu programu, ale plynou z toho nČkteré nevýhody jako napĜ. nepĜenositelnost mezi jednotlivými platformami, þasté chyby vývojáĜĤ v pĜístupech do operaþní pamČti a jiné. Princip Ĝízených bČhových prostĜedí, použitý právČ u platformy .NET, ale i u známé platformy Java spoleþnosti Sun Microsystems, to Ĝeší jiným zpĤsobem a pĜidává k pĜevodu ještČ jednu vrstvu, tzv. mezikód, do kterého jsou zdrojové kódy zkompilovány. Mezikód je pĜeveden do strojového kódu až bČhovým prostĜedím na cílové platformČ (Windows, Linux). Nevýhodou je z toho plynoucí vyšší nároþnost na výkon klientského poþítaþe a z tohoto dĤvodu není tato technologie vhodná pro vývoj výpoþetnČ nároþných aplikací. Pro vČtšinu komerþních aplikací je ale výpoþetní výkon naprosto vyhovující, tj. uživatel snížení rychlosti bČhu ani nepocítí. Navíc se používá tzv. JIT (Just-In-Time) kompilace, kdy nedochází pĜi spuštČní aplikace k jejímu celému pĜekladu najednou, ale do strojového kódu je vždy pĜevedena pouze potĜebná þást mezikódu, a pĜi opČtovné potĜebČ se znovu využívají již pĜeložené
þásti. To se pĜíznivČ projeví na rychlosti, která si již nezadá s bČhem neĜízeného programu. Mezikód se v pĜípadČ platformy .NET oznaþuje MSIL (Microsoft Intermediate Language). Tento mezijazyk je spouštČn CLR (Common Language Runtime – spoleþné bČhové prostĜedí), jež je klíþovou souþástí .NET Frameworku a spoleþnost Microsoft jej dala ke standardizaci organizaci ECMA. V prostĜedí CLR existuje Garbage Collector, který se stará o práci s pamČtí a uvolĖování nepotĜebných zdrojĤ. Velmi dĤležitou vlastností, kterou dala spoleþnost Microsoft své platformČ do vínku, je CLS (Common Language Specification – spoleþná jazyková specifikace), s níž souvisí CTS (Common Type System – spoleþný typový systém). Výsledkem je rovnocennost programovacích jazykĤ. Jinými slovy je pro vývoj aplikací pro platformu .NET možno použít nČkolik programovacích jazykĤ vyšší úrovnČ – napĜ.: 1. C# … jazyk speciálnČ vyvinutý pro .NET, 2. Visual Basic .NET … nová generace jazyku Visual Basic, 3. J# … jazyk se syntaxí rozšíĜeného jazyka Java, 4. managed C++ … jazyk C++ se Ĝízenými rozšíĜeními, které umožĖují psát aplikace pro .NET i v tak neĜízeném jazyce, jakým je C++. S tím vším souvisí i další výhoda této platformy, a sice výrobcĤm tĜetích stran nic nebrání ve vývoji dalších programovacích jazykĤ. Jediné, co staþí, je splnit specifikaci CLS.
39
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
40
obr. 3.1.1 – CLR – kompilace a spuštČní
obr. 3.1.2 – Množina CLR/CTS
obr. 3.1.3 – Obsah assembly
PĜekladem programu pro .NET obdržíme spustitelný EXE nebo knihovní DLL soubor s kódem v jazyce MSIL. Mluvíme o tzv. sestavení (assembly), což je základní zaveditelný prvek aplikace pro .NET Framework. Každá aplikace pro .NET Framework je tvoĜena pĜinejmenším jedním sestavením a to je zase tvoĜeno þtyĜmi þástmi, jak ukazuje obr. 3.1.3, kterými jsou: a) manifest, který obsahuje metadata daného sestavení (Assembly Manifest), b) typová metadata, c) kód v jazyce MSIL, který je spouštČn bČhovým prostĜedím .NET Framework, d) prostĜedky (resources). Metadata daného sestavení obsahují informace o identitČ sestavení, verzi sestavení, zabezpe-
þení, pĜístupnosti a také reference na další sestavení, typy a prostĜedky. Typová metadata ob40
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
41
sahují velmi podrobné informace o všech typech v daném sestavení obsažených – napĜ. ke všem typĤm v daném sestavení jejich metody, ke každé metodČ typ její návratové hodnoty a typy všech jejích argumentĤ apod. Existují dva typy sestavení, a to sestavení soukromé a sdílené. V soukromém sestavení jsou data pĜístupná pouze aplikaci, pro kterou byla vytvoĜena a jsou vČtšinou dodávána pĜímo s aplikací. Takové programy nevyžadují žádnou složitou instalaci a není potĜeba nic zapisovat do registrĤ Windows. Naopak sdílená sestavení je možné adresovat a používat v rámci celého systému, jedná se tedy o spoleþné knihovny. Z toho plynou rizika, proti kterým musí být sestavení chránČno. Sdílená sestavení jsou proto uložena ve speciální složce GAC (Global Assembly Cache – globální mezipamČĢ sestavení) a je nutné je speciálnČ instalovat. Hlavními problémy, kterým je potĜeba se vyhnout, je konflikt názvĤ a možnost pĜepsání jinou verzí. Konflikt názvĤ je Ĝešen automatickým pĜidČlováním názvĤ založeném na kryptografickém klíþi. Takový název oznaþujeme jako „silný“. PĜepsání novou verzí nemĤže nastat, neboĢ každé sestavení má v sobČ (v manifestu) uloženou informaci o verzi, takže je možné instalovat paralelnČ více verzí jednoho sestavení. Jedním z dĤsledkĤ použití mechanismu metadat pro všechny typy v prostĜedí .NET Frameworku je možnost tyto typy v našem programu prozkoumávat, což se nazývá reflexe. Jmenný prostor, který obsahuje nemalý poþet tĜíd, jež námi mohou být pro reflexi použity, nese název System.Reflection. Mechanismus reflexe nám tedy umožĖuje procházení a manipulaci s objektovým modelem pĜedstavujícím konkrétní aplikaci. Metadata, která jsou reflexí využívána, jsou obvykle vytváĜena kompilátorem pĜi pĜekladu aplikace. Reflexe byla nČkolikrát použita i v implementovaném programu. Reflexi využívá i vývojové prostĜedí Microsoft Visual Studio 2005, jakmile nabízí jednotlivé þleny typu pĜi zapsání teþky za identifikátorem instance typu (IntelliSense). Každá aplikace pro .NET Framework bČží v nČjaké aplikaþní doménČ pĜedstavující izolované bČhové prostĜedí. Historicky se pro izolaci aplikací bČžících na jednom poþítaþi zavedly procesy. Každá aplikace byla pĜi svém spuštČní natažena do zvláštního procesu, a tak se aplikace vzájemnČ izolovaly. Aplikaþní domény lze považovat za bezpeþné jednotky, které CLR používá pro izolaci mezi aplikacemi v .NETu. UvnitĜ jednoho procesu mĤže existovat nČkolik aplikaþních domén, které mají stejnou úroveĖ izolace, jako mají procesy, avšak tyto aplikaþní domény mohou vzájemnČ snadno komunikovat (virtuální procesy). Tím odpadají problémy týkající se obtížné meziprocesní komunikace. Izolace na úrovni aplikaþních domén se opírá o kontrolu používání pamČti aplikaþním kódem.
41
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
42
Jak jsem již napsal, jazyk C# je moderní objektovČ-orientovaný jazyk speciálnČ vyvinutý spoleþností Microsoft pro její platformu .NET. Microsoft založil C# na jazycích Java a C++, takže pro programátory v tČchto jazycích není tČžké se C# nauþit. StejnČ jako tyto jazyky je i C# case-sensitive, což znamená, že významovČ odlišuje velká a malá písmena. Základní datové typy v C# jsou stejné jako u ostatních jazykĤ pro .NET, a to kvĤli splnČní specifikace CTS. Datové typy se dČlí na dvČ skupiny, a to na hodnotové typy (Value Types) a referenþní typy (Reference Types). U promČnné hodnotového typu (napĜ. integer, short, struktury atd.) obsahuje promČnná pĜímo data a je uložena na zásobníku, zatímco u promČnné referenþního typu (napĜ. String, objekty, pole atd.) obsahuje promČnná pouze adresu, kde na haldČ jsou data uložena. Každý program v jazyku C# se þlení do tĜíd, které zapouzdĜují (zapouzdĜení = encapsulation) atributy a metody pro práci s nimi. Pro uspoĜádání tĜíd do celkĤ, které spolu logicky souvisejí, slouží v .NETu jmenné prostory (namespaces). TĜída pĜedstavuje datový typ, podle nČhož lze vytváĜet objekty (instance tĜídy). Výjimku tvoĜí statické tĜídy, které instanciovány být nemohou. Vlastní vytvoĜení objektu má vždy na starosti konstruktor, což je specializovaná metoda uvnitĜ tĜídy. ObjektovČ-orientované programy pracují s objekty, þímž se jim lépe daĜí postihnout realitu – programy se stávají názornČjší, srozumitelnČjší a lze je lépe spravovat. Pro urþení viditelnosti þlenĤ vnČ tĜídy slouží specifikátory pĜístupu: private (pĜístup pouze uvnitĜ tĜídy), protected (pĜístup pouze uvnitĜ tĜídy a všem jejím potomkĤm – význam slova potomek bude objasnČn v následujícím odstavci) a public (pĜístup i vnČ tĜídy). Pro pĜístup k privátním þlenĤm tĜídy z vnČjšku se v C# používají vlastnosti, které jsou pĜehlednČjší alternativou get/set metod používaných napĜ. v JavČ. Metody a konstruktory mohou být v rámci tĜídy definovány v nČkolika verzích, do kterých vstupuje rozdílný poþet nebo jiné typy parametrĤ. Takovéto metody resp. konstruktory jsou pak nazývány pĜetížené. DĤležitým pojmem objektovČ-orientovaného programování je dČdiþnost, která znamená možnost odvodit nČjakou tĜídu z tĜídy jiné. PotĜeba využít dČdiþnosti nastává tehdy, je-li jedna tĜída speciálním pĜípadem jiné tĜídy. TĜída, která slouží jako základ pro odvozenou tĜídu (dce-
Ĝinnou tĜídu, potomka, podtĜídu…), nese oznaþení bázová tĜída (rodiþovská tĜída, rodiþ, pĜedek, nadtĜída…). Dalším dĤležitým pojmem je polymorfismus (mnohotvarost), který umožĖuje, aby jedna tĜída mČla mnoho podob. Pro realizaci polymorfismu lze využít napĜ. abstraktní tĜídy, které samy o sobČ nemohou být instanciovány, ale slouží pro odvození tĜíd dalších. Jejími þleny mohou být virtuální metody, které pak musí každá odvozená tĜída povinnČ pĜekrýt. V implementaci grafických uživatelských rozhraní se v jazyku C# þasto používají tzv. události, které pĜedstavují cestu, která umožĖuje tĜídČ upozornit jinou tĜídu nebo tĜídy, že v ní 42
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
43
došlo k nČþemu zajímavému, na což by mohla tato tĜída resp. tĜídy urþitým zpĤsobem zareagovat. Pro definici metod, které mohou být pro obsloužení události použity, slouží tzv. delegáty, což jsou vlastnČ ukazatele na funkce, které jsou ale na rozdíl od tČch z jazyka C++ objektovČ-orientované a typovČ bezpeþné. K pĜidání instance delegáta pro obsluhu události slouží operátor += a k jeho vyjmutí operátor –=. V prostĜedí .NET Frameworku je pro zpracování výjimeþných (chybových) stavĤ použit systém výjimek. ChránČný blok je uvozen klíþovým slovem try, za nímž následuje handler výjimky v bloku catch, pĜiþemž za chránČným blokem mĤže následovat i více než jeden handler výjimky. Vlastnost výjimky Message nese informaci o vzniklé výjimce ve formČ textového ĜetČzce. 3.1.2. Knihovna tĜíd Windows Forms Jednoduchou tvorbu grafického uživatelského rozhraní aplikace pro platformu .NET zajišĢuje knihovna tĜíd Windows Forms, jež je proto logicky použita i v implementovaném programu. KonkrétnČ implementovaný program pracuje s následujícími ovládacími prvky z této knihovny: Button (tlaþítko), Label (popisek), ListBox (seznam položek), MenuStrip (panel
nabídky), NumericUpDown (výbČr þísla z rozsahu), PictureBox (zobrazuje obrázek), RadioButton (pĜepínací tlaþítko), StatusStrip (stavový Ĝádek), TextBox (textové
políþko), ToolStripMenuItem (položka nabídky), ToolStripSeparator (oddČlovaþ položek nabídky), ToolStripStatusLabel (popisek zobrazovaný na stavovém Ĝádku). Knihovnu je tĜeba chápat jako moderní alternativu starších metod psaní aplikací pro Windows, jaké se používaly v programovacím jazyku C a nativním 32bitovém rozhraní programování aplikací pro Windows (Win32API) nebo jak se programovalo v C++ pomocí Microsoft Foundation Classes (MFC). Samotné prvky Windows Forms jsou implementovány v nČkolika DLL knihovnách rámce .NET Framework. NejdĤležitČjší tĜídou kolekce Windows Forms je nepochybnČ tĜída Control. Ta je nejen základní tĜídou všech ovládacích prvkĤ, ale i tĜídy Form, která zapouzdĜuje hlavní okno a aplikaci Windows Forms a jako doplĖkovou þinnost má na starosti dialogová okna. Jednou z nejdĤležitČjších vlastností, definovaných tĜídou Control, je vlastnost Parent neboli rodiþ. Ta se nastavuje na objekt typu Control. Každý ovládací prvek musí mít platného rodiþe, má-li být na obrazovce vidČt. Výjimkou je tĜída Form, jejíž instance má obecnČ vlastnost 43
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
44
Parent nastavenou na null, což znamená, že rodiþem takového formuláĜe je pracovní plo-
cha. FormuláĜ se obecnČ dostane tak, že se definuje tĜída dČdící od knihovní tĜídy Windows.Forms.Form. Má-li pak být tento formuláĜ hlavním oknem aplikace, vytvoĜíme objekt
této tĜídy jako argument metody Application.Run v metodČ Main. V pĜípadČ použití formuláĜe jako dialogového okna, vytvoĜíme objekt této tĜídy a zavoláme jeho metodu ShowDialog. Dialogová okna mohou být obecnČ dvojího druhu, a to modální a nemodální. Imple-
mentovaný program využívá pouze ta modální, kdy se uživatel nemĤže pĜepnout zpČt do aplikaþního okna, dokud ho nepotvrdí nebo nestornuje. Podle toho pak metoda ShowDialog vrací hodnotu DialogResult.OK nebo DialogResult.Cancel. Aby se pĜedešlo problémĤm, jako jsou jen þásteþnČ viditelné ovládací prvky nebo prvky nedostateþnČ velké pro zobrazovaný text v pĜípadČ rĤzného nastavení monitoru, þi výchozího písma, zavedla kolekce prvkĤ Windows Forms rámce .NET Framework 2.0 tzv. dynamické rozvržení (Dynamic Layout). Zatímco programátoĜi dĜíve rozmisĢovali ovládací prvky na formuláĜe vždy s pevnČ zadanými souĜadnicemi a velikostmi, což zpĤsobovalo výše uvedené problémy, dnes lze místo toho použít právČ dynamické rozvržení. Tento nový pĜístup k rozmisĢování ovládacích prvkĤ se uplatĖuje i v implementovaném programu. Jedním z prvkĤ, který umožĖuje práci s dynamickým rozvržením ve Windows Forms, je logická vlastnost AutoSize tĜídy Control. Ve výchozím stavu je jí pĜiĜazena hodnota false. Pokud ji ale nastavíme na true, pak bude ovládací prvek automaticky pĜizpĤsobovat
svou velikost svému obsahu. NČkteré ovládací prvky navíc implementují také vlastnost AutoSizeMode, a to GrowOnly (implicitní – pouze rĤst) a GrowAndShrink (rĤst a zmenšovat
se). DvČ dĤležité vlastnosti související s dynamickým rozvržením, které byly zavedeny již v .NET Frameworku 1.1, jsou vlastnosti Dock a Anchor. Vlastnost Dock znaþí umístČní k okraji a mĤže být nastavena na kterýkoli þlen výþtu DockStyle, a to None, Top, Bottom, Left, Right a Fill. PoslednČ jmenovaný znamená roztáhni prvek tak, aby se dotýkal všech
þtyĜ okrajĤ svého kontejneru. NejdĤležitČjšími prvky dynamického rozvržení ve Windows Forms jsou ale panely dynamického rozvržení, a to panel postupného rozvržení FlowLayoutPanel a panel tabulkového rozvržení TableLayoutPanel.
Panel postupného rozvržení FlowLayoutPanel uspoĜádává ve výchozím režimu své dceĜinné ovládací prvky zleva doprava. Pokud následující ovládací prvek pĜesáhne dostupný prostor, umístí se na další Ĝádek. Nastavíme-li vlastnost WrapContents panelu na hodnotu 44
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ false,
45
nebude docházet k automatickému vytváĜení dalšího Ĝádku. SmČr kterým
FlowLayoutPanel uspoĜádává své ovládací prvky, je možno zmČnit, a to nastavením jeho
vlastnosti FlowDirection, která má standardnČ hodnotu LeftToRight. Panel tabulkového rozvržení TableLayoutPanel zobrazuje své potomky v mĜížce ĜádkĤ a sloupcĤ. Každý dce-
Ĝinný prvek vČtšinou zabírá právČ jednu buĖku mĜížky, ovšem nemusí tomu tak být vždy. Ve výchozím stavu uspoĜádává TableLayoutPanel své ovládací prvky do jediného sloupce. Toto je možné zmČnit nastavením jeho vlastnosti ColumnCount na požadovaný poþet sloupcĤ. Pro nastavení dalšího zarovnání prvkĤ se používají vlastnosti Dock a Anchor. K tvorbČ okrajĤ a odsazení prvkĤ pak slouží vlastnosti Padding a Margin. StandardnČ má vlastnost Margin hodnotu 3 pixely na všech stranách.
Aþkoliv Microsoft Visual Studio 2005 disponuje návrháĜem grafického uživatelského rozhraní aplikace, nebylo této pomĤcky pĜi implementaci programu využito, ale všechen kód byl napsán vlastnoruþnČ. DĤvody byly jednak osobní preference, jednak skuteþnost, že návrháĜ implicitnČ nevyužívá pro rozmisĢování ovládacích prvkĤ zmínČné dynamické rozvržení.
3.1.3. Grafická knihovna GDI+ Vykreslení ukazatelĤ bylo realizováno pomocí tĜíd grafické knihovny GDI+, konkrétnČ ze jmenných prostorĤ System.Drawing, System.Drawing.Drawing2D a System.Drawing.Text. Grafická knihovna GDI+ oproti své starší verzi, knihovnČ GDI, zjed-
nodušuje implementaci vykreslovacích úloh, ale je o nČco pomalejší. Tím, že je objektovČ-orientovaná, dobĜe zapadá do platformy .NET. Pro vykreslování daného ovládacího prvku na formuláĜ slouží jeho metoda OnPaint, která je volána i pĜi požadavku o jeho pĜekreslení (napĜ. pĜi zmČnČ jeho velikosti). Jediným argumentem této metody je objekt typu PaintEventArgs nesoucí dodateþné informace o kreslicí události. Z nČho je pak možno získat objekt typu Graphics, který si je možné pĜedstavit jako plátno pro kreslení daného ovládacího prvku. PĜekreslení ovládacího prvku vyvoláme ve svém programu zavoláním jeho metody Refresh. ImplicitnČ používá knihovna GDI+ tzv. svČtový souĜadný systém (World Coordinate System), což je souĜadný systém nezávislý na zaĜízení, a zadané velikosti bere jako ve svČtových jednotkách (World Units). PĜi vykreslování písma je tĜeba dávat pozor, neboĢ jeho velikost je standardnČ zadávána v pixelech. Abychom zaruþili i pĜi rĤznČ nastaveném DPI monitoru vždy stejnou velikost písma vzhledem k okolní grafice, je tĜeba velikost písma specifiko45
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
46
vat také ve svČtových jednotkách. Poþátek souĜadné soustavy leží v levém horním rohu kreslicího plátna a kladná x-ová osa smČĜuje doprava a y-ová dolĤ, jak je vidČt na obr. 3.1.4.
obr. 3.1.4 – SouĜadný systém pro kreslení
TĜída Graphics disponuje mnoha grafickými metodami, z nichž pro vykreslení ukazatelĤ postaþily tyto: DrawArc (vykreslí oblouk), DrawLine (vykreslí þáru), DrawRectangle (vykreslí
þtyĜúhelník), DrawString (vykreslí ĜetČzec), FillEllipse (vykreslí vyplnČný kruh nebo elipsu), FillPolygon (vykreslí vyplnČný mnohoúhelník), FillRectangle (vykreslí vyplnČný þtyĜúhelník), MeasureString (zmČĜí šíĜku vykreslovaného ĜetČzce), Restore (obnovení stavu grafického kontextu), RotateTransform (otoþení souĜadného systému o požadovaný úhel), Save (uložení stavu grafického kontextu), ScaleTransform (zmČna mČĜítka). Pro postupné vytvoĜení stupnice a pohyb ruþiþky bylo zapotĜebí provést rotaci souĜadného systému vždy o urþitý vypoþtený úhel s možností vrátit se zpČt do pĤvodního stavu. Díky metodám Save, RotateTransform a Restore, které poskytuje tĜída Graphics, je to velmi jednoduché. Zavoláním metody Save obdržíme objekt typu GraphicsState, který pĜedstavuje aktuální stav grafického kontextu. Metodou RotateTransform pak uskuteþníme rotaci souĜadného systému o požadovaný úhel. Nakonec zavoláním metody Restore, jejíž parametrem je získaný objekt typu GraphicsState, opČt obnovíme pĤvodní stav grafického kontextu pĜed rotací. Implementovaný program využívá kromČ tĜídy Graphics, ještČ následující grafické tĜídy: Brush (štČtec pro kreslení), Pen (pero pro kreslení), Point (grafický bod), Rectangle (þtyĜúhelník).
46
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
47
3.1.4. Rozhraní .NET VISA API pro komunikaci s mČĜicím pĜístrojem Pro navázání a Ĝízení komunikace se systémem DPI-145 bylo použito na mČĜicí aplikace specializované knihovny VISA, konkrétnČ NI-VISA (implementace knihovny VISA od spoleþnosti National Instruments) a její rozhraní pro .NET. Vlastní komunikace pak probíhá pomocí pĜístrojových zpráv standardu SCPI. Knihovna VISA (Virtual Instrument Software Architecture) je knihovna, která zajišĢuje transparentní komunikaci mezi aplikaþním programem a fyzickým zaĜízením (mČĜicím pĜístrojem þi modulem). To umožĖuje psát programy jednotným zpĤsobem bez ohledu na použité rozhraní. Knihovna VISA pĜitom podporuje rĤzná rozhraní, mezi nimi jak RS-232, tak i GPIB. Knihovna VISA je výsledkem práce tzv. VXI plug&play System Alliance, jejímž hlavním cílem bylo zjednodušit programování VXI mČĜicích systémĤ složených z mČĜicích modulĤ rĤzných výrobcĤ. VISA specifikace definuje pro rozhraní RS-232 následující výchozí komunikaþní nastavení: 9600 BAUD RATE, 8 DATA BITS, 1 STOP BIT, PARITY NONE, HANDSHAKING NONE. Rozhraní .NET VISA API zahrnuje sadu tĜíd pro .NET zajišĢující komunikaci s mČĜicím pĜístrojem prostĜednictvím knihovny VISA. Je možné použít jakýkoli z jazykĤ pro .NET – napĜ. C#, Visual Basic .NET a další. Rozhraní je souþástí knihovny NI-VISA, která je zdarma ke stažení ze stránek spoleþnosti National Instruments, a to pro použití s jejími produkty. PĜi instalaci knihovny NI-VISA je nezbytné zvolit volbu „Podpora pro .NET Framework 2.0“. Poté je nutno pĜidat dvČ reference do Ĝešení v Microsoft Visual Studiu 2005, a to NationalInstruments.Common a NationalInstruments.VisaNS. Jmenný prostor NationalInstruments.Common obsahuje spoleþné metody a vlastnosti používané velkou
vČtšinou ovladaþĤ poskytovaných od spoleþnosti National Instruments. Jmenný prostor NationalInstruments.VisaNS zahrnuje metody a vlastnosti pro rozhraní .NET VISA API.
Pro navázání komunikace s mČĜicím pĜístrojem musíme znát jeho identifikaþní ĜetČzec. NapĜ. identifikaþní ĜetČzec zdroje ASRL1::INSTR znaþí pĜístroj na 1. sériovém portu poþítaþe a GPIB0::13::INSTR znaþí pĜístroj s adresou 13 pĜipojený pĜes rozhraní GPIB. Pro spojení aplikace s pĜístrojem zavádí knihovna VISA pojem sezení. Rozhraní .NET VISA API obsahuje rĤzné tĜídy sezení navržené pro konkrétní potĜeby. Implementovaný program používá tĜídu MessageBasedSession, která slouží ke komunikaci s pĜístrojem prostĜednictvím zpráv.
Jinou možností je napĜ. tĜída RegisterBasedSession, která slouží ke komunikaci s pĜístrojem skrze registry.
47
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
48
Objekt typu MessageBasedSession vytvoĜíme následovnČ: Nejprve zavoláme statickou metodu GetLocalManager tĜídy ResourceManager, þímž obdržíme její instanci. Metoda Open této instance pak slouží k otevĜení nového sezení s pĜístrojem. Metoda pĜebírá jako parametr identifikaþní ĜetČzec zdroje a vrací objekt typu Session, který pĜetypujeme na požadovaný typ MessageBasedSession. Abychom udČlali aplikaci více robustní (schopnou reagovat na jakékoli chyby pĜi spuštČní výše uvedených pĜíkazĤ), byl použit systém výjimek. Po vytvoĜení sezení mĤžeme zaþít posílat pĜístroji SCPI pĜíkazy a þíst jeho odpovČdi. TĜi nejdĤležitČjší operace pro komunikaci založenou na výmČnČ zpráv jsou query, write a read. Operace query zašle pĜístroji pĜíkaz a pĜeþte zpČt jeho odpovČć, zatímco operace write pouze zašle pĜíkaz a operace read pouze pĜeþte odpovČć. Ukonþení sezení se provede zavoláním metody Dispose objektu typu MessageBasedSession, þímž dojde k uvolnČní veškerých jím alokovaných zdrojĤ. Standard SCPI (Standard Commands for Programmable Instruments) je souhrn pĜíkazĤ (pĜístrojových zpráv) a pravidel v automatizovaném mČĜicím systému, nezávislý na technickém Ĝešení rozhraní ani na použitém protokolu pĜenosu dat. Základním pĜínosem standardu SCPI je specifikace standardní množiny pĜíkazĤ (pĜístrojových zpráv), které umožní ovládání libovolného mČĜicího pĜístroje s využitím všech jeho funkcí. MČĜicí pĜístroj splĖující standard SCPI má implementovány pĜíkazy pouze z této standardní množiny pĜíkazĤ. Ve výjimeþných pĜípadech mĤže použít pĜíkazy nové, ale vytvoĜené v souladu s pravidly uvedenými ve standardu. Seznam všech podporovaných SCPI pĜíkazĤ i s jejich významem je možno nalézt zpravidla v dokumentaci daného mČĜicího pĜístroje. Implementovaný program konkrétnČ využívá následující dva SCPI pĜíkazy pĜevzaté z dokumentace systému DPI-145: :UNIT:CHANNELX INHG … nastaví jednotky tlaku mČĜicího kanálu þíslo X na in Hg, :READ:CHANNELX? … pĜeþte hodnotu tlaku na mČĜicím kanálu þíslo X.
48
obr. 3.1.5 – UML diagram tĜíd implementovaného programu Air Data System
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
49
49
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
50
3.1.5. Popis tĜíd implementovaného programu Air Data System Hierarchii implementovaných tĜíd znázorĖuje UML diagram tĜíd na obr. 3.1.5. ýára zakonþená trojúhelníþkem znaþí vztah generalizace (dČdČní) a þára zakonþená normální šipkou vztah asociace mezi tĜídami. Vidíme, že tĜídy, podle nichž se vytváĜejí objekty reprezentující jednotlivé indikátory, dČdí od abstraktní tĜídy Indicator. Jedná se o praktické využití tzv. polymorfismu (mnohotvarosti), kdy spoleþné atributy a metody jsou souþástí takovéto nadtĜídy (pĜedka), þímž se elegantnČ vyhneme duplicitČ programového kódu. NejpodstatnČjší tĜídou je statická tĜída Program, jež obsahuje metodu Main, která se volá po spuštČní programu jako první. V této metodČ dojde k vytvoĜení objektu (instance) tĜídy Form1, což je hlavní okno aplikace, jehož souþástí jsou jednotlivé indikátory. O obsluhu tČchto indikátorĤ se pak stará objekt (instance) tĜídy IndicatorsHandler, který provádí
þtení tlakĤ, výpoþty aerometrických veliþin a aktualizaci indikátorĤ vypoþtenými hodnotami. Tento objekt je stejnČ jako jednotlivé indikátory jedním z atributĤ tĜídy Form1. Všechny metody potĜebné pro komunikaci se systémem DPI-145 jsou zahrnuty do statické tĜídy Measurement a všechny výpoþetní metody do statické tĜídy Computation. TĜída SettingsDialog pĜedstavuje dialogové okno pro nastavení režimu bČhu aplikace, tĜída SelectResource dialogové okno pro nastavení komunikace se systémem DPI-145 a tĜída AboutDialog dialogové okno o programu. TĜída GroupPanel je novou vylepšenou imple-
mentací prvku GroupBox z knihovny tĜíd Windows Forms, která místo explicitního zadávání souĜadnic svých ovládacích prvkĤ využívá dynamického rozvržení. Dále budou podrobnČji popsány jednotlivé tĜídy programu, a to v poĜadí, v jakém na sebe logicky navazují.
TĜída Program
Jedná se o startovní statickou tĜídu, která obsahuje metodu Main prvnČ volanou po spuštČní programu. Hlavní okno aplikace zobrazíme vytvoĜením objektu tĜídy Form1 jako argumentu metody Application.Run v metodČ Main. Jelikož aplikace využívá reference na sestavení (assemblies) NationalInstruments.Common a NationalInstruments.VisaNS, které nemusí být na klientském poþí-
taþi nainstalovány, byly odpovídající DLL knihovny vloženy do projektu jako vestavČné prostĜedky (embedded resources). PĜi spuštČní programu se pak s použitím mechanismu reflexe 50
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
51
urþí chybČjící sestavení (assemblies), která se poté naþtou pĜímo ze spustitelného EXE souboru. O to se stará metoda ResolveAssembly, kterou pĜedtím pĜihlásíme ve statickém konstruktoru tĜídy Program jako handler události AssemblyResolve aktuální aplikaþní domény. Výhodou tohoto Ĝešení je to, že aplikaci je pak možno distribuovat jako jediný spustitelný EXE soubor, a to formou XCOPY deployment, tedy jeho pouhým pĜekopírováním na disk klientského poþítaþe. Jinou možností by bylo umístit potĜebné DLL knihovny do adresáĜe aplikace spolu se spustitelným EXE souborem, þi vytvoĜení instalátoru aplikace, který provede potĜebné zmČny v registrech Windows a nainstaluje DLL knihovny do GAC (Global Assembly Cache).
TĜída Form1
Tato tĜída dČdí od knihovní tĜídy Windows.Forms.Form a pĜedstavuje hlavní okno aplikace. Jejími atributy jsou mj. jednotlivé indikátory a objekt tĜídy IndicatorsHandler pro jejich obsluhu. Inicializace formuláĜe a vytvoĜení jeho jednotlivých ovládacích prvkĤ probíhá v jeho konstruktoru. FormuláĜ je napĜ. nastaven na to, aby nešel zvČtšovat a aby automaticky pĜizpĤsobil svou velikost obsahu. Dále je formuláĜ vycentrován na obrazovce. Pro rozmístČní jednotlivých ovládacích prvkĤ na formuláĜi je použito dynamického rozvržení. Požadováno bylo, aby hlavní okno ihned po svém spuštČní zobrazilo automaticky dialogové okno pro nastavení režimu jejího bČhu. ěešením je pĜihlásit se k odbČru formuláĜové události Activated a v handleru události se nejprve od odbČru odhlásit a poté zobrazit ono dialogové
okno. TĜída dále mimo konstruktoru obsahuje handlery událostí jednotlivých ovládacích prvkĤ na formuláĜi, konkrétnČ pro obsluhu výbČru nČkteré položky z menu, þi kliknutí na nČkteré z tlaþítek na formuláĜi. Pro zachycení rĤzných chybových stavĤ, ke kterým mĤže docházet, byl použit systém výjimek. Vypínání resp. zapínání indikátorĤ v menu „View“ bylo realizováno nastavením vlastnosti Visible konkrétního indikátoru na false resp. na true. Bylo ošetĜeno, aby vždy alespoĖ jeden indikátor mČl vlastnost Visible nastavenu na true, k þemuž slouží implementovaná metoda AtLeastOneIndicatorVisibleCheck. Tato metoda pĜebírá jako argument objekt typu ToolStripMenuItem reprezentující nabídku „View“. Pro procházení a následnou kontrolu zaškrtnutí alespoĖ jedné z položek v menu „View“ je použito cyklu foreach, který je v jazyku C# pĜedurþen k procházení polí a kolekcí. Syntaxi jeho použití mĤžeme snadno demonstrovat na jednoduchém poli: 51
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
52
foreach(datový_typ identifikátor in pole) { operace }
Cyklus provede definované operace pro každý prvek pole. K prvku je v tČle cyklu pĜistupováno prostĜednictvím identifikátoru, který je platný pouze v rámci cyklu. Kde je to jen možné, je vhodné dávat pĜednost cyklu foreach pĜed známým cyklem for, neboĢ na rozdíl od nČj nevyžaduje Ĝídicí promČnnou. Metoda SwitchApplicationMode pĜebírá jako argument þíslo požadovaného režimu bČhu aplikace a má za úkol provést pĜepnutí do tohoto režimu. V pĜípadČ požadavku o pĜepnutí do mČĜicího režimu ukonþí pĜedchozí sezení s mČĜicím pĜístrojem, pokud nČjaké již bylo uskuteþnČno, zastaví obsluhu indikátorĤ provádČnou objektem tĜídy IndicatorsHandler a zobrazí dialogové okno pro nastavení komunikace se systémem DPI-145. Pokud uži-
vatel potvrdí nastavení, následuje fáze otevĜení a inicializace sezení s pĜístrojem. Pro ošetĜení chybových stavĤ, kdy se toto nepodaĜí, je opČt použit systém výjimek. V pĜípadČ úspČšného navázání komunikace s pĜístrojem si uložíme nastavený identifikaþní ĜetČzec zdroje, abychom ho mohli opČt zobrazit ve výše zmínČném dialogovém oknČ pĜi jeho dalším vyvolání. PĜi požadavku o pĜepnutí do testovacího režimu, zobrazíme v hlavním oknČ navíc panel s pĜídavnými ovládacími prvky pro zadávání hodnot dynamického a statického tlaku, což provedeme nastavením vlastnosti Visible tohoto panelu na true. Nakonec nastavíme vlastnost ApplicationModeNumber objektu tĜídy IndicatorsHandler na þíslo požadovaného
režimu bČhu aplikace a aktivujeme obsluhu indikátorĤ zavoláním jeho veĜejné metody Start.
TĜída SettingsDialog
Tato tĜída dČdí od knihovní tĜídy Windows.Forms.Form a pĜedstavuje dialogové okno pro nastavení režimu bČhu aplikace. Jejími atributy jsou objekt typu GroupPanel, sloužící pro hostování pĜepínaþĤ (objektĤ typu RadioButton), a pole se jmény jednotlivých možných režimĤ. Inicializace formuláĜe a vytvoĜení jeho jednotlivých ovládacích prvkĤ probíhá opČt v jeho konstruktoru. FormuláĜ je napĜ. nastaven na to, aby nešel zvČtšovat a aby pĜizpĤsobil svou velikost obsahu. Protože se jedná o dialogové okno, tak je nastaveno, aby se nezobrazovala tlaþítka v záhlaví okna, a je deaktivováno jeho objevování se na panelu úloh. Dále je nastavena jeho poloha vĤþi rodiþovskému formuláĜi. Pro rozmístČní jeho jednotlivých ovláda52
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
53
cích prvkĤ na formuláĜi je opČt použito dynamického rozvržení. Prvek GroupPanel je v konstruktoru formuláĜe naplnČn pĜepínacími tlaþítky pro pĜepínání jednotlivých režimĤ bČhu aplikace. TĜída dále obsahuje veĜejnČ pĜístupnou vlastnost pro þtení a pro zápis s názvem ApplicationModeNumber pro pĜístup k soukromému atributu, objektu typu GroupPanel a jeho
vlastnosti Check.
TĜída GroupPanel
Prvek GroupBox z knihovny tĜíd Windows Forms vyžaduje explicitní zadávání souĜadnic svých ovládacích prvkĤ, což je v dnešní dobČ již nepĜijatelné. Proto bylo nutné pro hostování pĜepínaþĤ (objektĤ typu RadioButton) implementovat tĜídu vlastní, která místo toho využívá dynamického rozvržení. Toho docílíme jednoduše tak, že zdČdíme vlastnosti knihovní tĜídy FlowLayoutPanel a pĜekryjeme její metodu OnPaint svou vlastní implementací. VeĜejnČ pĜístupná vlastnost pro þtení i pro zápis s názvem Check vrací poĜadové þíslo zatrženého pĜepínaþe resp. nastavuje zatržení pĜepínaþe podle poĜadového þísla. Pro procházení kolekce ovládacích prvkĤ na panelu je použito cyklu foreach. GroupPanel nemusí hostovat pouze pĜepínaþe, ale i jiné ovládací prvky, proto je nutno si vždy pĜed pĜetypováním daného ovládacího prvku na typ RadioButton zjistit, jestli to lze provést, což umožĖuje speciální operátor is. Tím zabráníme možnému vzniku výjimky. V pĜípadČ, že není zatržen ani jeden pĜepínaþ, vrací vlastnost Check hodnotu –1.
TĜída Indicator
Jedná se o abstraktní tĜídu, která dČdí od knihovní tĜídy UserControl. Jako abstraktní tĜída nemĤže mít tĜída Indicator žádné instance a slouží tedy pouze pro odvození tĜíd dalších – v našem pĜípadČ od tĜídy Indicator dČdí spoleþné atributy a metody tĜídy AirspeedIndicator, Altimeter, Machmeter a Variometer. V konstruktoru tĜídy Indicator nejprve nastavíme, že ovládací prvek nemá reagovat na jakékoli uživatelské vstupy,
a dále aktivujeme double-buffering pro eliminaci tzv. flickeringu (poblikávání) pĜi pĜekreslování. Nakonec zavoláme implementovanou metodu LoadFonts, která nahraje ze spustitelného EXE souboru truetypové digitální písmo DS-DIGI.TTF použité pro digitální displeje. Jelikož pro nahrání písma ze spustitelného EXE souboru bylo potĜeba použít ukazatele (pointers), bylo nezbytné þást kódu uzavĜít do bloku unsafe, který znaþí neĜízený kód, 53
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
54
a bloky unsafe povolit v C# kompilátoru. Soubor DS-DIGI.TTF byl poté pĜidán do projektu jako vestavČný prostĜedek (embedded resource). Bohužel ani poté se písmo správnČ nenaþítalo, což zpĤsoboval bug Microsoftu, který bylo nutno obejít importováním DLL knihovny gdi32.dll a dodateþným voláním metody AddFontMemResourceEx s pĜíslušnými parametry. Chybové stavy byly opČt ošetĜeny systémem výjimek. Vlastní kreslení je zajištČno tak, že tĜída Indicator pĜekrývá metodu OnPaint své rodiþovské tĜídy UserControl. V metodČ OnPaint nejprve nastavíme anti-aliasing (vyhlazování) jak pro grafiku, tak i pro vykreslovaný text a dále provedeme voláním metody InitializeCoordinates inicializaci souĜadnicového systému pro kreslení. Pomocí
metody TranlateTransform knihovní tĜídy Graphics posuneme souĜadnou soustavu tak, aby bod (0, 0) byl stĜedem grafického plátna, což je pro kreslení indikátorĤ výhodné. Navíc v metodČ InitializeCoordinates docílíme pomocí metody ScaleTransform knihovní tĜídy Graphics zmČny mČĜítka grafického plátna tak, aby indikátory mČly dokonale kruhový tvar a správnou velikost i pĜi rĤzném nastavení monitoru. TĜída Indicator dále obsahuje metodu ShiftOnes, která Ĝeší problém s naþteným digitálním písmem, kdy jedniþka je jinak široká než ostatní þíslice. ěešením je pĜidávat pĜed každou jedniþku mezeru. Souþástí tĜídy Indicator jsou ještČ virtuální metody CreateScale, LabelScale, DrawInnerElements a CreateNeedle, jejichž tČla jsou prázdná a které
slouží pouze pro vynucení si implementace tČchto metod v odvozených tĜídách, jež je musí povinnČ pĜekrýt.
TĜídy AirspeedIndicator, Altimeter, Machmeter a Variometer
NeboĢ všechny tyto tĜídy dČdí spoleþné atributy a metody od abstraktní tĜídy Indicator, je vhodné je popsat spoleþnČ. TĜídy reprezentují jednotlivé indikátory a všechny povinnČ
pĜekrývají virtuální metody CreateScale, LabelScale, DrawInnerElements a CreateNeedle. Navíc ještČ obsahují své vlastní atributy, metody a vlastnosti. Metoda CreateScale má na starosti vytvoĜení stupnice, metoda LabelScale její popsání, DrawInnerElements vykreslení všeho uvnitĜ budíku a CreateNeedle vytvoĜení ruþiþky.
TĜída AirspeedIndicator obsahuje dva atributy s plovoucí Ĝádovou þárkou (typ double) calibratedAirspeedKnot a trueAirspeedKnot a jim pĜíslušející vlastnosti pro
þtení i pro zápis, dále pak metody DisplayCalibratedAirspeed a DisplayTrueAirspeed pro jejich zobrazení na digitálních displejích. TĜída Altimeter obsahuje více atribu-
54
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
55
tĤ, kterým pĜíslušejí stejnojmenné vlastnosti lišící se pouze velikostí prvního písmena svého identifikátoru – výška ve feetech altitudeFeet, výška pro upozornČní alerterAltitudeFeet resp. alerterAltitudeMeter, vztažný tlak h0Static-PressureInHg resp. h0StaticPressureHPa a logické promČnné urþující nastavení jednotek výšky a tlaku. Dále
obsahuje metody pro zobrazení hodnot na digitálních displejích DisplayAlerter, DisplayH0PressureInHg, DisplayH0PressureHPa a Display-Altitude.
Protože indikátor výškomČru vyžaduje použití ještČ jednoho typu digitálního písma, bylo nutno pĜekrýt metodu LoadFonts a nahrát ze spustitelného EXE souboru další truetypové digitální písmo Digiretu.ttf. Soubor písma byl opČt pĜidán do projektu jako vestavČný prostĜedek (embedded resource). Volání metody LoadFonts bázové tĜídy (pĜedka) provedeme využitím klíþového slova base. TĜída Machmeter obsahuje pouze jediný atribut, a to atribut s plovoucí Ĝádovou þárkou (typ double) machNumber, a jemu pĜíslušející vlastnost pro þtení i pro zápis, dále kromČ povinných metod metodu DisplayMachNumber pro zobrazení hodnoty Machova þísla na digitálním displeji. ObdobnČ tĜída Variometer obsahuje rovnČž pouze jeden atribut, a to atribut s plovoucí Ĝádovou þárkou (typ double) verticalSpeedFeetPerMin, a jemu pĜíslušející vlastnost pro þtení i pro zápis, dále kromČ povinných metod metodu DisplayVerticalSpeed pro zobrazení hodnoty vertikální rychlosti na digitálním displeji.
Pro vykreslení indikátorĤ bylo použito grafických primitiv knihovny GDI+.
TĜída IndicatorsHandler
Tato tĜída slouží k obsluze jednotlivých indikátorĤ. Jejími atributy jsou mj. jednotlivé indikátory, dále dva objekty typu ToolStripStatusLabel pĜedstavující informace zobrazované dole na stavovém Ĝádku hlavního okna aplikace, dvČ pole hodnot dynamického a statického tlaku pro simulaci a dva þasovaþe, jež jsou inicializovány v konstruktoru. Testováním bylo zjištČno, že doba pro pĜeþtení jedné hodnoty z tlakomČru není konstantní, ale pohybuje se v rozmezí 90 až 400 ms. Doba pro pĜeþtení první hodnoty po otevĜení sezení je vždy ještČ vyšší, a to cca 900 ms. Tuto skuteþnost bylo nutno vzít pĜi implementaci tĜídy IndicatorsHandler v potaz. Jako první þasovaþ byl použit þasovaþ ze jmenného prostoru System.Timers, který se vyznaþuje zvýšenou pĜesností a dokumentací .NET Frameworku je oznaþován jako „server-based timer“. Tento þasovaþ byl použit pro pravidelné þtení hodnot statického 55
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
56
a dynamického tlaku z pĜístroje a výpoþty požadovaných aerometrických veliþin. Jeho interval byl nastaven na 1 s. K obsluze tohoto þasovaþe byla pĜihlášena metoda TimerOnElapsed.
Jako druhý þasovaþ byl zvolen þasovaþ ze jmenného prostoru System.Windows.Forms, u nČhož dokumentace .NET Frameworku uvádí pĜesnost až 55 ms, ale testová-
ním byla zjištČna pĜesnost vyšší, a to cca 10 ms. Tento þasovaþ byl použit pro aktualizaci indikátorĤ s ohledem na Ĝešení dynamiky ruþiþky, neboĢ tady na pĜesnosti tolik nezáleží. Jeho interval byl nastaven na 20 ms, což je 50 snímkĤ za sekundu, aby byl pohyb ruþiþky plynulý. K obsluze tohoto þasovaþe byla pĜihlášena metoda TimerOnTick. Rozdíl mezi zmínČnými dvČma þasovaþi je kromČ pĜesnosti také ten, že þasovaþ System.Timers.Timer volá svĤj handler na pracovním vláknČ aplikace získaném z fondu vlá-
ken
(volný
pĜeklad
termínu
„Thread
Pool“),
zatímco
þasovaþ
System.Win-
dows.Forms.Timer volá svĤj þasovaþ na vláknČ uživatelského rozhraní aplikace. Proto
þasovaþ Windows.Forms.Timer nevyvolá pĜi zatížení vlákna uživatelského rozhraní aplikace vĤbec žádnou událost. Pro dosažení ještČ vyšší pĜesnosti þasovaþe je možné využít knihovní tĜídy Stopwatch ze jmenného prostoru System.Diagnostics, která pro mČĜení
þasu volá pĜesný QueryPerformanceTimer. Oba þasovaþe se spustí zavoláním veĜejné metody Start. Pro ošetĜení chybových stavĤ (napĜ. selhání komunikace s pĜístrojem, veliþiny mimo povolený rozsah) byl opČt použit systém výjimek. Metoda VariometerDeactivate slouží k doþasné deaktivaci variometru, kterou je nutno provést pĜi každém otevĜení nového sezení a pĜi každém opČtovném uvedení variometru do þinnosti. V dĤsledku nesprávné pĜedchozí hodnoty výšky by totiž mohlo dojít k pĜekroþení maximálního povoleného rozsahu variometru.
TĜída Computation
Jedná o statickou tĜídu, která zahrnuje všechny potĜebné konstanty a výpoþetní metody. Do programu vložené konstanty jsou konkrétnČ tyto: Termodynamická teplota v nulové výšce MSA T0 = 288,15 K , souþinitel teplotní závilosti pro výšky od 0 do 11 km τ = −0,0065 , upravená plynová konstanta pro vzduch R = 29,27127 m ⋅ K −1 , mČrná plynová konstanta vzduchu
Rm = R ⋅ g = 287,05287 J ⋅
⋅ K −1 ⋅ mol −1 , termodynamická teplota ve výšce 11 km MSA T11000 = 216,65 K , souþinitel
56
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
57
teplotní závislosti pro výšky od 20 do 32 km τ ′ = 0,001 , statický tlak v nulové výšce MSA p0 = 29,921 in Hg , Poissonova konstanta vzduchu κ = 1,4 , pĜevodní konstanty mezi m/s
a km/h, mezi kt a km/h, mezi ft a m a mezi in Hg a hPa. Všechny tyto konstanty byly definovány jako atributy tĜídy Computation, neboĢ jsou používány ve vícero metodách. V metodČ ComputeCalibratedAirspeedKnot se navíc nacházejí další dvČ konstanty, a to statický
tlak v nulové výšce MSA v Pa p0 = 101325 Pa a hustota vzduchu v nulové výšce MSA
ρ 0 = 1,225 kg ⋅ m −3 . Implementované vztahy v jednotlivých statických metodách tĜídy Computation jsou tyto: a) v ComputeAltitudeMeter vztahy (2.1.13), (2.1.14), (2.1.16), (2.1.17) a (2.1.18), b) v ComputeCalibratedAirspeedKnot vztah (2.2.10), c) v ComputeMachNumber vztah (2.3.4), d) v ComputeTrueAirspeed se skuteþná (pravá) vzdušná výška poþítá ze vztahu vTAS = M ⋅ a = M ⋅ κ ⋅ Rm ⋅ TH = M ⋅ κ ⋅ Rm ⋅ (T0 + τ ⋅ H ) ,
(3.1.1)
tj. využívá se již vypoþtené hodnoty Machova þísla a teplota se vypoþítá ze známé hodnoty absolutní výšky, e) v ComputeVerticalSpeedFeetPerMin se vertikální rychlost poþítá podle definice (2.4.1), pĜiþemž spojitá derivace byla nahrazena diferencí. Algoritmus výpoþtu výšky v metodČ ComputeAltitudeMeter je následující: R⋅τ º T0 ª§ p (0) · H = ⋅ «¨¨ ¸¸ − 1» τ «¬© p (H ) ¹ »¼
[m]
if(H > 11000) then: 1
T0 § · R ⋅τ ¸¸ p (11000 ) = p (0 ) ⋅ ¨¨ © T (11000 ) ¹
H = R ⋅ T (11000 ) ⋅ ln
p (11000 ) + 11000 p (H )
[m]
if(H > 20000) then:
p (20000 ) = p (11000 ) ⋅ e 57
−9000 R ⋅T (11000 )
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ Rτ ′ º T (11000 ) ª§ p (20000 ) · ¸¸ − 1» ⋅ «¨¨ H= τ′ «¬© p (H ) ¹ »¼
58
[m]
if(H > 32000) then: [hlášení o pĜekroþení rozsahu] end if end if end if else if(H > –609) then: [hlášení o pĜekroþení rozsahu] end if
KromČ statických metod pro výpoþty aerometrických veliþin obsahuje tĜída Computation ještČ statické pĜevodní metody mezi jednotkami a statickou metodu ExponentialSmootherFunction, která realizuje exponenciální vyhlazovaþ pro Ĝešení dynamiky ruþiþky.
Následující poloha ruþiþky se vždy vypoþte podle vztahu: x n +1 = α ⋅ u + (1 − α ) ⋅ xn ,
(3.1.2)
kde α je vyhlazovací þinitel, u je požadovaná cílová poloha a xn je souþasná poloha ruþiþky.
TĜída SelectResource
Tato tĜída dČdí od knihovní tĜídy Windows.Forms.Form a pĜedstavuje dialogové okno pro nastavení komunikace se systémem DPI-145. Jejími atributy jsou objekt typu ListBox reprezentující seznam položek, objekt typu TextBox reprezentující textové políþko a dva objekty typu NumericUpDown reprezentující políþka pro výbČr þísla z rozsahu. Inicializace formuláĜe a vytvoĜení jeho ovládacích prvkĤ probíhá v jeho konstruktoru. Vlastnosti formulá-
Ĝe jsou nastaveny podobnČ jako u dialogového okna SettingsDialog. Pro rozmístČní jednotlivých ovládacích prvkĤ je opČt použito dynamického rozvržení. Požadováno bylo, aby se objekt typu ListBox pĜi naþtení dialogového okna naplnil identifikaþními ĜetČzci všech na poþítaþi dostupných zdrojĤ. ěešením je pĜihlásit se k odbČru formuláĜové události Load a v handleru události zavolat k tomu urþenou metodu objektu tĜídy ResourceManager z knihovny NationalInstruments.VisaNS s pĜíslušným parame-
trem a naplnit seznam výsledky. Souþástí tĜídy SelectResource jsou dále dva handlery pro 58
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
59
práci se seznamem – jeden slouží k obsluze události dvojkliku na položku seznamu a druhý k obsluze pouze jednoho kliknutí. Oba handlery mají témČĜ shodnou implementaci, a sice nastaví textové políþko na vybraný identifikaþní ĜetČzec ze seznamu, handler události dvojkliku navíc dialogové okno zavĜe, jako by uživatel kliknul na OK. Souþástí tĜídy je nakonec vlastnost pro þtení i pro zápis s názvem VisaResourceName, která pĜeþte resp. nastaví identifikaþní ĜetČzec zdroje uvnitĜ textového políþka, a vlastnosti pro
þtení i pro zápis s názvy DynamicPressureChannel a HStaticPressureChannel, které pĜeþtou resp. nastaví políþka pro výbČr þísla z rozsahu reprezentující þíslo kanálu pro þtení dynamického resp. statického tlaku.
TĜída Measurement
Jedná se o statickou tĜídu, která zahrnuje všechny metody potĜebné pro komunikaci se systémem DPI-145. K otevĜení nového sezení s pĜístrojem slouží metoda OpenMessageBasedSession, která pĜebírá jako argument identifikaþní ĜetČzec zdroje. Vlastnost Timeout
objektu tĜídy MessageBasedSession z knihovny NationalInstruments.VisaNS urþuje maximální dobu þekání pro uskuteþnČní komunikace s pĜístrojem. Metoda LockResource objektu tĜídy MessageBasedSession zamkne sezení, aby žádný jiný proces nemohl pĜistupovat ke stejnému zdroji. Inicializaci sezení s pĜístrojem má za úkol provést metoda InitializeMessageBasedSession, která pĜebírá dva argumenty, a to þíslo kanálu pro þtení dynamického tlaku
a þíslo kanálu pro þtení statického tlaku. Nejprve pĜístroji zašleme SCPI pĜíkazy pro nastavení jednotek tlaku na tČchto dvou kanálech na in Hg a poté odmČĜíme zkušební hodnoty. Pokud je nČkterá z tČchto hodnot nulová, pak zĜejmČ daný kanál žádným senzorem tlaku nedisponuje a vyhodíme výjimku. Metody MeasureDynamicPressureInHg a MeasureHStaticPressureInHg provedou odmČry dynamického resp. statického tlaku. Metoda CloseMessageBasedSession ukonþí sezení s pĜístrojem a voláním metody UnlockResource uþiní pĜíslušný zdroj opČt pĜístupný i ostatním procesĤm.
59
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
60
TĜída AboutDialog
Tato tĜída dČdí od knihovní tĜídy Windows.Forms.Form a pĜedstavuje dialogové okno o programu. TĜída nedisponuje žádnými atributy. Inicializace formuláĜe a vytvoĜení jeho obsahu probíhá v jeho konstruktoru. Pro zjištČní informací o sestavení (assembly) je s výhodou použito mechanismu reflexe. Informace o sestavení jsou definovány v souboru AssemblyInfo.cs v podadresáĜi Properties projektu v Microsoft Visual Studiu 2005. Slovo assembly, za nímž následuje
dvojteþka Ĝíká, že následující atribut platí pro sestavení. Asi nejdĤležitČjším z uvedených atributĤ je AssemblyVersion. Verze se zadává jako Ĝada þtyĜ þísel (oznaþovaných za hlavní
þíslo verze, podružné þíslo verze, þíslo sestavení a þíslo revize) oddČlených teþkami. Použije-li se místo þísla sestavení a revize hvČzdiþka, kompilátor C# pĜiĜadí položce þísla sestavení poþet dnĤ od 1. ledna 2000 a hodnotČ revize pak pĜiĜadí polovinu poþtu sekund od pĤlnoci. Tím je zaruþeno, že každé sestavení obdrží vyšší þíslo.
60
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
61
3.2. Uživatelská dokumentace 3.2.1. ZprovoznČní programu Jelikož se oþekává, že program budou používat techniþtí pracovníci (inženýĜi) event. studenti, nebyl vytvoĜen žádný instalátor, který by jinak ménČ zkušenému uživateli usnadnil zprovoznČní programu na poþítaþi. Aplikace je místo toho distribuována formou XCOPY deployment, tj. v pĜípadČ splnČní všech požadavkĤ pro bČh staþí pouze pĜekopírovat spustitelný EXE soubor na disk a spustit. Pro bČh v mČĜicím režimu je vyžadováno mít na poþítaþi nainstalovaný NI-VISA driver, který se musí vzhledem k licenci vždy instalovat zvlášĢ a nelze ho distribuovat s aplikací. Ovladaþ je zdarma ke stažení ze stránek spoleþnosti National Instruments, a to pro použití s jejími produkty. Pro uživatele a nikoliv vývojáĜe je vhodné stáhnout a nainstalovat pouze bČhové prostĜedí NI-VISA Runtime Engine. Pro starší verze operaþního systému Windows (Microsoft Windows XP a starší) bude dále nejspíš potĜeba doinstalovat bČhové prostĜedí .NET Framework verze 2.0, pĜiþemž je možno použít i verzi vyšší, neboĢ ta je vždy s verzí 2.0 zpČtnČ kompatibilní. NejnovČjší verze .NET Frameworku je k dispozici pĜes službu Microsoft Update, stejnČ tak je možné stáhnout si jeho instalátor z webového sídla spoleþnosti Microsoft. Operaþní systém Microsoft Windows Vista bČhové prostĜedí .NET Framework již obsahuje, a to ve verzi 3.0.
3.2.2. PĜíprava systému DPI-145 pro komunikaci s PC Zdroje celkového a statického tlaku vzduchu pĜivedeme na vstupy námi zvolených pĜevodníkĤ tlaku. PĜi testování v laboratoĜi byl konkrétnČ použit diferenþní senzor tlaku na 1. kanálu pro mČĜení pĜetlaku a absolutní senzor tlaku na 5. kanálu pro mČĜení podtlaku. Vedoucím práce, panem Doc. Ing. Karlem Draxlerem, CSc., jsem byl ujištČn, že systém je ve standardním provedení z výroby, z þehož vyplývá, že prvnČ jmenovaný senzor by mČl být pĜevodník PDCR900 od spoleþnosti Druck Ltd. s rozsahem od 350 mb do 350000 mb a druhý senzor pak pĜevodník RPT100 rovnČž od spoleþnosti Druck Ltd. s rozsahem od 800 mb do 1050 mb. Systém pro mČĜení tlaku DPI-145 je možné pĜipojit k poþítaþi pĜes rozhraní RS-232 nebo GPIB. V pĜípadČ, že poþítaþ není vybaven ani rozhraním RS-232, ani kartou rozhraní GPIB, lze ještČ pĜipojení realizovat napĜ. pĜes konvertor USB/GPIB, jakým je napĜ. Agilent 61
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
62
82357A na obr. 3.2.1, jež byl také použit pĜi testování v laboratoĜi. Pro zprovoznČní tohoto konvertoru doporuþuji postupovat podle instalaþní pĜíruþky od výrobce. Po nainstalování obslužného softwaru se konvertor zapojí podle ilustraþního obr. 3.2.2. Protože rozhraní USB je typu plug&play, dojde automaticky k rozpoznání a nakonfigurování novČ pĜipojeného zaĜízení. Konvertor signalizuje svĤj stav tĜemi kontrolními diodami, jejichž význam ukazuje obr. 3.2.3. Pro komunikaci pĜes sériové rozhraní RS-232 musí mít propojovací kabel konektor s 9 kontakty, pĜiþemž propojení výstupních a vstupních signálĤ by mČlo odpovídat obr. 2.6.5 (null modem cable) v kapitole vČnované popisu systému pro mČĜení tlaku DPI-145.
obr. 3.2.1 – USB/GPIB konvertor Agilent 82357A
obr. 3.2.2. – Ukázka zapojení USB/GPIB konvertoru Agilent 82357A pouze k jednomu pĜístoji
62
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
63
obr. 3.2.3 – Význam kontrolek u USB/GPIB konvertoru Agilent 82357A
PĜed uskuteþnČním spojení systému DPI-145 s PC je nutno napĜed zkontrolovat nČkterá nastavení v tomto systému. Do menu pro nastavení komunikace se dostaneme tak, že zmáþkneme tlaþítko SET-UP na panelu pĜístroje, poté tlaþítkem SCROLL zobrazíme další þást Set-up menu a zvolíme tlaþítkem F1 volbu Comms. OpČtovným zmáþknutím tlaþítka F1 se ocitneme v menu nastavení RS-232. Pro správnou komunikaci pĜes rozhraní RS-232 by zobrazené parametry mČly odpovídat výchozímu nastavení použité knihovny VISA: 9600 BAUD RATE, PARITY NONE, HANDSHAKING NONE. Zmáþknutím tlaþítka F4 se ještČ ujistíme, že je vypnuta volba SCPI echo. K výstupu z menu slouží tlaþítko EXIT na panelu pĜístroje. GPIB adresu pĜístroje máme možnost zmČnit, pokud v menu nastavení komunikace zvolíme tlaþítkem F2 volbu IEEE. Na numerické klávesnici pak zadáme novou GPIB adresu, která musí být v rozsahu 1 až 30, a potvrdíme ji tlaþítkem ENTER.
3.2.3. Popis uživatelského rozhraní aplikace Po spuštČní aplikace se automaticky zobrazí dialogové okno pro nastavení režimu jejího bČhu, které mĤžeme vidČt na obr. 3.2.4. Je možné volit mezi tČmito režimy: a) mČĜicí mód, b) demo mód, c) testovací mód. V mČĜicím módu þte program hodnoty dynamického a statického tlaku vzduchu ze systému DPI-145 a vypoþítává z nich pĜíslušné aerometrické veliþiny, které pak zobrazuje na jednotlivých ukazatelích – rychlomČru, výškomČru, machmetru a variometru. Demo mód slouží pouze pro simulaci bez pĜipojeného systému pro mČĜení tlaku DPI-145. Testovací mód umožĖuje ruþnČ zadávat hodnoty dynamického a statického
63
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
64
tlaku vzduchu a otestovat tak, jestli program správnČ poþítá hodnoty kalibrované a skuteþné (pravé) vzdušné rychlosti letu, výšky letu a Machova þísla.
obr. 3.2.4 – Dialogové okno pro volbu režimu bČhu
Po navolení mČĜicího módu ve výše zmínČném dialogovém oknČ a potvrzení nastavení kliknutím na tlaþítko OK se objeví další dialogové okno ukázané na obr. 3.2.5, tentokráte pro nastavení komunikace se systémem DPI-145. Pro nastavení komunikace s mČĜicím pĜístrojem musíme znát identifikaþní ĜetČzec zdroje. NapĜ. ASRL1::INSTR znaþí pĜístroj na 1. sériovém portu poþítaþe a GPIB0::13::INSTR znaþí pĜístroj s adresou 13 pĜipojený pĜes rozhraní GPIB. ImplicitnČ je pĜedvolen identifikaþní ĜetČzec zdroje ASRL1::INSTR, který mĤžeme na jiný požadovaný ĜetČzec pĜepsat nebo mĤžeme zvolit ĜetČzec ze seznamu všech na poþítaþi dostupných zdrojĤ. Nakonec máme možnost v dialogovém oknČ navolit kanál pro þtení dynamického tlaku vzduchu a kanál pro þtení statického tlaku vzduchu. ImplicitnČ je pĜedvolen kanál þíslo 1 pro þtení dynamického tlaku a kanál þíslo 5 pro þtení statického tlaku vzduchu. Nastavení komunikace potvrdíme kliknutím na tlaþítko OK, þímž by mČlo dojít k navázání spojení s mČĜicím pĜístrojem. Pokud navázání spojení selže, je vhodné postupovat následovnČ: 1. zkontrolovat zapojení konektorĤ, 2. zkontrolovat všechna nastavení jak na PC, tak i v systému DPI-145, 3. v pĜípadČ komunikace pĜes sériové rozhraní RS-232 zkontrolovat použitý propojovací kabel (null modem cable), 4. v pĜípadČ použití USB/GPIB konvertoru zkontrolovat jeho funkþnost.
64
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
65
obr. 3.2.5 – Dialogové okno pro nastavení komunikace se systémem DPI-145 – vlevo výchozí nastavení, vpravo výbČr identifikaþního ĜetČzce ze seznamu všech na poþítaþi dostupných zdrojĤ
Hlavní okno programu je možné vidČt na obr. 3.2.6. KromČ jednotlivých indikátorĤ jsou souþástí okna ovládací prvky pro nastavení výšky pro upozornČní, nastavení vztažného tlaku, pro pĜepínání mezi jednotkami výšky (ft a m) a tlaku (in Hg a hPa = mb). V testovacím módu navíc ještČ ovládací prvky pro ruþní zadávání dynamického a statického tlaku. Aktuální hodnoty dynamického a statického tlaku se zobrazují dole na stavovém Ĝádku hlavního okna programu. Rozsah implementovaného rychlomČru je 0 až 600 kt. Silná ruþka ukazuje kalibrovanou vzdušnou rychlost a slabá ruþka ukazuje skuteþnou (pravou) vzdušnou rychlost. Rozsah implementovaného výškomČru je –2 000 až 104 992 ft, resp. –1 000 až 32 000 m. PĜi 99 999 ft dochází k automatickému pĜepnutí údaje na metry. Nastavení vztažného tlaku je možné v následujících rozsazích: 28,1 až 31 in Hg resp. 945 až 1 050 hPa (= mb). V pĜípadČ dosažení výšky, odpovídající nastavení výšky pro upozornČní ± 20 ft , indikuje program tuto skuteþnost oranžovým podsvícením displeje nastavení výšky pro upozornČní. Rozsah implementovaného machmetru je 0 až 1 Mach. Rozsah implementovaného variometru je až 6 000 ft/min pro stoupání resp. klesání. Všechny implementované ukazatele jsou vybaveny digitálními displeji pro pĜesné odeþítání hodnot aerometrických veliþin. Aplikace dále disponuje možností vypínat/zapínat jednotlivé ukazatele prostĜednictvím menu „View“, þímž je ji možno pĜizpĤsobit aktuálním požadavkĤm.
65
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
obr. 3.2.6 – Snímek hlavního okna implementovaného programu Air Data System
66
66
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
67
4. ZÁVċREýNÉ ZHODNOCENÍ V práci se podaĜilo úspČšnČ splnit zadaný úkol, kterým byl návrh a realizace zobrazení barometrické výšky letu, kalibrované a skuteþné (pravé) vzdušné rychlosti letu, vertikální rychlosti a Machova þísla, pĜiþemž zobrazení vČrnČ odpovídá souþasným ukazatelĤm aerometrických veliþin na letadle. Byl vyĜešen problém týkající se dynamiky ruþiþky, a to použitím exponenciálního vyhlazovaþe, takže ruþiþka se již pohybuje plynule, ale na úkor toho je nepatrnČ zpoždČná. Na nČkolika pĜípadech bylo zkontrolováno, že se vypoþtené hodnoty aerometrických veliþin pĜi zadaných hodnotách dynamického a statického tlaku pĜesnČ shodují s tabulkovými (hodnoty tlakĤ byly zadávány s pĜesností na tĜi desetinná místa a odpovídající hodnoty aerometrických veliþin byly odeþítány v podobČ, jak se zobrazují na digitálních displejích). PĜi užití programu pro kalibraci aerometrických pĜístrojĤ tak není tĜeba poþítat s nejistotou výpoþtu, neboĢ ta je více jak 100x menší než nejistota mČĜení dynamického a statického tlaku systémem DPI-145. Jediný problém nastal pĜi implementaci ukazatele vertikální rychlosti, jehož pĜíþinnou se ukázal být systém pro mČĜení tlaku DPI-145. OdmČry na jednotlivých kanálech totiž nejsou u tohoto systému obsluhovány pĜes pĜerušení þasovaþe pevného hodinového kmitoþtu, z þehož pak vyplývá nemožnost pĜesného zjištČní þasového intervalu mezi dvČma po sobČ následujícími vzorky. V dĤsledku toho logicky nelze správnČ spoþítat hodnotu vertikální rychlosti na základČ jejího definiþního vztahu (2.4.1). Byl proveden pokus o nalezení alternativního Ĝešení, které však nebylo pĜíliš uspokojivé. Hodil by se dĤkladnČjší popis systému jak po stránce hardwarové, tak i softwarové, ovšem ten pochopitelnČ výrobce neposkytuje. Co by pravdČpodobnČ mohlo zmínČný nedostatek odstranit, je dokoupení softwarového klíþe pro zprovoznČní leteckého módu, v kterém je systém schopen pĜímo mČĜit jednotlivé aerometrické veliþiny, mezi nimi i vertikální rychlost. Systém k tomu využívá speciálního filtru, který je jinak v bČžném režimu nedostupný. Co se týþe zhodnocení volby programovacího jazyka C# a platformy .NET, tato volba se ukázala býti vhodnou. Jazyk C# a platforma .NET nabízí pĜedevším moderní objektovČ-orientovaný pĜístup programování, jednoduchou tvorbu grafického uživatelského rozhraní aplikace díky knihovnČ tĜíd Windows Forms, jednoduchou práci s grafikou díky grafické knihovnČ GDI+, automatickou správu pamČti, velké množství dokumentace a zázemí velké softwarové spoleþnosti Microsoft. Nevýhodou programĤ psaných pro platformu .NET je snad jen vČtší velikost výsledného binárního souboru a o nČco pomalejší bČh oproti þistČ kompilovaným jazykĤm. V praxi je však rychlost bČhu þasto srovnatelná. 67
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
68
5. POUŽITÉ PODKLADY [1]
DRAXLER, K.: PĜístrojové systémy letadel II. Praha: Vydavatelství ýVUT, 2002.
[2]
DENDIS, D.: Letecké pĜístroje I. Bratislava: Vydavatelství Alfa, 1989.
[3]
KRCHNIAK, J.: Lietadlové palubné prístroje. Bratislava: Vydavatelství Alfa, 1988.
[4]
Katalogy firem vyrábČjících letecké pĜístroje.
[5]
Technická dokumentace systému pro mČĜení tlaku vzduchu DPI-145.
[6]
RIPKA, P., ĆAĆO, S., KREIDL, M., NOVÁK, J.: Senzory a pĜevodníky. Praha: Vydavatelství ýVUT, 2005.
[7]
HAASZ, V., ROZTOýIL, J., NOVÁK, J.: ýíslicové mČĜicí systémy. Praha: Vydavatelství ýVUT, 2000.
[8]
VEDRAL, J., FISCHER, J.: Elektronické obvody pro mČĜicí techniku. Praha: Vydavatelství ýVUT, 2004.
[9]
Microsoft Windows XP Professional.
[10] Microsoft Visual Studio 2005 Professional. [11] MSDN dokumentace. [12] PUŠ, P.: Poznáváme C# a Microsoft .NET. Online seriál na ŽivČ.cz. [13] KOVÁě, D.: Programování se zamČĜením na .NET a jazyk C#. Online ¢http://projektysipvz.gytool.cz/ProjektySIPVZ/Default.aspx?uid=1². [14] PETZOLD, CH.: Programování Microsoft Windows Forms v jazyce C#. Brno: Vydavatelství Computer Press, 2006. [15] PETZOLD, CH.: Programming Microsoft Windows with C#. Redmond: Vydavatelství Microsoft Press, 2001. [16] ROBINSON, S. A KOL.: C# Programujeme profesionálnČ. Brno: Vydavatelství Computer Press, 2003. [17] RICHTER, J.: .NET Framework – programování aplikací. Praha: Vydavatelství Grada Publishing, 2003. [18] SHARP, J.: Microsoft Visual C# krok za krokem. Brno: Vydavatelství Computer Press, 2006.
68
Zobrazení údajĤ letadlových aerometrických pĜístrojĤ
69
[19] ŠUSTA, R.: PĜednáškové slidy a materiály k pĜedmČtu X35PJR (z roþníku 2006/2007). Aktuální roþník online ¢http://dce.felk.cvut.cz/pjr/². [20] NI-VISA 4.4.1. [21] NI-VISA User Manual. [22] NI-VISA Programmer Reference Manual. [23] C# and Visual Basic .Net Instrument Control Tutorial. Online ¢http://zone.ni.com/devzone/cda/tut/p/id/2739². [24] PĜíklady dodávané spolu s knihovnou NI-VISA. ¢C:\Documents and Settings\All Users\Dokumenty\National Instruments\NI-VISA\Examples². [25] Uživatelská pĜíruþka USB/GPIB konvertoru Agilent 82357A. [26] Microsoft Office 2000 Premium. [27] PDFCreator 0.9.3. [28] Nero 6 OEM Suite.
69
PĜíloha A
1
A. OBSAH PěILOŽENÉHO CD-ROM
\Air Data System – vyhotovený projekt v Microsoft Visual Studiu 2005 \Air Data System.exe – spustitelný program
\Diplomová práce.doc – originál práce psaný v Microsoft Wordu 2000 \Diplomová práce.pdf – soubor Diplomová práce.doc zkonvertovaný do formátu pdf
1