X38PRS Obsah Palubní systémy - Úvod Analogové přístroje Palubní
Transkript
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
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...
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...
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
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...
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...