Mérés és adatgyűjtés
Mérőrendszerek programozása
Mingesz Róbert
2015.04.22.
2
Valós idejű rendszerek
3
Valós idejű rendszer
• Megbízhatóan válaszol egy eseményre
• Műveleteket garantált időn belül elvégez
4
Fogalmak
• Ciklusidő / válaszidő
• Jitter (bizonytalanság)
• Determinizmus(konzisztens válasz és válaszidő)
• Determinisztikus feladat(mindig időben kell végezzen)
• Prioritás
Hagyományos OS
• A processzoridő megoszlik a programok között
• Háttérfeladatok megszakíthatják a kritikus programokat• Vírusírtók
• Hálózatkezelés...
• Magas jitter
• Nem determinisztikus
Valós idejű operációs rendszerek
• A magas prioritású feladatok lesznek először végrehajtva
• Magas megbízhatóság
• Általában nincs UI
• Példák:• NI ETS
• Wind River VxWorks
• Valód idejű Linux
7
Programozható eszközök
8
Ember
• Válaszidő: 1-2 s
• Magas jitter
• Konzisztens válasz ?
• Üzemidő: 8/5
• Motiváció → öntanuló, optimalizálás
• Objektumorientált
9
PC
• Válaszidő: ~ 100 ms
• Magas jitter
• Általában konzisztens válasz
• Üzemidő: 24/7, 1-5 éves élettartam
• „Korlátlan” erőforrások
• GUI, felhasználói interfész
• Alacsony ár
• Nagy méret
10
Ipari PC
• Válaszidő: ~ 100 ms
• Üzemidő: 24/7, 5-10 éves élettartam
• Környezeti hatásokkal szemben ellenálló
• „Korlátlan” erőforrások
• GUI, felhasználói interfész
• Magas ár
11
Egylapos PC-k
• Raspberry Pi ?
• BeagleBone
• Ipari egylapos PC-k
• Windows, Linux, Android, ...
• Bő erőforrások(< 1 GHz, RAM < 1 GB, Flash < 32 GB)
• Válaszidő, élettartam ?
• Kis méret, beágyazható
12
Mikrovezérlők
• 8 bit (pl. 8051)
• 32 bit (pl. ARM cortex m4)
• Korlátozott erőforrások• Memória, flash < 128 kB
• Órajel < 100 MHz
• Alacsony fogyasztás (pl. 30 mW, 3 µW alvó mód)
• Válaszidő ~ µs (rendszerfüggő, determinisztikus)
• Alacsony ár, beágyazható
13
DSP (digitális jelprocesszor)
• 16-32 bit
• Jelfeldolgozási feladatokra optimalizálva
• Lebegőpontos számolás, párhuzamos műveletek
• 1 órajeles végrehajtása a műveleteknek
• 400 MHz
• 2,4 GFLOPS (1 mag)
• 1,43 W
14
FPGA (field-programmable gate array)
• Programozható logikai eszköz(20-200 ezer cella, 1 Mbit memória, < 500 MHz)
• Párhuzamos végrehajtás
• Magas megbízhatóság
• Válaszidő < 100 ns(determinisztikus)
• VHDL
• Kisebb rokonok: CPLD, PAL
15
PLC (Programozható logikai vezérlő)
• Szabványosított be és kimenetek (ipari)
• Moduláris felépítés
• Válaszidő: 10-100 ms (determinisztikus)
• Magas megbízhatóság, 10-20 éves élettartam
16
cRIO
• Változatos I/O opciók
• Válaszidő < 1µ, determinisztikus
• Jelentős mennyiségű erőforrás(< 1,3 GHz, RAM < 2 GB, Flash < 32 GB, FPGA)
17
Mobiltelefon, Tablet
• Elsősorban mérési eredmények megjelenítése, mérések felügyelete
• Kevés alkalmazás, sok lehetőség
18
Számábrázolás
19
Számábrázolások
• Egész számok• Előjeles / előjel nélküli
• 8 / 16 / 32 / 64 (/ 12 / 14 / 24 / N ) bit
• Lebegőpontos számok• single / double / extended
• Fixpontos számok• A bináris pont (randix point ~ tizedes pont) egy
előre meghatározott helyi értéken van
• Számolás hasonló az egész számokhoz
20
Fixpontos számok konfigurálása
21
Számolási idő 8 bit-es mikrovezérlőn*
8 bit
egész
16 bit
egész
32 bit
egész
32 bit
lebegőpontos
Összeadás 7 13 25 293
Szorzás 12 67 185 308
Osztás 33 601 1105 1580
Modulo
képzés
34 314 492 nem
támogatott
*C8051 F410, órajel ciklusban, egy adott számkombinációra
22
Programozási nyelvek és környezetek
23
Assembly
• A hardver összes képessége kihasználható
• Maximális hatékonyság
• Magas tudást igényel
• Hosszú fejlesztési idő
• Felhasználás: mikrovezérlők optimalizált rutinjai
24
C
• Általános célú programozási nyelv
• A legtöbb eszköz programozható segítségével
• Alacsony szintű hatékony kód készíthető
• Eszköztől függő variációk és képességek
25
C#
• Elsősorban PC program
• Platformfüggő
• Korlátozott eszközhasználat, analíziskönyvtár
26
JAVA
• PC, beágyazott rendszerek, mobil eszközök
• Platform független
• Korlátozott eszközhasználat, analíziskönyvtár
27
JavaScript, PHP
• Webes interfészek készítése
28
Matlab
• Cél: numerikus számítások elvégzése
• Vezérlési feladatok (pl. PID szabályozás)
• Eszközvezérlés
29
Simulink
• Adatvezérelt grafikus programozás
• Modellezés, szimuláció
• Valós eszközök vezérlése
• C kódgenerálás
30
A LabVIEW fejlesztőkörnyezet
31
Példa GUI
32
Példa kód
33
A LabVIEW környezet
• Fejlesztő: National Instrumentshttp://www.ni.com/labview/
• Oktatóanyagokhttp://www.ni.com/gettingstarted/labviewbasics/ http://zone.ni.com/wv/app/doc/p/id/wv-3220 http://zone.ni.com/wv/app/doc/p/id/wv-3221
Miért LabVIEW?
• Könnyű megtanulni és használni• Bárki megtanulhatja, nem szükség
programozónak lenni
• Tudósokra és mérnökökre optimalizálva
• Vizuális dizájn, egyszerű vizualizáció
• Gyors fejlesztés• Produktivitás növelése
• Költségek csökkentése
34
Miért pont a LabVIEW?
• Teljes funkcionalitás• Beépített analízis funkciók
• Jelanalízis és matematika
• Számos beépített kommunikációs protokoll
• Többszálú végrehajtás, eseményvezérlés, objektumok, ...
• Számos platform programozható egy nyelven keresztül (PC, beágyazott rendszerek, valós idejű rendszerek, FPGA, mikrovezérlők)
35
Miért pont a LabVIEW?
• Ipari szabvány• Rengeteg kompatibilis hardver
• Tipikus felhasználások• Mérés, adatgyűjtés, adatok elemzése
• Ipari vezérlés
• Egyedi rendszerek, prototípusok fejlesztése
• Komplex tudományos mérőrendszerek vezérlése (Big Physics)
• Oktatás
36
37
Hátrányok
• Nem nyílt szabvány
• Magas ár
• Futtatókörnyezet szükséges a LabVIEW programok végrehajtásához
• Bonyolultabb kódok esetén: oda kell figyelni a karbantarthatóság érdekében
38
Spagetti VI
39
Példák a LabVIEW alkalmazására
40
Elektronika
• Tesztelés• Félvezetők működése
• Audió áramkörök tesztelése
• Videó
• Rádiófrekvenciás áramkörök
• Vezetéknélküli kommunikáció
• Teljesítményelektronikák vezérlése
• http://www.ni.com/solutions/
41
Járműipar
• Gyors prototípusfejlesztés
• Hardware-in-the-Loop
• Vezérlőelektronikák fejlesztése
• Tesztelés• Végső termék tesztelése
• Valós idejű mérések
• http://www.ni.com/solutions/
42
Hadi és repülőgépipar
• Repülés
• Katonai kommunikáció
• Radar
• Űrprogramok
• Automatizált tesztrendszerek
• http://www.ni.com/solutions/
43
SpaceX
44
További területek
• Olajipar
• Fényelemek, szélerőművek
• Egészség• Műszerek tesztelése
• Tudomány
• http://www.ni.com/solutions/
45
Pl. mosógép fejlesztése
• http://sine.ni.com/cs/app/doc/p/id/cs-14447
46
Big Physics - CERN
• Nem megfelelő irányú részecskék elfogása
• 120 valós idejű PXI rendszer
• http://sine.ni.com/cs/app/doc/p/id/cs-10795
47
Big Physics - TOKAMAK
• Valós idejű mérések
• Szabályozás
• http://www.ni.com/white-paper/6436/en
48
Lego
49
A LabVIEW programozás alapjai
50
Kezdőablak
51
Virtual Instrument – VI
52
Projektek
53
Controls palette
• Előlapi elemek
• Numeric input / output
• Boolean: nyomógomb, LED
• String bemenet/ kimenet
• Grafikonok
• …
54
Functions palette
• Block diagram elemei
• Programozási struktúrák
• Tömbműveletek
• Numerikus operátorok
• Boolean, String
• Összehasonlítás…
55
Context help
• A kurzor alatt lévő elem rövid sugúja
• Aktiválás: CTRL+H
56
Tools palette
• Alapbeállítás:automatic tool selection(ajánlott)
Leggyakrabban használt:
• Manipulate
• Select and edit
• Modify text
• Create wire
57
Adattípusok
• Numeric:• Egész, lebegőpontos, komplex, fixpontos
• Boolean
• String and fájl útvonal
• Referencia
• Objektumok
• Tömbök
• Clusterek (struktúrák)
58
Numerikus adattípusok
59
Numerikus típus megváltoztatása
60
Numerikus paletta
61
További funkciók: Mathematics
While Loop
int i = 0;
int stop = 0;
do {
// Some code
i++;
} while (!stop);
62
For Loop
int i;
int N = count;
for (i = 0; i < N; i++) {
// Some Code
}
63
While Loop
int i;
int N = count;
int stop = 0;
for (i = 0 ; i < N; i++) {
//Some code
if (stop) {
break;
}
}
64
Previous iteration: Feedback node
int i;
int N = count;
int x = 0;
for (ind i = 0; i < N; i++) {
x = x + i;
}
65
Similar option: Shift register
int i;
int N = count;
int x = 0;
for (ind i = 0; i < N; i++) {
x = x + i;
}
66
Adatvezérelt programozás
• Párhuzamos végrehajtás
• Egy csomópont akkor hajtódik végre, amikor az összes bemenet a rendelkezésre áll
• A csomópont akkor adja vissza a végeredményt, amikor befejezte a futást
• A végrehajtást az adatok vezetékeken történő áramlása határozza meg
67
Adatvezérelt programozás: példa
68
Sekvencia
69
70
LabVIEW toolkit-ek
71
Programozási lehetőségek
72
MathScript RT Module
• MATLAB kódok futtatása
• 700 beépített funkció
• GUI
• Valós idejű rendszerek
• http://sine.ni.com/np/app/main/p/docid/nav-104/lang/hu/fmid/2031/
73
Control Design and Simulation Module
• Simulink jellegű programozás
• http://sine.ni.com/nips/cds/view/p/lang/hu/nid/209850
74
Application Builder for Windows
• Önálló* programok készítése
• Telepítőfájlok készítese
• .net dll-ek
• Forráskód elrejtése
*: futtatókörnyezetet fel kell telepíteni
75
Robotics Module
• Valódi hardverek vezérlése
• 3D szimulációs környezet
• http://sine.ni.com/nips/cds/view/p/lang/hu/nid/209856
76
LEGO MINDSTORMS NXT Module
• Lego NXT programozása LabVIEW használatával
• http://www.ni.com/pdf/manuals/372574c.pdf
77
Vision Development Module
• 3D algoritmusok
• Valós idejű felismerés
• http://sine.ni.com/np/app/main/p/docid/nav-104/lang/hu/fmid/2037/
78
PID and Fuzzy Logic Toolkit
• P, PI, PD, and PID szabályozások
• Fuzzy szabályozások
• Automatikus hangolás (online/offline)
• http://sine.ni.com/nips/cds/view/p/lang/hu/nid/209054
79
Statechart Module
• Állapotvezérelt gépek készítése
• http://sine.ni.com/nips/cds/view/p/lang/hu/nid/209857
80
Real-Time Module
• Valós idejű rendszerek vezérlése
• Önálló műszerek, vezérlőkpl. cRIO, PXI, ...
• Real-Time Execution Trace Toolkit• Debugging
• Profiling
• http://sine.ni.com/np/app/main/p/docid/nav-104/lang/hu/fmid/2032/
81
FPGA Module
• FPGA programozása grafikus nyelven
• http://sine.ni.com/np/app/main/p/docid/nav-104/lang/hu/fmid/2030/
82
Touch Panel Module
• HMI panelek programozása
• http://sine.ni.com/nips/cds/view/p/lang/hu/nid/209858
83
Datalogging and Supervisory Control Module
• OPC szerver/kliens
• HMI
• NI hardver
• PLC
• ...
• http://sine.ni.com/nips/cds/view/p/lang/hu/nid/209851
84
Adaptive Filter Toolkit
• Különböző adaptív szűrő algoritmusok
• Szimuláció
• FPGA kód
• http://sine.ni.com/nips/cds/view/p/lang/hu/nid/205382
85
... vége ...Köszönöm a figyelmet