X38PRS Obsah Palubní systémy - Úvod Analogové přístroje Palubní

Transkript

X38PRS Obsah Palubní systémy - Úvod Analogové přístroje Palubní
23.11.2008
Obsah
X38PRS
• Cvičení č.2
1. Úvod do předmětu, analogové a digitální palubní informační systémy a jejich hierarchické struktury
– Založení vašeho vlastního projektu
– Ladění programu v prostředí MS Visual Studio .NET 2003 NET 2003
• Obsah přednášky
– Základní principy psaní zobrazovací aplikace pro displejový přístroj.
– Ukázková prezentace domácí úlohy
Jak na realizaci domácí úlohy
X38PRS – Úvod – Pavel Pačes
Palubní systémy ‐ Úvod
Analogové přístroje
Související předměty
–
–
–
–
–
2
Přístrojové systémy letadel, přednášející: doc. Draxler
Sběrnicové systémy letadel, přednášející: doc. Kocourek
Elektronické systémy, přednášející: dr. Fisher
Konstrukce a pohon letadel, přednášející: doc. Slavík
Programování avionických systémů: dr. Fisher, doc Vedral
• Převod měřené veličiny do formátu, ke kterému se došlo postupným vývojem:
– Mechanický převod – Variometr
– Elektromechanický převod –
ýp
Přístroj zobrazení teploty j
p y
výstupních plynů
– Nevýhody mechanických přístrojů?
• Náročnost výroby
• Špatná reprodukovatelnost
Zdroj: Westach
• Evoluce přístrojového vybavení →
X38PRS – Úvod – Pavel Pačes
3
Palubní systémy – ?
X38PRS – Úvod – Pavel Pačes
4
Mechanické přístroje
• Mechanické převody
X38PRS – Úvod – Pavel Pačes
Zdroj: ??
5
X38PRS – Úvod – Pavel Pačes
Zdroj: wikipedia
6
1
23.11.2008
Palubní systémy – L410
TCAS
- Exrukze na simulátor.
X38PRS – Úvod – Pavel Pačes
Palubní systémy – A320
Zdroj: www.let.cz
7
Kde je budoucnost?
Glass cockpit – definice, EFIS, PFD, ND, EICAS (ECAM), ND, PFD
X38PRS – Úvod – Pavel Pačes
Digitální přístroje ‐ propojení
Zdroj: jetphotos.net
8
Příklad – převodník S/R
Kombinace: Senzor → zobrazovací prvek
• Bod‐Bod: analogové přenosy, proprietální protokoly, RS232, KLN94
• Vysílač‐několik přijímačů: ARINC429, ADC Shadin2000
• Sběrnice: ADFX
X38PRS – Úvod – Pavel Pačes
9
X38PRS – Úvod – Pavel Pačes
Sběrnicí propojený systém
10
Digitální přístroje
• Tři základní zdroje informace (viz. glass
cockpit)
• Redundantní spojení
• Většinou poskládané z modulů
• Snadná reprodukovatelnost
• Možnost automatického testování
• Nevýhody ?
•
•
•
X38PRS – Úvod – Pavel Pačes
11
Problematická certifikace →
Špatná dostupnost kvalifikovaných součástek → (náročné testování, statistika)
V případě, že na certifikaci dosáhnete,
tak se může stát, že se požadované
součástky přestanou vyrábět
(8086, …, AMD29050, … , Tesla (meče?))
X38PRS – Úvod – Pavel Pačes
12
2
23.11.2008
Další přednášky
•
•
•
•
Motto
Požadavky na přístroje: VFR, IFR, normy
Testování SW
Testování HW
…
Všechno je v základu jednoduchý problém. ↔
• Domácí úloha – softwarové vybavení
X38PRS – Úvod – Pavel Pačes
13
X38PRS – Úvod – Pavel Pačes
Počítačový systém
14
Počítačový systém
• Připojení zobrazovacího panelu
CPU
• Data
Paměť
• Propustnost
p
Datové sběrnice • Instrukce programu
• Data z periferií
• Grafika na zobrazovači
Zdroj: www.transintl.com
X38PRS – Úvod – Pavel Pačes
15
X38PRS – Úvod – Pavel Pačes
Grafický HW
Definice: Framebuffer
• Zobrazovací zařízení, které přenáší zobrazovanou informaci z „bufferu“
• Obsahuje číselné informace pro každý zobrazovací bod – pixel
• Různé režimy zakódování barev pixelů
• Uspořádání periférií
–
–
–
–
–
–
• Paměť → framebuffer
X38PRS – Úvod – Pavel Pačes
16
17
jednobitově (monochromatický režim), čtyřbitově s paletou, osmibitově s barevnou paletou, 16‐bitově (highcolor) a 24‐bitově (truecolor)
Alfa kanál
X38PRS – Úvod – Pavel Pačes
18
3
23.11.2008
Framebuffer #2
Paleta
velikost paměti potřebné pro práci framebufferu je závislá na:
• barevné hloubce, • velikosti palety a velikosti palety a
• rozlišení výstupního signálu
Problémy s přechodem mezi jednotlivými systémy
•
•
Soubor ukazatelů na
barevné nastavení pixelu
R(0xFF) G(0xFF) B(0xFF) = (0x00FFFFFF)
R(0xFF) G(0xFF) B(0xFE) = (0x00FFFFFE)
Ztrátové kódování barev ?
BMP – Projekt pohyblivá
mapa
255 (0xFF)
R(0x00) G(0x01) B(0x00) = (0x00000100)
R(0x00) G(0x00) B(0xFF) = (0x000000FF)
0 (0x00)
R(0x00) G(0x00) B(0x01) = (0x00000001)
0 (0x00)
R(0x00) G(0x00) B(0x00) = (0x00000000)
X38PRS – Úvod – Pavel Pačes
19
Optimalizace datové propustnosti
• Části palety je možné přehrávat „za běhu“ systému
• Použití palety umožňuje zrychlení zápisu informací Je možné zapsat i číst 4 byty v
informací. Je možné zapsat i číst 4 byty v jednou operací.
X38PRS – Úvod – Pavel Pačes
20
Virtual LCD – Inicializace palety
void load_pallette( void )
{
VirtScr_PalleteInit( 256 );
for( iCnt = 0; iCnt < 256; iCnt++)
{
ulCol = lcd_color_map[iCnt];
lArr[iCnt] = RGB( ((ulCol>>8)&0x0F)<<4, ((ulCol>>4)&0x0F)<<4, ((ulCol>>0)&0x0F)<<4 );
}
VirtScr_PalleteSet( 0 , 256, lArr );
} // END void load_pallette( void )
→ Paleta je ve virtuálním LCD připravena. Používejte barvy v rozsahu 0 – 255.
X38PRS – Úvod – Pavel Pačes
21
X38PRS – Úvod – Pavel Pačes
SW a HW
Architektura SW • Low level API
• Grafická knihovna
• Uživatelský program
X38PRS – Úvod – Pavel Pačes
22
• Alternativy k virtuálnímu LCD
23
X38PRS – Úvod – Pavel Pačes
24
4
23.11.2008
Architektura SW #2
Reálný systém?
Top level aplikace
• Projekt Vašeho přístroje
• Základní grafická knihovna
Gauge
GR lib./Obecná knihovna
(prvky jako bod, čára, … )
• HW vrstva počítače
HW Layer/OS
(Ovládání periferií, …)
X38PRS – Úvod – Pavel Pačes
25
X38PRS – Úvod – Pavel Pačes
Architektura SW #3
• Top level aplikace
• Projekt Vašeho přístroje
Software VirtualLCD
(top‐level aplikace Vašeho projektu)
Každá SW někde začíná a někde končí. Skládá se tedy z:
• Inicializace (úvod),
• Hlavní prováděcí části (stať) a
l í
ádě í čá i ( ť)
• Ukončení činnosti (uvolnění zdrojů – závěr)
Gauge
• Základní grafická knihovna
Základní grafická knihovna
(prvky jako bod, čára, … , další věci si musíte dopsat)
GR lib.
• Simulace HW počítače
(časově řízené překreslování na obrazovku)
Čtvereček = projekt, některé části si musíte upravit (Gauge, GRLib), přehled funkce, interface, …
X38PRS – Úvod – Pavel Pačes
VirtualSCR/HW layer
• Tyto části najdete všude
Funkce windows ‐ GDI
27
Virtual LCD ‐ API
– Program pro uP, pro OS MS Windows, Linux
X38PRS – Úvod – Pavel Pačes
void GaugeMain( void )
{
static int iState
= 1;
static int iErrorCode = 0;
• void GaugeMain( void )
• void GaugeClose( void )
• void GaugeTimer1ms( void )
Projekt přístroje je nezávislá entita –
Projekt
přístroje je nezávislá entita ale pro umožnění změny IP ale pro umožnění změny IP
poskytuje:
• void ConnectionDetails( char * btAddress, int iSendPort, int iRecvPort )
• Druhé cvičení: Každý projekt a jeho funkce potřebují unikátní jména. Jinak je nepůjde složit! Pravděpodobně to bude něco jako GaugeMain[číslo skupiny][rok – dvě písmena]
X38PRS – Úvod – Pavel Pačes
26
29
28
Inicializace: Statické proměnné
switch( iState ) // State machine
Stavový automat - přechody
{
// ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
default:
case 0: // State machine Error ‐ v případě chyby neděláme nic
break; // END case 0: break;
// N case 0:
// ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
case 1: // State machine init (úvod)
{ // proměnné použité v této části
} break; // END case 1: // State machine init (úvod)
// ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
case 2: // State machine process (stať)
{
// } break; // END case 2: // State machine process (stať)
} // END switch( iState )
} // END void GaugeMain( void )
X38PRS – Úvod – Pavel Pačes
30
5
23.11.2008
// ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
case 1: // State machine init (úvod)
{ // proměnné použité v této části
char btAddress[4]; // komunikacni adresa
load_pallette(); // system pallette init
// Socket connection
btAddress[0] = 127;
btAddress[1] = 0;
btAddress[2] = 0;
btAddress[3] = 1;
Inicializace: Stavový automat
// ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
case 2: // State machine process (stať)
{
// blok příjmu dat z UDP soketu
{
// použité proměnné
int iLength = 100; int iRetVal = 0;
unsigned char btArray[100];
unsigned char chArray[40];
iRetVal = IO_Eth_Receive( chArray, &iLength );
if( iRetVal > 0 )
if( iRetVal 0 )
{
// neco jsme prijali
chArray[2] = 0;
sprintf( btArray, "Value: %s", chArray );
log_insert_int( &mainlog, btArray, 0, 205);
// Send
IO_Eth_Send( chArray, iRetVal );
}
if( IO_Eth_Connect( glb_oConnection.btAddress, glb_oConnection.iSendPort, glb_oConnection.iRecvPort ) < 0 )
{ // v pripade chyby ulzime, ze k chybe doslo
iErrorCode = 1;
// a prejdeme do stavu chyba ( 0 )
iState
= 0;
} else {
// v pripade, ze vse probehlo v poradku, prejdem do stavu // process (stať)
iState
= 2;
}
31
X38PRS – Úvod – Pavel Pačes
Cíl domácí úlohy
• BYTE
(definovaná velikost, definovaný tvar, definované zobrazení a barvy, definované chování, …, vše je definované)
DATA[0] = BYTE
• SHORT
• Odeslat žádost o data a data přijmout
(k
(komunikační kanál je funkční, je definován přenosový formát, …, stačí ik č í k ál j f kč í j d fi á ř
ýf
át
t čí
dosadit)
• Složit přijatou hodnotu, • Vypočítat novou polohu ručičky na přístroji • Překreslit přístroj
33
Komunikační protokol
• INT
DATA[0] = (INT >>0)&0xFF
• FLOAT
DATA[0] = ((char *)&FLOAT)[0]
X38PRS – Úvod – Pavel Pačes
34
• Související problém: Little endian, big endian
btData btData btData btData btData btData btData btData btData btData btData btData
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
ID
[1]
DATA[0] = (SHORT>>0)&0xFF
DATA[0] = (SHORT>>0)&0xFF
Skládání dat do paketu
Víte něco o CANu?
Protokol CanAerospace je třeba přenést paketem typu UDP
Přenosový formát zprávy je definován následovně:
ID
[0]
32
Skládání dat do paketu
• Vykreslit na displeji přístroj X38PRS – Úvod – Pavel Pačes
Pooling, proč?
}
} break; // END case 2: // State machine process (stať)
} break; // END case 1: // State machine init (úvod)
X38PRS – Úvod – Pavel Pačes
Hlavní část programu
ID Length DATA DATA DATA DATA DATA DATA DATA DATA
[2]
[0]
[1]
[2]
[3]
[4]
[5]
[6]
[7]
• Při příjmu hodnoty provádět kontrolu id ifiká
identifikátoru paketu –
k
proč?
č?
Význam jednotlivých položek je následující:
• btData ‐ jsou jednotlivé paměťové pozice v paketu. • ID ‐ je identifikátor zprávy posílaný po sběrnici CAN. • Length ‐ je délka vyplněné datové oblasti DATA, délka zprávy přenášené po sběrnici CAN. • DATA ‐ jsou jednotlivé datové byty. X38PRS – Úvod – Pavel Pačes
35
X38PRS – Úvod – Pavel Pačes
36
6
23.11.2008
Regulátor pohybu ručičky
Funkčnost přístroje
Řešení dynamiky ručičky – proč?
‐ PID regulátor
Několik módů činnosti
Řešit stavovým automatem
SI32 REG_DoPID( SI32 iError, SI32 iPosition)
{
int iRetVal; float fRegP, fRegI, fRegD, fReg, fError;
// Proportional part of the regulation
fRegP = glb_oPID.fGainP*fError;
// Integral part of the regulation
// derivative state
fReg = fRegP + fRegI ‐ fRegD;
Překreslování:
• Smazání celé oblasti
a opětovné překreslení
• Překreslení posledního obrazu
• Překreslení částí podkladu
if (fReg >= cREG_MAX_HIT) fReg = cREG_MAX_HIT;
if (fReg <= cREG_MIN_HIT) fReg = cREG_MIN_HIT;
iRetVal = (int)fReg;
return (iRetVal);
} // END SI32 REG_DoPID( SI32 iError, SI32 iPosition)
X38PRS – Úvod – Pavel Pačes
37
Grafické API – GR_ #1
X38PRS – Úvod – Pavel Pačes
38
Grafické API – GR_ #2
void GR_screen_clear(void)
void GR_circle(int left, int top, int radius, int type, int color1, int color2, int size)
void GR_putBIGpixel(int x, int y, int size, int col1, int col2)
void GR_bold_line(int left, int top, int right, int bottom, int size, int color, int color2)
void GR_rectangle(int left, int top, int right, int bottom, int color1, int color2, int size)
void GR_full_rectangle(int left, int top, int right, int bottom, int color)
id
f ll
l (i l f i
i i h i b
i
l )
void GR_arc(int center_x, int center_y, int radius, int angle1, int angle2, int color1, int color2, char size)
void GR_contour_arc(int center_x, int center_y, int radius, int angle1, int angle2, int width, int color1, int color2, char size)
void GR_solid_arc(int center_x, int center_y, int radius, int angle1, int angle2, int width, int color1, int color2, char size)
X38PRS – Úvod – Pavel Pačes
39
X38PRS – Úvod – Pavel Pačes
40
Grafické API – GR_ #3
Grafické API – GR_ #4
int GR_getStrLen( unsigned char fontType, char *text)
int GR_getFontYsize( unsigned char fontType )
void GR_outtextxy8x8(int x, int y, int color, char *textstring)
void GR_outval8x16(int x, int y, int color, char *textstring)
// 16x24
void GR_outFont(int x, int y, unsigned char fontType, unsigned char fontFlags, int color, int back_color, char *textstring)
void GR_delDigit8x16(int x, int y, int barva)
void GR_draw_bitmap( tBITMAP *b, int left, int top, unsigned char color, unsigned char bg_color )
void GR_draw_part_of_bitmap( tBITMAP *b, int left, int top, int x1, int y1, int x2, int y2, unsigned char flags, unsigned char color, unsigned char bg_color)
X38PRS – Úvod – Pavel Pačes
X38PRS – Úvod – Pavel Pačes
41
42
7
23.11.2008
Polohování přístroje na ploše
V případě vývoje na reálném HW
• BOD [0, 0]
• Problémy
Direktivy preprocesoru
• #define cORIGIN_X 320
• #define cORIGIN_Y 240
X38PRS – Úvod – Pavel Pačes
43
X38PRS – Úvod – Pavel Pačes
44
Závěr? :‐) Začátek
• Druhé cvičení – Projekt
– Ladění
L dě í
– Kompilace
– Ukázky
• Rychloměr
X38PRS – Úvod – Pavel Pačes
45
8

Podobné dokumenty

ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE

ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE doplněn modul pro psychrometrické měření relativní vlhkosti vzduchu. Také obsahuje přehled několika profesionálních zařízení vhodných pro tyto aplikace. Shrnuje požadavky kladené na smart senzory r...

Více

informace pro uživatele software Esri a ENVI

informace pro uživatele software Esri a ENVI o samostatné soubory, nebo o celé systémy správy dokumentů, 5. propojení prostorové informace s ekonomickými informacemi – v kontextu zájmového území tak můžeme sledovat plánované investice nebo pr...

Více

Sborník - orion - Masarykova univerzita

Sborník - orion - Masarykova univerzita PŘEDEŠLÁ PRACOVNÍ SETKÁNÍ BIOCHEMIKŮ A MOLEKULÁRNÍCH BIOLOGŮ V BRNĚ 14. července 1997 ; 21. ledna 1998; 3. února 1999; 9. února 2000; 14. února 2001; 7. února 2002; 29. ledna 2003, 3. – 4. února 2004

Více

Uživatelský manuál Frekvenční měniče DF6 a DV6

Uživatelský manuál Frekvenční měniče DF6 a DV6 Všechny míry jsou v milimetrech, není -li uvedeno jinak. Na některých ilustracích může být za účelem zlepšení přehlednosti vynechán kryt frekvenčního měniče a jiné součásti ovlivňující bezpečnost z...

Více

Sborník - orion - Masarykova univerzita

Sborník - orion - Masarykova univerzita jednokopiová inzerce (lokus 2). V rostlině HeLo1 je transgen uspořádán jako obrácená repetice (lokus 1) a je umlčen na posttranskripční úrovni. DNA genu nptII je u této linie metylována na 3´ konci...

Více