310 likes | 430 Views
LabView Academy. 4. óra. Ellenőrző kérdések. Hogyan lehet letiltani az automatikus hibakezelés funkciót ? Engedélyezzük az Execution highlighting – ot b) A subVI error out cluster-jét bekötjük egy másik subVI error in cluster-jébe
E N D
LabViewAcademy 4. óra
Ellenőrző kérdések Hogyan lehet letiltani az automatikus hibakezelés funkciót? Engedélyezzükaz Execution highlighting –ot b) A subVIerror out cluster-jét bekötjük egy másik subVIerrorincluster-jébe c) Az Errorlist ablakban bejelöljük a Show Warningsjelölőnégyzetet
Ellenőrző kérdések Az alábbiak közül melyek az errorcluster elemei? a) Status: Boolean b) Error: String c) Code: 32-bit integer d) Source: String
String • Gyakorlás: Lva.04.strings.docx • pelda08_build_string.vi
Párhuzamosság Két különböző frekvenciájú koszinusz jel, két ciklusban, egy stop gombbal leállítva
Párhuzamosság Helyes-e a következő elgondolás? Nem!
Párhuzamosság Helyes-e a következő elgondolás? (Változók) pelda05_local_variables.vi Igen!
Párhuzamosság • Adatfolyam architektúra • Az adatfolyam határozza meg a végrehajtási sorrendet • Jól párhuzamosítható • Adatátadás a párhuzamos programrészek között • Adatfüggőséget okoz (adatfolyam) • Elveszik a párhuzamosság • Változók: blokk diagram elemek, amelyek lehetővé teszik adatok beolvasását, illetve tárolását.
Változók • Lokális változó: Front panel kontrolban/indikátorban tárolja az értéket, csak egy VI-on belül használható • Globális változó:Speciális adattárolóban tárol, adatokat így több VI számára elérhető • Funkcionális globális:Whileciklus inicializálatlan Shift regiszterében tárol értéket • Shared: több eszköz és rendszer között hálózati megosztás
Lokális változók • Létrehozása: • Jobb klikk egy kontrol/indikátor terminálon >> Create>> Local variable • Functionspaletta • Írása/olvasása: • Jobb klikk >>Change to Read/Write
Globális változók • Adatcsere különböző VI-ok között • Speciális VI, aminek csak Front panelje van • Létrehozása: • Functionspaletta • A globális változó Front paneljén elhelyezett egy/több objektum >> összetett változó • Írása/olvasása: • Összetett változó esetén az al-változókiválasztása • Changeto Read/Write
Single-process shared variable • Adatcsere különböző VI-ok között • Létrehozása: • Project explorer >> My computer, New >> Variable
Single-process shared variable • Adatcsere különböző VI-ok, sőt különböző rendszerek között hálózaton • Project Explorer
A változók túlzott használatának veszélyei • A változók nem részei az adatfolyam architektúrának • A blokk diagram nehezen olvashatóvá válik a használatukkal • Túlzott használatuk rontja a VI teljesítményét
Ellenőrző kérdések Mi lesz az értéke? a) Szám=(Szám*5)+2 b) Szám=(Szám*2)+5 c) Szám=Szám*5 d) Szám=Szám+2 e) A kiértékelési sorrend dönt
Feladat • pelda07_local_variables_order.png • Snippet
Funkcionális globális változók • For, vagy While ciklusok inicializálatlan shiftregisztereiben tárolja az adatot • Művelet bemenet (set/get, read/write) • Adat bemenet • Bonyolultabbadatstruktúrák (verem, sor) is megvalósíthatók így • Fájlok, műszerek, DAQ eszközök hozzáférése is szabályozható ezzel • pelda06_functional_global_variable.zip
Versenyhelyzet • Több párhuzamosan futó program használja ugyanazt a megosztott erőforrást (változót) • Nehéz azonosítani és debuggolni • Elkerülése • Megosztott erőforrások korlátozása • Kritikus kódrészek védelme (pl. semaphor, funkc. globális változó) • Végrehajtásisorrend meghatározása
Megosztott erőforrások • Minimalizáljuk a megosztott erőforrások alkalmazását • vagy legalább a megosztott erőforrások használóinak számát • ha sokan olvassák ugyanazt az erőforrást, az áltatában nemprobléma • ha sokan írják, az jelent problémát • Cél: • Egy írásjog • Jól definiált végrehajtási sorrend
Változók Inicializálatlan változók az alapértelmezett értéket veszik fel. Ökölszabály: előbb inicializáljuk a változót, utána használjuk.
Kritikus kódrészlet • Definíció: az a kódrészlet, amely közben versenyhelyzet állhat elő • Kritikus kód védelme • Funkcionális globális változók: non reentrantsubVI, egyszerre csak egy helyről futtatható • Szemaforok
Szemafor használata a kritikus kódrészlet védelmére Acquiresemaphore és Releasesemaphore közti rész védett
Ellenőrző kérdések VI-okban érdemes gyakran változókat használni. a) Igaz b) Hamis
Ellenőrző kérdések Az alábbiak közül melyek nem alkalmasak adatátvitelre? a) Szemafor b) Funkcionális globális változó c) Lokális változó d) Single-processshared változó
Ellenőrző kérdések Az alábbiak közül melyek használhatók kizárólag projektben? a) Lokális változó b) Globális változó c) Funkcionális globális változó d) Single-processshared változó
Ellenőrző kérdések Az alábbiak közül melyek nem használhatók különböző VI-okközti adatátadásra? a) Lokális változó b) Globális változó c) Funkcionális globális változó d) Single-processshared változó
Többhurkos tervezési technikák Párhuzamos • Több független feladat párhuzamos végrehajtása • Kommunikáció a ciklusok között nem egyszerű (változók)
Többhurkos tervezési technikák Master/Slave • Több független ciklus különböző sebességgel • Slave ciklus • Különböző frekvenciájú adatgyűjtési feladatok • Master ciklus • Felhasználói felület kezelése (inputok a felhasználótól) • Túl lassú Slave gondot okozhat
Többhurkos tervezési technikák Producer/Consumer • Továbbfejlesztett adatmegosztás a Master/Slave-hez képest • Producer ciklus: Adatot „termel” • Consumer ciklus: Adatot „fogyaszt” • Kommunikáció egy soron keresztül -> nincs adatvesztés
Olvasnivaló • http://www.ni.com/white-paper/7585/en/ • http://labviewwiki.org/Race_condition • http://www.ni.com/white-paper/4679/en/ • http://digital.ni.com/public.nsf/allkb/A1BA7477550DBFDE862565BC006CD410 • http://www.ni.com/white-paper/6099/en/