LabVIEW TM Core 2 Feladatok A tanfolyam szoftveranyagának verziószáma 2010 2010. augusztus kiadás Termékkód: 325293B-0131 LabVIEW Core 2 Feladatok Szerzői jog 1993 2010 National Instruments Corporation. Minden jog fenntartva. A szerzői jogi jogszabályok szerint ez a kiadvány a National Instruments Corporation előzetes írásos beleegyezése nélkül semmilyen (elektronikus vagy mechanikus) formában, sem részleteiben sem egészében nem többszörözhető vagy terjeszthető, ideértve a fénymásolat készítést, rögzítést, információs rendszerben való tárolást, illetve fordítást is. A National Instruments tiszteletben tartja mások szellemi tulajdonát, és ugyenerre kéri a felhasználóit is. Az NI szoftvertermékek a szerzői jogi, illetve a szellemi tulajdon védelméről szóló más jogszabályok védelme alatt állnak. Amennyiben a National Instruments szoftverek felhasználásával más tulajdonában álló szoftverek vagy más szellemi termékek többszörözésére kerül sor, az NI szofver kizárólag olyan szellemi termékek többszörözésére használható, amelyeknek ilyen felhasználása az alkalmazandó licencek, illetve az egyéb jogi rendelkezések alapján megengedett. For components used in USI (Xerces C++, ICU, HDF5, b64, Stingray, and STLport), the following copyright stipulations apply. For a listing of the conditions and disclaimers, refer to either the USICopyrights.chm or the Copyrights topic in your software. Xerces C++. This product includes software that was developed by the Apache Software Foundation (http://www.apache.org/). Copyright 1999 The Apache Software Foundation. All rights reserved. ICU. Copyright 1995 2009 International Business Machines Corporation and others. All rights reserved. HDF5. NCSA HDF5 (Hierarchical Data Format 5) Software Library and Utilities Copyright 1998, 1999, 2000, 2001, 2003 by the Board of Trustees of the University of Illinois. All rights reserved. b64. Copyright 2004 2006, Matthew Wilson and Synesis Software. All Rights Reserved. Stingray. This software includes Stingray software developed by the Rogue Wave Software division of Quovadx, Inc. Copyright 1995 2006, Quovadx, Inc. All Rights Reserved. STLport. Copyright 1999 2003 Boris Fomitchev Védjegyek A LabVIEW, National Instruments, NI, és ni.com kifejezések, valamint a National Instruments logó és a sas-logó a National Instruments Corporation védjegyei. A National Instruments védjegyeivel kapcsolatban további részletek az ni.com/trademarks oldalon a Trademark Information alatt találhatók. Minden egyéb itt említett termék- illetve cégnév az azokat tulajdonló megfelelő vállalatoknak a védjegyei. A National Instruments Alliance Partner Program tagjai a National Istrumentstől független üzleti szereplők, köztük és a National Instruments között megbízási, partnerségi vagy közös vállalkozási kapcsolat nem áll fenn. Szabadalmak A National Instruments termékeit és technológiai fejlesztéseit érintő szabadalmakról bővebb felvilágosítást találhat a National Instruments szoftverekben, a Help»Patents menüpont alatt, a szoftver könyvtárában lévő patents.txt fájlban, vagy az ni.com/patents oldalon, a National Instruments Patent Notice pont alatt.
Támogatás Globális műszaki támogatás és termékinformáció ni.com A National Instruments központja 11500 North Mopac Expressway Austin, Texas 78759-3504 USA Tel: 512 683 0100 Irodáink a világban Ausztrália 1800 300 800, Ausztria 43 662 457990-0, Belgium 32 (0) 2 757 0020, Brazília 55 11 3262 3599, Cseh Köztársaság 420 224 235 774, Dánia 45 45 76 26 00, Dél-afrikai Köztársaság 27 0 11 805 8197, Egyesült Királyság 44 (0) 1635 523545, Finnország 358 (0) 9 725 72511, Franciaország 01 57 66 24 24, Fülöp-szigetek (63) 2 659 1722, Hollandia 31 (0) 348 433 466, India 91 80 41190000, Izrael 972 3 6393737, Japán 0120-527196, Kanada 800 433 3488, Kína 86 21 5050 9800, Korea 82 02 3451 3400, Lengyelország 48 22 328 90 10, Libanon 961 (0) 1 33 28 28, Malajzia 1800 887710, Mexikó 01 800 010 0793, Németország 49 89 7413130, Norvégia 47 (0) 66 90 76 60, Olaszország 39 02 41309277, Oroszország 7 495 783 6851, Portugália 351 210 311 210, Spanyolország 34 91 640 0085, Svájc 41 56 2005151, Svédország 46 (0) 8 587 895 00, Szingapúr 1800 226 5886, Szlovénia 386 3 425 42 00, Tajvan 886 02 2377 2222, Thaiföld 662 278 6777, Törökország 90 212 279 3031, Új-Zéland 0800 553 322 További segítséget a Kiegészítő információk és hasznos segédeszközök mellékletben találhat. A National Instruments dokumentációkkal kapcsolatos észrevételeit a National Instruments honlapján, azon belül is az ni.com/info oldalon oszthatja meg velünk, a feedback gyorskód megadásával.
Tartalomjegyzék Útmutató A. NI Tanúsítvány...v B. A tanfolyam leírása...vi C. Amire szükségünk lesz tanulmányaink során...vii D. A tanfolyami szoftver telepítése...vii E. A tanfolyam célkitűzései...viii F. A tananyagban használt jelölések...ix 2. lecke Szinkronizálási technikák 2-1. feladat Alapismeretek: Sorok kontra lokális változók...2-1 3. lecke Eseményvezérelt programozás 3-1. feladat Alapismeretek: Ismerkedés az Event szerkezettel...3-1 3-2. feladat Készítsünk egy nyomtatási sort kezelő konzolprogramot...3-4 4. lecke Hibakezelés 4-1. feladat A Print Console program bővítése hibakezeléssel...4-1 5. lecke Dinamikusan változó felhasználói felületek 5-1. feladat A hőmérséklet pillanatnyi és határértékének kijelzése...5-1 5-2. feladat A VI ablakának testre szabása...5-5 5-3. feladat Set Plot Names VI...5-10 6. lecke Fájl írás/olvasási technikák 6-1. feladat Bitmap File Writer VI...6-1 6-2. feladat TDMS fájlok olvasása...6-8 7. lecke VI-ok optimalizálása 7-1. feladat Alapismeretek: A VI működésének hatékonyabbá tétele...7-1 8. lecke Alkalmazások fejlesztése és terjesztése 8-1. feladat Fájlok előkészítése terjesztésre...8-1 8-2. feladat Önállóan futtatható alkalmazások készítése...8-7 National Instruments Corporation iii LabVIEW Core 2 Feladatok
Tartalomjegyzék A függelék A hardvereszközök előkészítése B függelék Kiegészítő információk és hasznos segédeszközök LabVIEW Core 2 Feladatok iv ni.com
Dinamikusan változó felhasználói felületek 5-1. feladat A hőmérséklet pillanatnyi és határértékének kijelzése Cél Feladat Tervezés 5 Property Node-ok segítségével a program futása közben változtassuk meg a front panel elemeinek egyes jellemzőit. Egészítsünk ki egy már létező VI-t úgy, hogy a mért hőmérsékletértékeket megjelenítse egy grafikonon. A VI futása közben a következő feladatok kerülnek végrehajtásra: A grafikon Δx paramétere a felhasználó által megadott értéket veszi fel. Induláskor a grafikon ablakának letörlése, vagyis egy adatot se tartalmazzon. A görbe színének megváltoztatása, ha a mért érték átlép egy megadott határt. A határérték átlépésére egy villogó lámpa is figyelmeztessen. Helyezzük el a következő Property Node-okat a már létező VI blokkdiagramján: Kontroll/Indikátor Név Paraméter Waveform Chart Temperature XScale.Multiplier (dx) Waveform Chart Temperature History (a grafikon aktuális tartalma) Waveform Chart Temperature Active Plot 0»Plot.Color (aktív görbe kiválasztása, a görbe színe) Boolean Indicator (LED) Over Limit Blinking (villogás) National Instruments Corporation 5-1 LabVIEW Core 2 Feladatok
Megvalósítás 1. Nyissuk meg az <Exercises>\LabVIEW Core 2\Temperature Limit könyvtárban található Temperature Limit.vi-t. A front panelt már előre kialakították számunkra. 5-1. ábra A Temperature Limit VI front panelje 2. Nyissuk meg a VI blokkdiagramját. A blokkdiagram egy részét már szintén előkészítették nekünk. Az 5-2. ábrán a blokkdiagram végleges állapota látható. 5-2. ábra A Temperature Limit VI blokkdiagramja menüpontot. 3. Módosítsuk úgy a VI-t, hogy a grafikon Δx paraméterét a delta t (ms) kontrollban megadott értékre állítsa be. A Temperature indikátor Property Node-jának létrehozásához kattintsunk jobb gombbal az indikátorra, és válasszuk ki a Create» Property Node»X Scale»Offset and Multiplier»Multiplier LabVIEW Core 2 Feladatok 5-2 ni.com
Helyezzük át az újonnan létrejött Property Node-ot a While ciklus bal oldalára. Kattintsunk jobb gombbal a Property Node-ra, és válasszuk ki a Change All To Write menüpontot. Az XScale.Multiplier értékének meghatározásához a delta t (ms) kontroll értékét osszuk el 1000-rel, a 5-2. ábrán látható módon. 4. Módosítsuk a VI-t, hogy induláskor törölje a grafikonról a korábbi értékeket. Javaslat A waveform chart indikátor tartalmának törléséhez huzalozzunk be a blokkdiagramon egy üres tömb konstanst a History Data paraméterbe. Méretezzük át a Property Node-ot két elem számára. A második mezőben válasszuk ki a History Data paramétert. Győződjünk meg arról, hogy a paraméter terminálja írásra van állítva. Jobb gombbal kattintsunk a History Data paraméterre, és válasszuk ki a Create»Constant menüpontot. Kössük be a Property Node vezetékeit az 5-2. ábrának megfelelően. 5. Módosítsuk úgy a VI-t, hogy ha a hőmérséklet egy megadott határértéket átlép, a Data görbe színe váltson pirosra, az Over Limit LED pedig kezdjen el villogni. Egy újabb Property Node létrehozásához kattintsunk jobb gombbal a Temperature indikátorra, és válasszuk ki a Create»Property Node»Active Plot menüpontot. Helyezzük az új Property Node-ot a Case szerkezet igaz ágába. Méretezzük át a property node-ot két elem számára. A második elemnek állítsuk be a Plot»Plot Color paramétert. Kattintsunk jobb gombbal a Property Node-ra, és válasszuk ki a Change All To Write menüpontot. A grafikon első görbéjének kiválasztásához, kössünk be egy 0 értékű szám konstanst a Property Node Active Plot paraméterébe. A görbe színének megváltoztatásához kössünk be a Property Node Plot Color paraméterébe egy piros színdoboz konstanst. National Instruments Corporation 5-3 LabVIEW Core 2 Feladatok
Tesztelés A Property Node másolásához, a <Ctrl> billentyű nyomva tartása mellett, ragadjuk meg azt, és a másolatot helyezzük az eredeti mellé. vége Javaslat Ne használjuk a vágólapot (az Edit»Copy menüpontot vagy a <Ctrl-C> -t) a másoláshoz. Ilyen módon egy más típusú Prpoerty Node jönne létre, melyről a Control References (Kontrol hivatkozások) fejezetben fogunk tanulni az 5. Controlling the User Interface (Dinamikusan változó felhasználói felületek) leckében a LabVIEW Core 2 Course Manual tankönyvben. Helyezzük a másolatot a Case szerkezet hamis ágába, az 5-3. ábrán látható módon. A grafikon első görbéjének kiválasztásához, kössünk be egy 0 értékű szám konstanst a Property Node Active Plot paraméterébe. A görbe színének megváltoztatásához kössünk be a Property Node Plot Color paraméterébe egy zöld színdoboz konstanst. 5-3. ábra A Temperature Limit VI hamis ága 6. Módosítsuk a VI-t oly módon, hogy a hőmérsékleti határ átlépésekor az Over Limit LED villogni kezdjen. Jobb gombbal kattintsunk az Over Limit indikátorra, és válasszuk ki a Create»Property Node»Blinking menüpontot. Az új Property Node-ot helyezzük a While ciklus belsejébe. Kattintsunk jobb gombbal a Property Node-ra, és válasszuk ki a Change All To Write menüpontot. Kössük be a Property Node vezetékeit az 5-2. ábrának megfelelően. 7. Mentsük el a VI-t. 1. Futtassuk a VI-t, és ellenőrizzük, hogy megfelelően működik. 2. Zárjuk be a VI-t. 5-1. feladat LabVIEW Core 2 Feladatok 5-4 ni.com
5-2. feladat A VI ablakának testre szabása Cél Feladat Tervezés Property Node-ok és Invoke Node-ok segítségével változtassuk meg a VI-unk jellemzőit. A VI külsejét meghatározó paramétereket beállíthatjuk statikusan a VI properties ablakban, ugyanakkor a komolyabb felhasználói felületek kialakítása megköveteli, hogy a front panel egyes paraméterei a program futása közben is változhassanak. Egy olyan VI-t kell készítenünk, mely a program futása közben képes az alábbi műveleteket végrehajtani: Elrejteni vagy megjeleníteni a saját ablakának fejlécét. Elrejteni vagy megjeleníteni a felső menüsorát. Áttetszővé válni, hogy a mögötte lévő objektumok láthatóvá váljanak. Áthelyezni magát a képernyő közepére. Bemenetek és kimenetek Kontroll/Indikátor Név Alapértelmezett érték Push Button Show Menu Bar? True Push Button Show Title Bar? True Push Button Make VI Transparent? True OK Button Center False Stop gomb Stop False Javaslat Azért használjuk a Push Button kontrollt, mert az alapértelmezett mechanical action (mechanikai működés) paramétere switch when pressed (kattintásra vált). Az OK gomb mechanikai kialakítása ellenben latch when released, azaz felengedés után visszatér alaphelyzetébe. National Instruments Corporation 5-5 LabVIEW Core 2 Feladatok
Tulajdonságok A VI osztály alábbi paramétereit és metódusait fogjuk felhasználni: ShowMenuBar - A paraméter igaz értéke esetén látszik a VI felső menüsora. 5-4. ábra A VI felső menüsora TitleBarVisible - A paraméter igaz értéke esetén látható a VI ablakának fejléce. 5-5. ábra A VI fejléce RunVITransparently - A paraméter igaz értéke mellett engedélyezett a front panel átlátszóságának állítása. A paraméter alapértelmezett értéke hamis, ezért mielőtt változtatni szeretnénk az ablak átlátszóságát, a paraméter értékét igazra kell állítanunk. Transparency - A front panel ablak áttetszőségét meghatározó paraméter. A paraméter értéke 0 és 100 között változhat, 0 érték esetén az ablak tömör, átlátszatlan (normál megjelenés), 100 esetén teljesen átlátszó (láthatatlan). Esetünkben a Make VI Transparent? gomb megnyomására állítsuk a paraméter értékét 50-re. Metódusok A paraméterekkel ellentétben a metódusok csak akkor fejtik ki hatásukat, mikor meghívják őket. Ezért metódusokat csak akkor hívunk meg, amikor egy konkrét esetben kell valamilyen műveletet végrehajtanunk. Ha például az Fp.Center metódust egy cikluson belül használjuk, akkor az ablak folyton a képernyő közepére fog ugrani, lehetetlenné téve, hogy a felhasználó áthelyezhesse azt máshová. Case szerkezetbe foglalva a metódust, szabályozhatjuk, hogy mikor hajtódjon végre. A következő VI osztálybeli metódusokat fogjuk használni: Center - A metódus minden egyes meghívásakor a front panel ablaka a képernyő közepére kerül. Javaslat A Context Help ablakban további részleteket tudhatunk meg valamennyi paraméterről és metódusról. A VI működése A VI másodpercenként hússzor beolvassa a front panel kontrollok értékeit, és beállítja a hozzájuk rendelt funkcióknak megfelelő paramétereket. A Center metódus hívását Case szerkezettel irányítjuk. LabVIEW Core 2 Feladatok 5-6 ni.com
Megvalósítás 1. Nyissuk meg az <Exercises>\LabVIEW Core 2\Customize VI Window könyvtárban található Customize VI Window VI-t. A VI front panelje a 5-6. ábrán látható. 5-6. ábra A Customize VI Window VI front panelje A következő lépések végrehajtásával hozzuk létre a VI a blokkdiagramját. Egy példát a blokkdiagram kialakítására az 5-7. ábrán láthatunk. 5-7. ábra A Customize VI Window VI blokkdiagramja 5-8. ábra A Center metódust hívó Case szerkezet hamis ága 2. A blokkdiagramon lévő terminálokat helyezzük egy While ciklusba. 3. Hozzunk létre egy, a VI-ra mutató hivatkozást. Helyezzünk el egy VI Server Reference terminált a blokkdiagramon a While ciklustól balra. National Instruments Corporation 5-7 LabVIEW Core 2 Feladatok
Ha alapból nem lenne az, állítsuk a VI Server Reference tárgyát This VI-ra. Megjegyzés A This VI hivatkozás használatával a VI-hoz tartozó valamennyi paramétert és metódust elérhetjük anélkül, hogy ehhez formálisan meg kéne nyitni, majd le kéne zárni egy hivatkozást. 4. Hozzunk létre egy Property Node-ot RunTransparently paramétermezővel. Jobb gombbal kattintsunk a This VI hivatkozásra, és válasszuk ki a Create»Property for VI Class»Front Panel Window»Run VI Transparently paramétert. Helyezzük el az így létrejött Property Node-ot a This VI hivatkozástól jobbra, de még a While cikluson kívül. Kattintsunk jobb gombbal a Property Node-ra, és válasszuk ki a Change All To Write menüpontot. Jobb gombbal kattintsunk az FP:RunTransparently paraméterre, és válasszuk ki a Create»Constant menüpontot. A létrejött logikai konstans értékét állítsuk át igazra. 5. Hozzunk létre Porperty Node-ot ShowMenuBar, TitleBarVis és Transparency paramétermezőkkel. Egy újabb Property Node létrehozásához kattintsunk jobb gombbal a This VI hivatkozásra, és válasszuk ki a Create»Property for VI Class»Front Panel Window»Show Menu Bar paramétert. Növeljük meg a Property Node méretét, hogy három terminálja legyen. Kattintsunk a második terminálra, és válasszuk ki a Front Panel Window»Title Bar Visible paramétert. Kattintsunk a harmadik terminálra, és válasszuk ki a Front Panel Window»Transparency paramétert. Kattintsunk jobb gombbal a Property Node-ra, és válasszuk ki a Change All To Write menüpontot. Helyezzük a Property Node-ot a While ciklus belsejébe. Helyezzünk el egy Select műveletet a While ciklus belsejében. Helyezzünk el egy 0 és egy 50-es értékű szám konstanst a Select művelet bal oldalán. A nulla értékű konstanst kössük be a Select művelet f bemenetére. LabVIEW Core 2 Feladatok 5-8 ni.com
Az 50-es értékű konstanst kössük be a Select művelet t bemenetére. Tesztelés Kössük be a kapcsoló kontrollokat a megfelelő paraméterek vége termináljaiba az 5-7. ábrának megfelelően. 6. Hozzunk létre egy, a Center metódust meghívó Invoke Node-ot. Jobb gombbal kattintsunk a This VI hivatkozásra, és válasszuk ki a Create»Method for VI Class»Front Panel»Center paramétert. 7. Helyezzünk egy Case szerkezetet az FP.Center Invoke Node köré. 8. Helyezzünk el egy 50ms-os várakozás műveletet a cikluson belül. Helyezzünk el egy Wait (ms) műveletet a While ciklus belsejében. Jobb egérgombbal kattintsunk a művelet milliseconds to wait bementére, és válasszuk ki a Create»Constant menüpontot. A létrejött szám konstans értékének írjunk be 50-et. 9. A ciklus álljon le, ha a felhasználó a megnyomja a Stop gombot, vagy menet közben valamilyen hiba történik. Helyezzünk el egy Unbundle By Name művelet a While ciklusban. Helyezzünk el egy Or (VAGY) műveletet a While cikluson belül. 10. Kössük be a hiányzó vezetékeket az 5-7. és az 5-8. ábráknak megfelelően. Ne felejtsük el lecserélni a hiba cluster alagútját shift regiszterre. 11. Jelezzük ki a felhasználónak, ha futás közben hiba történt. Helyezzük el a Simple Error Handler VI-t a While ciklusoktól jobbra. Kössük be a hiba cluster shift regiszter kimeneti terminálját a Simple Error Handler VI hiba bemenetére. 12. Mentsük el a VI-t. 1. Váltsunk át a VI front paneljére. 2. Futtassuk a VI-t. 3. Próbáljuk ki az összes kapcsolót és nyomógombot, és figyeljük meg a front panelen történő változásokat. 5-2. feladat National Instruments Corporation 5-9 LabVIEW Core 2 Feladatok
5-3. feladat Set Plot Names VI Cél Feladat Tervezés Kontroll-hivatkozások felhasználásával hozzunk létre olyan szub VI-t, mely módosítja a hívó VI front paneljén található grafikon tulajdonságait. Hozzunk létre egy szub VI-t, mely egy görbék neveiből álló listát rendel hozzá egy grafikonhoz. A szub VI szükség esetén átméretezi a plot legend (görbe tulajdonságok) panelt, hogy az összes görbe látszódjon rajta. Bemenetek és kimenetek Kontroll/Indikátor Név Alapértelmezett érték Control Reference (grafikon objektumra mutató kontroll-hivatkozás) Szöveges kontrollokból álló 1D tömb Kontroll-hivatkozások Graph Reference Plot Names Üres tömb Hiba cluster kontroll Error In No Error Hiba cluster indikátor Error Out No Error A Waveform Chart és a Waveform Graph indikátorok a GraphChart osztály alá tartozó objektumok. Olyan szub VI készítéséhez, mely chart és graph hivatkozások fogadására egyaránt alkalmas, eggyel magasabb (GraphChart) osztályba tartozó kontroll-hivatkozást kell alkalmaznunk. Azonban ebbe az osztályba egyéb típusú objektumok is beletartoznak, például az XY Graph indikátor is. A szub VI-unk küldjön hibaüzenetet, ha a bemenetére nem Waveform Chart vagy Waveform Graph indikátor hivatkozását kötötték be. A Property Node ClassName paraméterét és egy Case szerkezetet felhasználva meghatározhatjuk, hogy a felhasználó milyen típusú kontroll-hivatkozást kötött a szub VI bemenetére. Ha a hivatkozás helyes, használjuk a To More Specific Class műveletet az indikátornak megfelelő osztály hivatkozásának eléréséhez. Miután birtokunkban van a WaveformChart indikátorra vagy a WaveformGraph indikátorra mutató hivatkozás, már egyszerűen beállíthatjuk a grafikonhoz tartozó görbék neveit. LabVIEW Core 2 Feladatok 5-10 ni.com
Megvalósítás Tulajdonságok A grafikon objektumok nem rendelkeznek olyan paraméterrel, mellyel egyszerre beállítható valamennyi görbe neve. Ehelyett paraméterek kombinációját alkalmazva egyesével állítjuk be az egyes görbékhez tartozó neveket. A feladat megoldásához az alábbi paramétereket fogjuk használni: ClassName - A paraméter a hozzá tartozó objektum osztályának nevét adja vissza szöveges formában. Minden kontroll/indikátor objektum rendelkezik ezzel a paraméterrel. LegAutosize - Engedélyezi vagy tiltja, hogy a Plot Legend panel automatikusan hozzáigazodjon a görbék neveinek hosszához. Mielőtt módosítanánk a görbék neveit, érdemes a paraméter értékét hamisra (tilt) állítani, egyébként előfordulhat, hogy a panel mérete oly módon változik, hogy túlságosan eltávolodik a grafikontól, vagy éppen ellenkezőleg, elfedi annak egy részét. LegNumRows - A Plot Legend panel egyszerre látható sorainak számát meghatározó paraméter. A plot legend paneljét úgy helyezzük el a grafikon mellett, hogy legyen elég hely további sorok megjelenítésére. Újabb sorok megjelenítésekor a plot legend panel a képernyő alja felé terjeszkedik. ActPlot - Egyszerre egy görbének tulajdonságai állíthatók be a görbét leíró paraméterek segítségével. Az ActPlot paraméter az aktív görbét jelöli ki. A görbék tulajdonságait leíró paraméterekhez kapcsolódó műveletek mindig az aktív görbére vonatkoznak. A görbék számozása nullától indulva a létrehozásuk sorrendjében történik. Plot.Name - Az aktív görbe nevét tartalmazó paraméter. 1. Nyissunk meg egy üres VI-t. 2. Mentsük el a VI-t Set Plot Names.vi néven az <Exercises>\ LabVIEW Core 2\Set Plot Names könyvtárba. 3. Építsük meg a front panelt. Tegyünk le egy control refnum (kontroll-hivatkozás) elemet a front panelre. A hivatkozás nevét írjuk át Graph Reference-re. Jobb gombbal kattintsunk a Graph Reference hivatkozásra, és válasszuk ki a Select VI Server Class»Generic»GObject» Control»GraphChart»GraphChart menüpontot. Helyezzünk el egy üres tömböt a front panelen. A tömb neve legyen Plot Names. National Instruments Corporation 5-11 LabVIEW Core 2 Feladatok
Helyezzünk egy szöveg kontrollt az üres Plot Names tömbbe. Tegyünk le egy error in hibaclustert. Tegyünk le mellé egy error out hibaclustert is. Rendezzük el az elemeket a front panelen az 5-9. ábrának megfelelően. 5-9. ábra A Set Plot Names VI front panelje Javaslat Mivel a szub VI front panelje működés közben nem fog megjelenni a képernyőn, nem kell törekednünk az esztétikus megjelenésre. Arra kell mindössze ügyelnünk, hogy mindig logikus és könnyen áttekinthető legyen a front paneljeink felépítése. Ugyanakkor túl sok időt se töltsünk olyan panelek csinosítgatásával, amit a felhasználó úgysem fog látni. 4. Váltsunk át a blokkdiagramra. 5. Azonosítsuk a hivatkozás osztályát, és küldjünk hibaüzenetet, ha nem megfelelő osztályba tartozik. A Class Browser segítségével keressük meg és helyezzük el a blokkdiagramon a ClassName Property Node-ot. A View»Class Browser menüpont kiválasztásával nyissuk meg a Class Browser párbeszédablakot. Válasszuk ki a VI Server objektum könyvtárat (Object Library). Azon belül válasszuk ki a Generic»Generic osztályt. A Search gombra kattintva nyissuk meg a Class Browser Search párbeszédablakot. LabVIEW Core 2 Feladatok 5-12 ni.com
5-10. ábra A Class Browser Search párbeszédablak A keresőmezőbe írjuk be: Class Name. A találatok listában a Class Name-nek kell lennie az egyedüli elemnek. A Search Scope szekcióban válasszuk ki a Generic class osztályt. Az OK gombra kattintva visszatérünk a Class Browser párbeszédablakba. Láthatjuk, hogy a Properties and Methods fastruktúrában a Class Name elem neve ki van emelve. National Instruments Corporation 5-13 LabVIEW Core 2 Feladatok
5-11. ábra A Class Browser párbeszédablak Kattintsunk a Create gombra, majd vigyük az egérmutatót a blokkdiagram egy üres területe fölé. A ClassName Property Node lehelyezéséhez kattintsunk a blokkdiagramon. LabVIEW Core 2 Feladatok 5-14 ni.com
Kössük be a Graph Reference terminálját a Property Node reference bemenetére. 5-12. ábra Az alapértelmezett ág Helyezzünk el egy Case szerkezetet a blokkdiagramon az 5-12. ábrán látható módon. Kössük be a Property Node ClassName kimenetét a Case szerkezet választó termináljába (kérdőjel). Váltsunk át a Case szerkezet hamis ágára. Töröljük ki a False kifejezést az ágnév mezőből, miáltal az ág nevének az 5-12. ábra szerint kell kinéznie. A Case szerkezet Default (alapértelmezett) ága akkor kerül végrehajtásra, ha kontroll-hivatkozás osztálya nem egyezik meg a többi ágban megadott osztályok egyikével sem. Ez azt jelenti, hogy az indikátor, melyre a szub VI-ba bekötött hivatkozás mutat, nem WaveformGraph, és nem is WaveformChart. Ne felejtsük el, hogy Case szerkezetek választócímkéje megkülönbözteti a kis- és nagybetűket. Helyezzünk el egy Error Cluster From Error Code VI-t a Case szerkezet belsejében. Jobb gombbal kattintsunk az Error Cluster From Error Code VI error code bemenetére, és válasszuk ki a Create»Constant menüpontot. A létrejött szám konstans értékének írjunk be 1057-et. Az 1057-es hibakód az Object cannot be typecasted to the specified type (Az objektum típusa nem alakítható át a megadott típusra.) hibaüzenetnek felel meg. Ez a megfelelő hibaüzenet abban az esetben, ha a szub VI felé nem megfelelő osztályba tartozó hivatkozást továbbítanak. Kössük be a hiányzó vezetékeket a 5-12. ábrának megfelelően. National Instruments Corporation 5-15 LabVIEW Core 2 Feladatok
6. Készítsük el a WaveformGraph típusú hivatkozás ágát 5-13. ábra WaveformGraph ág Váltsunk át a Case szerkezet igaz ágára. Az ágnév mezőben írjuk át a True kifejezést WaveformGraph-ra, hogy az ág neve a 5-13. ábra szerint nézzen ki. Figyelem! A Case szerkezet ágnevének tökéletesen meg kell egyeznie a választó terminálba továbbított szöveggel, beleértve a szóközök és a kis- és nagybetűk egyezését is. Ebben az esetben pontosan azt írjuk be, hogy WaveformGraph. Helyezzünk el egy To More Specific Class műveletet a Case szerkezetben. Jobb gombbal kattintsunk a To More Specific Class művelet target class bemenetére, és válasszuk ki a Create»Constant menüpontot. Kattintsunk az így létrejött konstansra, és válasszuk ki a Generic» GObject»Control»GraphChart»WaveformGraph» WaveformGraph osztályt. A Class Browser ablak segítségével keressük meg és helyezzük el a Case struktúrában a Legend: Autosize Property Node-ot. Object library: VI Server Class: Generic»Generic A Search Scope szekcióban válasszuk ki az All classes in the VI Server library opciót. Keresett kifejezés: Legend: Autosize. Válasszuk ki a WaveformGraph osztályba tartozó Legend: Autosize paramétert. LabVIEW Core 2 Feladatok 5-16 ni.com
Kössük össze a To More Specific Class művelet specific class reference kimenetét a Property Node reference bemenetével. Növeljük meg a Property Node méretét, hogy két eleme legyen látható. Kattintsunk a második terminálra, és válasszuk ki a Legend» Number of Rows paramétert. Kattintsunk jobb gombbal a Property Node-ra, és válasszuk ki a Change All To Write menüpontot. Jobb gombbal kattintsunk a LegAutosize paraméterre, és válasszuk ki a Create»Constant menüpontot. Győződjünk meg arról, hogy a létrejött logikai konstans értéke hamis. Helyezzünk el egy Array Size műveletet a Case szerkezetbe. Helyezzünk el egy For ciklust a Case szerkezeten belül. 7. Helyezzünk el egy Property Node-ot a For cikluson belül. A Class Browser ablak segítségével keressük meg és helyezzük el a For cikluson belül az Active Plot Property Node-ot. Object library: VI Server Class: Generic»Generic A Search Scope szekcióban válasszuk ki az All classes in the VI Server library opciót. Keresett kifejezés: Active Plot. Válasszuk ki a WaveformGraph osztályba tartozó Active Plot paramétert. A For ciklus keretén átvezetve kössük össze a második Property Node reference out kimenetét a harmadik Property Node reference bemenetével. Növeljük meg a harmadik Property Node méretét, hogy két eleme legyen látható. Kattintsunk a Property Node második termináljára, és válasszuk ki a Plot»Plot Name paramétert. Kattintsunk jobb gombbal a harmadik Property Node-ra, és válasszuk ki a Change All To Write menüpontot. Kössük be a hiányzó vezetékeket a 5-13. ábrának megfelelően. A For cikluson keresztül shift regiszterekkel vezessük a hiba clustereket. Ellenőrizzük, hogy a For ciklus keretén lévő Plot Names alagút auto indexelése be legyen kapcsolva. National Instruments Corporation 5-17 LabVIEW Core 2 Feladatok
8. Készítsük el a WaveformChart típusú hivatkozás ágát. 5-14. ábra WaveformChart ág Kattintsunk jobb gombbal a Case szerkezet keretére, és válasszuk ki a Duplicate Case menüpontot. Az ágnév mezőbe írjuk be: WaveformChart. Figyelem! A Case szerkezet ágnevének tökéletesen meg kell egyeznie a választó terminálba továbbított szöveggel, beleértve a szóközök és a kis- és nagybetűk egyezését is. Ebben az esetben pontosan azt írjuk be, hogy WaveformChart. Kattintsunk a WaveformGraph hivatkozás konstansra, és válasszuk ki a Generic»GObject»Control»GraphChart»WaveformChart osztályt. Megjegyzés Amint megváltoztattuk a kontroll-hivatkozás osztályát, az összes Property Node és Invoke Node, mely a hivatkozást használta, érvénytelenné válik. Ennek az az oka, hogy Property Node paraméterei nem olyan osztályhoz tartoznak, mint amire a hivatkozás mutat. Figyeljük meg, hogy valamennyi paraméternév színe feketére változott, amint megváltoztattuk a hivatkozás osztályát, és a Run gomb ikonján látható nyíl is törötté vált. Ne töröljük le a törött vezetékeket, miután újra kiválasztottuk a paramétereket, ismét helyreáll a rend. látható. Sorban kattintsunk a négy paraméterre, és mindnél válasszuk ki újra a helyes paraméternevet. A paraméterek a következők: Legend»Autosize, Legend»Number of Rows, Active Plot és végül Plot»Plot Name. Az így létrejött blokkdiagram az 5-14. ábrán LabVIEW Core 2 Feladatok 5-18 ni.com
9. Készítsük el a VI ikon és konnektor paneljét. Az 5-15. ábrán egy általunk is megrajzolható ikon, és egy lehetséges konnektor-elrendezés látható. Terminál-bekötések 5-15. ábra Egy lehetséges terminál-bekötés a Set Plot Names VI-hez Váltsunk át a VI front paneljére. Kattintsunk jobb gombbal a VI ikonjára, és válasszuk ki a Show Connector menüpontot. Jobb gombbal kattintsunk a konnektor panelre, válasszuk ki a Patterns menüpontot, majd azon belül egy megfelelő konnektor-elrendezést. Rendeljük össze a konnektor panel termináljait a front panel objektumaival. Kattintsunk jobb gombbal a konnektor panelre, és válasszuk ki a Show Icon menüpontot. Kattintsunk jobb egérgombbal az ikonra, és válasszuk ki az Edit Icon menüpontot. A szerkesztőben található eszközökkel rajzoljuk meg az új ikont. Ha készen vagyunk, zárjuk be az ikon-szerkesztőt. 10. Mentsük el a VI-t. Konnektor panel National Instruments Corporation 5-19 LabVIEW Core 2 Feladatok
Tesztelés 1. Ellenőrizzük a szub VI működését egy Waveform Graph indikátor segítségével. 5-16. ábra A Set Plot Names VI tesztje Nyissunk meg egy üres VI-t. Helyezzünk el egy Waveform Graph indikátort a front panelen. Nyissuk meg a blokkdiagramot. Kattintsunk jobb egérgombbal a Waveform Graph indikátor termináljára, és válasszuk ki a Create»Reference menüpontot. Helyezzük el a Set Plot Names VI-t a blokkdiagramon. Javaslat Amennyiben a Set Plot Names VI front panelje nyitva van, egyszerűen ragadjuk meg az egérrel a jobb fölső sarkában lévő ikont, és húzzuk át az új VI blokkdiagramjára. Kössük be a WaveformGraph hivatkozást a Set Plot Names VI Graph Reference bemenetére. Jobb egérgombbal kattintsunk a Set Plot Names VI Plot Names bemenetre, és válasszuk ki a Create»Control menüpontot. Ezek után a blokkdiagramunknak az 5-16. ábrához hasonló módon kell kinéznie. Váltsunk át az új VI front paneljére. A Plot Names tömb első elemébe írjuk be a One, a másodikba pedig a Two kifejezést. Helyezzük át a Plot Legend panelját a grafikon jobb oldalára, így szabadon változhat a mérete. Futtassuk a VI-t. Láthatjuk, hogy a plot legend panelján egymás alatt megjelenik a One és a Two felirat. LabVIEW Core 2 Feladatok 5-20 ni.com
2. Teszteljük a szub VI működését egy Waveform Chart indikátor segítségével is. Kattintsunk jobb egérgombbal a waveform graph indikátorra, és válasszuk ki a Replace»Graph»Waveform Chart menüpontot. Adjunk egy újabb elemet, Three szöveggel, a Plot Names tömbhöz. Futtassuk a VI-t. Ennek hatására a Three felirat is megjelenik a plot legend panelján. 3. Teszteljük a VI-t egy XY Graph indikátorral. Kattintsunk jobb egérgombbal a waveform chart indikátorra, és válasszuk ki a Replace»Graph»XY Graph menüpontot. Adjunk ismét egy újabb elemet a Plot Names tömbhöz, benne a Four szöveggel. Futtassuk a VI-t. Ekkor egy típus-átalakítási hibát jelző üzenetet kapunk. Megjegyzés A hiba oka, hogy az XY Graph típusú kontroll hivatkozását nem kezeljük le a szub VI-ban. 4. Zárjuk be a VI-t. A szub VI kipróbálásához létrehozott VI-t nem szükséges elmentenünk. 5-3. feladat vége National Instruments Corporation 5-21 LabVIEW Core 2 Feladatok
Feljegyzések LabVIEW Core 2 Feladatok 5-22 ni.com