1 / 26

LabView 7.1

LabView 7.1. LabView. Vývojový systém (full development package) Base package – bez knihovny Advanced Analysis, obsahuje knihovny GPIB, RS232, Data Acquisition, a Base Analysis Advanced analysis library – (rozšířené analyzační knihovny)

kelton
Download Presentation

LabView 7.1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. LabView 7.1

  2. LabView Vývojový systém (full development package) • Base package – bez knihovny Advanced Analysis, • obsahuje knihovny GPIB, RS232, Data Acquisition, a Base Analysis • Advanced analysis library – (rozšířené analyzační knihovny) • statistika, lineární algebra, operace s poli, generování signálů, zpracování signálů, digitální filtry, okénkové funkce. Lze jej dále doplnit o překladač aplikací (application builder) SQL toolkit pro podporu databázi, PID regulátor, Control Toolbox, VXI knihovna apod.

  3. Program – virtuální nástroj (VI) • programové struktury • sekvence (sequence) • přepínač (case) • cyklus FOR (for-loop) • autoindexace vstupních a výstupních tunelů (možnost vypnutí) • cyklus WHILE • pole (array), struktury (clucter) • události (events) • lokální, globální proměnné, konstanty • matematický výraz • polymorfizmus • property • subVi (vlastní, vnitřní) (soubory, I/O zařízení, filtry, mat. operace,…) • Aplikaci lze uchovat samostatně (*.vi soubor), nebo sdružovat více aplikací (*.llb soubor)

  4. Části virtuálního nástroje • Čelní panel (front panel) • Ovládací a indikační prvky (controls) • ikona a konektor • Blokové schéma (block diagram) • grafické vyjádření programu (functions)

  5. Nástroje pro práci Výběr změna pozice popisovač ovladač scrooling propojovač spojovač výběr barvy dle objektu pop-up menu sonda spojovač - space bar barva breakpoint run stop Svítí-li žárovička: Labview při vykonávání zobrazuje svoji činnost v blokovém schématu výběr - single click výběr - double click krokování nastavení textu pauza výběr - triple click Opakované spuštění

  6. Ikona, konektor, komentáře • Front panel • Ikona obrázek symbolizující VI nástroj • Konektor interface pro navázání VI nástroje s okolím

  7. Datové typy, signály.

  8. Pop-up menu, property • Umožňuje rychlé připojení prvků k objektu. • create/(constatnt,control,indikator) • Změna objektu na jiný. • replace/… • Přístup k property vlastnostem. • create/property node • Vyhledání prvku na panelu. • Vyhledání vlastních lokálních proměných. • Změna datového typu a rozsahu hodnot. • representation/typ • format&precision • …

  9. Programové struktury • Sekvence (složena z rámců) • Umělé vytvoření posloupnosti prováděná příkazů. • Jednotlivé rámce sekvence se provádějí popořadě (0, 1, 2…). • Zobrazen je vždy jen jede rámec. • Vstup do rámce tunelem (jeden vstup může být napojen na více bloků různých rámců) • Výstup z rámce tunelem (jeden blok jeden tunel) • Přepínač (case) • Větvení programu, dle podmínky do dvou či více větví • Terminál pro připojení testovací podminky

  10. Programové struktury • For-loop cyklus • Pro známý počet opakování • Automatická indexace vstupního/výstupního kanálu [i] • Vypnuto – vstupem je pole v každém kroku, výstupem je skalár po ukončení celého cyklu. • Zapnuto – vstupem je prvek na indexu i, výstupem je pole výsledků jednotlivých průchodů. • Rychlost provádění cyklu lze ovlivnit vložením bloku Wait Until Next ms Multiple. • Pro zpřístupnění hodnot z mynulých průchodů slouží posuvné registry.

  11. Programové struktury • While-loop cyklus • Opakování dáno testovanou podmínkou (true = opakuj) • Rychlost provádění cyklu lze ovlivnit vložením bloku Wait Until Next ms Multiple. • Pro zpřístupnění hodnot z minulých průchodů slouží posuvné registry. • Event structure • Provádění rámce při vybrané události.

  12. Provádění bloků operace • Asynchronní provádění • bloku může být spuštěno simultánně spolu s dalšími bloky tj. střídavé provádění malých úseků kódu přidělováním kapacity CPU. LabVIEW obsahuje plánovač pro víceúlohoví běh, který přerušuje vykonávání kódu bloku, který má k dispozici všechna svá vstupní data, a přepíná na vykonávání kódu dalšího bloku, který má rovněž k dispozici všechna vstupní data. • Řadič priority přiděluje kódu daného bloku kapacitu CPU na dobu, která odpovídá jeho prioritě, potom přeřazuje tento blok na konec fronty, kterou obhospodařuje. Z této fronty je blok vyřazen po dokončení své činnosti. • Asynchronně se provádějí bloky odpovídající strukturám, vstupně/výstupním funkcím, časovacím funkcím a uživatelem definovaným subVI. • Code Interface Nodes (CINs) a všechny výpočetní funkce jsou prováděny synchronně. Kód bloku je prováděn bez přepínání na provádění jiných bloků a teprve po jeho dokončení je kapacita CPU předána pro provádění jiných bloků. • Existuje pět úrovní priority: 0, 1, 2, 3 a subroutine. • Nejnižší úroveň priority je úroveň 0, • Nejvyšší prioritou je priorita subroutine, která je v některých ohledech speciální. Běží-li některý VI s prioritou subroutine, žádný jiný nebude spuštěn, dokud se tento nedokončí. Provádění těchto bloků je tedy sekvenční.

  13. Provádění bloků operace • Reentrantní provádění bloků znamená, že je možné provádět několikanásobně volaný blok paralelně. (každé volání takovéhoto bloku totiž vytváří separátně kopii dat) užitečné ve třech případech: • jestliže VI obslužného programu řídí a komunikuje s fyzickým přístrojem a musí řídit několik identických přístrojů • jestliže VI čeká specifikovaný časový intervalnebo dojde k vypršení nastaveného času • jestliže VI obsahuje data, která nemohou být sdílenas jinými položkami tohoto VI, • Reentrantní provádění VI se povoluje nastavení VI Setup... Příklad viz. [1]

  14. DLL • Pro volání funkcí z DLL souboru musíme mít k dispozici: • konkrétní dll soubor ;), • jména funkcí v DLL, • počet a typy argumentů ve fci s návratový typem, • volací konvence (C, stdcall). tyto informace získáme z prototypu funkcí v hlavičkovém souboru .h void MyFunction(int32 a, double* b, char* string, uInt32 arraysize, int16* dataarray); b je pointer na jedno realné číslo (8B float), string je pointer na řetězec dataarray je pointer na pole 16b celých čísel

  15. #include “main.h" #include <windows.h> #include <stdio.h> #include <stdlib.h> #include "math.h" #define true 1 #define false 0 DLLIMPORT int GetSphereSAandVol(double radius, double* sa, double* vol) { if(radius < 0) return false; //return false (0) if radius is negative *sa = GetSA(radius); *vol = GetVol(radius); return true; } DLLIMPORT double GetSA(double radius) { return 4 * M_PI * radius * radius; } DLLIMPORT double GetVol(double radius) { return 4.0/3.0 * M_PI * pow(radius, 3.0); } BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ , DWORD reason /* Reason this function is being called. */ , LPVOID reserved /* Not used. */ ) { switch (reason) { case DLL_PROCESS_ATTACH: break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_ATTACH: break; case DLL_THREAD_DETACH: break; } /* Returns TRUE on success, FALSE on failure */ return TRUE; } main.h DLLIMPORT int GetSphereSAandVol(double radius, double* sa, double* vol); DLLIMPORT double GetSA(double radius); DLLIMPORT double GetVol(double radius);

  16. DLL, advanced functions Blok pro volání fce z dll souboru call library function node CIN – Code Interface Node Vstupní zařízení (joystick, klávesnice, myš,…) I/O port Jestli je funkce v DLL schopná paralelního zpracování (threadsafe) lze zvolit Reentrant (žlutá/oranžová barva) WIN registry Výběr fce z DLL DLL soubor Manipulace s daty – přetypování, posuvy, přesouvání, rozdělování,… Synchronizace – semafory, fronta, … přidávání argumentů pro postupné vytvoření prototypu fce Nastavení typu argumentu nebo návratové hodnoty funkce Volací konvence

  17. Vytvoření DLL v LabView • Vytvoříme VI přístroj, • přidělíme terminálu vstupy/výstupy, • uložíme a uzavřeme. • Otevřeme nový VI • v tools: Build application or shared library (DLL) …

  18. Vytvoření DLL v LabView Výběr VI přístroje Identifikátor fce Výběr DLL/EXE Volací konvence Jména exportovaných funkcí z VI do DLL souboru. Jméno výsledného DLL Argumenty fce Nastavení argumentu Zdrojový a cílový adresář Prototyp fce Po vytvoření všech prototypů funkcí z VI přístroje, zvolit BUILD - provede kompilaci a vytvoří výsledný .DLL, .h a .lib soubor v cílovém adresáři.

  19. Použití DLL z LabView v C #include <stdio.h> #include <stdlib.h> //#include "SharedLib.h" #include "windows.h" double C = 0; double F = 25; HANDLE fH = 0; double (*f_to_c2)(double *DegF); int main(int argc, char *argv[]) { printf("Nacteni DLL knihovny\n"); fH = LoadLibrary("SharedLib.dll"); printf("Jeji handle jest %d\n",fH); if (fH == 0) { MessageBox(NULL,"Chyba pri nacteni DLL","Chyba", MB_OK); return 1; } printf("Ziskani ukazatele na konverzni fci\n"); f_to_c2 = GetProcAddress(fH, "f_to_c"); printf("Jeji pointer jest %d\n",f_to_c2); if (f_to_c2 == 0) { MessageBox(NULL,"Chyba pri nacteni funkce z DLL","Chyba", MB_OK); return 1; } C = f_to_c2(&F); printf("Konverze stupnu\nF=%f\tna\t\°C=%f\n",F,C); FreeLibrary(fH); system("PAUSE"); return 0; }

  20. CIN • CIN (Code Interface Node) • Blok zpřístupňující C/C++ kód pro LabView • V C kódu musíme zahrnout hlavičkový soubor extcode.h (v adresáři …/LabWiew/cintools) #include "extcode.h" • LabView volá funkce standardizovaného rozhraní: funkce které mají konkrétní identifikátory, návratovou hodnotu a parametry: • MgErr CINRun(volitelné parametry_dle I/O bloku); // při každém provedení bloku CIN • MgErr CINProperties(int32 prop, void *data); // nastaveni CIN • MgErr CINLoad(RsrcFile reserved) // provede se při načtení CIN • CINSave, CINUnload, CINAbort, CINInit, CINDispose. • Dále je možné využívat v kódu další vnitřní fce LabView, typy, … (viz. manuál ve formátu pdf, dostupný z nápovědy k CIN bloku) • Na rozdíl od bloku pro DLL se parametry pro blok CIN volitelně přidají při tvorbě programu, poté se vygeneruje příslušná šablona pro C/C++.

  21. Blok CIN se „roztáhne“ tak, aby obsahoval potřebný počet terminálů (parametrů) • Terminály mohou být: • obousměrné • vstupní • výstupní Terminálům přiřadíme konkrétní signály Vytvoříme šablonu pro C/C++

  22. CIN • Do vytvořené šablony doplníme náš kód. • Následně je potřeba vygenerovat .lsb soubor http://zone.ni.com/devzone/conceptd.nsf/webmain/31DAB548C369B2C6862567C8006D8FC9 • Vytvoříme nový projekt DLL • Nastavíme kompilátor: • Multithreaded DLL, zarovnávání čísel po 1B, konvence volání funkcí C. • Adresář cintools přidat do cesty pro vyhledávání include souborů • Do projektu přiřadit tyto soubory: Cin.obj, Labview.lib, Lvsb.lib, Lvsbmain.def • Vytvoříme příkaz pro vlastní sestavení .lsb souboru • Build commands "<Cintools_path>\lvsbutil" "$(TargetName)" -d "$(WkspDir)\$(OutDir)„ • Output files "$(OutDir)$(TargetName).lsb„ • Spustíme kompilaci

  23. CIN • Po naprogramování a úspěšném přeložení projektu DLL získáme požadovaný soubor .lsb • V přeloženém DLL nejsou slinkovány fce CINXxxx (neuvedeme #include nas_soubor.c v hlavním souboru DLL) • .lsb soubor je sestaven pomocí programu lvsbutil • .lsb načteme do bloku CIN pomocí pop-up okna Load Code Resource Z funkce CINProperties získal LabView informaci o kódu, jenž je threadsafe (žlutá barva) a je možné k tomuto objektu přistupovat paralelně.

  24. Simulation module • Všechny bloky ze simulačního modulu musí být na simulační smyčce nebo simulačním subVI • Lineární (diskrétní i spojité) systémy lze zadávat pomocí přenosu, stavového prostoru, pólů a nul • Nelineární systémy je nutné sestavit pomocí bloků • Zrcadlové obrácení bloku pomocí položky kontextového menu bloku – Reverse terminals • Pokud je na vstupu derivace skok, dojde k zastavení simulace • Při použití bloků nepatřících do simulačního modulu dochází k neočekávanému chování Simulation module

  25. SubVI • Zpřehlednění blokového schématu • Znovupoužití vytvořeného schématu • Vytvoření z aktuálního výběru pomocí nabídky Edit - Create subVI • Výstupy/vstupy vytvořeného subVI odpovídají propojeným výstupům/vstupům z/do výběru použitého pro vytvoření subVI • Uložené subVI se vloží pomocí funkce Select a VI … Select a VI…

  26. Reference [1] http://vlab.fme.vutbr.cz/ [2] http://www.physics.muni.cz/~cermak/index.php [3] http://zone.ni.com/zone/jsp/zone.jsp Communicating with a Real-Time Engine http://zone.ni.com/devzone/devzone.nsf/webcategories/80B108310397CDE886256B5D00798294 Programming Event Response Applications http://zone.ni.com/devzone/devzone.nsf/webcategories/B8486B92B6C187B486256B5D007A8C43 Programming Control Applications http://zone.ni.com/devzone/devzone.nsf/webcategories/98B00EDB9735ECB386256B5D007A86D0 Using External Code http://zone.ni.com/devzone/devzone.nsf/webcategories/69AC4D47BD54298A86256AB7006AB23C Hardware Input and Output http://zone.ni.com/devzone/devzone.nsf/webcategories/9B7EBE009FDF14718625688B00731D38

More Related