Title: LabView 7.1
1LabView 7.1
2LabView
- 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šírené analyzacní
knihovny) - statistika, lineární algebra, operace s poli,
generování signálu, zpracování signálu, digitální
filtry, okénkové funkce. - Lze jej dále doplnit o
- prekladac aplikací (application builder)
- SQL toolkit pro podporu databázi,
- PID regulátor, Control Toolbox,
- VXI knihovna apod.
3Program virtuální nástroj (VI)
- programové struktury
- sekvence (sequence)
- prepínac (case)
- cyklus FOR (for-loop)
- autoindexace vstupních a výstupních tunelu
(možnost vypnutí) - cyklus WHILE
- pole (array), struktury (clucter)
- události (events)
- lokální, globální promenné, konstanty
- matematický výraz
- polymorfizmus
- property
- subVi (vlastní, vnitrní) (soubory, I/O zarízení,
filtry, mat. operace,) - Aplikaci lze uchovat samostatne (.vi soubor),
nebo sdružovat více aplikací (.llb soubor)
4Cásti virtuálního nástroje
- Celní panel (front panel)
- Ovládací a indikacní prvky (controls)
- ikona a konektor
- Blokové schéma (block diagram)
- grafické vyjádrení programu (functions)
5Nástroje pro práci
Výber zmena pozice
popisovac
ovladac
scrooling
propojovac
spojovac
výber barvy dle objektu
pop-up menu
sonda
barva
spojovac - space bar
breakpoint
run
stop
Svítí-li žárovicka Labview pri vykonávání
zobrazuje svoji cinnost v blokovém schématu
výber - single click
výber - double click
krokování
nastavení textu
výber - triple click
pauza
Opakované spuštení
6Ikona, konektor, komentáre
- Front panel
- Ikona
- obrázek symbolizující VI nástroj
- Konektor
- interface pro navázání VI nástroje s okolím
7Datové typy, signály.
8Pop-up menu, property
- Umožnuje rychlé pripojení prvku k objektu.
- create/(constatnt,control,indikator)
- Zmena objektu na jiný.
- replace/
- Prístup k property vlastnostem.
- create/property node
- Vyhledání prvku na panelu.
- Vyhledání vlastních lokálních promených.
- Zmena datového typu a rozsahu hodnot.
- representation/typ
- formatprecision
9Programové struktury
- Sekvence (složena z rámcu)
- Umelé vytvorení posloupnosti provádená príkazu.
- Jednotlivé rámce sekvence se provádejí poporade
(0, 1, 2). - Zobrazen je vždy jen jede rámec.
- Vstup do rámce tunelem (jeden vstup muže být
napojen na více bloku ruzných rámcu) - Výstup z rámce tunelem (jeden blok jeden tunel)
- Prepínac (case)
- Vetvení programu, dle podmínky do dvou ci více
vetví - Terminál pro pripojení testovací podminky
10Programové struktury
- For-loop cyklus
- Pro známý pocet 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 ukoncení celého cyklu. - Zapnuto vstupem je prvek na indexu i, výstupem
je pole výsledku jednotlivých pruchodu. - Rychlost provádení cyklu lze ovlivnit vložením
bloku Wait Until Next ms Multiple. - Pro zprístupnení hodnot z mynulých pruchodu
slouží posuvné registry.
11Programové struktury
- While-loop cyklus
- Opakování dáno testovanou podmínkou (true
opakuj) - Rychlost provádení cyklu lze ovlivnit vložením
bloku Wait Until Next ms Multiple. - Pro zprístupnení hodnot z minulých pruchodu
slouží posuvné registry. - Event structure
- Provádení rámce pri vybrané události.
12Provádení bloku operace
- Asynchronní provádení
- bloku muže být spušteno simultánne spolu s
dalšími bloky tj. strídavé provádení malých úseku
kódu pridelováním kapacity CPU. LabVIEW obsahuje
plánovac pro víceúlohoví beh, který prerušuje
vykonávání kódu bloku, který má k dispozici
všechna svá vstupní data, a prepíná na vykonávání
kódu dalšího bloku, který má rovnež k dispozici
všechna vstupní data. - Radic priority prideluje kódu daného bloku
kapacitu CPU na dobu, která odpovídá jeho
priorite, potom prerazuje tento blok na konec
fronty, kterou obhospodaruje. Z této fronty je
blok vyrazen po dokoncení své cinnosti. - Asynchronne se provádejí bloky odpovídající
strukturám, vstupne/výstupním funkcím, casovacím
funkcím a uživatelem definovaným subVI. - Code Interface Nodes (CINs) a všechny výpocetní
funkce jsou provádeny synchronne. Kód bloku je
prováden bez prepínání na provádení jiných bloku
a teprve po jeho dokoncení je kapacita CPU
predána pro provádení jiných bloku. - Existuje pet úrovní priority 0, 1, 2, 3 a
subroutine. - Nejnižší úroven priority je úroven 0,
- Nejvyšší prioritou je priorita subroutine, která
je v nekterých ohledech speciální. Beží-li
nekterý VI s prioritou subroutine, žádný jiný
nebude spušten, dokud se tento nedokoncí.
Provádení techto bloku je tedy sekvencní.
13Provádení bloku operace
- Reentrantní provádení bloku znamená, že je možné
provádet nekolikanásobne volaný blok paralelne.
(každé volání takovéhoto bloku totiž vytvárí
separátne kopii dat) užitecné ve trech prípadech
- jestliže VI obslužného programu rídí a komunikuje
s fyzickým prístrojem a musí rídit nekolik
identických prístroju - jestliže VI ceká specifikovaný casový interval
nebo dojde k vypršení nastaveného casu - jestliže VI obsahuje data, která nemohou být
sdílena s jinými položkami tohoto VI, - Reentrantní provádení VI se povoluje nastavení VI
Setup... - Príklad viz. 1
14DLL
- Pro volání funkcí z DLL souboru musíme mít k
dispozici - konkrétní dll soubor ),
- jména funkcí v DLL,
- pocet a typy argumentu ve fci s návratový typem,
- volací konvence (C, stdcall).
- tyto informace získáme z prototypu funkcí v
hlavickovém souboru .h - void MyFunction(int32 a, double b, char string,
uInt32 arraysize, int16 dataarray) - b je pointer na jedno realné císlo (8B float),
- string je pointer na retezec
- dataarray je pointer na pole 16b celých císel
15- include main.h"
- include ltwindows.hgt
- include ltstdio.hgt
- include ltstdlib.hgt
- include "math.h"
- define true 1
- define false 0
- DLLIMPORT int GetSphereSAandVol(double radius,
double sa, double vol) -
- if(radius lt 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
- main.h
- DLLIMPORT int GetSphereSAandVol(double radius,
double sa, double vol) - DLLIMPORT double GetSA(double radius)
- DLLIMPORT double GetVol(double radius)
16DLL, advanced functions
Blok pro volání fce z dll souboru
CIN Code Interface Node
call library function node
Vstupní zarí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ýber fce z DLL
DLL soubor
Manipulace s daty pretypování, posuvy,
presouvání, rozdelování,
Synchronizace semafory, fronta,
Nastavení typu argumentu nebo návratové hodnoty
funkce
pridávání argumentu pro postupné vytvorení
prototypu fce
Volací konvence
17Vytvorení DLL v LabView
- Vytvoríme VI prístroj,
- pridelíme terminálu vstupy/výstupy,
- uložíme a uzavreme.
- Otevreme nový VI
- v tools
- Build application or shared library (DLL)
18Vytvorení DLL v LabView
Výber VI prístroje
Výber DLL/EXE
Identifikátor fce
Jména exportovaných funkcí z VI do DLL souboru.
Volací konvence
Jméno výsledného DLL
Argumenty fce
Nastavení argumentu
Zdrojový a cílový adresár
Prototyp fce
Po vytvorení všech prototypu funkcí z VI
prístroje, zvolit BUILD - provede kompilaci a
vytvorí výsledný .DLL, .h a .lib soubor v
cílovém adresári.
19Použití DLL z LabView v C
- include ltstdio.hgt
- include ltstdlib.hgt
- //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
20CIN
- CIN (Code Interface Node)
- Blok zprístupnující C/C kód pro LabView
- V C kódu musíme zahrnout hlavickový soubor
extcode.h (v adresári /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)
// pri každém provedení bloku CIN - MgErr CINProperties(int32 prop, void data) //
nastaveni CIN - MgErr CINLoad(RsrcFile reserved) // provede se
pri nactení CIN - CINSave, CINUnload, CINAbort, CINInit,
CINDispose. - Dále je možné využívat v kódu další vnitrní fce
LabView, typy, - (viz. manuál ve formátu pdf, dostupný z nápovedy
k CIN bloku) - Na rozdíl od bloku pro DLL se parametry pro blok
CIN volitelne pridají pri tvorbe programu, poté
se vygeneruje príslušná šablona pro C/C.
21Blok CIN se roztáhne tak, aby obsahoval
potrebný pocet terminálu (parametru)
- Terminály mohou být
- obousmerné
- vstupní
- výstupní
Terminálum priradíme konkrétní signály
Vytvoríme šablonu pro C/C
22CIN
- Do vytvorené šablony doplníme náš kód.
- Následne je potreba vygenerovat .lsb soubor
- http//zone.ni.com/devzone/conceptd.nsf/webmain/3
1DAB548C369B2C6862567C8006D8FC9 - Vytvoríme nový projekt DLL
- Nastavíme kompilátor
- Multithreaded DLL, zarovnávání císel po 1B,
konvence volání funkcí C. - Adresár cintools pridat do cesty pro vyhledávání
include souboru - Do projektu priradit tyto soubory
- Cin.obj, Labview.lib, Lvsb.lib, Lvsbmain.def
- Vytvoríme príkaz pro vlastní sestavení .lsb
souboru - Build commands
- "ltCintools_pathgt\lvsbutil" "(TargetName)" -d
"(WkspDir)\(OutDir) - Output files
- "(OutDir)(TargetName).lsb
- Spustíme kompilaci
23CIN
- Po naprogramování a úspešném preložení projektu
DLL získáme požadovaný soubor .lsb - V prelož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 nacteme 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 pristupovat paralelne.
24Simulation module
- Všechny bloky ze simulacního modulu musí být na
simulacní smycce nebo simulacním subVI - Lineární (diskrétní i spojité) systémy lze
zadávat pomocí prenosu, stavového prostoru, pólu
a nul - Nelineární systémy je nutné sestavit pomocí bloku
- Zrcadlové obrácení bloku pomocí položky
kontextového menu bloku Reverse terminals - Pokud je na vstupu derivace skok, dojde k
zastavení simulace - Pri použití bloku nepatrících do simulacního
modulu dochází k neocekávanému chování
Simulation module
25SubVI
- Zprehlednení blokového schématu
- Znovupoužití vytvoreného schématu
- Vytvorení z aktuálního výberu pomocí nabídky Edit
- Create subVI - Výstupy/vstupy vytvoreného subVI odpovídají
propojeným výstupum/vstupum z/do výberu použitého
pro vytvorení subVI - Uložené subVI se vloží pomocí funkce Select a VI
Select a VI
26Reference
- 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/webcategori
es/80B108310397CDE886256B5D00798294 - Programming Event Response Applications
- http//zone.ni.com/devzone/devzone.nsf/webcategori
es/B8486B92B6C187B486256B5D007A8C43 - Programming Control Applications
- http//zone.ni.com/devzone/devzone.nsf/webcategori
es/98B00EDB9735ECB386256B5D007A86D0 - Using External Code
- http//zone.ni.com/devzone/devzone.nsf/webcategori
es/69AC4D47BD54298A86256AB7006AB23C - Hardware Input and Output
- http//zone.ni.com/devzone/devzone.nsf/webcategori
es/9B7EBE009FDF14718625688B00731D38