Documente Academic
Documente Profesional
Documente Cultură
Aplicatia II Labview PDF
Aplicatia II Labview PDF
Dac n aplicaiile precedente s-a lucrat cu date sub form de scalari, n cadrul
acestei lucrri se vor prezenta unele noiuni i proceduri privind modaliti de grupare
a datelor sub form de iruri i tabele. De asemenea, se vor face referiri la principalele
structuri de programare care introduc faciliti importante n ceea ce privete fluxul de
date n diagrama bloc. Utilizarea acestor noiuni i proceduri, pentru stocare, transfer
i prelucrare de date, va fi ilustrat prin exemple din domeniul calculelor de o
complexitate mai mare, cum sunt cele statistice.
netipribile
Password Afieaz cte un asterisc (*) pentru fiecare caracter, inclusiv
Display spaiile
Hex Display Afieaz valoarea n ASCII a fiecrui caracter n hexa n
locul caracterului n sine
valori de tipul Array, pot fi utilizate o serie de funcii specifice. Aceste funcii, similar
ca pentru String-uri, se gsesc n subpaleta Array din componena paletei Functions.
n fig.3.6 este redat subpaleta Array n care a fost selectat funcia Build Array.
Aceast funcie permite introducerea n diagrama bloc a unui Array ce permite
concatenarea mai multor array-uri, sau adaug elemente la un array. Procedura de
selectare i de vizualizare a funciilor simbolizate de icoanele din subpaleta Array este
aceeai cu cea descris pentru String-uri.
Cluster-e
Elementele de tip Cluster sunt structuri
de date ce pot conine mai multe valori, de tipuri
i dimensiuni diferite. Un Cluster poate conine,
de exemplu, o valoare numeric, dou booleene
i una alfanumeric (text), sau poate conine o
combinaie de valori scalare, vectoriale i chiar
alte elemente de tip Cluster (de exemplu, o
valoare numeric, un Array de valori booleene
Fig.3.7.Definirea unui Cluster (aa
i un Cluster format din trei valori alfanumerice
cum se poate observa, un cluster
poate fi vzut ca o baz de date i una boolean).
simpl) Pentru a fi introdus n panoul unei
aplicaii, un element de tip Cluster se selecteaz
din meniul Array & Cluster al paletei de funcii. Imediat dup ce este dispus pe
panou, un Cluster este o structur vid (un chenar), nu conine nici o valoare (fig.3.7).
acesteia, iar elemente din interior pot fi mutate n afara structurii. Dac, prin
dimensionare sau deplasare, o structur ajunge s se suprapun cu alte elemente din
diagram, acestea nu vor fi incluse n structur.
n cele ce urmeaz se vor prezenta detalii cu privire la structurile repetitive (de
tip bucl) For Loop i While Loop, la structura de tip cauzal Case i la structura de
tip secvenial Sequence.
Bucla For
O bucl For este o structur repetitiv care
execut de un numr fixat de ori poriunea de diagram
pe care o conine (subdiagram). O execuie a poriunii
interne de diagram poart numele de iteraie. O bucl
For, redat n fig.3.10, dispune n colul stnga-sus de un
terminal (notat cu N), la care trebuie legat o valoare care
Fig.3.10. Bucla For
s specifice numrul de iteraii pe care bucla urmeaz s
le execute. n interiorul buclei se afl un terminal numrtor (notat cu i), care
genereaz o valoare natural reprezentnd indicele iteratiei curente (aflate n curs de
execuie). Indicii iteraiilor sunt numerotai ncepnd cu valoarea 0, astfel nct ultima
iteraie executat de ctre bucla For va avea indicele N-1.
Bucla While
Bucla While este o structur repetitiv cu condiie de terminare, adic execut
poriunea de diagram pe care o conine pn cnd la terminalul de continuare (aflat n
colul dreapta-jos) apare o anumit valoare boolean. Atunci cnd o bucl While este
dispus n diagram, terminalul su de continuare se afl n starea implicit Continue
If True. Bucla va continua s execute iteraii succesive att timp ct la terminalul su
de continuare ajunge o valoare logic True. Dac la terminalul de continuare ajunge o
valoare logic False, bucla While nu mai trece la urmtoarea iteraie ci i ncheie
execuia. Starea implicit a terminalului de continuare poate fi modificat. Terminalul
poate fi trecut n starea Stop If True, fie cu unealta de operare, fie apsnd butonul
drept al mouse-ului i selectnd starea din meniul propriu. n starea Stop If True
bucla While i va ncheia execuia atunci cnd la terminalul de continuare ajunge
valoarea logic True. n colul stnga-jos, bucla While dispune de un terminal
Structura Case
Atunci cnd este dispus n diagram, o structur Case, redat n fig.3.13,
conine dou ferestre (True i False), fiecare dintre acestea cu propriul flux de date.
Pe conturul structurii se afl dispus un terminal
selector (de culoare verde, coninnd semnul
ntrebrii). Structura Case va executa doar una din
cele dou ferestre, n funcie de valoarea boolean
(True sau False) conectat la terminalul su
selector.
Fig.3.13. Structura Case Dac la terminalul selector al unei
structuri Case, n locul unei valori booleene se
conecteaz o valoare numeric (numr ntreg sau natural), numele ferestrelor se vor
modifica automat din True i False n 0 i 1. Structura va executa fereastra al crei
nume va coincide cu valoarea numeric ce ajunge la terminalul su selector.
n aceast situaie, are sens ca structura Case s conin mai mult de dou
ferestre.
Deoarece structura Case nu va putea conine attea ferestre cte valori
numerice pot ajunge la terminalul su selector, una dintre ferestre trebuie declarat
drept fereastra implicita (Default). Fereastra implicit va fi executat atunci cnd
valorii ajunse la terminalul selector nu i corespunde nici un nume de fereastr.
Un nume de fereastr poate conine i descrierea unei mulimi de valori, de
genul 2..5, 7..9, nelegnd prin aceasta c fereastra respectiv va fi executat dac la
terminalul selector ajunge una din valorile 2, 3, 4, 5, 7, 8 sau 9. O valoare nu poate
exista n numele mai multor ferestre (ar exista o incertitudine privind fereastra ce
trebuie executat).
INSTRUMENTAIE VIRTUAL 148
Structura Sequence
O structur secvenial, de regul dispune de mai multe ferestre
(subdiagrame), fiecare dintre acestea cu propriul flux de date. Structura Sequence
execut n ordine ferestrele respective. De exemplu, n fig.3.15 sunt reprezentate dou
ferestre ale unei structuri Sequence. Structura va executa nti fereastra cu indicele 0,
trimindu-se valoarea de la elementul de control Slide la elementul indicator Meter,
apoi va executa fereastra 1 ce are ca efect transmiterea valorii booleene ntre cele dou
elemente.
Atunci cnd este dispus n diagram, o structur Sequence conine o singur
fereastr, aceasta fiind totodat i fereastra curent (vizibil).
Deschiznd meniul propriu al structurii i alegnd una din opiunile Add
Frame After sau Add Frame Before, se poate aduga o fereastr dup sau naintea
celei curente.
Se selecteaz tabloul nou creat i cu Copy/Paste este creat cel de-al doilea
tablou, care se va intitula Sir ce are ultima valoare Suma. Acest tablou se
redimesioneaz pentru a conine 11 elemente, n care ultimul va fi suma celorlalte.
Pentru a marca acest aspect, folosind butonul Edit Text din paleta Tools se efectueaz
click n zona ultimului element al noului tablou i se scrie Suma. Astfel a fost creat un
tabel nou care indic faptul c n ultimul element al tabloului se gsete suma
(fig.3.17).
totui s apar text deasupra butonului i acesta s reacioneze chiar dac se face click
n zona textului, se va activa din Visible Items opiunea Boolean Text i se va
redenumi Genereaza ca n fig.3.18. n acest mod, butonul va reciona indiferent n ce
zon a sa a primit un click. Scopul acestui buton este de a produce o iteraie atunci
cnd este apsat. Pentru aceasta trebuie s i se modifice modul de funcionare. n mod
implicit, un buton funcioneaz ca un switch de tip boolean: cnd nu este apsat se
genereaz valoarea False, iar cnd este apsat se genereaz valoarea True. n cazul de
fa, butonul trebuie s genereze True doar cnd este apsat i apoi s revin i s
genereze n continuare False. Valoarea True trebuie s fie generat doar o singur
dat, pentru ca utilizatorul s poat citi datele. Comportamentul butonului la aciunea
utilizatorului se poate stabili din meniul care apare n urma apsrii butonului dreapta
al mouse-ului n zona acestuia i care este redat n fig.3.19. Din acest meniu se alege
grupul Mechanical Action i apoi Latch When Pressed. Acum butonul va genera o
singur valoare True cnd va fi apsat i apoi va reveni automat la starea iniial i
anume False. Dup cum se observ, comportamentul butoanelor poate fi modificat n
mai multe feluri, n funcie de nevoile utilizatorului. Descrierea comportamentului
pentru fiecare aciune se poate vedea consultnd Help-ul LabVIEW-ului i tastnd n
cmpul Search opiunea Change mechanical action. Primul item gsit este o
descriere amnunit a fiecrui tip de aciune a unui buton boolean, aa cum se arat n
fig.3.19.
Fig.3.22. Modificarea automat a numrului de intrri ale unui Array i adugarea diferitelor
tipuri de elemente la intrrile acestuia
153 II.3. Noiuni i proceduri avansate pentru programare n LabVIEW
Array deja existent va fi nevoie doar de dou intrri. Un alt aspect care trebuie
remarcat este c icoana modulului creat se schimb n momentul cnd pe o intrare se
adaug elemente tip Array.
Ieirea de la modulul Build Array se conecteaz la cel de-al doilea Array,
rezultnd o schem precum cu cea din fig.3.23.
situaie este cea n care se dorete s se adune la fiecare element al unui tablou cte un
scalar. Pentru aceasta, este suficient s se conecteze la o intrare a modulului sum
tabloul i la cealalt scalarul. Operaia este similar pentru toate operaiile matematice
de baz: scdere, nmulire, mprire.
Conform celor de mai sus, se adaug un modul de scdere la ale crui intrri
se conecteaz Array-ul iniial i media calculat. n continuare, trebuie s se ridice la
ptrat noile elemente ale Array-ului i acest lucru se realizeaz cu ajutorul unui modul
de nmulire. Se calculeaz suma elementelor obinute, care apoi se mparte la numrul
de elemente minus 1, pentru a respecta formula.
Se obine diagrama bloc din fig.3.25, care permite calculul sumei elementelor,
al mediei i al dispersiei.
Dup cum s-a mai menionat, structura Case are n mod implicit dou ramuri:
True i False. Se observ c n zona etichetei True se afl dou sgei laterale i una
orientat n jos. Indiferent de unealta cu care se lucreaz, adic indiferent de cursorul
selectat, atunci cnd se ajunge n zona etichetei cursorul se modific ntr-o sgeat cu
direcia de deplasare (stnga sau dreapta). Cu sgeile laterale se pot executa secvenial
deplasri ntre ramurile Case-ului, n timp ce prin apsarea sgeii orientat n jos, se
deschide un meniu tip pop-up, redat in fig.3.27, de unde se poate selecta ramura Case-
ului care intereseaz.
O stuctur Case se poate aduga similar
uneia For sau While. Cnd se selecteaz din
Functions subpaleta Structures i apoi Case
Structure, cursorul se transform ntr-un
dreptunghi. Se alege colul din stnga sus i apoi se
ncadreaz schema, sau poriunea dorit din schem,
n interiorul Case-ului.
Fig.3.27. Selectarea unei ramuri n
cadrul unei structuri Case
n cazul de fa va trebui s se includ toat
schema dezvoltat pentru calculul mediei i
dispersiei n cadrul buclei Case, cu excepia
butonului de comand a generrii numerelor aleatoare. Cnd butonul este apsat, se
genereaz o valoare True. Deci toat diagrama va rmne pe ramura True a Case-
ului. Pe False nu intereseaz s se ntmple un eveniment, deci se va lsa goal. n
continuare se leag butonul Genereaza la intrarea buclei Case. Diagrama final a
aplicaiei va arta ca n fig.3.28.
fost procesate n cadrul aplicaiei. Pentru a opri aplicaia, este necesar un buton tip
Stop.
Dup ce au fost adugate elementele sus-menionate, ele se aranjeaz ntr-un
mod convenabil aa cum se poate observa n fig.3.32.
Pasul urmtor este reprezentat de realizarea diagramei bloc a aplicaiei. Se are
n vedere generarea unei serii de numere aleatoare, la un interval de 200 ms.
Utilizatorul va putea interveni asupra Slide-ului, selectnd o nou baz pentru
numerele generate. Cnd se va apsa butonul Stop se vor calcula media i dispersia
numerelor i se vor afia pe ecran, dup care aplicaia se va opri.
S-au identificat cele dou etape ale aplicaiei. n prima etap se va trata partea
de generare. Pentru aceasta, se conecteaz Slide-ul Baza cu indicatorul aferent i se
adaug un modul de adunare. La una din intrrile acestuia va fi un fir de la Baza, iar
cel de-al doilea va fi conectat la un generator de numere aleatoare, dup ce, n
prealabil, a fost i acesta introdus n schem. Ieirea modulului va fi conectat att la
indicatorul digital pentru valoarea instantanee, ct i la indicatorul grafic.
Se adaug partea de
temporizare, realizat dintr-o constant
cu valoarea 200 i un Wait Untill Next
ms Multiple i se aduce butonul Stop n
vecintatea schemei.
Se ncadreaz elementele ntr-o
bucl While, care se va opri atunci cnd
va fi apsat butonul Stop. S-a obinut
astfel prima parte a diagramei i anume
partea de generare a numelor aleatoare
Fig.3.33. Generarea numerelor aleatoare redat n fig.3.33.
Dup acest pas, pentru a putea
calcula media i dispersia, trebuie s se stocheze valorile acestora ntr-un array. Se
insereaz un modul Build Array, a crui intrare se conecteaz la firul care iese din
modulul de sumare. Se observ c trecerea din interiorul spre exteriorul buclei While
se face printr-un tunel. Se execut click dreapta asupra acestuia i se activeaz
opiunea Enable Indexing, pentru a putea stoca valorile n tablou.
Spre deosebire de exemplul anterior, nu se mai concateneaz intrrile
tabloului n care vor fi stocate valorile. Pentru aceasta, trebuie s se verifice dac
opiunea Concatenate Inputs este activat n meniul pop-up care se deschide la
acionarea click dreapta n zona modulului Build Array. Dac este activ trebuie
dezactivat.
Care este diferena dintre un tablou cu intrrile concatenate i unul fr? n
cazul de fa nu este o diferen semnificativ, dar n anumite cazuri se dovedete a fi
folositoare. Pentru exemplificare, se consider dou tablouri {1,2} i {3,4,5}. Dac se
creaz un tablou folosind modulul Build Array i opiunea Concatenate Inputs este
selectat, atunci rezultatul final va fi {1,2,3,4,5}. Dac opiunea mai sus-menionat
nu este activ, atunci rezultatul va fi crearea unui tablou 2D: {{1,2,0},{3,4,5}}, n care
a fost adugat valoarea 0 pentru a se respecta dimensiunea.
159 II.3. Noiuni i proceduri avansate pentru programare n LabVIEW
Fig 3.34. Seciunea de calcul a mediei i dispersiei dup adugarea unui Build Array