Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

LabView 7.1. LabView Vývojový systém (full development package) Base package – bez knihovny Advanced Analysis, –obsahuje knihovny GPIB, RS232, Data Acquisition,

Podobné prezentace


Prezentace na téma: "LabView 7.1. LabView Vývojový systém (full development package) Base package – bez knihovny Advanced Analysis, –obsahuje knihovny GPIB, RS232, Data Acquisition,"— Transkript prezentace:

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

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ý interval nebo dojde k vypršení nastaveného času –jestliže VI obsahuje data, která nemohou být sdílena s 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 #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 CIN – Code Interface Node Vstupní zařízení (joystick, klávesnice, myš,…) Manipulace s daty – přetypování, posuvy, přesouvání, rozdělování,… Synchronizace – semafory, fronta, … I/O port WIN registry call library function node Jestli je funkce v DLL schopná paralelního zpracování (threadsafe) lze zvolit Reentrant (žlutá/oranžová barva) DLL soubor Výběr fce z DLL Volací konvence Nastavení typu argumentu nebo návratové hodnoty funkce přidávání argumentů pro postupné vytvoření prototypu fce

17 Vytvoření DLL v LabView 1.Vytvoříme VI přístroj, 2.přidělíme terminálu vstupy/výstupy, 3.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 DLL/EXE Jméno výsledného DLL Zdrojový a cílový adresář Výběr VI přístroje Jména exportovaných funkcí z VI do DLL souboru. Identifikátor fce Volací konvence Argumenty fce Prototyp fce Nastavení argumentu 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 //#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 n/31DAB548C369B2C C8006D8FC9 –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 " \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] [2] [3] Communicating with a Real-Time Engine Programming Event Response Applications Programming Control Applications Using External Code Hardware Input and Output


Stáhnout ppt "LabView 7.1. LabView Vývojový systém (full development package) Base package – bez knihovny Advanced Analysis, –obsahuje knihovny GPIB, RS232, Data Acquisition,"

Podobné prezentace


Reklamy Google