Documente Academic
Documente Profesional
Documente Cultură
Structuri înLabVIEW
1 Scopul lucrǎrii
Scopul lucrării este de a înŃelege structurile din LabVIEW şi de a învăŃa
folosirea lor.
2 ConsideraŃii teoretice
Structurile sunt reprezentări grafice similare instrucŃiunilor de ciclare şi
condiŃionare din limbajele bazate pe text. Structurile se utilizează pe DB pentru a
repeta anumite porŃiuni de cod şi a se executa coduri într-o anumită ordine. Ca
orice alt nod, structurile au terminale prin care acestea se interconectează cu alte
noduri din DB, sunt executate automat când datele sunt disponibile la intrări şi
furnizează la ieşire rezultatul când execuŃia structurii este completă.
Orice structură are un cadru propriu, redimensionabil, ce cuprinde partea
din DB ce se execută în concordanŃă cu regulile structurii. SecŃiunea din DB
cuprinsă în interiorul cadrului (conturului) unei structuri este denumită
subdiagramă. Terminalele prin care se introduc sau se extrag date se numesc tunele.
Structurile pot fi accesate din paleta Functions, submeniul Structures.
Există 5 tipuri de structuri de bază:
1. Bucla FOR
2. Bucla WHILE
3. CASE
4. SecvenŃă
5. Nod de formule
2.1 Bucla FOR
Bucla FOR , prezentată în Figura 1 se utilizează pentru controlul
operaŃiilor repetitive. Ea execută o subdiagramă de un număr de ori. Este
echivalentă cu:
InstrumentaŃie virtuală Lucrarea 7
For i = 0 to N-1
Se executa diagrama din bucla
Se salvează IV şi se execută.
Pe indicatorul din interiorul buclei se va afişa, la fiecare 0,1 s, un număr
aleatoriu cuprins între 0 şi 1. pe indicatoarele din afara buclei nu va fi disponibilă
nici o data pâna ce programul nu este compet (până când nu sunt executate toate
iteraŃiile). Pe indicatorul conectat la tunelul ce permite indexarea, se vor genera 10
valori, iar pe cel conectat la tunelul la care s-a dezactivat indexarea, numai ultimul
element al sirului (Figura 3).
3
InstrumentaŃie virtuală Lucrarea 7
4
InstrumentaŃie virtuală Lucrarea 7
Exemplul 2
Să se genereze, cu o anumită temporizare, şi să se afişeze un număr
aleator cuprins între 0 şi 1, oprirea executării programului făcându-se de la un
buton de Stop de pe PF.
Panoul frontal al aplicaŃiei este cel din Figura 6, iar diagrama bloc cea din
Figura 7
5
InstrumentaŃie virtuală Lucrarea 7
2.3 Autoindexarea
Autoindexarea (Disable Indexing) este o noŃiune specifică buclelor
FOR şi WHILE.
Dacă la intrarea unei bucle se aplică o matrice şi din pop-up-ul tunelului
de intrare se validează opŃiunea Enable Indexing, atunci la fiecare iteraŃie bucla
ia în calcul, în ordine, câte un element din matricea respectivă. De ex., dacă la
intrare avem un vector, la prima iteraŃie se ia elementul 0, la a doua iteraŃie se ia
elementul 1, ş.a.m.d. Dacă la intrare se află o matrice bidimensională, atunci la
prima iteraŃie se ia linia 0, la a doua iteraŃie linia 1, ş.a.m.d. Dacă, din contra, se
validează opŃiunea Disable Indexing, atunci la fiecare iteraŃie se ia în calcul toată
matricea.
La tunelele de ieşire, problema se pune în mod invers. Dacă opŃiunea
Enable Indexing este validată, ieşirea din buclă va fi o matrice (vector) ale cărei
elemente sunt generate în urma fiecărei iteraŃii. Dacă se validează Disable
Indexing, ieşirea din buclă va fi un scalar şi anume valoarea obŃinută în urma
ultimei iteraŃii.
Dacă la intrarea unei bucle FOR se aplică doi vectori de lungimi diferite
şi nu se leagă terminalul de numărare (şi este validată autoindexarea), bucla va
cicla de atâtea ori câte elemente are cel mai mic vector. In condiŃiile de mai sus,
dacă terminalul de numărare este legat, bucla ciclează de atâtea ori cât este
valoarea cea mai mică dintre lungimile vectorilor de la intrare şi terminalul de
numărare.
In cazul buclei WHILE, autoindexarea vectorului de intrare se realizează
şi după terminarea elementelor acestuia, bucla oprindu-se doar atunci când nu
mai este îndeplinită condiŃia de ciclare. După terminarea elementelor vectorului,
mai departe, până la oprirea buclei, se ia în calcul valoarea implicită a ultimului
element.
2.4 Registre de deplasare
Registrele de deplasare (RD) sunt perechi de terminale ce se utilizează în
buclele FOR şi WHILE pentru transferarea valorilor calculate de la o iteraŃie la
alta. Crearea unui RD se face din pop-up-ul buclei FOR sau WHILE selectându-
se Add Shift Register. Registrele de deplasare apar sub forma unei perechi de
terminale, opuse unuia altuia pe părŃile verticale ale conturului buclei.
Un registru de deplasare transferă orice tip de date şi automat. Datele
legate la terminalele fiecărui registru de deplasare trebuie să fie de acelaşi tip.
La terminalul din dreapta, RD stochează valoarea corespunzătoare
iteraŃiei actuale, iar la terminalul din stânga este accesibilă valoarea
corespunzătoare iteraŃiei imediat anterioare.
RD se poate redimensiona în partea stângă pentru obŃinerea şi a valorilor
altor iteraŃii anterioare (Figura 8). Redimensionarea se face cu pop-up pe RD –
Add Element, sau analog cu redimensionarea matricilor.
6
InstrumentaŃie virtuală Lucrarea 7
8
InstrumentaŃie virtuală Lucrarea 7
Exemplul 3
Să se realizeze un IV care să efectueze rădăcina pătrată a unui numar,
utilizându-se structura CASE.
Se verifică dacă numărul este pozitiv. Dacă da, atunci se calculează
rădăcina pătrată, dacă nu se afişează un mesaj „Error...Negative number”.
Diagrama bloc este cea din Figura 12
9
InstrumentaŃie virtuală Lucrarea 7
10
InstrumentaŃie virtuală Lucrarea 7
Tabel 1
11
InstrumentaŃie virtuală Lucrarea 7
3 Desfăşurarea lucrării
1. Să se utilizeze bucla FOR şi registre de deplasare pentru a calcula
maximul dintr-un şir de numere aleatoare.
2. Să se construiască un IV care să afişeze două semnale aleatoare pe un
afişor: un semnal aleator cuprins între 0 şi 1 şi altul cu media ultimelor
4 puncte ale semnalului aleator. Oprirea instrumentului se va face de pe
PF.
3. Să se analizeze exemplul pentru lucrul cu subIV şi structuri, din Digital
Signal Processing System Design: LabVIEW-Based Hybrid Programming,
Nasser Kehtarnavaz, pag. 29-32.
12