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

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

LabView 7.1.

Podobné prezentace


Prezentace na téma: "LabView 7.1."— 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. Co dodat 

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) Vlastní programování je GRAFICKÉ (pro techniky kteří neumějí programovat klasicky). Všechny operace, struktury, … jsou graficky znázorněné bloky (subVI, CIN, …). SubVi – VI přístroj použitý v jiném VI přístroji CIN - Code Interface Node (viz níže) Bloky jsou propojeny signály. Blok může mít svoje vlastnosti, programový přístup k vlastnostem je možný přes PROPERTY. Jeden vstup do bloku může umožňovat připojit signál různých typů POLYMORFIZMUS, příklad: přidání prvku do pole nebo přidání pole do pole Pro snadnější vyjádření složitých matematických formulí může být použit blok FORMULA NODE, je pomalejší ale jednodušší na zápis. Používá BNF Backus-Naur Form příkazy se skládají z operandů, operátorů, matematických funkcí příkazy jsou ukončeny středníkem Při výpočtu lze využít lokálních nebo glob. proměnných globálních proměnných (na sdílení dat, pozor na paralelní zpracování), glob. prom. Má svůj vlastní front panel, kde můžeme přidávat přístroje, ty je možné pak v našem VI jednotlivě vybírat. Lokální proměnná - přiřadíme k jinému přístroji (na lokálním vi).

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) Vlastní VI přístroj je složen ze tří částí Čelní panel – slouží pro ovládání a vizualizaci Blokové schéma – slouží pro programování vlastního přístroje Ikona a Konektor – popsáno dále v textu

5 Nástroje pro práci Toolbox 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 Toolbox výběr - double click krokování nastavení textu výběr - triple click pauza 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 Front Panel nahoře vpravo: Ikona Slouží pro symbolickou značku našeho VI přístroje. Konektor přepneme se na něj pomocí popup menu – Show Connector Konektor je složen z jednoho nebo více terminálů (I/O) Umožňuje přidávání/odebírání terminálu Možnost změnit umístění terminálů K jednotlivým terminálům přiřadit indikační prvky (výstup) nebo ovládací prvky (vstup) Barva terminálu vyznačuje typ

7 Datové typy, signály. 1) Datové typy se odlišují svoji barvou.
Plnější obrys je pro řídící prvek Slabší obrys je pro indikační prvek Šedivý prvek je bez typu, například pole bez inicializace (můžeme do něj přidat řetězec, číslo …). 2) Signály mají barvu podle typu, který přenášejí Šířka udává rozměr přenášeného pole Pro nehomogenní data (cluster) je signál pruhovaný Chybné propojení bloků nekompatibilních dat čárkovaně s červeným křížkem uprostřed, v určitých případech dochází k automatickému přetypování. Přetypování lze provést blokem TYPE CAST

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ů) Přepínač (case)
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 DLLIMPORT double GetSA(double radius);
#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: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: } /* 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 call library function 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 DLL soubor Výběr fce z DLL Reentrant – threadsafe kód v DLL, lze použít paralelní přístok k bloku (rychlejší), blok získá žlutou barvu Run in UI Thread – není kód v DLL schopen paralelního běhu, blok bude mít oranžovou barvu Manipulace s daty – přetypování, posuvy, přesouvání, rozdělování,… Synchronizace – semafory, fronta, … Nastavení typu argumentu nebo návratové hodnoty funkce přidávání argumentů pro postupné vytvoření prototypu fce 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 Výběr DLL/EXE Identifikátor fce 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); 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 Terminálům přiřadíme konkrétní signály
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 Do blokového diagramu (programu) přiřadíme prázdný blok CIN, jenz rozšíříme tak aby obsahoval náš potřebný počet vstupů a výstupů. Zvolíme vstupy/výstupy a jim přiřadíme signály z/do jiných bloků programu. Pak je možné vytvořit šablonu pro C/C++ do kterého naprogramujeme požadovanou funkčnost. 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 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 LabView obsahuje vlastní nástroj pro vytvoření potřebné knihovny. Vytvářet pokud možno C kód který je threadsafe. Podrobný popis pro různá vývojopvá prostředí jsou ucvedeny na stránkách: nebo v nápovědě LabView.

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] [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."

Podobné prezentace


Reklamy Google