Sunteți pe pagina 1din 160

Cristian Foalu

Introducere n instrumentaia virtual

Editura CERMI
Iai, 2010

CUPRINS
Prefa
Prescurtri i notaii n text
1. Introducere n instrumentaia virtual
Generalit
Structura unui instrument virtual
Funciile instrumentelor virtuale
Avantajele i dezavantajele instrumentaiei virtuale
Aplicaii de instrumentaie virtual

1
3
5
5
6
8
8
9

2. Prezentarea mediului de programare LabVIEW


Sfaturi de nceput
Exerciiul 2.1
Iniierea unei noi sesiuni de lucru
Panoul frontal
Paleta de controale i indicatoare
Exerciiul 2.2
Unelte utilizate n LabVIEW
Introducerea datelor ntr-un control
Redimensionarea unui control sau indicator
Mutarea, tergerea i copierea controalelor i indicatoarelor
Cosmetizarea unui control sau indicator
Meniul shortcut al unui control sau indicator
Butoane pentru comenzi rapide
Aciunea mecanic a controalelor booleene
Tipuri de date reprezentate n LabVIEW
Tipuri de date numerice
Alte tipuri de date n LabVIEW
Exerciiul 2.3
Diagrama de legturi
Meniul shortcut al terminalelor de pe DL
Paleta de funcii
Meniul shortcut al funciilor
Apelarea helpului n LabVIEW
Exerciiul 2.4
Exerciiul 2.5
Utilizarea testerelor
Uniti de msur
Exerciiul 2.6
Conceptul flux de date (data flow)
Exerciiul 2.7

10
11
11
14
15
15
16
17
18
19
20
21
21
25
26
27
27
30
30
33
34
35
36
36
37
40
43
43
44
45
46

3. Realizarea unui subIV


Exerciiul 3.1

48
49
I

Exerciii propuse

52

4. Operaii cu vectori, matrici i clustere


Definirea matricilor pe panoul frontal
Exerciiul 4.1
Operaii i funcii cu matrici
Extragerea unei linii sau a unei coloane dintr-o matrice
Particulariti ale funciei Build Array
Polimorfism
Exerciiul 4.2
Exerciiul 4.3
Exerciiul 4.4
Definirea clusterelor pe panoul frontal
Operaii i funcii cu clustere
Exerciiul 4.5
Clustere de erori
Manipularea erorilor

53
53
55
55
57
58
59
60
60
61
62
63
64
66
67

5. Structuri
Bucla FOR
Bucla WHILE
Autoindexarea
Regitrii de deplasare (shift register)
Structura CASE (Caz)
Structura SEQUENCE (Secven)
Nod de formule (Formula Node)
Reguli pentru variabile n noduri de formule
Exerciiul 5.1
Exerciiul 5.2
Exerciii propuse
Exerciiul 5.3
Exerciiul 5.4
Exerciiul 5.5
Exerciiul 5.6
Exerciiul 5.7
Exerciiul 5.8
Exerciiul 5.9
Exerciii propuse

69
69
70
72
73
74
75
76
77
78
79
80
80
82
83
86
88
91
92
93

6. iruri de caractere
Funcii cu iruri de caractere
Funcia Scan From String
Funcia Format Into String
Funciile duale Array to Spreadsheet String i
Spreadsheet String to Array
Exerciiul 6.1

95
96
96
97

II

98
99

Exerciiul 6.2
Exerciiul 6.3
Exerciiul 6.4
Exerciiul 6.5
Exerciii propuse
Afiarea datelor n tabele
Exerciiul 6.6
Exerciiul 6.7
Exerciii propuse

99
101
101
101
102
103
103
103
104

7. Variabile locale i globale


Exerciiul 7.1
Exerciiul 7.2
Exerciiul 7.3
Exerciii propuse

106
106
108
109
112

8. Noduri de proprieti
Exerciiul 8.1
Exerciiul 8.2

114
115
115

9. Indicatoare grafice
Waveform Graphs (WG)
Afiarea unui singur grafic pe un Waveform Graph
Afiarea de grafice multiple pe acelai Waveform Graph
Waveform Charts (WCh)
Afiarea unui singur grafic pe un Waveform Chart
Afiarea de grafice multiple pe acelai Waveform Chart
Moduri de actualizare a graficelor pe un Waveform Chart
Schimbarea atributelor indicatoarelor grafice
XY Graphs (XYG)
Afiarea unui singur grafic pe un XY Graph
Afiarea de grafice multiple pe acelai XY Graph
Exerciiul 9.1
Exerciiul 9.2
Exerciii propuse

119
119
119
120
121
121
122
123
124
125
125
125
125
131
133

10. Salvarea datelor n LabVIEW


Funcii pentru lucrul cu fiierele
Funcii de nivel nalt
Exerciiul 10.1
Exerciii propuse
Funcii de nivel sczut
Exerciii propuse

135
136
136
137
140
141
142

11. Probleme recapitulative

144

III

IV

Prefa
Lucrarea de fa reprezint un manual pentru nvarea noiunilor elementare
legate de instrumentaia virtual, n particular pentru deprinderea cu utilizarea
mediului de programare LabVIEW, produs al firmei National Instruments.
Lucrarea se adreseaz n special studenilor de la facultile cu profil electric ce au
incluse n programele de nvmnt noiuni de instrumentaie virtual, dar i
potenialilor utilizatori i proiectani de aplicaii de sisteme de msur automate i
distribuite.
Instrumentaia virtual reprezint un concept introdus de aproximativ 20 de
ani, fiind nscut din dorina utilizrii calculatorului pentru a construi un instrument
de msur. La ora actual instrumentaia virtual ctig tot mai mult teren n
special pentru aplicaii complexe, n care sunt necesare msurri concomitente a
mii de puncte, prelucrarea de cantiti mari de informaii de msur i accesul la
rezultate de la distan. Un instrument virtual este compus din dou pri: un
software dedicat care ruleaz pe o unitate de calcul, de preferat un calculator de
proces, i o seciune hardware, cu rol de interfa ntre procesul de msur i
unitatea de calcul.
Cartea de fa realizeaz introducerea n partea de programare cu ajutorul
limbajului LabVIEW, prezentnd noiunile de baz cu ajutorul crora se poate
dezvolta un program de instrumentaie virtual. Cartea nu trateaz noiuni de
comunicare cu structurile hardware, acesta fiind subiectul unui al doilea volum.
In principiu, cu ajutorul LabVIEW se poate construi orice tip de aplicaie, de la
simple operaii matematice, pn la sisteme de comunicaie sau baze de date
complexe. LabVIEW posed o serie de biblioteci care conin funcii mai simple sau
mai complexe, cu ajutorul crora utilizatorul i poate construi propria aplicaie,
chiar cu un nivel relativ redus de cunotine de programare. Tendina
productorilor programului este de a veni n ntmpinarea unei game ct mai largi
de utilizatori, pentru ca acetia s-i poat construi o aplicaie care s le satisfac
cerinele n ct mai mare msur.
Manualul este format din 10 capitole plus un capitol de probleme
recapitulative, parcurgerea lui fiind suficient pentru ca cititorul s acumuleze un
nivel de cunotine de baz care s-i permit dezvoltarea unui program general n
LabVIEW. Cartea conine o serie de exerciii rezolvate, n care utilizatorul este
condus pas cu pas spre soluie. La finalul fiecrei seciuni exist i cteva exerciii
propuse, avnd scopul de a aprofunda noiunile nvate i de a dezvolta
creativitatea cititorului.
Pentru completarea cunotinelor, recomandm i consultarea exemplelor
disponibile n LabVIEW precum i a documentaiilor de pe pagina web a firmei
National Instruments (www.ni.com) i de pe pagina portalului Connexions
http://cnx.org/content/#keyword/L/Labview.
Autorul

Prescurtri i notaii n text

PF
DL
C
I
IV
subIV
M
MD
MS
NP
RD
VL
VG
LVM
TDM
WG
WCh
XYG

Panoul Frontal
Diagrama de Legturi
Control
Indicator
Instrument Virtual
subrutin a unui Instrument Virtual
Mouse
Click pe butonul din dreapta al mouse-ului
Click pe butonul din stnga al mouse-ului
Nod de proprieti
Registru de deplasare
Variabil local
Variabil global
Format de fiier text specific LabVIEW
Format de fiier binar specific LabVIEW
Waveform Graph
Waveform Chart
XY Graph

!
)

Observaie important

- Indicaie

Capitolul 1

INTRODUCERE N INSTRUMENTAIA VIRTUAL

Generaliti
In ultimii 20 de ani, instrumentaia de msur a evoluat att n privina
performanelor, ct i a flexibilitii, n sensul nglobrii a ct mai multe funcii de
msurare pe acelai dispozitiv. Dezvoltarea tehnicilor digitale i n particular a
computerelor, a permis creterea numrului de puncte de msurare simultan prin
realizarea sistemelor de msur complexe, supervizate de calculatoare. Dac n
generaiile mai vechi erau preponderente instrumentele de msur analogice,
controlate manual prin folosirea unor butoane de pe panoul frontal, n momentul de
fa, prin dezvoltarea conceptului de instrument virtual, instrumentele de msur
sunt programe de calculator care gestioneaz interfeele dintre procesul de msurat
i computer n vederea achiziiei de date Msurtorile fcute cu aceste instrumente
sunt efectuate automat, iar utilizatorul are posibilitatea de a aduga funciuni noi
prin program sau de a modifica modul de prezentare a rezultatelor.
Dezvoltarea instrumentelor digitale dotate cu interfee de comunicare face
posibil controlul instrumentelor de msur reale nu numai manual, ci i prin
intermediul calculatorului. In generaia actual avem deci instrumentaia de msur
programabil prin computer. Utilizatorul i cldete un sistem cu mai multe
instrumente, interfaate cu un computer PC, pe care le citete secvenial pentru a
efectua msurtorile cerute de aplicaie.
La ora actual se utilizeaz combinaii de instrumente numerice programabile
de sine stttoare controlate de calculator, cu instrumente ce sunt incorporate n
calculator prin utilizarea de cartele adiionale de achiziii de date i software
adecvat. Aceste sisteme ofer mai mult flexibilitate i performane metrologice
superioare datorit faptului c instrumentul este construit ca parte component a
calculatorului, ceea ce face ca puterea de calcul i de prezentare a datelor a
computerului s poat fi folosite n operaia de msurare.
Cea mai mare parte a instrumentelor reale se limiteaz la ndeplinirea
urmtoarelor funcii principale: culegerea datelor de msur, analiza lor i afiarea
rezultatelor. Aceste funcii sunt implementate hardware n instrument, aa nct ele,
5

odat stabilite, nu mai pot fi schimbate. Dac se doresc funcii suplimentare, este
necesar modificarea structurii aparatului, cu consecine importante asupra
costului. Aa sunt construite multimetrele numerice, osciloscoapele numerice,
generatoarele de semnal, aparatele de msur a mrimilor neelectrice (termometre,
barometre, anemometre, vitezometre, etc.), aparatele specializate pe transmisia
semnalelor prin reele, .a.m.d.
In principiu, un instrument virtual (IV) este un program de calculator n
combinaie cu un dispozitiv de achiziii de date care simuleaz funciile unui
instrument real, oferind performane comparabile cu acesta. De aici i numele de
virtual.

Structura unui instrument virtual

S2

Sn

INTERFAA
PROCES

S1

BLOC DE PRELUCRARE
PRIMARA A SEMNALULUI

Structura unui IV este dat n figura 1.1. S1Sn sunt senzori ce transform
mrimile de msurat din proces n semnale electrice. Cteva exemple de senzori:
termocuple, termorezistene, accelerometre piezoelectrice, mrci tensometrice,
elemente cu ieire n tensiune sau curent unificat, etc. Deoarece mrimile de ieire
din senzori nu sunt ntotdeauna compatibile cu intrrile interfeei (de regul
tensiuni sau cureni), este necesar intercalarea unui bloc de prelucrare primar a

CALCULATOR
SOFTWARE
INSTRUMENTAIE
VIRTUALA

PROCES

Figura 1.1

semnalului, ce conine puni de c.a sau c.c., puni tensometrice, amplicatoare, filtre,
elemente de izolare, multiplexoare, surse de semnal i excitaie a punilor, circuite
de compensare a jonciunii reci, etc. Aceste elemente furnizeaz un semnal cu un
raport semnal-zgomot sczut, de tip tensiune sau curent, al crui dependen de
mrimea msurat este foarte precis cunoscut.
6

Pentru a putea comunica cu procesul msurat, calculatorul trebuie s fie dotat


cu un dispozitiv hardware adiional de interfaare. Rolul acestui dispozitiv este de a
transforma mrimea analogic de la intrare n cuvnt numeric pe baza conversiei
analog-numerice. Pe lng convertorul analog-numeric (CAN), o interfa mai
poate conine multiplexoare, amplificatoare i circuite de eantionare-memorare,
aceste elemente nefiind ns obligatorii. Transmiterea cuvntului numeric ctre
computer se poate face fie direct prin magistrala calculatorului (de cele mai multe
ori prin protocolul DMA), fie prin interfeele de comunicaie serial i paralel. La
ora actual exist o larg palet de dispozitive capabile de a converti mrimile
analogice de msurat n semnale numerice. Cteva exemple ar fi: cartelele de
achiziii de date, digitizoarele, multimetrele incorporate, modulele individuale
pentru msurri distribuite, modulele de tip PXI, etc. Acestea sunt construite cu o
autonomie mai mare sau mai mic fa de calculator, ns toate au trstura comun
de a converti semnalele analogice, din procesul real (n particular cele primite de la
blocul de prelucrare primar a semnalelor), n semnale numerice, cu o acuratee ct
mai bun.
Odat depuse n memoria calculatorului, semnalele digitizate sunt gata de a fi
prelucrate. Aici intr n funcie programul de instrumentaie virtual, ce conduce i
supervizeaz toate funciile instrumentului: achiziia, prelucrarea, stocarea, afiarea
i transmiterea la distan a informaiei de msur. Exist pe pia muli
productori de astfel de programe. La ora actual se opteaz pentru programarea
grafic, datorit accesibilitii ridicate utilizatorilor mai puin experimentai i
interfeelor prietenoase de prezentare. Se ncearc similitudinea ct mai apropiat
cu panourile frontale ale instrumentelor reale, beneficiind n plus de flexibilitate i
paleta larg de funcii abordate.
Liderul de pia incontestabil n domeniul instrumentaiei virtuale este firma
National Instruments Ltd. din SUA (www.ni.com). Aceast companie pune la
dispoziia constructorilor de aplicaii de sisteme de msur o gam uria de
dispozitive hardware dedicate msurrilor distribuite, achiziiei de date i
comunicaiilor, precum i de limbaje de programare specializate pe instrumentaia
virtual. Cel mai cunoscut este limbajul LabVIEW, care este i obiectul manualului
de fa.

Funciile instrumentelor virtuale


Spre deosebire de instrumentele reale, cele virtuale, fiind n principal bazate pe
programe de calculator, prezint un grad ridicat de flexibilitate, orice funcie
adiional fiind foarte facil de implementat cu costuri minime, prin simple
modificri de program. Funciile de baz ce pot fi dezvoltate n structura unui IV
sunt:
- achiziia automat a semnalelor obinute de la senzorii de msurare a
mrimilor electrice i neelectrice dintr-un proces, n conformitate cu
7

structura i configuraia aplicaiei, stabilite de beneficiar;


prelucrarea local, parial sau total a informaiei la punctul de msur, cu
ajutorul microsistemelor dedicate;
- stocarea datelor pe suport magnetic de tip disc dur, CD-ROM sau memorii
portabile.
- transmiterea informaiei de msur prelucrate sau n stare brut la distan,
la dispecer, prin reea local de calculatoare, Internet sau legtur fr fir
(radio sau telefonie mobil);
- afiarea i prezentarea datelor pe monitor de calculator sub form de
interfee accesibile utilizatorului, n format grafic sau numeric;
- controlul automat al procesului ai crui parametri sunt msurai prin
algoritmi numerici implementai pe calculator (pentru procese lente) sau
procesoare numerice de semnal (pentru procese rapide)
- organizarea datelor, local sau la dispecer, n baze de date sau tabele de
calculaie, cu prelucrarea specific a acestora (urmrirea unor indicatori de
eficien, de calitate, de productivitate, etc.)
Dup cum se poate observa, funciile unui instrument virtual stau la baza unei
palete mult mai largi de aplicaii dect cele ale unui instrument real. Funciile unui
instrument virtual nu trebuie s fie incluse toate n aceeai cutie, ca la instrumentul
real. Calculatorul poate prelua o parte sau chiar toate aceste funcii.
-

Avantajele i dezavantajele instrumentaiei virtuale


Instrumentaia virtual s-a dezvoltat n ultimele decenii ca urmare a progreselor
tehnologiei digitale i a dezvoltrii calculatoarelor. In consecin, avantajele acestei
tehnologii se rsfrng i asupra tehnicilor de msurare. Printre aceste avantaje
putem aminti:
- expandabilitate - posibilitatea achiziiei unui numr mare de semnale de
msur prin utilizarea de multiplexoare pe intrrile analogice;
- precizie - prelucrarea semnalelor pe cale numeric confer precizii ridicate
deoarece nu este afectat de toleranele componentelor, temperatur,
mbtrnire, zgomote, etc. Singurele limitri de acest fel sunt date de partea
analogic cuprins n senzori i blocul de prelucrare primar. Se obin
astfel precizii net superioare aparatelor analogice i comparabile cu cele ale
instrumentelor reale numerice;
- flexibilitate - adugarea unor funcii noi, cu costuri minime, prin simple
modificri de program;
- stocarea informaiei msurate n cantiti foarte mari pe suporturile de
memorie ale calculatorului, organizarea acesteia n baze de date i
prelucrare statistic;
- transmiterea la distan a datelor prin reele de calculatoare, Internet,
telefonie mobil sau radio.
8

nlocuirea instrumentelor de msur reale din procesele industriale cu cele


virtuale nu poate fi fcut ns n totalitate n momentul de fa deoarece acestea
din urm prezint totui unele neajunsuri care vor fi n viitor cu siguran depite
prin avansul tehnologiei. Aceste dezavantaje sunt date de:
- limitarea benzii de frecven a semnalelor msurate datorit limitrilor
impuse de lanul de msurare i n principal de CAN;
- costurile nc destul de ridicate.
In prezent exist digitizoare ce lucreaz cu frecvene de pn la 1000
megaeantioane/secund (Msamples/s), cu conversie pe 8 bii. Creterea rezoluiei
convertoarelor i deci a preciziei msurrii se poate face n detrimentul vitezei, deci
cu limitarea benzii de frecven. Cele mai bune performane la ora actual (nivelul
anului 2010) sunt atinse de convertoare pe 24 de bii, ce lucreaz cu frecvene de
pn la 100 MHz. Pentru prelucrarea informaiei de msur n timp real sunt
necesare ns calculatoare cu mare putere de calcul sau procesoare de semnal
specializate de tip DSP. Aceste instrumente se limiteaz doar la afiarea semnalelor
pe ecrane de tip osciloscop i la realizarea unor calcule simple, de exemplu de
aflare a valorilor maxime, medii, efective, a frecvenei i perioadei.

Aplicaii de instrumentaie virtual


Gama de aplicaii ce utilizeaz instrumentaia virtual este extrem de vast.
Datorit avantajelor oferite de acest concept, aplicaiile pot fi extinse practic n
orice domeniu al activitii umane, evident acolo unde eficiena economic justific
costurile nc destul de ridicate. Printre aceste aplicaii amintim:
- monitorizri complexe de procese industriale pentru mrimi lente, cu
transmiterea la distan a informaiei de msur i afiarea la dispecer sub
form numeric i grafic;
- operaii de frecven ridicat, unde este necesar colectarea unui numr
mare de date ntr-un timp scurt;
- operaii repetitive ca testri i calibrri automate i experimente care
ruleaz un numr mare de ori;
- operaii la distan i n medii ostile, n locuri periculoase pentru prezena
operatorului uman;
- conducere i control numeric al proceselor prin algoritmi specifici;
- operaii de precizie nalt i de lung durat, dincolo de posibilitile
manuale, ca nregistrarea traiectoriei stelelor prin telescop.

Capitolul 2

PREZENTAREA
MEDIULUI DE PROGRAMARE LABVIEW

LabVIEW este un mediu de programare grafic pentru instrumentaie virtual,


produs i dezvoltat de firma National Instruments din Austin, Texas, ncepnd cu
anul 1986. Acest mediu de programare s-a impus cu timpul datorit facilitilor
oferite pentru dezvoltarea de aplicaii de msurare, testare i control cu ajutorul
calculatorului, existnd la ora actual un numr foarte mare de integratori ce
dezvolt aplicaii n acest limbaj pe ntreg globul. LabVIEW este n principal
dedicat construirii de instrumente virtuale, avnd funcii specializate pe operaiuni
de achiziie, prelucrare, afiare i transmisie la distan a semnalelor de msur, dar
poate fi privit i ca un limbaj de programare grafic de uz general, de sine stttor.
LabVIEW este un mediu de programare foarte flexibil, dispunnd de biblioteci
puternice de funcii dedicate. Astfel, se pot concepe i dezvolta aplicaii de la cele
mai simple, ca de exemplu msurarea i afiarea unei temperaturi, pn la
programe sofisticate de testare on-line i control industrial.
Programele dezvoltate n LabVIEW se numesc instrumente virtuale (virtual
instruments sau IV-uri) i prezint extensia .vi. Aceste programe au rolul de a primi
date de la utilizator sau de la interfeele calculatorului cu procesul ai crui
parametri se msoar, de a le prelucra i apoi de a le afia, stoca sau a le transmite
la distan. Ideea constructorului limbajului este ca aceste IV-uri s semene ct mai
bine din punctul de vedere al utilizatorului cu un instrument de msur real, att ca
nfiare ct i ca funcii. LabVIEW, n cei peste 20 de ani de cnd exist, a
evoluat mult n complexitate. La ora actual, limbajul posed puternice capabiliti
de gestionare a resurselor calculatorului, n scopul opimizrii puterii de calcul, ca
i un mare numr de toolkituri, seturi de biblioteci adiionale dedicate, ce permit
programatorului dezvoltarea de aplicaii extrem de complexe.
Un IV conine urmtoarele trei elemente principale:
1. Panoul frontal
2. Diagrama de legturi
3. Pictograma cu conectorul
10

Sfaturi de nceput
nainte de a ncepe lucrul, este bine s inei cont de cteva sfaturi ce pot contribui
la uurarea activitilor de exersare a programrii n LabVIEW.
1. Cumprai-v un caiet studenesc n care vei nota la fiecare lecie operaiile pe
care le executai, lucrurile noi pe care le nvai, greelile pe care facei,
eventualele erori care apar la rularea instrumentelor, locurile unde salvai,
posibile lucruri mai greu de neles i care ar trebui reluate.
2. S avei la ndemn o memorie portabil (stick de memorie) pe care s salvai
tot ce lucrai la lecia respectiv.
3. inei cont c o problem poate avea mai multe soluii. Gsii o prim soluie,
verificai c funcioneaz, gsii-i punctele slabe i ncercai apoi s o
optimizai sau s gsii o alt soluie mai eficient.
4. O aplicaie LabVIEW este n fapt o aplicaie de programare. In principiu,
pentru a fi ct mai eficieni, ar fi bine s urmai urmtorii pai:
- Citii cu atenie textul problemei.
- Stabilii clar funciile pe care trebuie s le ndeplineasc instrumentul. Pe
baza acestor funcii, mprii aplicaia pe module (subIV-uri), care v vor
ajuta s organizai mai bine programul i s folosii aceeai funcie i n
alte aplicaii.
- Facei analiza problemei i desenai organigrama.
- Facei o analiz a controalelor i indicatoarelor de care avei nevoie i
concepei panoul frontal. Grupai obiectele de pe panoul frontal dup
funciuni.
- Pe parcursul dezvoltrii programului, verificai din aproape n aproape
funcionarea lui parial.
- Salvai variante intermediare ale programului. Dac facei o modificare n
program, salvai varianta nou sub alt nume.
Exerciiul 2.1
Scop
Familiarizarea cu elementele componente ale unui IV.
Mod de lucru
1. Lansai programul LabVIEW.
2. Deschidei fereastra de exemple din meniul Help Find Examples.
3. Deschidei exemplul Industry Applications Analysis Signal Generation and
Processing.vi.
4. Observai panoul frontal (PF) al instrumentului (figura2.1). Acest IV genereaz
dou semnale de form i frecven la alegere, le aplic o fereastr, dup care
11

semnalele sunt filtrate cu un filtre de asemenea la alegere. Pe PF se afieaz


desfurarea semnalelor n timp, cu i fr fereastra aplicat, i spectrul lor de
putere (Power Spectrum). Pe indicatorul grafic al spectrului de putere exist
posibilitatea modificrii frecvenei de tiere a filtrului (filter cutoff).

Figura 2.1

5. Rulai IV-ul de la butonul Run


.
6. Modificai forma semnalelor, a ferestrei, tipul filtrului i frecvena de tiere,
urmrind forma semnalelor nainte i dup procesare, precum i spectrul lor de
putere.
7. Deschidei diagrama de legturi (DL) a IV-ului apsnd CTRL+E sau din
submeniul Window Show Block Diagram (figura 2.2). Acesta este codul surs
al programului n limbajul LabVIEW, ce materializeaz IV-ul.
8. Observai legturile dintre nodurile grafice ale DL. De exemplu pictograma
de pe DL este un nod sub forma unei funcii care calculeaz spectrul de
putere al unui semnal. Aceast funcie este n principiu tot un IV, denumit n
continuare subIV, care este apelat de ctre instrumentul principal sub forma
unei subrutine.
9. Efectuai dublu click pe pictograma Power. In acest moment s-a deschis un nou
IV, care este format de asemenea din PF i DL. Dac deschidei DL, vei
observa c i acest subIV conine o pictogram.
12

Figura 2.2

10. In continuare, dublu click pe aceast pictogram deschide un nou subIV. Se


constat astfel construcia modular a IV-urilor n LabVIEW, un concept
extrem de util att din punct de vedere structural ct i funcional.
11. Revenii pe PF a instrumentului principal, Signal Generation and
Processing.vi.
12. Deschidei meniul View VI Hierarchy. Observai n fereastra deschis
ierarhia ntregului IV, care conine toate modulele din care acesta este format,
mpreun cu legturile funcionale dintre ele.

Realiznd un dublu click pe oricare din subIV-urile din ierarhie, se deschide PF al


acestuia mpreun cu diagrama sa de legturi.
Exist pe DL pictograme de funcii care nu materializeaz IV-uri. Aceste funcii
sunt implementate sub form de programe compilate direct n limbajul C, ale cror
coduri nu pot fi vizualizate. Un exemplu este funcia ce calculeaz maximul i
minimul elementelor unui ir
, care se gsete n subpaleta de funcii
referitoare la matrici (Array). In principiu, majoritatea funciilor apelabile prin
paletele de funcii sunt de acest gen.

13. Deschidei i alte exemple din fereastra de exemple i identificai elementele


componente ale IV-urilor. Alte exemple interesante:
Industry Applications Analysis Temperature System Demo.vi.
Industry Applications Process Control Tank Simulation.vi.
Industry Applications Process Control Control Mixer Process.vi.

13

Iniierea unei noi sesiuni de lucru


La lansarea programului LabVIEW, se deschide fereastra de start care ne permite
s iniiem un nou IV sau un nou proiect (figura 2.3). Aceast fereastr conine dou
zone: zona fiierelor (Files) i zona resurselor (Resources).

Figura 2.3

Zona fiierelor este mprit, la rndul ei, n zona de iniiere a unor fiiere noi
(New), zona de deschidere a unor fiiere deja create i salvate anterior (Open) i
eventual zona fiierelor care vor fi ncrcate n diferite dispozitive autonome pe
care ruleaz LabVIEW, cum ar fi dispozitive Real-Time, PDA-uri sau plci FPGA.
Acestea se numesc n limba englez targets, pentru utilizarea lor fiind necesar
instalarea unor toolkit-uri corespunztoare. Zona resurselor permite accesarea de
documentaii, cursuri i informaii legate de LabVIEW n principal prin Internet,
gsirea de exemple, iniierea de colaborri cu utilizatori din ntreaga lume prin
intermediul forumurilor sau realizarea unor actualizri ale programului.
Aceast fereastr poate fi evitat la lansare dac se bifeaz opiunea
SkipGetting Started Window on launch din meniul Tools Options Environment.
Diferena dintre un IV (VI) i un proiect LabVIEW (project) este aceea c
primul este reprezentat de un singur fiier cu extensia .vi care ndeplinete toate
funciile unui instrument virtual, pe cnd un proiect conine mai multe fiiere, unele
14

generate de LabVIEW, altele adugate de ctre utilizator coninnd resurse , fiiere


de date, iniializri i setri care folosesc la atingerea unui scop. In general
proiectele se creeaz cnd aplicaia este mai complex, necesitnd mai multe IV-uri
pentru implementare sau cnd se dorete ca aceasta s ruleze pe dispozitive
speciale, altele dect computerul personal, cum ar fi dispozitivele de tip FPGA
(Field Programmable Gate Array), PDA (Personal Digital Assistant) sau RT (RealTime).
In cadrul acestui manual ne vom ocupa doar de dezvoltarea de aplicaii de tip
instrument virtual singular (.vi) ce vor rula doar pe computerul personal. Pentru
informaii referitoare la dezvoltarea de proiecte sau implementarea pe dispozitive
speciale, consultai manualul de utilizare al toolkit-ului respectiv i pagina web
www.ni.com.

Panoul Frontal
PF reprezint interfaa utilizatorului cu instrumentul virtual. La deschiderea unui
IV nou, panoul frontal este vid. Pe acesta se pot aduga obiecte grafice care se
numesc controale (C) i indicatoare (I). C i I sunt terminale interactive de intrareieire a datelor. Orice control poate fi transformat n indicator i invers, prin
accesarea meniului pop-up al acestuia. Prin intermediul controalelor utilizatorul
furnizeaz date instrumentului, n timp ce indicatoarele afieaz informaiile
procesate de instrument. Un exemplu de PF este dat n figura 2.4.

Paleta de controale i indicatoare


Exist o larg varietate de tipuri i forme de controale i indicatoare. Acestea se
gsesc pe paleta de controale (Controls Palette). Accesarea acestei palete se face n
urmtoarele moduri:
a) View Controls Palette
b) MD pe PF
In cel de-al doilea mod, paleta poate fi fixat ca fereastr pe ecran prin MS
pe pioneza din colul din stnga sus a acestei ferestre. Altfel, paleta se nchide dup
realizarea unui MS oriunde pe PF.

15

Control numeric

Text

Indicator numeric

Figura 2.4

Exerciiul 2.2
Scop
Cunoaterea paletei de controale de pe panoul frontal.
Mod de lucru
1. Deschidei un nou IV.
2. Deschidei paleta de controale.
3. Trecei n revist tipurile principale de C i I oferite de palet din meniul
Modern (care se deschide n mod implicit). Observai c acestea sunt grupate
dup tipurile de date pe care le vehiculeaz:
- Numeric (Numerice)
- Boolean (Booleene)
- String & Path (Siruri de caractere i ci)
- Array & Cluster (Matrici i clustere)
- List & Table (Liste i tabele)
- Graph (Indicatoare grafice)
- Ring & Enum (Control n inel i enumerare)
- Containers (Containere)
- I/O (Controale de intrare-ieire)
16

Refnum (Numr de referin, un identificator unic atunci cnd se lucreaz


cu fiiere, directoare, dispozitive sau conexiuni la reea)
Variant & Class (Variante i clase)
Decorations (Decorri)
In afara controalelor din meniul Modern, exist i alte categorii de controale care,
n principiu, au aceleai funciuni ca cele din meniul Modern, diferind de acestea
doar prin aspect. Astfel sunt controalele din meniul System (care sunt preluate din
paleta de obiecte a sistemului de operare), cele din meniul Classic (care sunt
controale din versiunile anterioare lui LabVIEW 5.1), controale de tip Express sau
controale definite de utilizator. In continuare vom face referire doar la controalele
din meniul Modern.

Uneltele utilizate n LabVIEW


Unealta n LabVIEW este un mod de operare special al mouse-ului. Acestea se
recunosc dup forma prompterului. Uneltele de lucru se gsesc pe paleta de unelte,
care este accesibil att pe PF ct i pe DL. Deschiderea paletei de unelte se face cu
comanda View Tools Palette. Uneltele se schimb automat n funcie de poziia
prompterului pe un obiect. Uneltele se pot schimba i manual, realiznd un MS pe
semnul grafic corespunztor uneltei dorite de pe paleta de unelte. Schimbarea
manual a uneltelor se face n urmtoarele moduri:
MS pe semnul grafic de pe palet corespunztor uneltei dorite
cu tasta Tab (balans ntre uneltele principale 1), 2), 3) i 10))
cu tasta Space, balans ntre uneltele 1) i 2) pe PF sau 2) i 4) pe DL

Odat ce s-a optat pentru schimbarea manual a uneltelor, opiunea se menine


pentru toat sesiunea de lucru. Dac se dorete reactivarea schimbrii automate, se
realizeaz MS pe Automatic Tool Selection de pe palet, ca n figura 2.5.

Automatic Tool Selection


Balans ntre selectarea manual i
selectarea automat a uneltelor

Figura 2.5

In ordinea de la stnga spre dreapta i de sus n jos, uneltele au urmtoarele


semnificaii:
17

Tabelul 2.1
Nr.
1)
2)
3)
4)

5)
6)
7)
8)
9)
10)

Simbol

Denumire
Operare
(Operate value)
Selectare
(Position/size/select)
Editare
(Edit text)
Realizare legturi
(Connect wire)

Meniu shortcut
(Object Shortcut
Meniu)
Defilare
(Scroll Window)
Setare ntreruperi
(Set/Clear
Breakpoint)
Tester
(Probe Data)
Preluare culoare
(Get Color)
Selectare culoare
(Set color)

Aciune
schimbarea valorii unui C sau I sau
selectarea textului dintr-un C
selectare, poziionare, redimensionare
editare text i creare etichete libere
realizarea legturilor dintre obiectele de
pe diagram. Nu este activ pe PF dect
atunci cnd se realizeaz legturile dintre
conectorul unui subIV i obiectele de pe
PF
deschiderea meniului pop-up al unui
obiect (echivalent cu MD pe obiect)
defilarea liber a ferestrei principale
(fr utilizarea scroll-bar-ului)
selectarea unei ntreruperi n IV pe
funcii i structuri (nu e activ pe PF)
crearea unei probe de test pe un fir (nu e
activ pe PF)
copierea unei culori
paleta de culori

Introducerea datelor ntr-un control


Utilizatorul are posibilitatea s introduc date ntr-un control n mai multe moduri,
n funcie de forma i tipul controlului. Pentru controalele de tip numeric de pe PF,
exist urmtoarele posibiliti:
a) prin manipularea cu unealta de operare a micilor sgei din stnga valorii
numerice a C. La apsarea pe sgeata de sus sau pe cea de jos, valoarea lui C
incrementeaz, respectiv decrementeaz valoarea numeric cu cte o unitate
(figura 2.6);
b) prin scrierea cu uneltele 1) sau 2) a valorii dorite direct de la tastatur.

18

Selectarea valorii cu ajutorul sgeilor


de incrementare/decrementare

Figura 2.6

In cazul controalelor numerice de tip Slide sau Knob, se acioneaz cu unealta 1)


asupra cursorului ca i cum s-ar produce culisarea sau rotirea unui cursor de pe un
buton real.
La controalele de acest tip, care nu au vizibile implicit valorile numerice nscrise,
pentru introducerea datelor de la tastatur se procedeaz mai nti la afiarea
controlului de valori numerice (MD pe control i se selecteaz din meniul pop-up
Visible Items Digital Display), dup care se introduce valoarea n acest control
cu uneltele 1) sau 2).
Afiarea temporar a valorii nscrise ntr-un control Slide se face cu MS pe
cursorul controlului (figura 2.7)

Figura 2.7

Redimensionarea unui control sau indicator


Orice obiect de pe PF poate fi redimensionat utiliznd unealta 2). Modul de
redimensionare se face n funcie de tipul controlului. De exemplu, pentru un C de
tip numeric simplu, redimensionarea se face doar dup o dimensiune (lungimea
cmpului de date). Pentru un control de tip Slide sau Knob, ca i pentru controalele
booleene sau ir de caractere, redimensionarea se poate dup dou dimensiuni
astfel:
- se apropie M de marginea obiectului fr a face clic, pn cnd obiectul de
redimensionat este nconjurat de o serie de puncte denumite noduri de
redimensionare, corespunztoare direciilor dup care se face redimensionarea.
Plasarea prompterului mouseului n aceste noduri face ca acesta s ia forma
unei sgei duble (figura 2.8).
- se ine apoi apsat MS i se redimensioneaz obiectul dup dorin (drag &
drop)

19

Figura 2.8

Mutarea, tergerea i copierea controalelor i indicatoarelor


Dac se dorete mutarea unui obiect pe PF dintr-un loc n altul sau tergerea sau
copierea lui, obiectul trebuie mai nti s fie selectat utiliznd unealta 2). Selectarea
se face realiznd un MS pe obiect, caz n care obiectul apare ncadrat ntr-un
chenar punctat, ca n figura 2.9.

Figura 2.9

Mutarea se realizeaz prin simpla tragere cu M a obiectului pe suprafaa PF.


tergerea se realizeaz prin apsarea tastei Delete.
Copierea se face prin apsarea tastei Ctrl-C. In acelai mod se face decuparea
i lipirea obiectelor cu tastele Ctrl-X, respectiv Ctrl-V.

Stergerea, copierea, decuparea i lipirea unui obiect de pe PF se poate face i de pe


diagrama de legturi (DL), acionnd asupra terminalului corespunztor.
Mutarea unui terminal pe DL ns nu implic i mutarea obiectului corespunztor
pe PF. De asemenea, dac se realizeaz decuparea unui obiect pe DL, lipirea lui
trebuie s se fac tot pe DL. Nu se poate face deci decuparea pe DL i lipirea pe
PF. Dac se realizeaz copierea/decuparea unui obiect pe PF i se ncearc lipirea

20

lui pe DL, acesta va aprea ca o constant coninnd valoarea numeric a


obiectului respectiv din momentul copierii/decuprii.

Cosmetizarea unui control sau indicator


Un C sau I poate fi cosmetizat prin schimbarea culorilor formelor principale i a
textului. Schimbarea culorilor formelor se face n modul urmtor:
- se selecteaz unealta 10) i se poziioneaz pe forma care se dorete a se colora
- cu MD se alege culoarea preferat din paleta de culori
- cu MS se fixeaz culoarea
Schimbarea culorii textului:
- se selecteaz unealta 3)
- se selecteaz tot textul de editat (valoare, etichete, caption, text independent)
- se folosete butonul shortcut de setare a textului din bara de butoane de sub
bara de meniuri.

Meniul shortcut al unui control sau indicator


Acest meniu se acceseaz fie cu unealta 5), fie, mai simplu, cu MD pe obiect.
Fiecare obiect are meniul lui specific. O parte din opiunile meniului sunt ns
comune tuturor controalelor i indicatoarelor. Acestea sunt (figura 2.10):

Figura 2.10

21

Visible Items
Label etichet un cuvnt de identificare a obiectului n diagrama de
legturi. Editarea etichetei se face cu unealta 3)
Caption un cuvnt care poate fi diferit de etichet i care nsoete obiectul pe
PF. Poate fi o descriere mai lung a obiectului i nu apare pe DL. Ideea
utilizrii lui caption este de a nu ncrca inutil DL, atunci cnd denumirea
obiectului este prea lung. Pentru identificarea terminalului pe DL se folosete
eticheta.
Unit Label eticheta unitii de msur. Apare doar dac se lucreaz cu uniti
de msur.
Radix formatul de scriere a numrului (zecimal, binar, octal). Este specific
doar C i I numerice.
Increment/Decrement (numai pentru C) afiarea sau nu pe PF a sgeilor de
incrementare/decrementare a coninutului controlului, aflate n stnga valorii
numerice.
Find Terminal Apsnd MS pe aceast opiune, se deschide DL iar terminalul
corespunztor clipete pentru identificarea lui.
Change to Indicator (Control) transform C n I i invers.
Description and Tip permite editarea descrierii obiectului n seciunea de
documentare a IV-ului.
Create
Local Variable creeaz automat o variabil local cu numele etichetei
obiectului
Property Node - creeaz automat un nod de proprieti, pentru modificarea
programatic a proprietilor obiectului
Reference creeaz automat o referin pentru obiectul pe care l reprezint
Invoke Node - creeaz automat un nod de invocare atunci cnd se realizeaz
aciuni sau metode asupra unei aplicaii sau a unui IV.
Replace deschide paleta de controale pentru a permite nlocuirea obiectului cu un
altul.
Data Operations
Reinitialize to Default Values reiniializeaz controlul cu valoarea implicit.
Dac nu se specific altfel, valoarea implicit este 0 la controalele numerice,
FALSE la cele booleene, irul vid la iruri de caractere, etc.
Make Current Value Default stabilete ca implicit valoarea curent
DataSocket Connection stabilete o legtur de tip DataSocket cu obiectul
Cut, Copy, Paste Data decupeaz, copie sau lipete datele din i n alt obiect
Advanced
Key Navigation atribuie o cheie pentru accesul de la tastatur a C n timpul
22

rulrii. Dac C este de tip numeric, prin tastarea cheii atribuite se permite
schimbarea de la tastatur a valorii C. Dac este de tip boolean, se basculeaz
ntre TRUE i FALSE.
Synchronous Display afieaz valoarea obiectului sincron cu rularea
instrumentului, la fiecare actualizare a lui. Se utilizeaz mai ales la indicatoare
grafice, cnd se creeaz animaie.
Customize deschide meniul de personalizare a obiectului. Dac se dorete ca
un C sau I s arate altfel dect este cel din palet (de ex. s fie mai mare, s
scrie cu alte caractere, alte culori, etc.), nseamn c se creeaz un C sau I
personalizat. Dup editarea dup dorin, acesta se salveaz ntr-un fiier cu
extensia .ctl care se depune n directorul user.llb. Obiectul poate fi adus n
orice moment pe PF din paleta de controale ca orice alt obiect predefinit,
utiliznd submeniul User Controls.
Hide Control (Indicator) ascunde obiectul de pe PF, dar terminalul rmne
pe DL. Pentru ca acesta s fie din nou vizibil pe PF, se acceseaz n meniul
pop-up de pe DL, Show Control (Indicator).
- Enabled State valideaz starea de activare a obiectului. Se refer numai
la C.
- Enabled activ. Permite introducerea datelor de ctre operator.
- Disabled inactiv. Nu permite introducerea datelor.
- Disabled & Garyed inactiv i reprezentat n tonuri de gri.

Fit Control to Pane redimensioneaz obiectul dup toate dimensiunile permise


astfel nct acesta s se ncadreze complet n panoul frontal.
Scale Object with Pane redimensioneaz obiectul proporional cu dimensiunile
panoului frontal. Modificarea dimensiunilor PF duce la modificarea proporional a
obiectului.
In afara opiunilor de mai sus, care sunt comune tuturor controalelor, exist i o
serie de opiuni specifice, dependente de tipul controlului. Mai jos sunt date
opiunile pentru controalele de tip numeric.
Representation se deschide o palet n care se specific tipul de date numerice pe
care le vehiculeaz obiectul (v. tipuri de date).
Data Range deschide fereastra de proprieti a obiectului pe meniul Data Range,
n care se specific (figura 2.11):
1. Valoarea implicit a controlului. Cu aceast valoare se iniializeaz controlul la
ncrcarea IV-ului. Valoarea implicit se poate schimba cu opiunea Make
Current Value Default din meniul shortcut al acestuia.
2. Tipul de date numerice vehiculat de control.
3. Valoarea minim pe care o poate lua obiectul. Aceasta poate fi implicit
valoarea dat de reprezentarea numrului pe octei n concordan cu tipul de
date vehiculat, sau o valoare stabilit de utilizator. Dac se introduce o valoare
23

mai mic dect valoarea minim, exist dou posibiliti (specificate n


cmpurile din dreapta)
- valoarea introdus s fie limitat la valoarea minim (Coerce)
- valoarea introdus s fie ignorat (Ignore)

3
4
5

Figura 2.11

4. Valoarea maxim pe care o poate lua obiectul, cu aceleai observaii ca la


specificarea valorii minime.
5. Valoarea cu care C i incrementeaz sau i decrementeaz coninutul la
apsarea sgeilor din stnga valorii numerice cu unealta de operare.
Format & Precision - stabilete formatul i precizia de afiare a numerelor pe
displayul digital al obiectului. Formatul poate fi:
Floating point (virgul mobil), la care reprezentarea se face sub forma
unui ntreg urmat de un numr de zecimale, attea cte sunt
specificate n cmpul Digits. Tipul preciziei (Precision Type)
specificat n cmpul Digits poate fi:
- sub forma de numr de cifre dup virgula zecimal (Digits of
Precision)
- sub form de numr de cifre semnificative (Significant Digits).
Dac numrul are mai multe cifre dect numrul de cifre
semnificative specificat, valoarea lui este rotunjit sau trunchiat la
numrul de cifre semnificative.
Scientific, la care reprezentarea se face sub forma unui numr n virgul
mobil nmulit cu 10 la o putere. Exemple: 1.24E+2, 2.579E-3.
24

SI notation, la care numrul este reprezentat sub form de multipli sau


submultipli ai unei uniti de msur n sistemul internaional.
Exemple: 1.24m, 3.519M, 2.4n.
Automatic formatting, la care formatarea numrului se face automat fie n
floating point,, fie n scientific, n funcie de mrimea lui.
Dac numrul este ntreg, pe lng posibilitile de mai sus, acesta mai poate fi
reprezentat n hexazecimal, octal sau binar.
Coninutul unui control (indicator numeric) poate fi interpretat i ca informaie
de timp, caz n care numrul este reprezentat n dou moduri:
Absolute time, n care numrul, convertit la ntreg, reprezint numrul de
secunde scurs de la data timpului universal, 1 ianuarie 1904
(01.01.1904), ora 2.00. In acest caz controlul (indicatorul) afieaz
numrul convertit n or i dat. Exist posibilitatea de stabilire a
formatului de afiare a orei i a datei.
Relative time, n care numrul este convertit n ore, minute i secunde
scurse de la timpul 0.

a) Toate opiunile de mai sus se refer doar la modul n care numrul este afiat pe
displayul digital al controlului, i nu la reprezentarea lui n calculator, care este
dat de tipul de dat specificat n Representation.
b) C sau I din paleta de controale numerice de tip slide, bar, knob, dial, meter,
gauge, tank, thermometer au posibilitatea de a afia i numeric valoarea
introdus, apelnd n meniul shortcut Visible Items Digital Display. Displayul
digital prezint un meniu shortcut diferit de cel al obiectului pe care l
reprezint.
c) Controalele de la punctul b) mai prezint n meniul shortcut o opiune intitulat
Text Labels. Apelnd aceast opiune, controlul devine automat de tip U32 (v.
tipuri de date), fiecrei valori ntregi atribuindu-i-se un text. Textele pot fi
editate cu unealta 3).
d) In afara opiunilor prezentate, fiecare C sau I are i alte opiuni specifice.

Properties este o opiune comun tuturor C i I, care reunete ntr-o singur


fereastr cu mai multe Tab-uri, toate opiunile din meniul shortcut al obiectului.

Butoane pentru comenzi rapide


Att pe panoul frontal ct i pe diagrama de legturi, n partea de sus a ferestrei,
sunt disponibile o serie de butoane prin care se furnizeaz comenzi programului
sau se execut diverse operaiuni de editare texte sau grupare de obiecte. In figura
2.12 este dat bara butoane pentru panoul frontal. Acestea sunt:
1. Run (rularea instrumentului)

25

2. Run continuously (rulare continu). Dup terminarea primei rulri a


programului, aceasta se reia n mod automat pn ct se apas butonul Abort
execution.
3. Abort execution (STOP de urgen). Oprete imediat rularea programului, n
orice faz de execuie s-ar afla.

Figura 2.12

4. Pause (Pauz). Oprete temporar instrumentul ntr-un nod. Se folosete pentru


depanare, cnd se urmrete evoluia unor variabile. La apsarea butonului, se
trece automat pe diagrama de legturi i se indic prin ncadrarea ntr-un
chenar clipitor a nodului ce urmeaz a fi executat.
5. Text settings (Fixarea parametrilor de text). Se stabilesc tipurile caracterelor
textelor, mrimea, stilul, alinierea, culoarea lor. Se selecteaz n prealabil textul
dup care se fac modificrile dorite.
6. Align objects (Aliniaz obiectele). Se realizeaz selectarea obiectelor ce se
doresc a fi aliniate, dup care se opteaz pentru aliniere relativ la marginile
laterale sau centru.
7. Distribute objects (Distribuie obiecte). Se realizeaz amplasarea obiectelor
ntr-o arie selectat n funcie de distana dintre ele.
8. Resize objects (Redimensionare obiecte). Se realizeaz redimensionarea
automat a obiectelor n funcie de distana dintre ele.
9. Reorder (Rearanjare). Se pot realiza grupri/degrupri de obiecte, ancorarea n
fereastr, aducerea n plan apropiat sau n plan ndeprtat a obiectelor
suprapuse.

Aciunea mecanic a controalelor booleene


Controalele de tip boolean arat i se comport pe panoul frontal ca nite
comutatoare electromecanice. Pentru a simula ct mai bine funcionalitatea
acestora, ele pot fi configurate n funcie de modul cum i schimb starea la
apsare. Exist 6 tipuri de aciuni mecanice, selectabile din meniul shortcut al
controlului, opiunea Mechanical Action.
26

Tabelul 2.2
Comutare la apsare
(Switch When Pressed)
Comutare la eliberare
(Switch When Released)
Comutare pn la
eliberare
(Switch Until Released)

Zvorre la apsare
(Latch When Pressed)

Zvorre la eliberare
(Latch When Released)
Zvorre pn la
eliberare
(Latch Until Released)

Schimb valoarea controlului la apsare cu unealta


de operare. Aciunea e similar cu cea a unui
comutator de lumin. Citirea valorii comutatorului
de ctre instrument nu i afecteaz starea.
Schimb valoarea controlului atunci cnd se ia
degetul de pe butonul mouse-ului (cnd se
elibereaz butonul). Citirea valorii comutatorului
de ctre instrument nu i afecteaz starea.
Schimb valoarea controlului la apsare i o reine
atta timp ct controlul este apsat. La eliberare se
revine la vechea valoare. Aciunea e similar cu
apsarea pe un buton de sonerie. Citirea valorii
comutatorului de ctre instrument nu i afecteaz
starea.
Schimb valoarea controlului la apsare cu unealta
de operare i reine noua valoare pn la prima
citire a controlului de ctre instrument, cnd se
revine la valoarea iniial. Aciunea este aceeai
chiar dac se ine sau nu apsat butonul mouseului. Aciunea e similar cu cea a unei sigurane
automate. Se utilizeaz n bucle WHILE pentru
butonul de stop.
Schimb valoarea controlului la eliberarea
butonului mouse-ului. Valoarea este reinut pn
la prima citire a controlului de ctre instrument,
cnd se revine la valoarea iniial.
Schimb valoarea controlului la apsare i o reine
pn la prima citire sau pn cnd se elibereaz
butonul mouse-ului, care operaie se execut
ultima.

Tipuri de date reprezentate n LabVIEW


Informaia vehiculat n IV-urile construite n LabVIEW se prezint sub forma
unei largi varieti de tipuri de date. Cele mai importante sunt datele numerice, dar
i alte tipuri cum ar fi booleenele, irurile de caractere sau clusterele sunt de
asemenea foarte utilizate. Mai jos sunt date tipurile de date numerice precum i
celelalte tipuri de date care sunt n mod obinuit utilizate n construcia IV-urilor.

Tipuri de date numerice


Tipul de dat numeric se stabilete din opiunea Representation a meniului
shortcut. La aducerea pe PF a unui C sau I, reprezentarea lui implicit este de tip
27

Real dubl precizie. Paleta de tipuri din opiunea Representation este dat n
figura 2.13, iar semnificaiile fiecrui tip de dat sunt date n tabelul 2.3.

Figura 2.13
Tabelul 2.3

Simbol
pe
diagram

Tip dat
numeric

Reprezentare
n memorie
(nr. bii)

Nr. zecimale

Real
Precizie
extins

80 n Windows
(depinde de
platform)

15 33,
depinde de
platform

Real
Dubl
precizie

64

15

Real
Simpl
precizie

32

28

Interval de
reprezentare
Val. minim pozitiv:
6,48E-4966
Val. maxim pozitiv:
1,19E+4932
Val. maxim negativ:
- 1,19E-4932
Val. minim negativ:
- 6,48E-4966
Val. minim pozitiv:
4,94E-324
Val. maxim pozitiv:
1,79E+308
Val. maxim negativ:
- 1,79E+308
Val. minim negativ:
- 4,94E-324
Val. minim pozitiv:
1,40E-45
Val. maxim pozitiv:
3,40E+38
Val. maxim negativ:
- 3,40E+38
Val. minim negativ:
- 1,40E-45

Intreg
Quad cu
semn
Intreg
Long cu
semn
Intreg
Word cu
semn
Intreg Byte
cu semn
Intreg
Quad fr
semn
Intreg
Long fr
semn
Intreg
Word fr
semn
Intreg Byte
fr semn
Complex
Precizie
extins
Complex
Dubl
precizie
Complex
Simpl
precizie

64

18

Val. minim : -1E+19


Val. maxim : 1E+19

32

De la 2.147.483.648
pn la 2.147.483.647

16

De la -32,768 pn la
32,767

2 (cifre
semnificative)

De la -128 pn la 127

64

19 (cifre
semnificative)

De la 0 pn la 2E+19

32

9 (cifre
semnificative)

De la 0 pn la
4,294,967,295

16

4 (cifre
semnificative)

De la 0 pn la 65,535

2 (cifre
semnificative)

De la 0 pn la 255

256

15 33

128

15

64

Partea real i partea


imaginar la fel ca la
real precizie extins
Partea real i partea
imaginar la fel ca la
real dubl precizie
Partea real i partea
imaginar la fel ca la
real simpl precizie

Atunci cnd se leag date numerice de reprezentri diferite la intrrile aceleiai


funcii, LabVIEW furnizeaz rezultatul de tipul cel mai lung. Dac ambele intrri
au acelai numr de bii dar sunt de reprezentri diferite (de ex. U32 i I32),
LabVIEW furnizeaz rezultatul fr semn. In exemplul din figura 2.14, adunarea
dintre un numr real n reprezentare dubl precizie (8 octei) ai un numr ntreg cu
semn pe 4 octei I32 d un rezultat corespunztor numrului mai lung, deci real
dubl precizie. Aceast operaie se numete constrngere, iar operandul constrns
este marcat printr-un punct la intrarea n funcie.

punct de constrngere
Figura 2.14

29

Alte tipuri de date n LabVIEW


Tabelul 2.4

Simbol pe
diagram

Tip dat

Culoare

Boolean

Verde

Sir de caractere (string)

Roz

Enumerare

Albastru

Vector sau matrice (array). Include ntre


paranteze tipul de date al elementelor
componente.
Ciorchine (cluster). Include mai multe
tipuri de date. Simbolul este maro dac
datele sunt de acelai tip i roz dac datele
sunt de tipuri diferite
Cale (path)

Culoarea tipului de
dat al elementelor
componente.
Maro sau roz

Form de und (waveform). Include t0


momentul nceperii achiziiei, dt
incrementul i vectorul de date.
Numr de referin (Reference number sau
Refnum)
Variant. Include numele controlului sau
indicatorului, informaii despre tipul de date
i datele propriu-zise.
Nume de intrare ieire (I/O name)

Maro

Forme grafice (Picture)

Aqua

Aqua
Mov
Mov
Albastru

Exerciiul 2.3
Scop
Familiarizarea cu funcionalitatea uneltelor de pe panoul frontal, introducerea
datelor ntr-un control, poziionarea, redimensionarea, cosmetizarea, meniul
shortcut.
Mod de lucru
1. Deschidei un nou IV.
2. Deschidei paleta de controale.
30

3. Aducei pe PF primul control de tip numeric.


4. Redenumii eticheta Control numeric utiliznd unealta de editare text 3)

Observai c la aducerea controlului pe PF, se permite redenumirea etichetei. Dac


se face MS oriunde pe PF, se pierde acest drept, iar controlul rmne cu eticheta
implicit (Numeric). Pentru redenumirea etichetei se folosete unealta 3).

5. Modificai fonturile valorii numerice a controlului utiliznd bara de comenzi


rapide Text Settings (figura 2.15), dup urmtoarea schem: size: 24, style:
bold, color: rou.

Figura 2.15

6. Experimentai modificarea valorii controlului utiliznd sgeile de


incrementare/decrementare.
7. Introducei n control valoarea: 2.49216 de la tastatur n modul urmtor:
poziionai prompterul n interiorul displayului numeric al controlului.
Dac pe paleta de unelte, Automatic Tools Selection este activ (beculeul
verde este aprins), vei observa c prompterul se schimb automat n
unealta de editare text 3). Dac selectarea uneltelor se face manual
(Automatic Tools Selection este inactiv), selectai unealta 1) sau unealta 3).
Scriei de la tastatur valoarea 2.49216 i apoi apsai tasta Enter.
8. Cu aceeai unealt 3), poziionai prompterul dup cifra 9.
9. Apsai sgeile de defilare sus/jos de pe tastatur. Vei observa
incrementarea/decrementarea valorii sutimilor. Realizai acelai lucru i pentru
modificarea miimilor, etc. Aceasta este o metod de reglaj fin al unui control
numeric.
10. Deschidei i studiai meniul shortcut al controlului.
11. In opiunea Data Range, debifai Use Default Range.
12. Scriei la Increment valoarea 0.01 i apsai OK.
31

13. Manevrai sgeile de incrementare/decrementare ale controlului i observai


modul n care se schimb valoarea acestuia.
14. Bifai din nou opiunea Use Default Range.
15. Modificai precizia de afiare la dou zecimale. Observai modul n care se face
trunchierea numrului.
16. Experimentai reprezentarea numrului n formatele scientific i SI notation, cu
diferite zecimale i cifre semnificative.
17. Introducei de la tastatur numrul 2.5.
18. Stabilii din opiunea Format and Precision numrul de zecimale 0. Observai
modul n care se face trunchierea.
19. Introducei de la tastatur numrul 3.5 i observai din nou cum se face
trunchierea.

Ca regul, dac valoarea unei zecimale este exact 0,5 din valoarea poziiei imediat
anterioare, programul rotunjete ntotdeauna la numrul par cel mai apropiat. De
exemplu 7,5 este rotunjit la 8, iar 8,5 este rotunjit tot la 8.

20. Selectai controlul utiliznd unealta de selectare 2).


21. Experimentai repoziionarea lui, tergerea, decuparea, copierea.

In cazul n care s-a executat o comand nedorit sau se dorete la revenirea unei
comenzi anterioare, exist Undo n meniul Edit sau se tasteaz Ctrl-Z.

22. Experimentai redimensionarea controlului.


23. nlocuii controlul numeric de mai sus cu un control de tip knob utiliznd
opiunea Replace din meniul shortcut.
24. Experimentai redimensionarea acestui control. Observai c se permite
redimensionarea att a butonului rotativ, ct i a scalei.
25. Afiai displayul digital al controlului din meniul shortcut, opiunea Visible
Items Digital Display.
26. Displayul digital are propriul meniu shortcut. Deschidei-l i observai diferena
fa de meniul controlului propriu-zis.
27. Modificai valorile capetelor de scal ntre valorile -100 i 100 cu ajutorul
uneltei de editare a textului, 3).
28. Din meniul shortcut, experimentai opiunile submeniului Scale.

Opiunea Format & Precision de pe meniul shortcut a controlului este aceeai cu


cea a displayului digital. Opiunea Format & Precision a scalei se refer la modul
cum se face inscripionarea diviziunilor semnificative doar ale scalei.

29. Adugai controlului un nou ac indicator cu opiunea Add Needle din meniul
shortcut. Acum controlul seamn cu un poteniometru dublu. Observai
apariia celui de-al doilea display digital. Valorile furnizate de acest control
sunt reunite ntr-un cluster.
30. Adugai i alte controale pe panoul frontal i studiai-le meniul shortcut,
posibilitile de redimensionare, scalele, etc.
32

Diagrama de legturi
Diagrama de legturi (DL) reprezint programul propriu-zis dezvoltat n mediul
LabVIEW i conine codul surs al instrumentului virtual. Fiecare obiect de pe PF
(C sau I) are un corespondent pe DL, care se numete terminal. Scrierea codului
surs const n realizarea de legturi sub form grafic ntre aceste terminale i
diverse funcii, astfel nct IV-ul s satisfac cerinele impuse.
De pe PF, deschiderea DL se face n urmtoarele moduri:
din meniul Window Show Block Diagram
dublu clic pe orice C sau I de pe PF
apsarea tastei Ctrl-E
de pe bara de programe
De pe DL, trecerea spre PF se face n modul urmtor:
din meniul Window Show Front Panel
dublu clic pe orice terminal de pe DL
apsarea tastei Ctrl-E
de pe bara de programe
O DL conine urmtoarele elemente:
- terminale
- noduri
- fire de legtur
- structuri
Terminalele sunt porturi de intrare-ieire ce fac legtura dintre PF i DL. Ele sunt
corespondentele obiectelor de pe PF i se reprezint pe DL printr-un simbol care
este n concordan cu tipul de dat vehiculat de obiect. Terminalele pot fi terse
de pe DL doar odat cu obiectul de pe PF. Mutarea unui terminal pe DL nu
conduce la mutarea obiectului corespunztor de pe PF. Terminalele cu conturul
ngroat corespund controalelor, iar cele cu conturul subire corespund
indicatoarelor de pe PF.
Nodurile sunt obiecte de pe DL care sunt caracterizate de un numr de intrri/ieiri
i execut diverse operaii i funcii n timpul rulrii IV-ului. Nodurile sunt analoge
instruciunilor, funciilor i subrutinelor din limbajele de programare bazate pe text.
Firele de legtur transfer datele ntre obiectele de pe DL. Fiecare fir are o
singur surs de date, dar orict de muli receptori. Firele au diferite culori, stiluri
i grosimi ce depind de tipurile de date vehiculate. Un fir rupt, ce nu poate
transporta date, se reprezint printr-o linie ntrerupt. Un fir cu dou surse de date
este un fir rupt.
Structurile sunt reprezentri grafice ale instruciunilor de ciclare i condiionare
din programarea bazat pe text. Se utilizeaz pentru repetarea unor blocuri de cod
sau pentru execuia unor coduri condiionat sau ntr-o anumit ordine.
33

Firele de legtur au diverse forme, grosimi i culori n funcie de tipul datelor


vehiculate prin acestea. In tabelul 2.5 sunt date principalele tipuri de fire ce
vehiculeaz date ntr-un IV.
Tabelul 2.5

Scalar, boolean, enumerare, numr de


referin. Culoarea depinde de tipul de dat
Vector (matrice cu o dimensiune). Culoarea
depinde de tipul elementelor componente.
Matrice multidimensional. Culoarea depinde
de tipul elementelor componente.
Cluster, variant
Form de und
Toate celelalte tipuri de date.

Meniul shortcut al terminalelor de pe DL


Pe DL, accesarea meniului shortcut se face n acelai mod ca i pe PF. Exist ns
unele diferene ntre meniul obiectului de pe PF i cel al terminalului corespunztor
de pe DL. Cteva din acestea sunt:

n submeniul Visible Items este accesibil doar eticheta

Hide Control (Indicator) face ca obiectul corespunztor s nu apar pe PF.


Dac obiectul este deja ascuns, opiunea se transform n Show Control
(Indicator).

Change to Constant schimb terminalul n constant, care este vizibil i


accesibil doar pe DL. La accesarea acestei opiuni, obiectul de pe PF dispare.

Create: Constant, Control sau Indicator creeaz automat tipul de obiect


corespunztor terminalului. Aceast opiune este deosebit de util la
construirea terminalelor corespunztoare ieirilor sau intrrilor unor funcii la
care nu se cunoate exact tipul de dat. Prin crearea terminalului se realizeaz
automat i legtura cu acesta. Dac, de exemplu, la ieirea unei funcii se
selecteaz Create Control, terminalul se creeaz, dar nu se realizeaz legtura
deoarece firul ar avea dou surse: ieirea funciei i controlul creat.

Create: Local Variable, Reference, Property Node, Invoke Node creeaz


automat o variabil local, o referin, un nod de proprieti sau un nod de
invocare relativ la C/I n cauz.
34

Paleta de funcii
Paleta de funcii este o fereastr ce se deschide doar de pe DL. Aceasta conine
operatori, funcii, noduri, structuri i subIV-uri cu ajutorul crora se construiete
programul n LabVIEW. Accesarea paletei de funcii se face n modurile
urmtoare:

View Show Functions Palette


MD pe DL.

In cel de-al doilea mod, paleta poate fi fixat ca fereastr pe ecran prin MS pe
pioneza din stnga sus a acestei ferestre. Altfel, paleta se nchide dup realizarea
unui MS oriunde pe DL. Paleta de funcii este prezentat n figura 2.16.

Figura 2.16

35

Funciile pe palet sunt grupate dup destinaia lor. Cele mai utilizate sunt cele
din subpaleta Programming, care se expandeaz n mod implicit. Celelalte sunt
biblioteci care pot fi apelate de ctre utilizator la construirea de aplicaii dedicate.
De exemplu, dac se realizeaz un IV necesar procesrii unor semnale achiziionate
n prealabil, se utilizeaz funcii din subpaleta Signal Processing. Dac este necesar
un aparat matematic complex, avem la dispoziie biblioteca Mathematics. Multe
din aceste subpalete nu sunt populate cu funcii. Adugarea de biblioteci acestor
subpalete se face prin instalarea toolkit-urilor dedicate puse la dispoziie de
National Instruments. Obiectul cursului de fa este studierea modului de apelare i
de utilizare a unor funcii doar din subpaleta Programming.
Exist o mare varietate de funcii n LabVIEW. Diversitatea i compexitatea
acestora crete pe msur ce National Instruments scoate noi variante ale
limbajului de programare.

Meniul shortcut al funciilor


Fiecare funcie are disponibil un meniu shortcut, cu ajutorul cruia se stabilesc o
serie de parametri, se pot vizualiza etichete (funcia poate fi etichetat, la fel ca
orice terminal), se poate apela helpul mare, se pot vizualiza exemple, se pot face
descrieri ale funciei sau se pot stabili punct de ntrerupere n vederea depanrii
programului. Aceste opiuni sunt comune tuturor funciilor, n prima parte a
meniului, prin opiunile:
Visible Items
Help
Examples
Description and Tip
Set Breakpoint
Pe lng acestea, mai exist o serie de opiuni specifice fiecrei funcii. O opiune
comun mai este Replace, prin care se permite utilizatorului nlocuirea funciei cu
o alta prin deschiderea automat a paletei de funcii.

Meniul shortcut al funciei poate diferi de meniul shortcut al intrrilor i ieirilor.


Intrrile i ieirile conin n meniu opiunea Create, prin care utilizatorul poate
crea automat tipul de dat vehiculat de intrarea/ieirea respectiv.
Un caz particular de funcii n reprezint structurile, la care meniul shortcut se
deschide prin realizarea unui MD pe marginea cadrului structurii.

Apelarea helpului n LabVIEW


LabVIEW prezint un puternic sistem de helpuri prin care utilizatorul este ghidat i
ndrumat n activitatea de programare. In plus, utilizatorul are la dispoziie un
numr mare de exemple, grupate pe categorii de aplicaii, n care sunt
36

exemplificate diverse situaii de operare a unor funcii i n care se pot gsi de


multe ori soluii tehnice. Att helpurile, ct i exemplele, sunt disponibile n meniul
principal Help, accesabil att de pe PF ct i pe DL. De remarcat faptul c National
Instruments pune la dispoziie o bibliotec a utilizatorilor accesibil pe Internet
denumit LabVIEW Zone, n care dezvoltatorii de instrumente virtuale pot gsi
soluii la problemele lor, dar pot oferi ei nii soluii prin posibilitatea de a posta n
aceast bibliotec propriile IV-uri. Local, exist dou tipuri de helpuri ale
programului:
helpul mic, apelabil din meniul principal Help Show Context Help, prin
care se deschide o fereastr permanent n care se afieaz informaii
sumare despre funcia de pe DL sau obiectul de pe PF. Informaia este
afiat doar la suprapunerea prompterului mouse-ului peste acel obiect sau
funcie (fr a se face clic). De asemenea, helpul mic furnizeaz informaii
despre funciile din paleta de funcii la simpla accesare a acestora cu
mouse-ul.
helpul mare, specific doar funciilor de pe DL, apelabil din meniul
shortcut al funciei (MD pe funcie), opiunea Help. Helpul mare se mai
poate deschide i apsnd pe linkul Detailed help din helpul mic. Aici se
dau informaii mai detaliate privind funcia, inclusiv exemple sau aplicaii.

C i I de pe PF afieaz n fereastra helpului mic textul care a fost introdus n


opiunea Description and Tip din meniul shortcut.

Exerciiul 2.4
Scop
Trecerea n revist a funciilor principale din paleta de funcii.
Mod de lucru
1.
2.
3.
4.

Deschidei un nou IV.


Deschidei diagrama instrumentului.
Deschidei paleta de funcii i fixai-o pe diagram.
Trecei n revist funciile din submeniul Programming (cele care se deschid pe
palet n mod implicit). Observai c funciile sunt grupate n subpalete, fiecare
subpalet coninnd funcii specifice. Acestea sunt:
Structures conine funcii legate de structuri
Array conine funcii de prelucrare a matricilor. Aceste funcii nu sunt
dedicate operaiilor cu matrici, care se gsesc n subpaleta Mathematics
Linear Algebra.
Cluster & Variant conine funcii de creare i manipulare a clusterelor i de
conversie i manipulare a datelor de tip variant (variant).
37

Numeric conine operaii i funcii cu numere reale i complexe.


File I/O conine funcii i subIV-uri de scriere i citire a datelor n i din
fiiere.
Boolean conine operaii logice cu numere n sistem boolean.
String este subpaleta ce conine funcii de manipulare a irurilor de
caractere.
Comparison conine funcii de comparare a datelor de tip numeric,
boolean, ir de caractere, matrici i cluster.
Timing conine subIV-uri i funcii de determinare a vitezei de efectuare a
unor operaii n raport cu un timp de referin sau de citire a datei i orei
calculatorului.
Dialog & User Interface permite implementarea unor interfee de
comunicare cu utilizatorul n scopul introducerii interactive a datelor sau
furnizrii de instruciuni.
Waveform conine subIV-uri i funcii de construire a datelor de tip form
de und (waveform), ce cuprind eantioane i atribute (informaii despre
canalele de achiziie, timp), precum i recuperarea acestor informaii n
scopul procesrii.
Application Control ofer posibilitatea controlului programatic al IV-urilor
i al altor aplicaii pe computerul local sau prin reea.
Synchronization conine funcii necesare sincronizrii mai multor sarcini de
efectuat n acelai timp, precum i transferului de date ntre aceste sarcini.
Graphics $ Sound permite personalizarea afirii datelor sub form grafic,
importul i exportul informaiei din fiiere grafice precum i nregistrarea i
redarea sunetului.
Report Generation faciliteaz construirea de rapoarte.
5. Citii helpul fiecrei subpalete.
6. Deschidei meniul Mathematics i trecei n revist subpaletele i funciile
componente.
7. Deschidei meniul Signal Processing i observai funciile dedicate procesrii
semnalelor.

Unele subpalete se gsesc n mai multe locuri n paleta de funcii. De exemplu,


subpaleta de funcii numerice Numeric se gsete att n subpaleta Programming,
ct i n subpaleta Mathematics.

8. Gsii i alte subpalete localizate n mai multe locuri n paleta de funcii.


9. Plasai pe DL operatorul Add din subpaleta Numeric.
10. Suprapunei prompterul peste una din intrri. Dac este activat selectorul
automat de unelte, prompterul se va schimba n unealta de legturi
.
Observai cum intrarea este semnalizat prin clipire. Realizarea unui MS pe
intrare cu unealta de legturi duce la iniierea unui traseu de date.
11. Deschidei helpul mic, apoi helpul mare ale funciei Add i studiai-le.
12. Plasai pe DL funcia Search and Replace String din submeniul String.
38

13. Trecei prompterul peste aceast funcie. Observai n helpul mic pictograma
funciei i conectorul acesteia. Comparativ cu funcia Add, aceast funcie este
mai complex, avnd mai multe intrri i ieiri. Citii n help destinaia funciei
i modul de utilizare a intrrilor.
14. Trecei prompterul peste fiecare intrare i ieire. Observai cum acesta se
schimb n unealta de legturi i de asemenea apare denumirea fiecrei intrri.

Intrrilor ale cror nume sunt scrise cu aldine (bold) trebuie legate obligatoriu n
diagram, altfel programul d eroare. Intrrile care nu sunt scrise cu aldine pot sau
nu s fie legate pe diagram. Dac sunt legate, ele vor utiliza datele care sunt
disponibile prin legturi. Dac nu sunt legate, se vor utiliza valorile implicite
(indicate ntre paranteze).

15. Realizai un dublu click pe funcia Search and Replace String. Observai c nu
se ntmpl nimic. Aceasta nseamn c funcia face parte din biblioteca intern
a LabVIEW, iar codul ei nu poate fi vizualizat.
16. Plasai pe diagram funcia Sine Waveform din subpaleta Signal Processing
Waveform Generation. Aceast funcie mai poate fi gsit i n subpaleta
Waveform Analog Waveform Waveform Generation.
17. Studiai helpul funciei.
18. Realizai dublu click pe aceast funcie. Observai c se deschide panoul frontal
al acesteia, semn c funcia este reprezentat n bibliotec printr-un subIV.
19. Deschidei DL i realizai dublu click pe pictograma funciei Sine Wave
.
S-a deschis un alt panou frontal.
20. Trecei pe DL i observai existena nodului cod de interfa din figura 2.17.
Acesta conine programul funciei scris ntr-un limbaj procedural (C++) i
compilat. Nodul cod de interfa are intrri i ieiri ca o funcie obinuit, ns
codul surs nu poate fi cunoscut. Acesta este ultimul nivel al ierarhiei IV-ului.

Nod cod de interfa

Figura 2.17

39

Funcia Sine Wave poate fi gsit direct n submeniul Signal Processing Signal
Generation. In general, sub multe funcii n bibliotecile LabVIEW din paleta de
funcii care sunt construite sub form de subIV-uri utiliznd o serie de funcii
elementare preluate fie din subpaleta Programming, fiind utiliznd noduri cod de
interfa. Tendina este de a realiza biblioteci cu funcii ct mai complexe i ct
mai uor accesibile utilizatorilor chiar fr o pregtire de specialitate prea
avansat. In acest scop exist i subpaleta de funcii Express, care conine o serie
de funcii de baz destinate achiziiei, generrii, manipulrii i procesrii
semnalelor, precum i pentru construirea unor IV-uri simple, la care introducerea
datelor i fixarea parametrilor se face prin ferestre interactive cu realizarea
automat a unei mari pri din legturi, astfel nct utilizatorul s obin
instrumentul fr prea mult efort de programare.

21. Adugai i verificai ierarhia pn la nivelul codului de interfa i pentru


funciile:
Signal Processing Waveform Measurements Basic Averaged DCRMS.vi
Mathematics Linear Algebra Solve Linear Equation.vi
Measurement I/O DAQmx Data Acquisition DAQ Assistant
Exerciiul 2.5
Scop
Construirea unui instrument virtual care s execute adunarea a dou numere fixate
pe dou controale numerice de pe panoul frontal i s afieze rezultatul pe un
indicator numeric.
Mod de lucru
1. Construii pentru nceput un director nou pe discul dumneavoastr de lucru
(denumii-l de exemplu Lucru Labview) n care vom salva n continuare toate
IV-urile pe care le vom crea.
2. Pornii programul LabVIEW i deschidei un nou IV.
3. Plasai pe PF un control de tip Numeric i unul de tip Knob.
4. Etichetai cele dou controale cu etichetele 1, respectiv 2.
5. Editai Caption cu Operator 1, respectiv Operator 2, scris cu albastru, arial,
18 pt, bold.
6. Pentru controlul Knob, artai i indicatorul digital cu Visible Items Digital
Display.
7. Stabilii pentru cele controale digitale precizia de afiare la 2 cifre zecimale.
8. Deschidei diagrama de legturi. Plasai pe diagram operatorul de adunare
Add din subpaleta de funcii Numeric.
9. Realizai legturile intrrilor funciei cu cei doi operatori n modul urmtor:
40

10.
11.
12.
13.
14.
15.
16.

Selectai unealta de legturi


. Dac suntei pe selectorul automat, atunci
cnd plasai prompterul pe una din intrrile funcie Add, acesta se va
schimba automat n unealta de legturi.
Observai cum, aducnd unealta peste intrrile funciei, acestea clipesc i n
acelai timp apare eticheta lor implicit.
Realizai un MS pe intrarea de sus.
Mergei cu M pn n dreptul terminalului 1 i realizai un nou MS.
Schimbai direcia nspre terminalul 1 i continuai traseul pn pe
terminalul 1.
Facei MS pe terminalul 1. In acest moment trebuie s avei realizat
legtura, care se va colora automat n culoarea portocalie.
Facei acelai lucru i cu terminalul 2.
Vom crea acum automat indicatorul de ieire. Plasai unealta de legturi pe
ieirea funciei Add.
Facei MD pe ieire i deschidei meniul shortcut.
Selectai n meniu Create Indicator.
Schimbai eticheta indicatorului n 1+2.
Trecei pe PF i editai Caption cu Rezultat adunare.
Schimbai precizia de afiare a indicatorului numeric la 3 cifre zecimale.
Modificai textul displayului digital al indicatorului scris cu rou, arial, 24 pt,
bold, pe fond alb.

Figura 2.18

17. Trecei din nou pe DL i deschidei helpul mic i helpul mare pentru operatorul
de adunare.
18. Schimbai unul din operatori din control n indicator. Firul de legtur s-a
ntrerupt deoarece a rmas fr surs de date.
41

19. Mergei cu M pe butonul Run al barei de comenzi rapide. Observai c acest


buton este sub forma unei sgei ntrerupte, care semnific faptul c programul
are erori de sintax (List errors).

List errors

Figura 2.19

20. Apsai acest buton. Studiai i interpretai mesajele de eroare din fereastra
deschis (figura 2.20).

Figura 2.20

21. Schimbai din nou operatorul din indicator n control pentru a se reface
legtura.
22. Trecei pe PF i modificai valoarea controalelor.
23. Stabilii ca implicite valorile controalelor din meniul Edit Make Current
Values Default.
24. Salvai instrumentul sub numele Ex 2.5.vi.
25. Pornii instrumentul de la butonul Run i observai efectuarea operaiei.
42

26. Apsai butonul Run Continuously i manevrai controalele urmrind valoarea


rezultatului.
27. Oprii rularea instrumentului de la butonul Abort Execution.
28. Adugai pe DL operaia de nmulire.
29. Creai i denumii indicatorul operaiei de nmulire ca Rezultat inmultire.
30. Rulai instrumentul i urmrii rezultatele.

Utilizarea testerelor
In vederea depanrii, LabVIEW pune la dispoziie sonde de testare sau testere
(Probe n limba englez), care pot fi activate pe firele de legtur cu scopul a
urmri valoarea datelor vehiculate prin fir la un moment dat. Testerele pot fi
plasate pe orice fir de legtur realiznd MD pe fir i alegnd opiunea Probe, cnd
se deschide o fereastr ce conine un indicator de tipul datelor vehiculate de fir. In
timpul rulrii instrumentului, datele pot fi observate pe acest indicator.
Testerele sunt numerotate automat n ordinea plasrii lor. Ferestrele testerelor
sunt disponibile att pe PF, ct i pe DL.

Figura 2.21

31. Plasai cte un tester pe fiecare fir de pe DL, rulai instrumentul i observai
cum se schimb valorile.

Uniti de msur
LabVIEW ofer posibilitatea lucrului cu uniti de msur. Unitatea de msur
poate nsoi datele asociate unui control sau indicator i sufer aceleai transformri
prin intermediul operaiilor i funciilor ca i datele nsele. Unitile de msur
43

trebuie ns utilizate cu precauie, deoarece se pot face uor erori datorit


incompatibilitii acestora la intrrile i/sau ieirile funciilor.
Asocierea unitii de msur unui C sau I se face n modul urmtor:
- din meniul shortcut al C/I, se selecteaz Visible Items Unit Label
- se tasteaz n dreptunghiul negru un caracter (m de exemplu)
- se face MD pe acest caracter i se selecteaz Build Unit String.
- n cazul n care caracterul tastat coincide cu o unitate de msur, se
deschide o fereastr unde este subliniat unitatea de msur specificat (n
cazul nostru, metrul). Dac caracterul tastat nu reprezint o unitate de
msur, acesta este nsoit pe etichet de un semn ? , iar fereastra care se
deschide conine toate unitile de msur disponibile n LabVIEW, grupate
pe tipuri de mrimi (figura 2.22).

Figura 2.22

n seciunea Units se face dublu click pe mrimea dorit. Se vor expanda


toate unitile disponibile, att cele din sistemul internaional de uniti, ct
i cele derivate i tolerate.
se alege unitatea dorit (eventual se selecteaz i un prefix, din seciunea
Prefixes).

Exerciiul 2.6
Scop
Conversia unei uniti de msur ntr-o alt unitate de msur.
44

Mod de lucru
1.
2.
3.
4.

Deschidei un nou IV.


Plasai pe PF un control numeric i un indicator numeric.
Facei legtura dintre control i indicator.
Asociai controlului unitatea de msur de presiune bar, iar indicatorului
unitatea de msur torr, dup metoda de mai sus.
5. Dai controlului valoarea 1.
6. Rulai instrumentul. Valoarea indicatorului arat ci torr reprezint un bar.
7. Facei dup modelul de mai sus urmtoarele conversii: acre m2, calorie
termic joule, newton dyne, foot inch, gauss oersted.

Unitatea m2, care nu exist n lista unitilor, se scrie m^2.


Se pot face conversii numai ntre unitile de msur ale aceleiai mrimi fizice

Conceptul flux de date (Data flow)


Programele scrise n limbaje procedurale, bazate pe instruciuni text (Visual Basic,
C/C++, Java, etc.), sunt executate secvenial, dup conceptul flux controlat, n
care instruciunile se execut ntr-o ordine prestabilit prin program. Limbajul G,
dup care funcioneaz LabVIEW, folosete tehnica fluxului de date (data flow),
n care datele i efectuarea funciilor i a nodurilor se realizeaz n paralel. Chiar n
interiorul unui IV programul lucreaz multitasking, n sensul c se pot executa mai
multe funcii n acelai timp, cu condiia ca acestea s aib toate datele disponibile
le intrare. Dup acest concept, pot rula n acelai timp mai multe IV-uri. Aadar, un
nod care are disponibile datele la toate intrrile, este efectuat indiferent de starea
celorlalte noduri. Evident ns, dac ieirea unui nod reprezint intrare pentru alt
nod, cel de-al doilea nod va trebui s atepte pn ce este efectuat cel dinainte. Un
model al conceptului data flow este ilustrat n figura 2.23. In figur se prezint
modul n care se realizeaz funciile f i g, ambele de variabile A i B, n cazul
programrii procedurale i al programrii n LabVIEW.
In cazul a) nti se citesc datele A, apoi cele B, dup care se efectueaz funcia
f(A,B), apoi funcia g(A,B). De remarcat c funcia g se efectueaz abia dup
efectuarea funciei f, dei datele de intrare sunt disponibile pentru ambele funcii. E
posibil ns ca datele B s fie disponibile naintea datelor A. Programul ateapt
nti datele A, apoi le citete pe cele B, ducnd la pierdere de timp.
In cazul b), nu exist o prioritate ntre intrrile A i B, fiecare dat fiind citit
de ndat ce este disponibil. Mai mult, funciile f i g se efectueaz independent
una de cealalt, de ndat ce datele de intrare sunt disponibile. In felul acesta se
obine o economie substanial de timp, esenial n aplicaiile n care operaiile
trebuie s se succead cu vitez (ex.: achiziii de semnale de frecven ridicat i
prelucrarea concomitent a informaiei).
45

Programare procedural
Citete A

Citete B

LabVIEW
Citete A

Citete B

Efectueaz
f(A,B)

Efectueaz
g(A,B)

Afieaz
rezultate f

Afieaz
rezultate g

Efectueaz
f(A,B)
Efectueaz
g(A,B)

Afieaz
rezultate

a)

b)
Figura 2.23

Alocarea i managementul memoriei se face automat de ctre program, doar


pentru datele care sunt n lucru. Dup ce datele cu care s-a lucrat nu mai sunt
necesare, memoria se elibereaz. In felul acesta se realizeaz i o economie
important de resurse.
Exerciiul 2.7
Scop
nelegerea conceptului data flow.
Mod de lucru
1. ncrcai instrumentul Ex 2.5.vi.
2. Adugai instrumentului urmtoarele operaii (figura 2.24):
scderea din Operator 1 a unui numr aleatoriu cuprins ntre 0 i 1 (funcia
Random Number (0,1), care se gsete n subpaleta Numeric).
nmulirea dintre Operator 2 i sin(Operator 1). Funcia sin se gsete n
paleta de funcii n subpaleta Mathematics Elementary & Special
Functions Trigonometric.
46

Figura 2.24

3. Pe DL, apsai butonul


Highlight Execution. Aceast comand permite
urmrirea animat a executrii programului, cu evidenierea valorii datelor la
ieirile funciilor.
4. Rulai instrumentul i urmrii modul n care se efectueaz funciile i
parcursul fluxului de date.

Observai executarea n paralel a funciilor, independent unele de altele, de ndat


ce sunt disponibile datele la intrare. Deoarece unele operaii, cum ar fi nmulirea
sau calculul sinusului, sunt mai complexe i necesit un timp de calcul mai
ndelungat, momentele de afiare a rezultatelor sunt diferite. Efectuarea nmulirii
nu ncepe pn cnd nu a fost realizat operaia anterioar, calculul lui sin(operator
1).

5. Salvai instrumentul sub numele Ex 2.6.vi n modul urmtor:


Din meniul File selectai Save As.
In fereastra deschis apsai Continue.
In noua fereastr tastai numele noului fiier Ex 2.6.vi.
Apsai OK.

47

Capitolul 3

REALIZAREA UNUI SUBIV

Una din trsturile cele mai importante ale mediului de programare LabVIEW este
modularitatea, adic un IV creat cu un scop poate fi inclus ntr-un alt IV ca subIV,
care la rndul lui poate i el fi inclus ntr-un alt IV. Se creeaz astfel o structur
ierarhic a IV-ului, mult mai uor de urmrit i de organizat. De asemenea, un mare
avantaj al structurii modulare l constituie faptul c un subIV poate fi apelat ca i
nod n oricte alte IV-uri principale, toate rulnd n acelai timp independent unele
de altele.
Dac din diagrama instrumentului principal se face un dublu-click pe
pictograma unui subIV, se deschide panoul su frontal i diagrama de legturi. La
rndul su DL a subIV-ului deschis poate conine alte subIV-uri, care pot fi
deschise n acelai mod. Pictograma subIV-ului se afl n colul din dreapta sus al
PF sau a DL. SubIV-urile se realizeaz atunci cnd pe DL a unui IV sunt operaii
care se repet, cnd acea operaie este necesar i n alte IV-uri, sau cu scopul unei
organizri mai compacte a unei diagrame, n general foarte largi.
SubIV-urile din LabVIEW au drept corespondent subrutinele n programarea
procedural bazat pe text. In figura 3.1 este dat echivalena dintre subIV-uri i
subrutinele din programarea n C, pentru funcia mediere.
Cod funcie n C
function mediere (in1, in2, aut)
{
out = (in1 + in2)/2.0;
}
Diagrama bloc a subIV-ului

Apelarea n programul principal


main
{
mediere(op1, op2, rezultat)
}
Apelarea n DL a IV-ului principal

Figura 3.1

48

Un subIV se realizeaz ca un IV oarecare, numai c pictogramei acestuia i se


ataeaz terminale de intrare-ieire pentru includerea lui n alte diagrame. Etapele
de realizare a subIV-ului vor fi ilustrate mai jos printr-un exemplu.
Exerciiul 3.1
Scop
Realizarea unui subIV care s efectueze adunarea i nmulirea a dou numere
aplicate la intrare.
Mod de lucru
Realizarea funcional a subIV-ului

1. Deschidei un nou IV.


2. Construii panoul frontal i diagrama de legturi ca n figura 3.2. Etichetai
intrrile cu a i b, iar rezultatele adunrii i nmulirii cu suma, respectiv
produs.

Figura 3.2

3. Dai valori controalelor numerice i verificai funcionalitatea IV-ului.


4. Salvai IV-ul sub numele Suma-produs.vi.
Conectarea terminalelor pictogramei

5. Trecei pe PF.
6. Facei MD pe pictograma din dreapta sus a PF i selectai Show Connector.

Configuraia de terminale care se deschide n mod implicit (fiecare ptrel


reprezint un terminal) acoper necesarul de intrri i de ieiri corespunztoare

49

numrului de controale (considerate intrri) i de indicatoare (considerate ieiri) de


pe PF al subIV-ului. De regul, terminalele de intrare se stabilesc n partea stng
a pictogramei, iar cele de ieire n dreapta, considernd fluxul de date circulnd de
la stnga spre dreapta diagramei. Terminalele care rmn nelegate nu sunt luate n
considerare. Sunt posibile pn la 28 de terminale, ns dac se atribuie mai mult
de 16 terminale unei pictograme, aceasta devine ilizibil i greu de utilizat.

7. Facei din nou MD pe pictograma cu terminale i selectai Patterns.


8. Din ntreaga tabel cu opiuni de configuraii care se deschide, selectai
configuraia minimal cu 4 terminale (2 intrri i 2 ieiri)
.
9. Observai c aducnd M peste pictogram, acesta se transform automat n
unealta de legturi (care este specific doar realizrii legturilor de pe DL).
Facei MS pe ptrelul din colul din stnga sus a configuraiei de terminale,
apoi iari MS pe controlul a (figura 3.3).

Figura 3.3

Observai c ptrelul a luat culoarea tipului de date vehiculate de controlul cu


care a fost legat (n cazul nostru, portocaliu, pentru date numerice de tip dubl
precizie).
10. Facei acelai lucru i cu celelalte 3 terminale: b stnga jos, suma dreapta
sus, produs dreapta jos.
Editarea pictogramei

11. Facei MS pe pictogram i selectai Show Icon. Acum pictograma are un


desen implicit la care se schimb doar numrul din desen, care reprezint al
ctelea IV nou a fost deschis n sesiunea de lucru.
12. Facei din nou MS i selectai Edit Icon. Se deschide un editor grafic
rudimentar, care permite editarea imaginii pictogramei. Suprafaa de editare
este de 32 x 32 de pixeli. Se recomand realizarea unui desen ct mai sugestiv,
50

care s indice utilizatorului funcionalitatea subIV-ului. Propunem editarea


pictogramei cu desenul din figura 3.4.

Figura 3.4

Deschiderea editorului pictogramei se poate face i printr-un dublu click direct pe


pictogram.
Dei chenarul, ca i ntregul desen implicit poate fi ters, se recomand totui pstrarea
unui chenar, deoarece la plasarea pe DL a subIV-ului, marginile pictogramei se
estompeaz i nu mai poate fi bine distins subIV-ul de fundalul alb al DL.
Editarea desenului pictogramei se mai poate face prin importarea unei imagini n
format .jpg sau .bmp. Importarea se face prin tragerea cu M a imaginii din utilitarul
Explore peste pictogram. LabVIEW redimensioneaz automat imaginea la 32 x 32
pixeli.

13. Salvai din nou IV-ul.


Apelarea subIV-ului

Un subIV odat creat i salvat, el poate fi apelat ca oricare funcie din paleta de
funcii, subpaleta Select a VI
14. Deschidei un nou IV.
15. Aducei subIV-ul Suma-produs.vi pe DL din paleta de funcii submeniul Select
a VI i plasai-l pe diagram. Programul deschide fereastra de dialog n
directorul implicit de salvare a IV-urilor.
16. Observai pe pictogram existena terminalelor cu denumirile aceleai cu
etichetele controalelor i indicatoarelor care le-au creat.
17. Creai n mod automat controalele i indicatoarele corespunztoare terminalelor
prin MD pe pictogram Create Control(Indicator).
51

18. Verificai funcionalitatea IV-ului.


19. Salvai IV-ul principal sub numele Ex 3.1.

Exerciii propuse
EP 3.1. S se realizeze un subIV care s genereze la ieire numere aleatoare
cuprinse ntre dou numere date, Nmin i Nmax considerate ca intrri.

EP 3.2. S se construiasc un subIV care s calculeze modulul i argumentul unui


numr complex dat prin coordonatele sale carteziene (partea real - a i partea
imaginar - b).
EP 3.3. S se construiasc un subIV care s calculeze ctul a dou numere
complexe.

52

Capitolul 4

OPERAII CU VECTORI, MATRICI I CLUSTERE

Definirea matricilor pe panoul frontal


Matricea reunete ntr-o structur organizat, date de acelai tip. Parametrii
definitorii ai unei matrici sunt dimensiunea i elementele componente. O matrice
cu o singur dimensiune se numete vector. O matrice poate avea maximum 231-1
elemente pe o dimensiune. Elementele matricii pot fi: numere, booleene, iruri de
caractere, clustere, ci i forme de und. Nu se admit matrici de matrici. Totui pot
exista matrici de clustere unde elementele clusterului sunt tot matrici. Matricile
sunt foarte utile la colectarea datelor obinute din achiziii de forme de und i la
obinerea rezultatelor din bucle, unde la fiecare rulare a buclei se genereaz cte un
element al matricii.

In limba englez, cuvntul array desemneaz n general o matrice cu n dimensiuni,


n timp ce cuvntul matrix se refer la o matrice cu doar dou dimensiuni. In limba
romn vom utiliza cuvntul matrice n general, ce nglobeaz att array ct i
matrix.

Elementele unei matrici sunt ordonate. Fiecare element al matricii se acceseaz


prin index. Indexul unei dimensiuni pornete ntotdeauna de la 0, care este primul
element al dimensiunii i merge pn la n-1, unde n este numrul de element ale
matricii. Pentru crearea unui control sau indicator de tip matrice, se acceseaz n
paleta de controale subpaleta Array, Matrix & Cluster. De pe palet, se plaseaz pe
PF obiectul denumit Array. In acest moment avem pe PF cadrul matricii cu
indexul, fr elemente. Implicit, dimensiunea este 1 (vector). Pentru adugarea
elementelor, se preia din paleta de controale tipul de element care ne intereseaz,
de exemplu un numeric, dup care se depune n controlul array n zona ptratului
gri de lng index. Vei observa c la depunere, ptratul va fi ncadrat de punctele
de redimensionare sau va fi ncadrat ntr-un dreptunghi punctat (figura 4.1). Dup
depunere, controlul rmne de un gri estompat, semn c matricea nu are nc
elemente definite, ci se cunoate numai tipul de dat ce caracterizeaz elementele.
Atribuirea de valori elementelor matricii se stabilete ca la un control obinuit,
element cu element.
53

Adugarea unei noi dimensiuni unei matrici se poate face n urmtoarele dou
moduri:
index

Figura 4.1

se deschide meniul shortcut al indexului (MD pe index) i se selecteaz


Add Dimension.
se apropie unealta 2) de index pn cnd acesta apare ncadrat ntre puncte
de redimensionare, dup care se ine apsat MS i se trage n jos de punctul
de la mijloc, latura de jos (figura 4.2).

Figura 4.2

In figura 4.3 este prezentat o matrice cu dou dimensiuni.

Linia
Coloana

Figura 4.3

Primul index reprezint numrul liniei pe care se afl elementul afiat, iar cel
de-al doilea index este numrul coloanei pe care se afl elementul. Indexul
pornete ntotdeauna de la 0. De exemplu, o matrice cu m linii i n coloane va avea
indexul ultimului element (m-1, n-1).
Pentru a vizualiza mai multe elemente odat pe PF, se apropie unealta 2) de
marginea elementului pn cnd apar punctele de redimensionare, dup care se
trage de punctul din mijloc de pe latura dreapt (pentru desfurare pe orizontal)
sau de punctul din mijloc de pe latura inferioar (pentru desfurare pe vertical)
sau de colul din dreapta jos (pentru desfurare n plan, la matrici cu dou sau mai
multe dimensiuni) Se pot astfel vizualiza oricte linii i coloane dorim i ne
54

permite suprafaa PF, inclusiv cele care nu au elemente definite. Indexul ne arat
poziia elementului din stnga-sus. In exemplul din figura 4.3 este vorba despre
elementul aflat pe linia cu index 1 i coloana cu index 2.
In variantele mai noi ale LabVIEW, subpaleta de controale Array, Matrix &
Cluster conine i posibilitatea crerii directe a unei matrici bidimensionale de
numere reale sau complexe (matrix), la care elementele pot fi vizualizate i
utiliznd bare de defilare (scrollbar).

Exerciiul 4.1
Scop
Crearea pe PF a controalelor i indicatoarelor de tip matrice.
Mod de lucru
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.

Deschidei un nou IV.


Plasai pe PF un control de tip Array din subpaleta Array, Matrix & Cluster.
Plasai n aria de definire a elementelor un control de tip numeric.
Desfurai pe orizontal, apoi pe vertical elementele vectorului.
Dai valori primelor 5 elemente ale vectorului astfel creat.
Manevrai indexul i observai cum se modific poziia primului element.
Trecei pe DL i observai modelul terminalului de tip Array. Schimbai C n I
i invers.
nlocuii elementele de tip numeric cu elemente de tip boolean, string, paleta
de culori. (Se utilizeaz opiunea Replace din meniul shortcut. Paleta de culori
este controlul Framed color box din subpaleta Numeric).
Revenii la elemente de tip numeric.
Adugai o nou dimensiune vectorului.
Desfurai matricea cu 2 dimensiuni att dup linii, ct i dup coloane.
Dai valori primelor 5 elemente din linia a 2-a (linia cu index 1).
Manevrai indecii i observai poziionarea primului element afiat.
Adugai o nou dimensiune. Am obinut acum o matrice cu 3 dimensiuni, care
seamn cu o carte (cea de a treia dimensiune se numete fil).
S se determine care dintre cei trei indeci corespunde fiecrei dimensiuni.
Vidai matricea prin eliminarea tuturor elementelor din matrice cu opiunea
Empty Array din meniul shortcut deschis prin MD pe zona indecilor, opiunea
Data operations.

Operaii i funcii cu matrici


Operaiile i funciile cu matrici se gsesc n paleta de funcii, subpaleta Array
(figura 4.4). Acestea sunt:
55

Figura 4.4
Tabelul 4.1

Nume funcie
Array Size
Index Array
Replace Array
Subset
Insert into
Array
Delete from
Array

Aciune
returneaz numrul de elemente de pe fiecare dimensiune a unei
matrici
returneaz valoarea elementului de la indexul specificat
nlocuiete o submatrice a matricii iniiale cu o alta
insereaz un element sau o submatrice ntr-o matrice, ncepnd
de la un anumit index
terge un element sau o submatrice dintr-o matrice

Initialize Array

returneaz o matrice n-dimensional n care fiecare element este


iniializat cu o anumit valoare

Build Array

construiete o matrice pornind de la elementele sale

Array Subset

returneaz o submatrice a matricii date pornind de la un anumit


index

Array Max &


Min

returneaz valoarea elementului maxim i cel minim dintr-o


matrice, mpreun cu indecii corespunztori

Reshape Array

redimensioneaz matricea n funcie de numrul de elemente al


fiecrei dimensiuni aplicat la intrare

Sort 1D Array

sorteaz elementele unui vector n ordinea ascendent


56

Search 1D
Array
Split 1D Array
Reverse 1D
Array
Rotate 1D
Array

Interpolate 1D
Array

Threshold 1D
Array
Interleave 1D
Arrays
Decimate 1D
Array
Transpose 2D
Array

caut un element ntr-un vector


divizeaz un vector n ali doi subvectori pornind de la un index
inverseaz ordinea elementelor unui vector
rotete elementele unui vector
returneaz valoarea calculat prin interpolare dintre dou
elemente adiacente ale unui vector, corespunztoare unui index
fracionar. Interpolarea ntre elementele adiacente se face dup o
funcie liniar.
caut o pereche de elemente adiacente dintr-un vector astfel
nct primul element s fie mai mic dect un prag dat i al doilea
element s fie mai mare dect pragul. Realizeaz interpolarea
ntre cele dou elemente i returneaz indexul fracionar cruia
i corespunde pragul.
creeaz un vector cu elementele ntreesute ale vectorilor de la
intrare
divide un vector n subvectori cu elemente ntreesute
realizeaz transpusa unei matrici bidimensionale

Extragerea unei linii sau a unei coloane dintr-o matrice


Pentru extragerea unei linii sau a unei coloane dintr-o matrice se utilizeaz funcia
Index Array, prin legarea la index doar a numrului liniei sau a coloanei care ne
intereseaz, cealalt intrare rmnnd liber. Dac se leag ambii indeci, funcia
returneaz valoarea elementului de la indexul respectiv. Funcia Index Array este
redimensionabil, adic se pot efectua toate operaiile de mai sus pe aceeai
funcie. Pentru aceasta, mergei cu M pe funcie pn apar punctele de
redimensionare i tragei de punctul din mijloc latura de jos pentru adugarea
altor celule. In exemplul din figura 4.5, prima celul furnizeaz elementele liniei cu
indexul 1 (un vector), a doua celul ne d elementele coloanei cu indexul 2 (un
vector), iar a treia celul ne d elementul de pe linia 4, coloana 6 (un scalar).

57

Figura 4.5

Dac matricea de intrare are 3 dimensiuni, atunci fiecare celul va avea 3 intrri
(celula se redimensioneaz automat n funcie de dimensiunea matricii). Dac se d
de exemplu valoarea 2 primei intrri, atunci funcia va furniza la ieire o matrice
bidimensional coninnd elementele filei cu indexul 2 (figura 4.6).

Figura 4.6

Particulariti ale funciei Build Array


Cu ajutorul funciei Build Array, se pot construi matrici de oricte dimensiuni
pornind de la alte matrici sau elemente componente. Se pot aduga intrri
suplimentare prin opiunea Add Input a meniului shortcut al unei intrri sau prin
tragerea cu M a punctelor de redimensionare. Funcia Build Array prezint
urmtoarele particulariti:
1) Dac la intrarea unei funcii Build Array se leag o matrice, la ieire se obine o
matrice cu o dimensiune n plus (figura 4.7).

Figura 4.7

2) Dac la intrrile unei funcii Build Array se leag mai multe matrici (vectori),
sunt posibile urmtoarele:
- dac intrrile sunt de aceeai dimensiune i opiunea Concatenate Inputs
din meniul shortcut al funciei Build Array nu este validat, se obine la
ieire o matrice cu o dimensiune mai mult, la care intrrile sunt considerate
elemente (dac se apropie unealta 4) de una din intrri, apare scris Input
element).
58

dac n meniul shortcut se specific opiunea Concatenate Inputs, se


realizeaz o alipire sau concatenare a intrrilor, obinndu-se o matrice
cu aceeai dimensiune.

Polimorfism
In LabVIEW, funciile numerice sunt polimorfe. Aceasta nseamn c intrrile n
aceeai funcie numeric pot fi diferite ca structur. De exemplu, putem s adunm
un scalar cu un vector (matrice) sau doi vectori (matrici) ntre ele. Mai jos sunt date
cteva situaii de polimorfism.

a) Scalar + scalar

b) Scalar + vector. Se adun scalarul la fiecare element al vectorului.

c) Vector + vector cu acelai numr de elemente. Se adun element cu element.

d) Vector + vector cu numr diferit de elemente. Se adun element cu element, ns


rezultatul are numrul de elemente al vectorului mai mic.

Nu se pot aduna un vector cu o matrice bidimensional.


Inmulirea a dou matrici bidimensionale se face prin nmulirea matricilor
element cu element.

59

Exerciiul 4.2
Scop
Experimentarea funciilor cu matrici din subpaleta de funcii Array..
Mod de lucru
1. Deschidei un nou IV.
2. Construii pe PF un vector numeric cu 5 elemente i o matrice numeric cu 3
linii i 4 coloane la care elementele au valori arbitrare.
3. Deschidei i fixai paleta de funcii pe DL.
4. Citii helpul mic al fiecrei funcii.
5. Utiliznd ca intrri cele dou matrici de pe PF i indicatoare adecvate,
experimentai urmtoarele funcii: Array size, Index array, Insert into array,
Initialize array, Array subset, Array Max & Min, Reshape Array, Sort 1D
array, Search 1D array, Interleave 1D array, Decimate 1D array.
Exerciiul 4.3
Scop
Experimentarea funciilor Build Array i Index Array.
Mod de lucru
a)
1. Deschidei un nou IV.
2. Construii pe PF doi vectori numerici, unul cu 4 elemente arbitrare iar cellalt
cu 3 elemente.
3. Adugai pe DL funcia Build Array i legai la intrarea funciei primul vector.
4. Creai automat indicatorul de la ieirea funciei.
5. Rulai instrumentul i observai tipul de dat creat i elementele componente.
b)
6.
7.
8.
9.

Adugai o nou funcie Build Array pe care o extindei pentru dou intrri.
Legai vectorii la cele dou intrri.
Creai automat indicatorul de la ieirea funciei.
Rulai instrumentul i observai ieirea. S-a obinut o matrice bidimensional la
care fiecare linie este cte un vector de la intrare. Vectorul care are mai puine
elemente se completeaz cu zerouri pn la numrul de elemente al celui mai
mare.

c)
10. Adugai o nou funcie Build Array creia i legai cei doi vectori la intrare.
60

11. Deschidei meniul shortcut al uneia din intrri i bifai opiunea Concatenate
Inputs.
12. Creai automat indicatorul de la ieire i rulai instrumentul.
13. Observai c n acest caz ieirea este tot un vector, obinut prin concatenarea
celor doi.
d)
14. Adugai funcia Index Array i legai-i la intrare matricea bidimensional din
cazul b).
15. Configurai funcia pentru extragerea elementelor primei linii, a celei de a doua
coloane i a elementului (1,3).
16. Legai la ieiri indicatoare adecvate.
17. Rulai instrumentul i observai rezultatele.
18. Salvai instrumentul sub numele Ex 4.3.vi.
Exerciiul 4.4
Scop
Experimentarea funciilor Interpolate 1D Array i Threshold 1D Array.
Mod de lucru
Funcia Interpolate 1D Array calculeaz o valoare intermediar ntre dou
elemente adiacente ale unui vector corespunztor unui index ipotetic fracionar,
dup metoda interpolrii liniare. De exemplu, n figura 4.8, indexului fracionar 1,8
al vectorului {1; 2,4; 3,2; 5; 5,4}, i corespunde valoarea interpolat 3,04.
6

5.4

5
4
3,04

3.2

2.4

1
0
0

1,8

Figura 4.8

1. Deschidei un nou IV.


61

2.
3.
4.
5.

Construii vectorul cu elementele de mai sus.


Plasai pe DL funcia Interpolate 1D Array din subpaleta Array.
Citii helpul funciei.
Legai vectorul la intrare i creai automat un control pentru indexul fracionar
i indicatorul de ieire.
6. Rulai instrumentul dnd diverse valori indexului fracionar.
Funcia Threshold 1D Array caut ntre dou elemente adiacente ale unui vector
indexul fracionar corespunztor unui numr dat (threshold), cu condiia ca
numrul s fie mai mare dect primul element al perechii i mai mic dect cel de-al
doilea element. Dac sunt mai multe perechi de elemente n vector ndeplinind
condiia de mai sus, este necesar s se stabileasc un index de start de unde funcia
ncepe cutarea. Dac se gsete o pereche la care numrul este mai mic dect
primul element i mai mare dect cel de-al doilea, funcia returneaz valoarea
indexului de start.
7. Plasai pe DL funcia Threshold 1D Array.
8. Citii helpul funciei.
9. Legai la intrare vectorul construit, iar la intrarea Threshold y legai ieirea
funciei Interpolate 1D Array.
10. Creai un indicator la ieire.
11. Rulai instrumentul i dai diverse valori indexului fracionar de la intrarea
funciei Interpolate 1D Array.
12. Dai un index de valoare mai mare dect indexul maxim al vectorului.
Observai rezultatele celor dou funcii.
13. Salvai instrumentul sub numele Ex 4.4.vi.

Definirea clusterelor pe panoul frontal


Clusterul este un tip de dat care reunete n aceeai structur elemente de tipuri
diferite, comparativ cu matricea, care reunea ntr-o structur ordonat elemente de
acelai tip. In cluster pot fi introduse orice tipuri de date. Toate trebuie ns s
provin fie de la controale, fie de la indicatoare. Aadar, clusterele sunt fie de tip
control, fie de tip indicator. Atunci cnd se plaseaz un control sau un
indicator ntr-un cadru de cluster, toate celelalte obiecte devin controale, respectiv
indicatoare. Clusterul n LabVIEW este echivalent structurii (struct) din C. Pe DL
datele coninute ntr-un cluster se transport printr-un singur fir. La destinaie,
datele se extrag din cluster, toate, sau numai cele necesare.
Clusterele se utilizeaz pentru:
transportul datelor diferite pe distane mari pe DL utiliznd un singur
traseu de date.
reducerea numrului de intrri i/sau ieiri dintr-un subVI.
62

Crearea unui cluster pe PF se face din submeniul Array, Matrix & Cluster de
pe paleta de controale. La aducerea unui obiect de tip Cluster pe PF de pe paleta de
controale, acesta este reprezentat printr-un cadru, care poate fi redimensionabil. In
acest cadru se aduc, de pe paleta de controale, elementele ce vor fi coninute n
cluster (figura 4.9).

Figura 4.9

Meniul shortcut al clusterului se acceseaz prin MD exact pe marginea cadrului


ce delimiteaz clusterul. Acesta ofer posibilitatea aranjrii spaiale a obiectelor
coninute n cadru prin opiunea Autosizing cu una din cele 4 variante.
Elementele din cluster prezint o ordine logic, dat de succesiunea cu care
acestea au fost aduse n cadrul clusterului. Tot aceasta este i ordinea n care
clusterul va fi desfcut n elemente componente cu ajutorul funciei Unbundle, pe
DL. Se poate face reordonarea obiectelor n cluster utiliznd opiunea Reorder
Controls in Cluster din meniul shortcut.

Operaii i funcii cu clustere


Dup cum am vzut mai sus, pentru ca informaia s poat fi mai uor transportat
n interiorul unui IV sau ntre IV-uri, datele se mpacheteaz n clustere, deoarece
clusterul este tratat ca un singur obiect, mult mai uor de manipulat. Utilizarea
informaiei din cluster se poate face ns doar dup ce acesta a fost despachetat.
Funciile cu care se realizeaz despachetarea clusterului sunt: Unbundle i
Unbundle by Name, care se gsesc n paleta de funcii, subpaleta Cluster &
Variant.
Funcia Unbundle realizeaz despachetarea tuturor elementelor din cluster, iar
Unbundle by Name extrage din cluster doar elementul specificat prin etichet.
Pentru identificarea informaiei, la aplicarea clusterului funciei Unbundle, aceasta
63

se organizeaz dup etichetele controalelor (indicatoarelor) care au contribuit la


formarea clusterului, sau a denumirii terminalelor funciilor de la care provin
datele. Funcia Unbundle by Name permite specificarea din lista etichetelor a unuia
sau a mai multor elemente ale clusterului. Numai pentru aceste elemente
computerul aloc memorie la despachetare, comparativ cu funcia Unbundle pentru
care se aloc memorie pentru toatele elementele clusterului.
Reformarea clusterului sau realizarea unui cluster nou pe DL se face din
elementele componente cu funciile Bundle i Bundle by Name.
Exerciiul 4.5
Scop
Experimentarea funciilor de manipulare a clusterelor.
Mod de lucru
1. Deschidei un nou IV.
2. Plasai pe PF un cluster care s conin urmtoarele elemente: un control
numeric, dou controale booleene i un control de tip vector numeric, ca n
figura 4.10.

Figura 4.10

3. Reordonai elementele clusterului dup urmtoarea formul: 0 Array, 1


Boolean 1, 2 Boolean 2, 3 Numeric. Pentru aceasta, deschidei meniul
shortcut al clusterului (MD pe chenarul cadrului) i selectai Reorder Controls
in Cluster. Observai c PF se nnegrete, iar fiecrui element al clusterului i se
asociaz o pereche de numere: numrul pe fond negru este noul numr de
ordine, iar cel de pe fond alb este vechiul numr de ordine (figura 4.11).
Numrul de ordine ce urmeaz a fi alocat unui element este cel scris n csua
din dreptul textului Click to set toAlocarea acestui numr se face prin click
MS pe elementul dorit, dup care se trece automat la urmtorul numr, pn
cnd se aloc numere de ordine tuturor elementelor. La sfrit se apas butonul
Confirm.
64

Figura 4.11

4. Schimbai controlul Numeric n indicator. Observai cum toate celelalte


controale se transform n indicatoare.
5. Transformai din nou clusterul n control.
6. Plasai pe DL o funcie Unbundle din paleta de funcii Cluster & Variant.
7. Legai clusterul la intrarea funciei Unbubdle. Observai cum n momentul
legrii, funcia se autodimensioneaz dup cte elemente ale clusterul. De
asemenea, ieirile capt culoarea tipului de date vehiculat. Ordinea de
desfacere este cea stabilit la punctul 3 (figura 4.12 I).
8. Plasai o funcie Bundle, creia i legai la intrare Array i Boolean 2. Creai
automat la ieire indicatorul corespunztor.
9. Creai la ieirea funciei Unbundle corespunztoare numericului, indicatorul
potrivit.
10. Trecei pe PF, pornii instrumentul de la butonul Run Continuously i
manevrai controalele clusterului urmrind indicatoarele create.
11. Plasai o funcie Unbundle by Name, creia i legai clusterul la intrare. Vei
observa c, implicit, ieirea va fi cea corespunztoare elementului cu numrul
de ordine 0 din cluster (Array n cazul nostru).
12. Dorim acum s despachetm doar pe Boolean 1. Pentru aceasta, deschidei
meniul shortcut al ieirii funciei Unbundle by Name i, n opiunea Select Item,
bifai Boolean 1 (figura 4.12 II).
13. Creai un indicator i rulai instrumentul.
14. Daca se dorete modificarea programatic a unuia sau mai multor elemente din
cluster, se poate utiliza funcia Bundle n configuraia din figura 4.12 III sau
funcia Bundle by Name n configuraia din figura 4.12 IV. In acest caz,
Numeric 2 modific doar elementul Numeric din indicatoarele output cluster 2
i output cluster 3, suspendnd controlul Numeric din clusterul iniial.
65

Figura 4.12

15. Construii un nou cluster format numai din elementele Array i Numeric,
utiliznd funcia Bundle (figura 4.12 V).
16. Plasai un operator de adunare i legai una din intrri la noul cluster, iar pe
cealalt la un control scalar (Numeric 3). Creai un indicator automat la ieire.
17. Pornii instrumentul i dai diverse valori lui Numeric 3, observnd ce se
ntmpl cu valorile elementelor controlului cluster x + y.

Dup cum se observ, putem efectua operaii ntre un scalar i un cluster numeric.
Se pot de asemenea efectua operaii ntre o matrice i un cluster numeric, ce
conine scalari sau alte matrici, ca i ntre dou clustere numerice. Ca i la matrici,
aici se aplic polimorfismul, concept care permite adaptarea intrrilor unui
operator sau ale unei funcii la tipul datelor aplicate la intrare.

Clustere de erori
Orict de atent s-ar lucra i orict de experimentat ar fi proiectantul, nu se pot
prevedea toate problemele care ar putea aprea n construcia unui instrument
virtual. Dac nu ar fi prevzut un mecanism de verificare a erorilor, nu am putea ti
dect c instrumentul nu funcioneaz, dar nu i de ce. Sistemul de verificare a
66

erorilor disponibil n LabVIEW poate spune de ce i unde apare o eroare. Acest


sistem se adreseaz n special operaiilor de intrare/ieire (I/O), cum ar fi: lucrul cu
fiierele, comunicaii cu instrumentele (serial, paralel, Ethernet), achiziii de date,
etc. Sistemul de verificare a erorilor ne poate ajuta s identificm urmtoarele
probleme:
iniializarea incorect a comunicaiei sau scrierea improprie pe un
dispozitiv extern;
dispozitivul extern este defect sau nu lucreaz corect;
probleme cu sistemul de operare sau cu driverele.

Manipularea erorilor
Implicit, LabVIEW sesizeaz automat orice eroare care apare la rularea unui IV
prin suspendarea execuiei acestuia, identificarea subIV-ului sau funciei unde s-a
produs eroarea i afiarea unei ferestre de dialog. De exemplu, dac o funcie de
I/O depete limita de ateptare, e posibil s nu se doreasc oprirea instrumentului,
ci reluarea ciclului de ateptare. Acest lucru poate fi decis n diagrama
instrumentului.
Funciile i instrumentele din bibliotecile LabVIEW returneaz erori n dou
moduri:
- sub forma unor coduri de eroare (specific funciilor);
- sub forma unor clustere (specific subIV-urilor).
Manipularea erorilor de ctre LabVIEW respect principiul fluxului de date, n
sensul c informaiile despre erori circul de-a lungul lanului de prelucrare, n
paralel cu datele. Pe parcursul execuiei, LabVIEW verific existena erorilor n
fiecare nod al diagramei. Dac se detecteaz o eroare la un nod, execuia acestuia se
suspend, ns informaia despre eroare (tipul erorii i locul unde s-a produs) se
propag n continuare spre celelalte noduri din lanul de prelucrare, pn la final.
Pentru aflarea acestor informaii, se plaseaz dup ultimul nod un indicator de tipul
Simple Error Handler, care se gsete n subpaleta de funcii Dialog & User
Interface. In figura 4.13 este prezentat modul de propagare a informaiei despre erori
ntr-un lan de salvare n fiiere.

Figura 4.13

In figura 4.14 este dat componena unui cluster de erori. Acesta conine
urmtoarele informaii:
67

a) Control cluster de erori

b) Indicator cluster de erori

c) Elementele componente

Figura 4.14

status este un boolean care devine true la apariia unei erori. Valoarea
acestui boolean poate fi folosit pentru oprirea instrumentului ntr-o bucl
WHILE.
- code este un ntreg pe 32 de bii, care identific eroarea printr-un numr. In
absena vreunei erori, codul este zero. Dac acest numr este diferit de
zero, dar valoarea lui status este false, nu este o eroare propriu-zis ci un
avertisment.
- source este un text care identific nodul unde s-a produs eroarea.
In cazul apariiei unei erori, pe lng informaiile date n clusterul de erori, e
posibil explicarea acesteia prin accesarea opiunii Explain Error din meniul Help.
Un cluster de erori poate fi legat direct la terminalul de condiionare al unei bucle
WHILE n scopul opririi acesteia la apariia unei erori. Doar componenta status
este luat n considerare de ctre terminal, aceasta avnd valoarea unui boolean. In
acest caz, Stop if True i Continue if True se schimb n Stop on Error i Continue
while Error.

68

Capitolul 5

STRUCTURI

Structurile n LabVIEW sunt reprezentri grafice ale instruciunilor de ciclare i


condiionare din limbajele bazate pe text. Ca orice alt nod, structurile prezint
terminale prin care acestea se interconecteaz cu alte noduri din diagrama
instrumentului, sunt executate automat cnd toate datele sunt disponibile la intrri
i furnizeaz la ieire rezultatul cnd execuia structurii este complet.
Orice structur este format dintr-un cadru redimensionabil ce conine blocul
de coduri de executat, n concordan cu regulile structurii. Seciunea de coduri din
interiorul unei structuri este denumit subdiagram. Locurile prin care datele intr
sau ies dintr-o structur se numesc tuneluri.
Structurile pot fi accesate din paleta de funcii, submeniul Structures. Exist 5
tipuri de structuri de baz:
1. Bucla FOR
2. Bucla WHILE
3. Structura CASE
4. Structura Secven (SEQUENCE)
5. Nod de formule (FORMULA NODE)

Bucla FOR
Bucla FOR este o structur care execut codurile din interior de un anumit numr
de ori, ct este valoarea numrului legat la terminalul . In figura 5.1 sunt date a)
reprezentarea buclei FOR n LabVIEW i b) organigrama acesteia. Aducerea unei
bucle FOR pe DL se face prin preluarea acesteia din subpaleta Structures i
dimensionarea corespunztoare poriunii de diagram care se dorete a fi inclus n
bucl. Se poate i aduce nti bucla pe DL, dup care se construiete n interior
subdiagrama de executat. Terminalul
se numete terminal de iteraie. Acesta
ne d n fiecare moment numrul iteraiei curente. Prima iteraie este ntotdeauna 0.
Att N ct i i sunt numere ntregi de tip I32; aadar, valoarea maxim a lui N poate
fi 231-1. Dac la N se leag un numr real, LabVIEW constrnge acest numr la tip
69

I32 i eventual l limiteaz la 231-1. Dac la N se leag numrul 0, atunci bucla nu


execut nici o iteraie. Tunelurile, att cel de intrare ct i cel de ieire, sunt sub
forma unor dreptunghiuri pline de culoarea tipului de date vehiculat, daca intrarea
sau ieirea sunt scalari, sau sub forma unui dreptunghi n care se afl dou
paranteze drepte, dac intrarea sau ieirea sunt vectori sau matrici. In acest caz
avem de-a face cu autoindexarea, care va fi tratat n seciunea urmtoare.
N=10

i=0
i = i+1
tuneluri
index

NU

i = N?

Execut
cod

DA
ieire

a)

b)
Figura 5.1

Bucla WHILE
Bucla WHILE este o structur care execut o subdiagram atta timp ct este
ndeplinit o condiie. In figura 5.2 sunt date reprezentarea buclei WHILE n
LabVIEW, respectiv diagrama structurii. Bucla WHILE este echivalent
instruciunii dowhile din programarea convenional bazat pe text. Din
diagram se observ c o bucl WHILE se execut cel puin o dat, deoarece
testarea condiiei se face dup execuia codului. Condiia poate fi ndeplinit dac
terminalul de condiionare este TRUE (Stop if TRUE) sau FALSE (Continue if
TRUE). Acest lucru poate fi schimbat din meniul shortcut al terminalului. Dac
terminalul nu este legat, LabVIEW d un mesaj de eroare.
Terminalul de iteraie i i tunelurile au aceeai semnificaie ca i la bucla FOR.
Condiia de execuie a buclei trebuie legat n interiorul acesteia, pentru a putea fi
citit la fiecare rulare. Exemplul din figura 5.3 nseamn ciclare infinit,
deoarece constanta TRUE este citit o dat nainte de a intra n bucl, dup care
bucla cicleaz continuu ntruct condiia nu mai este citit, aceasta rmnnd
continuu TRUE. Oprirea buclei se face din butonul Abort Execution de pe bar.
70

Execut
cod

Condiie
ndeplinit ?

tuneluri

NU

index
DA

Terminal condiionare

ieire

a)

b)
Figura 5.2

Figura 5.3

Este recomandabil ca toate instrumentele ce se construiesc s fie ncadrate n


ntregime ntr-o bucl WHILE prevzut la terminalul de condiionare cu un buton
de STOP. Este sigur astfel c toate sarcinile ncepute n cadrul buclei sunt duse la
sfrit. Oprirea instrumentului trebuie s se fac obligatoriu de la acest buton. Dac
oprirea instrumentului se face de la butonul de stop de urgen (Abort Execution)
din bar, pot exista sarcini neterminate cum ar fi: deschiderea i nenchiderea unor
fiiere, a unor legturi cu reeaua (serverul), alocarea unor resurse hardware fr a
mai fi dezalocate, etc. In exemplul din figura 5.4, bucla va cicla de 3 ori sau pn
cnd se apas butonul STOP.

Figura 5.4

71

Autoindexarea
Autoindexarea este o noiune specific buclelor FOR i WHILE. Dac la intrarea
unei bucle se aplic o matrice i din meniul shortcut al tunelului de intrare se
valideaz opiunea Enable Indexing, atunci la fiecare iteraie bucla ia n calcul, n
ordine, cte un element din matricea respectiv. In exemplul din figura 5.5, la
intrare avem un vector cu 6 elemente, este validat autoindexarea, iar la terminalul
N este legat numrul 5.

Figura 5.5

La prima iteraie, bucla adun la elementul cu index 0 al vectorului numrul 4


i depune rezultatul ntr-un vector la ieire. La a doua iteraie se adun cu 4
elementul cu index 1 al vectorului, .a.m.d. Dac este validat autoindexarea
tunelului de la ieire, rezultatul va fi un vector care conine rezultatele fiecrei
iteraii. Bucla cicleaz doar de 5 ori, chiar dac vectorul are 6 elemente, deoarece
terminalul N are valoare mai mic. In general, dac la intrare sunt mai muli vectori
i este validat autoindexarea, bucla va cicla de attea ori ct este minimul dintre
numrul de elemente al vectorilor i valoarea lui N. Deci:
Numr rulri = min{size(V1), size(V2), ., N}

(5.1)

Dac nu se valideaz autoindexarea la intrare, atunci bucla va cicla de 5 ori i


de fiecare dat va efectua adunarea ntregului vector cu numrul 4.
Dac nu se valideaz autoindexarea la ieire, atunci rezultatul furnizat de bucl
va fi cel al ultimei iteraii.
` Dac la intrare se afl o matrice bidimensional, atunci la prima iteraie se ia in
calcul linia 0, la a doua iteraie linia 1, .a.m.d. Dac, din contra, se valideaz
opiunea Disable Indexing, atunci la fiecare iteraie se ia n calcul toat matricea.
In cazul buclei WHILE, autoindexarea vectorului de intrare se realizeaz i
dup terminarea elementelor acestuia, bucla oprindu-se doar atunci cnd nu mai
este ndeplinit condiia de ciclare. Dup terminarea elementelor vectorului, se ia n
calcul mai departe pn la oprirea buclei valoarea implicit a ultimului element.

72

Regitrii de deplasare (shift registers)


Regitrii de deplasare (RD) sunt perechi de terminale ce se utilizeaz n buclele
FOR i WHILE pentru transferarea valorilor calculate de la o iteraie la alta. RD
sunt similari cu variabilele statice din programarea structural.
Crearea unui RD se face din meniul shortcut al buclei (MD pe marginea
structurii), selectare Add Shift Register. La terminalul din dreapta, RD stocheaz
valoarea corespunztoare iteraiei actuale, iar la terminalul din stnga este
accesibil valoarea corespunztoare iteraiei imediat anterioare. RD se poate
redimensiona n partea stng pentru obinerea i a valorilor altor iteraii anterioare.
Redimensionarea se face din meniul RD Add Element, sau analog cu
redimensionarea matricilor (figura 5.6).
iteraia n-1
iteraia n-2
iteraia n-3

iteraia n

Figura 5.6

RD trebuie iniializai pe fiecare terminal din partea stng. Aceasta se face


prin legarea la aceste terminale a cte unei valori (constant sau C) corespunztoare
tipului de date vehiculat de RD. Dac RD nu se iniializeaz, atunci la prima
iteraie a buclei la pornirea instrumentului se ia n calcul valoarea stocat n RD la
ultima rulare a buclei cnd instrumentul a fost oprit. Dac nu s-au mai fcut rulri
anterioare ale instrumentului, valoarea iniial va fi valoarea implicit a tipului de
date vehiculate de RD.
IV-ul din figura 5.7 calculeaz media alunectoare a irului de numere generat
de funcia Random Number (0-1). Registrul de deplasare este iniializat cu 0.

Figura 5.7

73

Structura CASE (Caz)


Aceast structur se utilizeaz pentru efectuarea unor subdiagrame numai n
anumite cazuri. Este format din mai multe subdiagrame suprapuse, fiecare din ele
reprezentnd un caz. La un moment dat este vizibil doar unul din cazuri (figura
5.8). Structura CASE este echivalent instruciunii ifthenelse din programarea
text.
Identificator de cazuri

Structur CASE

Selector de cazuri
Figura 5.8

O structur CASE conine dou elemente definitorii: selectorul de cazuri i


identificatorul de cazuri.
Selectorul de cazuri (SC) este un terminal de al crui valoare depinde care caz
se execut la un moment dat. La acest terminal se pot lega date de tip boolean,
numeric de tip ntreg, iruri de caractere sau controale de tip enumerare.
Identificatorul de cazuri (IC) este o etichet specific fiecrui caz n parte, ce
trebuie s aib corespondent strict ntre valorile selectorului de cazuri. De ex., dac
la SC se leag un boolean, etichetele IC vor fi True i False. Dac la SC se leag
un numeric, etichetele IC vor fi o parte din numerele de la SC. Dac la SC se leag
iruri de caractere, eticheta cazului va fi chiar irul de caractere care-l comand,
scris ntre ghilimele.
Dac la SC se leag mai multe valori dect numrul de cazuri din structur,
este necesar stabilirea unui caz implicit (default). De ex. dac la IC avem cazurile
0, 1 i 2 unde 0 este default i de la SC se aplic 3, atunci structura execut cazul
implicit, 0.
Etichetele din IC pot fi date i sub form relaional. De ex., ..10 reprezint
eticheta unui caz care se execut pentru toate numerele pn la 10. 12.. reprezint
eticheta unui caz care se execut pentru toate numerele mai mari dect 12.
Pentru vizualizarea diagramei unui caz, se apas pe sgeile stnga-dreapta ale
IC pentru defilare ntre cazuri succesive sau se face click pe IC i se alege din list
cazul dorit.
Tunelurile de intrare sunt terminale de intrare n CASE. Pot exista tuneluri de
intrare utilizate de unele cazuri i de altele nu.

74

Tunelurile de ieire trebuie s primeasc date de la toate cadrele CASE din


structur. Dac exist cel puin un cadru care nu furnizeaz date tunelului, acesta
este reprezentat printr-un dreptunghi alb i programul d eroare de sintax. In
momentul n care tunelul de ieire primete date de la toate cadrele, acesta capt
culoarea tipului de date pe care le transport.
Se pot aduga sau terge cazuri din meniul shortcut al structurii.

Structura SEQUENCE (Secven)


Aceast structur se folosete atunci cnd se dorete execuia programului ntr-o
anumit ordine preferenial, alta dect fluxul de date oferit de LabVIEW.
Structura SECVEN se prezint sub dou forme: secven plat (flat sequence) i
secven suprapus (stacked sequence). Secvena plat, exemplificat n figura
5.9, foreaz executarea codurilor cadru cu cadru, de la stnga spre dreapta. In
exemplul din figura 5.9 se va executa nti operaia de adunare, dup care cea de
nmulire, ns rezultatele vor fi disponibile ambele n acelai timp, n cadrul al
doilea. Trecerea dintr-un cadru n altul se face prin tuneluri. Se pot aduga i alte
cadre din meniul shortcut, opiunea Add Frame After (Before). Secvena plat este
util atunci cnd se dorete efectuarea unor coduri ntr-o anumit ordine, dar i
urmrirea desfurat a acestor coduri. Dezavantajul secvenelor plate este c
ocup spaiu mare pe diagram.

Figura 5.9

Secvena suprapus dispune cadrele precum crile de joc, unul peste altul, n
ordinea execuiei. La un moment dat este vizibil subdiagrama doar dintr-un singur
cadru. Trecerea datelor dintr-un cadru n altul se poate face numai n sensul
execuiei secvenei, prin tuneluri de comunicare, care se obin din meniul shortcut,
opiunea Add Sequence Local. Sgeata tunelului specific direcia datelor.
In figura 5.10 sunt prezentate dou cadre succesive ale aceleiai secvene
suprapuse. In primul cadru se realizeaz adunarea a dou numere, iar n cadrul al
doilea rezultatul adunrii, transportat din cadrul 1 prin tunelul de comunicare, este
nmulit cu 2. Rezultatul este disponibil numai dup efectuarea ntregii secvene.
Nici o informaie dintr-o structur SECVEN nu este accesibil dect dup ce
75

structura a fost complet executat. Secvenele suprapuse sunt mai compacte dect
cele plate, fiind utile atunci cnd spaiul alocat pe diagram este limitat.
Tuneluri de comunicare

a)

b)
Figura 5.10

Tunelurile de ieire dintr-o structur SECVEN pot avea doar o singur surs
de date, spre deosebire de structura CASE, unde fiecare caz trebuie s trimit date
tunelului. Ieiri pot fi create din orice secven, dar datele sunt accesibile la acea
ieire numai dup terminarea de executat i a ultimei secvene din structur.

Nod de formule (Formula Node)


Nodul de formule este un tip de structur bazat pe limbajul text convenional cu
care se realizeaz diverse operaii n diagrama bloc a instrumentului sau chiar se
ruleaz seciuni de program. Cu aceast structur nu este necesar apelarea altor
programe sau aplicaii i nici a operatorilor aritmetici din paleta de funcii. In
cadrul acestei structuri se pot introduce sub form de text expresii matematice
folosind operatorii din limbajele text convenionale, dar se accept i cuvinte
specifice instruciunilor de ciclare i condiionare din limbajul C (do, if, while, for,
case). Nodurile de formule accept expresii formate din oricte variabile.
Instruciunile din nodurile de formule trebuie separate prin semnul ; .
Comentariile se insereaz la fel ca n C, utiliznd semnele /* i */.
Structurile de tip nod de formule sunt utile la calculul expresiilor ce conin
multe variabile sau sunt foarte complexe.
In figura 5.11 este prezentat un exemplu de calcul al funciei discrete:

z = 4 + A sin(2i / N )

(5.2)

Bucla FOR cicleaz de attea ori ct este N , care reprezint numrul de puncte n
care este eantionat sinusoida. i este indexul buclei, care joac rol aici de variabil
discret. Ieirea din bucl se face cu autoindexare; vectorul obinut reprezint chiar
sinusoida digitizat.
76

Figura 5.11

In interiorul unei structuri nod de formule sunt acceptate i secvene de


program n limbaj text. In figura 5.12 este dat un exemplu de astfel de cod, care are
drept scop generarea a 100 de numere aleatoare..

Figura 5.12

Reguli pentru variabile n noduri de formule

Variabilele pot fi definite n structur (ca n figura 5.12) sau pot fi specificate
prin intrri i ieiri.
Adugarea de intrri i/sau ieiri se face din meniul shortcut al structurii,
opiunea Add Input (Output).
Toate variabilele, inclusiv cele intermediare (cum este y din figura 5.11)
trebuie definite. Variabilele intermediare se definesc ca ieiri.
Numele intrrilor i ieirilor trebuie s fie aceleai cu numele variabilelor pe
care le definesc. Pot exista cuvinte cheie predefinite cum ar fi pi, care nu
trebuie declarate.
Pot exista intrri i ieiri cu acelai nume, dar nu pot exista dou intrri (ieiri)
cu acelai nume.
Intrrile trebuie s aib legate obligatoriu surse de date. Eticheta controlului de
intrare nu trebuie s fie aceeai cu numele variabilei creia i furnizeaz date.
Variabilele pot fi scalari reali (floating point), ntregi sau matrici de numere.
Variabilele nu pot avea uniti de msur.
77

Lista sintaxei funciilor i operatorilor utilizai n nodurile de formule se obine


prin apelarea helpului structurii, din meniul shortcut al acesteia (MD pe
marginea cadrului), opiunea Help.
Alte funcii privind lucrul cu nodurile de formule se gsesc n paleta de funcii,
Mathematics Scripts & Formulas..

Mai exist o posibilitate de evaluare a unei expresii scrise n mod text, utiliznd
funcia Expression Node din subpaleta Numeric. Aceast funcie permite evaluarea
unei expresii de o singur variabil, scris dup aceleai sintax ca i la Formula
Node. Variabila se noteaz cu x i ia valorile sursei de date aplicate la intrare. In
figura 5.13 este dat un exemplu de utilizare a funciei Expression Node.

Figura 5.13

Exerciiul 5.1
Scop

Studiul autoindexrii.
Mod de lucru

1. Deschidei un nou IV.


2. Plasai pe PF doi vectori numerici de tip control, unul coninnd 5 elemente, iar
cellalt 3 elemente numere reale oarecare.
3. Plasai pe PF un vector numeric de tip indicator.
4. Construii diagrama din figura 5.14. Toate tunelurile vor avea validat
autoindexarea.

Figura 5.14

5. Pe DL apsai butonul
Highlight Execution.
6. Rulai instrumentul i observai cte iteraii se execut. IV-ul va executa 3
iteraii, cte elemente are vectorul mai mic. Vectorul de ieire conine
rezultatul obinut prin adunarea, element cu element, a celor doi vectori de la
intrare.
78

7. Invalidai autoindexarea tunelurilor de la intrare. De ce s-a ntrerupt legtura la


ieire?
8. Invalidai i autoindexarea tunelului de la ieire.
9. ncercai s rulai instrumentul. Interpretai mesajul de eroare afiat.
10. Dai valoarea 4 terminalului N al buclei FOR.
11. Rulai acum instrumentul i observai numrul de iteraii i rezultatul de la
ieire.
12. Legai ieirea operatorului Add la un nou tunel, cruia i validai autoindexarea.
13. Construii automat indicatorul de ieire. Ce tip de date reprezint?
14. Rulai instrumentul i interpretai rezultatul.
15. Validai din nou autoindexarea vectorului cu mai multe elemente.
16. Rulai IV-ul i observai numrul de iteraii efectuate i rezultatul obinut. Se
vor executa 4 rulri deoarece valoarea legat la N este mai mic dect numrul
de elemente al vectorului autoindexat. Rezultatul este o matrice cu 4 linii i 3
coloane, fiecare linie fiind obinut prin adunarea primelor 4 elemente ale
vectorului mai mare cu elementele vectorului mai mic. Vectorul de la ieire
conine elementele ultimei linii a matricii.
17. Validai acum autoindexarea vectorului mai mic i invalidai autoindexarea
vectorului mai mare.
18. Rulai instrumentul i interpretai rezultatele.
19. Salvai IV-ul sub numele Ex 5.1.vi
Exerciiul 5.2
Enun

S se construiasc, utiliznd buclele FOR i WHILE, un vector care s conin, n


ordine, toate numerele naturale de la 1 la 100.
Mod de lucru

Ideea rezolvrii acestei probleme este s se foloseasc indexul buclelor.


Utilizarea buclei FOR

1.
2.
3.
4.

Deschidei un nou IV.


Plasai o bucl FOR pe DL.
Legai la terminalul N numrul de elemente ale vectorului, n cazul nostru 100.
Deoarece indexul i pornete de la 0, vom aduga acestuia operatorul +1
(increment), care se gsete n subpaleta de funcii numerice.
5. Scoatei ieirea operatorului +1 din bucl prin autoindexare i legai-o la un
vector indicator.
6. Rulai instrumentul i observai rezultatul. Verificai dac indexului 99 al
vectorului de ieire i corespunde numrul 100.
79

Utilizarea buclei WHILE

1. Deschidei un nou IV.


2. Plasai o bucl WHILE pe DL.
3. Legai operatorul increment la indexul buclei i scoatei-i ieirea prin
autoindexare, la fel ca la bucla FOR.
4. Vom stabili acum condiia de oprire a buclei. Pentru aceasta vom testa la
fiecare iteraie dac i+1 100. Rezultatul l legm la terminalul de condiionare
al buclei. Terminalul trebuie s funcioneze pe Continue if True.
Diagramele celor dou instrumente sunt date n figurile 5.15 a) i b).

a)

b)
Figura 5.15

5. Salvai cele dou IV-uri sub numele Ex 5.2a.vi i Ex 5.2b.vi

Exerciii propuse
EP 5.1.
S se construiasc un vector care s conin, n ordine, toate numerele ntregi
cuprinse ntre dou numere date pe panoul frontal.
Exerciiul 5.3
Enun

S se construiasc un IV care s genereze continuu numere ntregi aleatoare


cuprinse ntre -400 i 600, pn cnd se genereaz un numr care coincide cu un
numr ntreg dat pe PF. S se afieze pe PF valoarea numrului curent i cte
numere s-au generat pn la coinciden.
Mod de lucru

Organigrama problemei este prezentat n figura 5.16.


80

1. Deschidei un nou IV.


2. Plasai pe PF un control numeric etichetat Numr dat, un indicator numeric
etichetat Numr curent i un indicator etichetat Numr iteraii.
3. Pe DL plasai o bucl WHILE.
4. Plasai n bucl generatorul de numere aleatoare sub forma funciei Random
Number 0 1, pe care o gsii n subpaleta de funcii numerice.
5. Plasai operatorii de nmulire i scdere i realizai legturile conform
organigramei.
6. Rotunjii numrul obinut la cel mai apropiat ntreg utiliznd funcia Round to
Nearest din subpaleta de funcii numerice.
7. Realizai comparaia cu numrul dat cu o funcie din subpaleta Comparison.
8. Aplicai rezultatul comparaiei la terminalul de condiionare al buclei.
9. Scoatei valoarea lui i la ieire printr-un operator Increment i afiai rezultatul.

START
Genereaz numr
aleator cuprins
ntre 0 i 1

Inmulete cu
1000

NU
Scade 400

Rotunjete la
valoarea ntreag

= Nr. dat ?

Afieaz valoare
numr curent

DA

Adaug 1 la i

Afieaz nr.
iteraii

STOP
Figura 5.16

81

10. ncercai s rulai IV-ul. Dac nu funcioneaz, observai eventualele erori i


depanai-l.
In figura 5.17 este dat o posibil soluie a problemei.

Figura 5.17

11. Salvai IV-ul sub numele Ex 5.3.vi.

Exerciiul 5.4
Enun

S se construiasc un vector care s fie format din primele N elemente ale unei
progresii aritmetice, fiind date de pe PF primul termen, a0, numrul de termeni, N
i raia r.
Mod de lucru

Progresia aritmetic este un ir de numere ai crui termeni se obin prin relaia de


recuren:

a n = a n 1 + r

(5.3)

unde an-1 i an sunt doi termeni consecutivi, iar r este raia. Pentru iniierea iteraiei
este necesar primul termen, a0.
In acest exerciiu vom experimenta utilizarea regitrilor de deplasare pentru
impelentarea relaiilor de recuren n LabVIEW.
1. Plasai pe un nou IV un control numeric de tip double etichetat a0, un control
de tip double etichetat r, un control de tip I32 etichetat N i un indicator de tip
array double etichetat Progresie.
2. Plasai pe DL o bucl FOR creia i legai terminalului N controlul cu eticheta
N.
82

3. Adugai un registru de deplasare din meniul shortcut al buclei, opiunea Add


Shift Regsiteri. Terminalul din stnga al registrului reprezint termenul an-1 din
relaia 5.3, iar terminalul din dreapta, termenul an.
4. Adugai operatorul Add n bucl.
5. Legai la una din intrri controlul r, iar la cealalt intrare terminalul din stnga
al registrului de deplasare.
6. Legai ieirea sumatorului la terminalul din dreapta al registrului.
7. Iniializai registrul de deplasare prin legarea controlului a0 la terminalul din
stnga, n afara buclei.
8. Scoatei rezultatul la ieirea buclei prin autoindexare i legai-l la indicatorul
Progresie. ntruct progresia trebuie s conin primul termen, a0, este necesar
ca rezultatul s fie preluat de pe firul ce leag terminalul din stnga al
registrului.
9. Plasai toat diagrama ntr-o bucl WHILE.
10. Creai automat un control de STOP din meniul shortcut al terminalului de
condiionare opiunea Create Control.
11. In figura este prezentat diagrama acestui IV.
12. Dai valori celor 3 controale i rulai instrumentul. Verificai rezultatul pentru
primii 5 termeni.
13. Salvai sub numele Ex. 5.4.vi.

Figura 5.18

Exerciiul 5.5
Enun

S se construiasc un IV care s afieze primele N elemente ale unei progresii


aritmetice sau geometrice, i s calculeze suma sau produsul acestor termeni.
Selectarea tipului progresiei i tipului operaiei se face de pe panoul frontal. Se mai
stabilesc pe PF primul termen al progresiei, a0, numrul de termeni, N i raia r.
83

Mod de lucru

In acest exerciiu vom experimenta utilizarea structurii CASE pentru luare de


decizii.
1. Deschidei un nou IV.
2. Plasai pe PF controalele a0, N i r, precum i indicatorul Progresie, la fel ca la
exemplul 5.4.
3. Plasai pe PF un indicator numeric double etichetat Rezultat.
4. Plasai pe PF dou controale de tip Text ring din subpaleta de controale Ring &
Enum.
5. Editai controlul Tip progresie n modul urmtor:
1. Din meniul shortcut al controlului, selectai Edit Items
2. In fereastra deschis, editai textul Aritmetic pentru valoarea 0 i
Geometric pentru valoarea 1, ca n figura 5.19. Pentru adugarea unei noi
linii, apsai Insert.
3. Apsai OK.
4. Redimensionai controlul dup lungimea textului din interior.
6. Dup modelul de la punctul 5, editai controlul Tip operaie cu cele dou
opiuni, Suma i Produs.

Cele dou controale Ring sunt numerice de tip U16, dup cum se poate observa de
pe DL. Fiecrui element text i corespunde un numr ntreg. Pentru a vedea
corespondena dintre elementul text i numrul asociat, selectai din meniul
shortcut Visible Items Digital display.

Figura 5.19

84

7. Realizai schema de construire a progresiei aritmetice, aceeai ca la exerciiul


5.4.
Vom completa acum diagrama pentru selectarea tipului progresiei. Vom folosi
pentru aceasta o structur CASE. In primul cadru vom plasa operatorul de
adunare, iar n cel de-al doilea, operatorul de nmulire.
8. Din paleta de funcii selectai o structur de tip CASE i ncadrai n aceast
structur operatorul Add.
9. Legai controlul Tip progresie la selectorul structurii. Observai cum eticheta
de identificare a structurii CASE se schimb din valoarea implicit True n
1. Aadar, pentru valoarea selectorului 1 (cazul 1), se va crea progresia
aritmetic, ceea ce este n contradicie cu textul elementului de pe selector
(Geometric este corespunztoare valorii 1 a selectorului). Pentru a corecta
acest lucru, n meniul shortcut al structurii CASE selectai Make This Case 0,
Default. Cadrul cazului 0 trebuie s arate ca n figura 5.20.

Figura 5.20

10. Trecei pe cazul 1 i plasai un operator Multiply n cadru. Realizai legturile


intrrilor i ieirii cu tunelurile corespunztoare, aceleai ca la cazul 0.
11. Incadrai toat diagrama ntr-o bulc WHILE.
12. Creai automat un control de STOP din meniul shortcut al terminalului de
condiionare opiunea Create Control.
13. Trecei pe PF. Dai valori lui N, a0 i r i rulai instrumentul. Manevrai
controlul ring i verificai crearea celor dou tipuri de progresii.
14. Adugai o nou structur CASE pe care o plasai dup indicatorul Progresie,
n interiorul structurii WHILE.
15. Legai controlul Tip operatie la selectorul structurii.
16. Plasai n cadrul 0 funcia Add Array Elements, iar n cadrul 1 Multiply Array
Elements din subpaleta de funcii numerice.
17. Legai rezultatul Progresie la intrarea celor dou funcii; legai ieirea acestora
la indicatorul Rezultat.
18. Rulai instrumentul i verificai funcionarea celor dou selectoare.
19. nlocuii controalele de tip Text Ring cu controale de tip Meniu Ring i Enum,
pe care le gsii n subpaleta de controale Ring & Enum. Experimentai
funcionarea acestor controale.
Diagrama instrumentului este prezentat n figura 5.21.

85

Figura 5.21

Exerciiul 5.6
Enun

S se construiasc un IV care s implementeze un filtru cu rspuns infinit la impuls


avnd ecuaia cu diferene urmtoarea relaie recursiv:

y ( n ) = 1,3x ( n ) x ( n 1) + x ( n 2) + 0,5 y ( n 1) 1,1 y ( n 3)

(5.4)

S se determine rspunsul acestui filtru la un semnal de intrare format din 100


numere aleatoare cuprinse ntre -2 i 2.
Semnalul de intrare se consider cauzal, adic x(n) = 0 pentru n 0.
Mod de lucru

1. Deschidei un IV nou.
2. Plasai pe PF un control de tip vector numeric etichetat x(n) i un indicator de
tip vector numeric etichetat y(n).
3. Vom genera pentru nceput semnalul de intrare, x(n). Pentru obinerea irului
de numere aleatoare cuprinse ntre -2 i 2, vom utiliza generatorul de numere
aleatoare Random Number (0-1) la care vom efectua urmtoarele operaii:

0 < x <1 | 4
0< x < 4 | 2
2< x <2
4. Realizai generatorul semnalului de intrare dup diagrama din figura 5.22.
86

(5.5)

Figura 5.22

5. Pentru implementarea filtrului, avem nevoie de doi regitri de deplasare: unul


care furnizeaz valorile x(n-1) i x(n-2), iar altul care ne d valorile y(n-1) i
y(n-3). Implementarea relaiei (5.4) se poate face n dou moduri: prin
realizarea operaiilor utiliznd operatori din subpaleta Numeric sau utiliznd
structura Formula Node. Cele dou soluii sunt prezentate n figurile 5.23 i
5.24. Iniializarea regitrilor se face cu valoarea 0, n virtutea cauzalitii
semnalelor vehiculate.
Se observ c soluia ce utilizeaz Formula Node este mult mai convenabil
deoarece modificarea ecuaiei cu diferene a filtrului se poate face foarte
simplu, prin simpla modificare a relaiei din cadrul formulei.

Figura 5.23

6. Construii cele dou diagrame n dou IV-uri diferite, pe care le salvai Ex


5.6a.vi, respectiv Ex 5.6b.vi.
7. Verificai funcionarea lor.
8. Modificai limitele de variaie a semnalului de intrare i verificai din nou
funcionalitatea instrumentului.

87

Figura 5.24

Exerciiul 5.7
Enun

S se construiasc un vector care s fie format din N numere aleatoare cuprinse


ntre dou numere date, Nmin i Nmax, fixate pe PF. S se construiasc apoi ali
doi vectori, unul care s conin toate numerele primului vector, mai mici dect un
numr N1 din intervalul [Nmin, Nmax], iar cellalt numerele mai mari dect N1.
S se afieze pe PF vectorul iniial i cei doi vectori sortai.

Figura 5.25

Mod de lucru

1. Deschidei un nou IV.


88

2. Plasai pe PF: un control numeric I32 etichetat N, dou controale numerice de


tip real double etichetate Nmin i Nmax, un control numeric double etichetat
Ndat i trei indicatoare vector etichetate Vector initial, V1 (< Ndat) i V2
(>Ndat) (figura 5.25).
3. Generarea vectorului iniial se va face utiliznd funcia Random Number (0
1) din subpaleta de funcii numerice, pe baza urmtoarelor relaii:
0 < x < 1 | ( N max N min)
0 < x < N max N min | + N min
N min < x < N max

(5.6)

i=0

Genereaza
0 < ai < 1

xi = ai(Nmax-Nmin)+Nmin

NU

Adaug xi la
V1

NU

i = N-1 ?

DA

xi >
Ndat ?

DA

DA
Afieaz
vectori

STOP
Figura 5.26

89

Adaug xi la
V2

i = N-1 ?

NU

Intr-o bucl FOR care va rula de N ori, nmulii aadar ieirea funciei Random
Number (0 1) cu valoarea (Nmax-Nmin), dup care adunai rezultatul cu Nmin.
Numrul obinut va fi cuprins ntre Nmin i Nmax.
Pentru selectarea celor 2 vectori dup poziia numerelor generate fa de
numrul dat, vom utiliza un algoritm bazat pe organigrama din figura 5.26.
Construirea vectorilor V1 i V2 se face n urma comparaiei numrului generat
cu numrul dat, al crei rezultat selecteaz dou cazuri: cazul FALSE corespunde
construirii vectorului V1, iar cazul TRUE corespunde construirii vectorului V2.
Construirea vectorilor se face element cu element, utiliznd cte o funcie Build
Array i un registru de deplasare iniializat cu vectorul vid.
4. Construii diagrama din figura 5.27. Iniializarea celor doi regitri de deplasare
cu vectorul vid se face printr-un MD pe terminalul din stnga i selectare
Create Constant.

Figura 5.27

5. Salvai IV-ul sub numele Ex 5.7.vi.


6. Dai valori parametrilor N, Nmin, Nmax, Ndat i rulai instrumentul. Verificai
corectitudinea separrii celor doi vectori din vectorul niial.

90

Exerciiul 5.8
Enun

S se realizeze un IV care s contorizeze de cte ori s-a apsat pe un buton OK de


pe PF. Instrumentul s se poat opri n orice moment de la un buton de stop.
Mod de lucru

Se utilizeaz dou bucle WHILE, una n interiorul alteia. Bucla exterioar


contorizeaz apsarea butonului OK, n timp ce n bucla interioar se ateapt
apsarea butonului, care condiioneaz ieirea din aceast bucl. Ieirea din ambele
bucle este forat de apsarea butonului STOP. Organigrama problemei este dat n
figura 5.28, iar diagrama de legturi este dat n figura 5.29.
i=0

Afieaz i
DA

S-a apsat
butonul OK ?

i = i+1
Figura 5.28`

Figura 5.29

91

NU

Exerciiul 5.9
Enun

S se realizeze un IV care s aprind un indicator de tip Color Box pe culorile rou,


galben i albastru n funcie de poziia unui comutator fixat pe panoul frontal.
Mod de lucru

1. Deschidei un nou IV.


2. Plasai pe PF un indicator de tip Color Box i un control numeric de tip
Vertical Pointer Slide.
3. Schimbai reprezentarea controlului n I32.
4. Deschidei meniul shortcut al controlului i selectai Text Labels. In acest
moment controlul are doar dou poziii, min i max, fiecrei poziii fiindu-i
asociat un numr.
5.
6.
7.
8.

Deschidei meniul shortcut al controlului text


i selectai Edit Items...
Facei un dublu click pe textul min i scriei cuvntul rosu.
Facei un dublu click pe textul max i scriei cuvntul galben.
Facei un click sub cuvntul galben. S-a adugat o nou linie. Adugai acestei
linii cuvntul albastru.
9. Apsai OK. Observai cum controlul slide are acum trei poziii: rou, galben i
albastru. Fiecrei poziii i corespunde cte un numr: 0 pentru rou, 1 pentru
galben i 2 pentru albastru (figura 5.30).

Figura 5.30

10. Indicatorul Color Box este un indicator de tip numeric, care afieaz o culoare
corespunztoare unui anumit numr.
11. Plasai pe PF o structur CASE, creia i legai controlul slide la selector.
92

12. In cadrul 0 plasai o constant numeric din subpaleta de funcii numerice. Dai
acestei constante valoarea 16711680.
13. In cadrul 1 plasai o constant creia i atribuii valoarea 16773632.
14. Adugai un nou caz dup cazul 1. Plasai n cadrul 2 constanta 655580.
15. Scoatei toate cele 3 constante la ieirea structurii CASE printr-un tunel comun,
pe care-l legai la indicatorul Color Box.
16. ncadrai ntreaga diagram ntr-o bucl WHILE asistat de un buton de STOP.
17. Rulai instrumentul i verificai funcionalitatea.

Exerciii propuse
EP 5.2.
S se construiasc un vector format din N numere aleatoare cuprinse ntre dou
numere N1 i N2 fixate de pe panoul frontal. S se ordoneze apoi aceste numere n
ordine cresctoare sau descresctoare, selectabil dintr-un control de pe panoul
frontal.
EP 5.3.
a) S se construiasc un vector format din N numere ntregi aleatoare cuprinse ntre
dou numere date, Nmin i Nmax fixate de pe panoul frontal.
b) S se determine apoi de cte ori un numr dat pe PF coincide cu elementele
vectorului construit i s se afieze un vector cu indecii elementelor gsite.
c) S se nlocuiasc elementele gsite cu valoarea lui Nmax+1.
EP 5.4.
S se construiasc o matrice cu dou linii, care s conin:
pe prima linie toate numerele pare cuprinse ntre dou numere date
pe a doua linie toate numerele impare cuprinse ntre dou numere date.
EP 5.5.
S se realizeze un instrument virtual care s calculeze i s afieze toi divizorii
unui numr dat.
EP 5.6.
S se realizeze un IV care s afieze toate numerele prime pn la un numr dat pe
panoul frontal.
EP 5.7.
S se construiasc o matrice cu M linii i N coloane (M i N fixate de pe panoul
frontal) ale crei elemente sunt numere ntregi aleatoare cuprinse ntre 0 i 50.
S se afieze apoi de cte ori un numr dat pe PF se afl printre elementele matricii
de mai sus i s se nlocuiasc aceste elemente cu numrul 51.

93

EP 5.8.
S se realizeze un IV care s elimine dintr-un vector dat pe PF un anumit element
i s afieze vectorul rmas.
EP 5.9.
Fie semnalul digital ale crui eantioane sunt date n tabelul de mai jos. tim c
eantionarea s-a efectuat cu perioada T0 = 1 ms. S se realizeze un IV care s
determine automat perioada unui semnal eantionat aplicat la intrare i s se
exemplifice funcionarea prin exemplul de semnal de mai jos.

) Se poate utiliza funcia Threshold 1D array i structuri adecvate.


0.2

2.2

4.2

6.2

4.2

2.2

0.2

-1.8

-3.8

-5.8

-3.8

-1.8

0.2

2.2

4.2

6.2

EP 5.10.
a) S se realizeze un IV care s simuleze, utiliznd generatorul de semnale
aleatoare, aruncarea a dou zaruri. Aruncarea se iniiaz de la un buton de pe
PF.
b) S se afieze de cte ori s-a aruncat o anumit valoare a sumei zarurilor ntr-o
sesiune de aruncri. Panoul frontal al instrumentului este dat n figura 5.31.

Figura 5.31

EP 5.11.
S se realizeze un IV care s genereze un vector de N numere aleatoare ntregi
cuprinse ntre dou numere date pe PF. S se construiasc apoi un alt vector care s
fie format din produsele elementelor primului vector, luate dou cte dou. De
exemplu, primul element al celui de-al doilea vector este produsul primului cu al
doilea element al primului vector, al doilea element este produsul dintre al treilea i
al patrulea, .a.m.d.
94

Capitolul 6

IRURI DE CARACTERE

Caracterele sunt tipuri de date stocate pe un singur octet, reprezentate n calculator


prin valoarea codului lor ASCII (American Standard Code for Information
Interchange).
irurile de caractere (string) reprezint succesiuni de coduri ASCII. Ele se
utilizeaz n special acolo unde este nevoie ca informaiile s poat fi citite i
editate direct, utiliznd programe de procesare a textelor. Conversia datelor de
orice tip n iruri de caractere se face de regul pentru salvarea acestora n fiiere
sau pentru afiarea de mesaje pe panoul frontal. Conversia irurilor de caractere n
alte tipuri de date se face la descifrarea unor mesaje furnizate de unele aparate de
msur, extragerea informaiei de msur. Controalele i indicatoarele de tip ir de
caractere pot fi accesate din subpaleta String & Path. In controale, introducerea
datelor sub form de text se introduce de la tastatur.
Reprezentarea binar a unui numr scris sub forma irurilor de caractere este
diferit de reprezentarea lui sub form numeric. Operaiile cu numere sub forma
string sunt specifice acestor tipuri de date i se gsesc n subpaleta de funcii
String i nu Numeric.

Afiarea datelor pe controlul (indicatorul) de pe PF poate fi fcut n urmtoarele


feluri, selectabil din meniul pop-up:
Normal Display arat caracterele aa cum au fost introduse, fr a se
evidenia semnele speciale (Tab, CR, Space, etc.)
\ Codes Display - afieaz i codurile caracterelor speciale. Acestea sunt:
Tabelul 6.1

Cod
\00 - \FF

\b
\f
\n
\r

Semnificaie
Valoarea n hexa a unui caracter. Trebuie s fie scris cu
litere mari
Backspace (ASCII BS, \08)
Form feed (ASCII FF, \0C)
Linefeed (ASCII LF, \0A)
Carriage return (ASCII CR, \0D)

95

\t
\s
\\

Tab (ASCII HT, \09)


Space (echivalent \20)
Backslash (ASCII \, \5C)
Password Display - afieaz n loc de caractere semnul *
Hex Display - afieaz codurile ASCII ale caracterelor n hexa. Ca i \
Codes Display, aceast afiare este util la depanare i atunci cnd se
comunic cu instrumente.

Funcii cu iruri de caractere


Aceste funcii se gsesc n subpaleta String de pe paleta de funcii. Vom prezenta
n continuare dou dintre funciile de baz, cu care se realizeaz conversia din tipul
de date caracter n alte tipuri de date i invers.

Funcia Scan From String


Aceast funcie scaneaz irul de intrare i-l convertete n conformitate cu
formatul stabilit la intrarea Format String. Pentru stabilirea formatului, se poate
utiliza fereastra interactiv de dialog obinut prin dublu clic pe funcie sau din
meniul shortcut al funciei, opiunea Edit Scan String.
Datele sunt disponibile la ieirile Output (n), care iau forma tipului de dat
stabilit la format. Dac tipul de dat specificat prin format nu este gsit n ir,
atunci la ieire se afieaz valorile implicite stabilite prin intrrile Default Value
(n). Se pot stabili oricte ieiri prin redimensionarea numrului acestora (la fel ca la
matrici).

Este necesar s se tie dinainte formatul datei cutate.

Exemple
Tabelul 6.2

Input string

Format string

Default(s)

Output(s)

abc, xyz,
12.3+56i
7200

%3s, %s%f%2d

Q+1.27E-3
tail
0123456789

Q%f t

abc
xyz
12.3+56i
7
1.27E-3

%3d%3d

96

12
345

Remaining
string
00

ail
6789

X:9.860
Z:3.450

X:%fY:%f

set49.4.2

set%d

100 (I32)
100.0
(DBL)
-

10
100.0

Z: 3450

49

.4.2

Funcia Format Into String


Aceast funcie convertete datele de la intrare n ir de caractere, n concordan
cu formatul specificat. Datele de intrare pot fi iruri de caractere, numere, date de
tip enum, ci i amprente de timp (numrul de secunde scurs de la Timpul
Universal, care este vineri, 1 ianuarie 1904, ora 0.00). Nu admite ca intrri matrici
i clustere. Pentru stabilirea formatului se poate utiliza fereastra interactiv de
dialog obinut prin dublu clic pe funcie sau din meniul shortcut al funciei,
opiunea Edit Scan String. Se pot aduga oricte operaii de conversie (intrri), prin
scrierea acestora n directiva de format una dup alta, fr spaii. La ieire, irurile
corespunztoare se concateneaz.
Input String este un ir iniial, care se concateneaz cu rezultatul conversiilor.

Stabilirea formatului
Sintaxa formatului din funciile Scan From String i Format Into String este
urmtoarea:
[Str]%[-][0][lime][.precizie]{u.m.}Conversie[Str]
unde:
Str un ir oarecare care precede sau succede numrul
[-] aliniere la stnga. Dac lipsete, alinierea se face la dreapta.
[0] indic faptul c locurile libere se completeaz cu zerouri. Dac lipsete,
completarea se face cu spaii goale.
[lime] numrul minim de caractere alocate numrului
[.precizie] numrul de cifre zecimale
{u.m.} unitatea de msur
Conversie este unul din caracterele:
f format fracionar (ex. 12,345)
e format tiinific (ex. 1,234E1)
g format fracionar/tiinific
p format n sistemul internaional de uniti
d format ntreg zecimal (ex. 12)
x ntreg n hexazecimal (ex. B8)
o - ntreg n octal (ex. 701)
b ntreg n binar (ex. 10110)

97

t relativ la timp
T amprent de timp
s string (ex. Abc)
% - caracter

Exemple
Formatul %3.2f semnific:
3 = numrul minim de caractere alocat numrului. Numrul se aliniaz la
dreapta. Dac avem %-3.2f, numrul se aliniaz la stnga. Dac avem
%03.2f, locurile rmase libere se completeaz cu 0.
2 = numrul de cifre de dup virgul.
Tabelul 6.3

Format
score= %2d%%
level= \n%-7.2e V

Argument
87
0.03642

Name: %s, %s.

Smith
John
96.793
Fahrenheit
Hello, World
5.67 N
5.67 N
5.67 N

Temp: %05.1f %s
String: %10.5s.
%5.3f
%5.3{mN}f
%5.3{kg}f

Ieire
score= 87%
level=
3.64e-2 V
Name: Smith, John.

Temp: 096.8 Fahrenheit


String:_____Hello.
5.670 N
5670.000 mN
5.670 ?kg

Not: Ultimele 3 exemple sunt pentru intrri nsoite de uniti de msur. La


ultimul exemplu nu a fost recunoscut unitatea de msur.

Exist o serie de funcii de conversie numeric string i invers n subpaleta


String/Number Conversion. Acestea sunt funcii mai simple, nu este necesar
specificarea formatului, ns sunt dedicate unui anumit tip de numr. De exemplu
funcia Number to Fractional String convertete un numr real ntr-un ir de
caractere, creia i se pot specifica lungimea i precizia ca intrri n funcie.

Funciile duale Array to Spreadsheet String i Spreadsheet


String to Array
Aceste funcii realizeaz conversiile matricilor i a vectorilor n formate de
stringuri speciale (Spreadsheet) i invers. Conform acestui format, elementele de
pe o linie sunt separate ntre ele prin tabulatori, iar liniile sunt separate prin
98

Carriage return i Line Feed (echivalent cu apsarea tastei Enter). Se pot specifica
totui i alte semne de separaie ntre elemente n afara tabulatorilor.
Acest tip de scriere a stringurilor este recunoscut i de alte medii de
programare sau programe utilizate: C, Excel, Mathcad, Spice, etc. La aceste funcii,
formatul se scrie la fel ca la funcia Format Into String, ns nu se mai face n mod
interactiv.
Exerciiul 6.1
Scop

Studiul funciilor cu iruri de caractere din subpaleta String.


Mod de lucru

1. Deschidei un nou IV.


2. Plasai pe PF un control de tip String din subpaleta de controale String &
Paths.
3. Introducei n control urmtorul text:
Aceasta este prima linie.
Aceasta este a doua linie.
4. Vizualizai textul n cele 4 moduri: Normal, / Codes Display, Password
Display, Hex Display.
5. Utiliznd vizualizarea n hexa, determinai codurile ASCII ale urmtoarele
caractere: A, e, p, . , spaiu (\s), sfrit de linie (\n).
6. Trecei pe DL i deschidei subpaleta de funcii String.
7. Trecei n revist funciile disponibile i citii-le helpul.
8. Experimentai funciile: String length, Concatenate string, String subset, To
upper case, To lower case, Replace substring, Search and replace string,
Match pattern.
Exerciiul 6.2
Scop

Studiul funciei Format Into String..


Mod de lucru

1.
2.
3.
4.
5.

Deschidei un nou IV.


Plasai pe PF un control numeric i un indicator string.
Introducei n control numrul 7,54673.
Aducei pe DL funcia Format Into String.
Citii helpul funciei i identificai intrrile i ieirile.
99

6. Deschidei fereastra interactiv de stabilire a formatului (dublu click pe funcie


sau deschidei meniul shortcut, opiunea Edit Format String).
7. In seciunea Selected operation modificai opiunile disponibile i observai
cum se modific formatul n fereastra Corresponding Format String.
8. Legai numericul la intrarea Input 1 i indicatorul string la ieirea funciei.
9. Validai Use minimum field width (1) i Use maximum string length (2).
10. In (1) scriei cifra 2 i n (2) scriei cifra 3. Observai cum s-a modificat
formatul.
11. Rulai instrumentul i observai rezultatul.
12. In (1) scriei cifra 5, iar n (2) scriei cifra 1. Rulai i observai rezultatul. In
indicatorul string, numrului convertit i s-au rezervat 5 spaii din care doar 3
sunt ocupate, celelalte dou fiind lsate libere. irul de caractere ce reprezint
numrul este aliniat la dreapta. Cele dou spaii libere pot fi observate dac pe
indicatorul string se afieaz codurile caracterelor (opiunea / Codes
Display).
13. Deschidei din fereastra de editare a formatului i n seciunea Options selectai
Pad using Zeros. Observai cum s-a modificat formatul.
14. Rulai i observai rezultatul.
15. In fereastra de editare a formatului, n seciunea Options selectai Left justify.
Observai cum s-a modificat formatul.
16. Rulai i observai rezultatul.
17. Adugai unitatea de msur Newton (N) controlului numeric. Pentru aceasta
selectai Visible Items Unit Label. In eticheta unitii scriei N.
18. Rulai din nou i observai cum la numrul convertit n string se adaug
unitatea de msur.
19. Se poate face conversia direct a unei uniti de msur n alt unitatea de
msur pentru aceeai mrime. Pentru aceasta se adaug dup cifra de precizie,
ntre acolade, noua unitate de msur. Poate fi i un multiplu sau submultiplu al
aceleiai uniti ca la intrare.
20. nlocuii formatul existent cu formatul %5.3{mN}f.
21. Rulai i observai n rezultat conversia N mN.
22. Adugai o nou operaie (apsai butonul Add New Operation) creia i
stabilii un format binar. Observai c s-a creat o nou intrare funciei. Creai
automat un control numeric acestei noi intrri i dai o valoare oarecare
controlului.
23. Rulai i observai n rezultat scrierea n binar a prii ntregi a numrului.
24. Adugai un nou argument cu format string. Observai cum intrarea nou creat
ia culoarea specific tipului de date din format.
25. Legai un control string la intrare (care s conin i numere) i rulai.
26. Experimentai exemplele din tabelul 6.3.
27. Salvai instrumentul cu numele Ex 6.2.vi.

100

Exerciiul 6.3
Scop

Studiul funciei Scan From String.


Mod de lucru

1.
2.
3.
4.
5.

Deschidei un nou IV.


Plasai pe PF un control string, un indicator numeric i un indicator string.
Plasai pe DL funcia Scan From String.
Citii helpul funciei i identificai intrrile i ieirile.
Experimentai exemplele din tabelul 6.2.

Exerciiul 6.4
Scop

Studiul funciei Array to Spreadsheet String.


Mod de lucru

1. Deschidei un nou IV.


2. Plasai pe PF un control de tip matrice 3 x 2 cu elementele diverse numere
reale.
3. Aplicai matricea la intrarea unei funcii Array to Spreadsheet String.
4. Experimentai cu diverse formate: %3.2f, %10.2f cu aliniere la stnga i la
dreapta, %d, %2d. Observai cum se realizeaz conversia pe un indicator de tip
string.
5. Afiai pe indicator scrierea codat i observai poziia spaiilor, taburilor, etc.
6. Experimentai i cu alte semne de delimitare ntre elementele matricii n loc de
tab.
Exerciiul 6.5
Enun

Pe PF se plaseaz un control numeric. S se afieze pe un indicator de tip string


urmtorul text:
Numarul afisat este .
Textul a fost creat la data de: ., ora
Autorul textului este (numele).
Mod de lucru
Rezolvarea problemei necesit concatenarea unor iruri de caractere, obinute fie
din texte scrise sub form de constante, fie din conversia altor tipuri de date n
101

iruri de caractere. Funcia cea mai potrivit pentru construirea textelor prin
concatenare este Format Into String, deoarece aceasta permite i conversia direct
a numerelor i a altor tipuri de date n iruri de caractere. O alt funcie cu care se
pot construi texte prin concatenare este Concatenate Strings.
1.
2.
3.
4.

Deschidei un nou IV.


Plasai pe PF un control numeric.
Plasai pe DL funcia Format Into String.
Realizai diagrama din figura 6.1. Trecerea de la o linie la alta se face cu
constantele Line Feed sau Carriage Return. Data i ora curent se obin direct
n format string cu ajutorul funciei Get Date/Time String din subpaleta
Timing.

Figura 6.1

5. Rulai instrumentul i verificai rezultatul.


6. Rezolvai aceeai problem utiliznd funcia Concatenate Strings.
7. Salvai instrumentul sub numele Ex 6.5.vi.

Exerciii propuse
EP 6.1.
S se realizeze un IV care s caute ntr-un text dat un grup de litere i s-l
nlocuiasc cu alt grup de litere.
Variant: nlocuirea grupului cutat s se fac cu un numr fixat pe PF.
EP 6.2.
S se realizeze un instrument virtual care s extrag i s afieze ntr-un vector
toate numerele reale dintr-un text dat.
EP 6.3.
S se realizeze un IV care s extrag dintr-un text dat toate cuvintele care ncep cu
litera s i s le afieze ntr-un vector de stringuri.

102

Afiarea datelor n tabele


Un tabel este un indicator n care informaia este ordonat pe linii i coloane. Ca tip
de dat, tabelul este o matrice cu 2 dimensiuni de date de tip ir de caractere.
Tabelul se gsete n subpaleta de controale List & Table.
Tabelul este format din linii i coloane, separate prin linii de delimitare. Liniile
de delimitare pot fi fcute vizibile sau nu din Visible Items. Fiecare linie (coloan)
poate conine cte un cap de tabel (header). Inscripionarea capurilor de tabel se
face manual. Headerul este separat de restul datelor printr-o linie dubl. El poate fi
de asemenea fcut vizibil sau nu din Visible Items.
Dac tabelul conine mai multe date dect suprafaa vizibil, sunt disponibile
bare de defilare (scrollbar) att pe vertical ct i pe orizontal. Aceste bare pot fi
ascunse din Visible Items.
Introducerea datelor n tabel se face cu unealta text. Datele de intrare (ieire) n
(din) tabel sunt matrici de stringuri. Conversia matrice de numere - matrice de
stringuri se face cu funciile de conversie din subpaleta de funcii String/Number
Conversion.
Exerciiul 6.6
Scop

Studiul tabelelor.
Mod de lucru

1. Deschidei un nou IV.


2. Plasai pe PF un control de tip tabel. Schimbai controlul n indicator.
3. Afiai header-ul de coloane i editai celule corespunztoare primelor 3
coloane cu textele: Coloana 1, Coloana 2, Coloana 3.
4. Plasai o matrice numeric bidimensional cu 2 linii i 3 coloane cu elemente
numere oarecare.
5. Aplicai matricea tabelului prin intermediul funciei de conversie Number To
Fractional String din subpaleta String/Number Conversion. Fixai precizia la 3
cifre dup virgula zecimal.
6. Rulai instrumentul i observai rezultatul.
7. Salvai sub numele Ex 6.6.vi.
Exerciiul 6.7
Enun

S se construiasc un instrument virtual care s afieze ntr-un tabel, pe coloane,


valorile funciilor:
103

f 1( x ) = x 2 + log x + 1
f 2( x ) = 2 sin(x / 180)
f 3( x ) = x 3 + x
pentru toate valorile lui x numr ntreg cuprinse ntre 2 i 15.
Headerul fiecrei coloane conine numele funciei corespunztoare.
Mod de lucru

1.
2.
3.
4.
5.
6.

Deschidei un nou IV.


Plasai pe PF un tabel indicator.
Adugai tabelului headerul de coloane.
Scriei n header numele fiecrei funcii: f1, f2, f3.
Plasai pe DL o bucl FOR.
Construii diagrama din figura 6.2. Numrul de rulri este 14 (numerele de la 2
la 15). S-a utilizat Formula Node pentru o mai uoar scriere a relaiilor.
Rezultatele sunt scoase la ieirea buclei FOR prin autoindexare, dup care se
construiete matricea cu toate cele 3 iruri de rezultate utiliznd Build Array.
Conversia matricii numerice n matrice string se face cu funcia Number To
Fractional String (funcia Format Into String nu accept matrici la intrare). A
fost necesar transpunerea pentru ca irurile cu rezultate s fie dispuse pe
coloane.
7. Rulai instrumentul i observai rezultatul.
8. Salvai sub numele Ex 6.7.vi.

Figura 6.2

Exerciii propuse
EP 6.4.
S se realizeze un IV care s ordoneze n ordine alfabetic, pe coloane, cuvintele
scrise ntr-un tabel.
EP 6.5.
S se realizeze un IV care s afieze ntr-un tabel, pe M linii i N coloane, numere
ntregi aleatoare cuprinse ntre dou numere date, N1 i N2. S se gseasc apoi
104

toate coincidenele numerelor din tabel cu un numr dat K i s se afieze numrul


acestor coincidene i coordonatele elementelor gsite (nr.linie, nr.coloan).
De pe panoul frontal se fixeaz: M, N, N1, N2, K.

105

Capitolul 7

VARIABILE LOCALE I GLOBALE

Variabilele locale (VL) sunt obiecte de pe DL care corespund unor controale sau
indicatoare de pe PF, fiind identificate dup eticheta acestora. Scrierea ntr-o
variabil local are acelai rezultat ca i introducerea datelor ntr-un terminal, chiar
dac acesta este control sau indicator. In fapt, variabila local este o oglind a
zonei de memorie unde se afl terminalul corespunztor. Cu variabila local se
poate citi acea zon de memorie sau se poate scrie n ea. Aadar, printr-o variabil
local un control se poate utilizat fie ca intrare, fie ca ieire de date.
Datele dintr-o variabil local pot fi utilizate doar n IV-ul n care a fost creat
variabila. Putem avea oricte variabile locale pentru un terminal. Acestea se pot
utiliza n situaii n care prezena terminalului este necesar n mai multe locuri
odat (de exemplu n structuri). De asemenea, VL sunt utile atunci cnd se dorete
transportul datelor pe o diagram complicat, fr a mai fi necesar realizarea
legturii prin fir.
Crearea unei variabile locale se face n dou moduri:
1) Deschidei meniul shortcut al terminalul al crui variabil local dorii s o
creai, apoi selectai Create Local Variable. Se creeaz astfel n mod
automat variabila local cu numele etichetei terminalului.
2) Accesai de pe DL subpaleta de funcii Structures Local Variable. Plasai
variabila pe DL. Facei apoi MD pe semnul ntrebrii i selectai Select
Item. Se deschide o fereastr cu numele tuturor terminalelor care accept
atribuirea de variabile locale. Alegei din aceast fereastr terminalul dorit.
Exerciiul 7.1
Scop

Studiul variabilelor locale.


Mod de lucru

1. Deschidei un nou IV.


106

2. Plasai pe PF un control numeric.


3. Creai pentru controlul numeric o variabil local.

In momentul crerii, variabila local este capabil s primeasc date. Dac mergei
cu prompterul pe variabil, vei observa apariia unui terminal n partea stng a ei,
semn c aceasta primete date. Schimbarea variabilei locale din primitor n
furnizor de date se face din meniul shortcut, opiunea Change To Read.

4. Legai la VL un control.
5. Dai o valoare controlului iniial diferit de 0 i rulai instrumentul. Observai
c, deoarece controlul legat la VL conine valoarea 0, i controlul reprezentat
de VL primete valoarea 0.
6. Dai acum o valoare diferit de 0 controlului legat la VL. Rulai instrumentul.
Observai cum controlul iniial ia valoarea VL.
7. Schimbai VL n variabil de citire (Change To Read) i controlul asociat ei n
indicator. Refacei legtura.
8. Dai o valoare controlului iniial i rulai instrumentul. Observai cum
indicatorul citete valoarea VL, deci a controlului pe care l reprezint.
9. Repetai studiul cu date de tip boolean, string i array.
10. Salvai sub numele Ex 7.1.vi.
Variabilele globale (VG) sunt variabile stocate n nite IV-uri care au doar panou
frontal, numite containere de variabile globale. VG sunt stocate n nite controale
de pe PF al containerului, care pstreaz valorile variabilelor utilizate n IV-urile
care le apeleaz. Scopul crerii acestor tipuri de variabile este de a utiliza datele
create ntr-un IV n mod global i n alte IV-uri.
Ca i variabilele locale, cele globale sunt apelabile pe DL prin noduri specifice,
care se gsesc n subpaleta de structuri Global Variable. Realizarea unui dublu
click pe VG de pe DL deschide PF al containerului. Aici se pot aduga oricte
controale de pe paleta de controale, fiecare din acestea reprezentnd o VG.
Obligatoriu, controalele se vor eticheta, deoarece apelarea variabilelor se va face
prin aceast etichet. In figura 7.1a este prezentat containerul Global1.vi care
conine variabila global VG numeric. Aceast variabil global este apelat de
ctre IV-ul din figura 7.1b, care este nscris prin controlul Numeric.
Dup plasarea unei VG pe DL i definirea unui PF pentru ea, nodul este asociat
acelui PF. Deoarece sunt mai multe variabile asociate aceluiai PF, trebuie selectat
dintr-o list numele variabilei creia i se adreseaz. Aceast list se afieaz prin
dublu click pe VG creat sau din meniul shortcut opiunea Select item.
Intr-o VG se pot scrie sau din ea se pot citi date. Ca i la VL, pentru citire se
selecteaz din meniul shortcut Change to Read, iar pentru scriere se selecteaz
Change to Write. VG pot fi citite sau scrise de ctre orice IV aflat n memorie la un
moment dat. Trebuie avut ns grij ca citirea s se fac atunci cnd datele sunt
stabile, adic un alt IV s nu scrie atunci cnd VG este citit.
Plasarea aceleiai VG n alt IV se face prin apelarea ei ca orice subIV din
subpaleta de funcii, cu opiunea Select a VI.
107

a)

b)
Figura 7.1

Exerciiul 7.2
Scop

Studiul variabilelor globale.


Mod de lucru

1. Deschidei un nou IV.


2. Plasai pe DL o variabil global din paleta de structuri, Global Variable.
3. Deschidei PF al VG prin dublu click pe ea sau din meniul shortcut opiunea
Open Front Panel. Acesta este un container de VG. Observai c n meniul
View nu este valid deschiderea diagramei de legturi.
4. Plasai pe PF al containerului un control numeric etichetat VG numerica, unul
boolean etichetat VG booleana i unul string etichetat VG string.
5. Salvai containerul sub numele implicit (Global 1.vi) n acelai folder unde
salvai i IV-urile. Lsai PF al containerului deschis.
6. Trecei pe PF al IV-ului iniial. Plasai pe PF un control de tip numeric.
7. Deschidei meniul shortcut al variabilei globale. Selectai Select Item.
Observai c avei la dispoziie toate variabilele globale din containerul
Global1.vi.
8. Selectai VG numerica.
9. Legai variabila la controlul numeric.
10. Micorai fereastra astfel nct s avei disponibile concomitent i PF al
instrumentului, i PF al containerului Global 1.vi.
11. Rulai IV-ul cu Run Continuously i dai valori controlului numeric. Observai
modificarea concomitent a valorii variabilei VG numerica de pe PF al
containerului.
108

12. Oprii IV-ul de la butonul Abort Execution.


13. Adugai pe DL a instrumentului variabilele globale VG booleana i VG string.
Pentru aceasta avei dou posibiliti:
a. copiai variabila VG numerica, apoi selectai variabila dorit cu Select Item.
b. adugai o nou variabil din subpaleta de funcii opiunea Select a VI,
dup care selectai containerul Global1.vi i variabila dorit cu Select Item.

Adugarea unei noi VG din subpaleta de structuri nseamn crearea unui nou
container, cruia trebuie s-i adugai alte variabile globale.

14. Legai controale corespunztoare variabilelor i experimentai scrierea cu


diverse valori.
15. Deschidei un nou IV.
16. Adugai pe DL variabila global VG numerica dup procedeul de la pct. 13.
17. Schimbai variabila n citire, din meniul shortcut Change To Read.
18. Creai automat variabilei un indicator.
19. Potrivii ferestrele celor dou instrumente i a containerului astfel nct acestea
s fie afiate concomitent.
20. Pornii cele dou instrumente i modificai valoarea controlului numeric al
primului instrument, urmrind valoarea indicatorului celui de-al doilea
instrument i valoarea variabilei globale de pe PF al containerului.
21. Salvai cele dou instrumente sub numele Ex 7.2a.vi i Ex 7.2b.vi.
Exerciiul 7.3
Enun

S se realizeze un IV care s calculeze i s afieze pe un indicator string nti


suma i apoi produsul a dou numere fixate de pe panoul frontal. Instrumentul
funcioneaz dup urmtorul protocol:
1. La pornirea instrumentului, se realizeaz suma numerelor i se afieaz pe un
indicator mesajul: Suma numerelor este:.
2. La apsarea unui buton OK de pe PF, se trece la efectuarea calculului
produsului, dup care se afieaz mesajul: Produsul numerelor este:.
3. La apsarea din nou a butonului OK se deschide o fereastr de dialog pe care
se afieaz textul: Dorii un nou calcul?
4. Dac se dorete un nou calcul, se apas butonul DA, iar daca nu se dorete, se
apas butonul NU.
5. Dac se apas butonul DA, se reia ciclul de la punctul 1, iar dac se apas
butonul NU instrumentul se oprete.
Mod de lucru

Organigrama instrumentului este prezentat n figura 7.2.


109

START

Citete A

Calculeaz A B

Citete B

Afieaz rezultat
AB

Calculeaz A + B

Apas buton OK

Afieaz rezultat
A+B
Apas buton OK

NU

Un nou
calcul ?

DA

STOP
Figura 7.2

Aciunile n cadrul instrumentului fiind secveniale, vom utiliza o structur de tip


secven.
1. Construii panoul frontal al IV-ului prin plasarea urmtoarelor elemente: dou
controale numerice etichetate A i B, un indicator string etichetat Mesaj i un
buton boolean de tip OK.
2. Plasai pe DL o bucl WHILE.
3. In bucla WHILE plasai o structur SECVEN.
4. Introducei n primul cadrul al secvenei operaia de adunare i afiarea
mesajului, pe care l realizai cu o funcie Format Into String (figura 7.3).
5. In cadrul al doilea vom introduce bucla de ateptare pentru apsarea butonului
OK. Aceasta const ntr-o bucl WHILE la a crei terminal de condiionare se
leag butonul OK. Atta timp ct butonul OK nu este apsat, instrumentul st
n bucl, ateptnd apsarea butonului OK.
6. Cadrul al 3-lea conine operaia de efectuare a produsului (figura 7.4).
Rezultatul produsului trebuie afiat n acelai indicator string, ca i suma.
ntruct indicatorul a fost utilizat n primul cadru, acum vom utiliza o variabil
local a sa, configurat n scriere.
110

Figura 7.3

Figura 7.4

Deoarece butonul OK va avea nevoie i el de o variabil local pentru cazul al 4lea (cnd instrumentul trebuie s atepte din nou apsarea butonului OK) i
LabVIEW nu accept crearea de variabile locale pentru butoanele cu aciune
mecanic latch, vom stabili butonului OK aciunea mecanic Switch When Pressed
i vom readuce n cadrul al treilea butonul la starea false. Schimbarea aciunii
mecanice a butonului se face din meniul su shortcut, opiunea Mechanical Action.

7. Cadrul al 4-lea este identic cu cadrul al 2-lea, numai c butonul OK va fi


reprezentat printr-o variabil local a sa (figura 7.5).

Figura 7.5

111

8. Pentru implementarea dialogului din cel de-al 5-lea cadru, vom utiliza funcia
Two Button Dialog din subpaleta Dialog & User Interface, cum este prezentat
n figura 7.6. Valoarea boolean furnizat la ieirea acestei funcii o legm la
terminalul de condiionare al buclei mari. Este necesar readucerea pe false a
butonului OK, pentru a-l pregti pentru un nou calcul.

Figura 7.6

9. Rulai instrumentul i verificai funcionarea.


10. Salvai sub numele Ex 7.3.vi.

Exerciii propuse
EP 7.1.
S se realizeze un IV care are panoul frontal din figura 7.7 i ndeplinete
urmtoarele funcii:
1. Genereaz numere aleatoare cuprinse ntre 10 i 20, la intervale de timp egale
cu 300 ms.
2. Dac numrul generat depete valoarea Nmax, pe un indicator de tip string
se afieaz mesajul S-a depit nivelul maxim i se aprinde LED-ul 1,
celelalte fiind stinse.
3. Dac numrul generat se afl sub valoarea Nmin, pe indicatorul string se
afieaz mesajul Sub nivelul minim i se aprinde LED-ul 2, celelalte fiind
stinse.
4. Dac valoarea numrului generat se afl ntre Nmin i Nmax, nu se afieaz
nici un mesaj i se aprinde LED-ul 3, celelalte fiind stinse.
) Temporizarea de 300 ms se poate face utiliznd funcia Wait (ms) din subpaleta
de funcii Timing.

112

Figura 7.7

EP 7.2.
S se realizeze un IV prin care s se introduc interactiv date ntr-un tabel n
urmtoarea ordine: nume, prenume, anul nasterii, grupa sanguina, la apsarea unui
buton de pe PF.
La apsarea butonului se deschid succesiv ferestre etichetate in care se cere
introducerea datelor specificate. Fiecare fereastra are prevzut un buton OK cu care
se valideaz datele.
La terminarea unui rnd de date se deschide o alt fereastr de dialog n care se
ntreab dac se dorete continuarea cu un nou ir de date. Validarea se face cu
dou butoane: DA i NU.
Datele sunt afiate n tabel n IVul principal pe linii. Coloanele au headere cu
numele informaiei cerute: Nume, Prenume, etc.

113

Capitolul 8

NODURI DE PROPRIETI

Nodurile de proprieti (Property Node) (NP) sunt noduri de pe DL pe care se pot


modifica n mod programatic proprieti ale unor obiecte LabVIEW. In acest
capitol ne vom ocupa doar de nodurile de proprieti ale controalelor i
indicatoarelor de pe PF.
Un NP pentru un control/indicator de pe PF se poate crea n dou moduri:
- din meniul shortcut al controlului/indicatorului, se selecteaz Create
Property Node, dup care se selecteaz proprietatea pe care dorim s o
programm. Prin aceast metod se creeaz un NP strict pentru acel
control, care poart aceeai eticheta.
- se plaseaz pe DL un nod de proprieti general din subpaleta de funcii
Application Control Property Node. Acestui NP trebuie s i asociem un
obiect printr-o referin. Pentru asocierea unui control/indicator de pe PF,
acestuia i se va crea o referin din meniul su shortcut, opiunea Create
Reference, referin ce va fi legat nodului de proprieti la intrarea
Reference.
Proprietile care pot fi editate i modificate difer mult de la un obiect la altul.
Fiecare control/indicator are proprietile lui specifice. Pentru schimbarea unei
proprieti, este suficient s se fac un click pe proprietate, cnd se va deschide
lista cu proprietile disponibile. In helpul mic sunt date informaii despre fiecare
proprietate i modul cum se folosete, prin simpla poziionare a mouse-ului pe acea
proprietate. Se pot aduga mai multe proprieti unui NP, astfel: fie din meniul
shortcut - Add Element fie prin extinderea dimensiunii ntocmai ca la matrici,
pornind de la punctul de redimensionare care apare la trecerea prompterului peste
NP (figura 8.1).

Figura 8.1

114

Proprietile sunt executate n ordine, de sus n jos. Proprietile pot fi scrise


sau citite. Proprietile care pot fi citite au o sgeat n partea dreapt, iar cele care
pot fi scrise au sgeata n partea stng. In exemplul din figura 8.1, proprietile
Increment i Format pot fi citite, iar proprietile Visible i Value pot fi nscrise.
Trecerea de la modul citire la modul scriere i invers se face din meniul shortcut
Change To Read (Change To Write).
Tipurile de date vehiculate de proprieti difer. De aceea, pentru scrierea sau
citirea lor, se recomand crearea automat a controalelor sau indicatoarelor
corespunztoare.
Exerciiul 8.1
Scop

Studiul nodurilor de proprieti.


Mod de lucru

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

Deschidei un nou IV.


Plasai pe PF un control de tip Numeric.
Creai un nod de proprieti pentru acest control, cu proprietatea Visible.
Creai un indicator pentru proprietatea Visible. Observai ce tip de dat s-a
creat.
Rulai instrumentul i observai indicatorul. Deoarece acesta se aprinde,
nseamn c controlul este vizibil.
tergei indicatorul boolean.
Trecei proprietatea Visible n modul scriere.
Creai automat un control.
Rulai instrumentul cu Run Continuously i apsai pe controlul boolean.
Observai apariia i dispariia controlului numeric.
Adugai i alte proprieti i verificai funcionarea.
Adugai pe PF i alte tipuri de controale, creai-le noduri de proprieti i
experimentai.

Exerciiul 8.2
Enun

S se realizeze un IV care s simuleze o surs de tensiune continu reglabil i un


indicator de tip voltmetru, legat la aceast surs.
Specificaii tehnice:
- Domeniul de reglare al sursei este 0 100 V.
115

Valoarea tensiunii se citete de pe un indicator de tip meter prevzut cu


comutator de game de msur cu capetele de scal: 1 3 10 30 100 V.
Indicatorul i schimb automat captul de scal n funcie de poziia
comutatorului.
Valorile cu care sunt inscripionate diviziunile semnificative ale scalei gradate
au precizia de o zecimal pentru gamele de 1 V i 3 V i fr zecimale pe
celelalte game.

Mod de lucru

1. Deschidei un nou IV.


2. Plasai pe PF un control numeric de tip Knob, din care vom regla tensiunea, un
indicator numeric de tip Meter pe post de volmetru i nc un control numeric
de tip Dial, pe care-l vom configura ca selector de game pentru indicatorul
Meter, ca n figura 8.2. Etichetai obiectele ca n figur.

Figura 8.2

3. Stabilii captul de scal al controlului Reglaj tensiune la 100.


4. Trecei controlul Game n modul Text Labels, din meniul shortcut.
116

5. Deschidei fereastra de editare a textului din meniul shortcut al indicatorului


text Edit Items.
6. Scriei n fereastr valorile capetelor de scal ale selectorul de game, ca n
figura 8.3.
7. Plasai pe DL o bucl WHILE asistat de un buton STOP, n care vom ncadra
diagrama IV-ului.

Figura 8.3

8. Facei legtura dintre controlul Reglaj tensiune i indicatorul Meter i rulai


instrumentul. Manevrai controlul. Observai necesitatea selectorului de game,
deoarece pentru valori ale controlului mai mari dect 10 (ct este deocamdat
captul de scal al indicatorului Meter), acul indicator ajunge la capt de scal.
9. Modificarea capetelor de scal al indicatorului Meter n funcie de poziia
selectorului de game o vom face programatic, utiliznd noduri de proprieti.
Creai un nod de proprieti pentru indicatorul Meter n modul urmtor: Create
Property Node Scale Range Maximum. (figura 8.4)

Figura 8.4

10. Trecei nodul n modul scriere (Change To Write).


117

11. In aceast proprietate vom nscrie valorile capetelor de scal, selectabile de


ctre controlul Game printr-o structur de tip CASE. Fiecrui capt de scal i
corespunde cte un cadru din structura CASE (figura 8.5).
12. Pentru rezolvarea ultimei condiii a problemei vom utiliza o proprietate prin
care se stabilete programatic formatul i precizia afiajului. Pentru aceasta
adugai nodului de proprieti al indicatorului Meter proprietile Scale
Format & Precision Format i Scale Format & Precision Precision.
13. Legai la proprietatea Format valoarea 0 pentru toate cazurile (0 nseamn
reprezentarea numrului n sistem zecimal) i la proprietatea Precision valorile
1 pentru cazurile corespunztoare gamelor 1 i 3 i 0 pentru celelalte 3 cazuri.
14. Salvai instrumentul sub numele Ex 8.2.vi.
15. Rulai i verificai funcionalitatea.

Figura 8.5

118

Capitolul 9

INDICATOARE GRAFICE

Indicatoarele grafice (IG) servesc la afiarea pe panoul frontal a curbelor, graficelor


i desenelor n mod bi i tridimensional sau sub form de palet de culori. In
LabVIEW exist mai multe tipuri de indicatoare grafice n subpaleta de controale
Graph. In cadrul acestui capitol ne vom ocupa doar de indicatoarele de tip
Waveform Graph, Waveform Chart i XY Graph.

Waveform Graphs (WG)


Pe WG se pot afia grafice de funcii univariabile, y = f(x), la care valorile
variabilei (punctele de pe abscis) sunt egal distanate (de exemplu un semnal
eantionat cu frecven de eantionare constant).

Afiarea unui singur grafic pe un Waveform Graph


Graph-urile accept la intrare dou tipuri de date:
a) vectori numerici, la care distana dintre punctele de pe abscis este considerat
1 (x = 1) (figura 9.1a);
b) cluster numeric format din 3 elemente: valoarea iniial a variabilei x0, distana
dintre dou puncte adiacente de pe abscis, x i valorile funciei sub form de
vector (figura 9.1b).

a)

b)
Figura 9.1

119

Afiarea de grafice multiple pe acelai Waveform Graph


Pentru afiarea mai multor grafice pe acelai indicator grafic, datele pot fi aduse la
intrare sub forma:
a) unei matrici bidimensionale, n care fiecare linie reprezint elementele cte
unui grafic. Graficele au aceeai abscis i acelai numr de puncte, iar distana
dintre punctele abscisei este x = 1, ncepnd de la x0 = 0. Este cazul afiarii
formelor de und achiziionate cu o plac de achiziii pe mai multe canale. In
acest caz, punctele fiecrei forme de und formeaz coloanele matricii i este
necesar o transpunere pentru afiarea corect pe WG (figura 9.2).

Figura 9.2

b) unor clustere, cu urmtoarele variante:


b1) cluster format din valoarea lui x0, x i matricea cu valorile semnalelor de
afiat. In acest caz se pot modifica valoarea de nceput x0 i distana
dintre puncte x, care sunt aceleai pentru toate graficele (figura 9.3a).
Graficele trebuie s aib acelai numr de puncte.
b2) vector de clustere, la care fiecare element este un cluster ce conine
vectorul cu valorile semnalului (figura 9.3b). In acest caz vectorii de
intrare, deci graficele pot avea numr diferit de elemente, ns toate ncep
de la x0 = 0 i x = 1.
b3) cluster format din valorile lui x0 i x, comune pentru toate graficele, i
vectorul de clustere format ca la punctul b2) (figura 9.3c). Graficele pot
avea numr diferit de elemente, dar toate au acelai x0 i x.
b4) vector de clustere construite ca la b1), ce reprezint cazul cel mai general
n care fiecare grafic are propriile x0, x i numr de elemente (figura
9.3d).

a)

b)

120

c)

d)
Figura 9.3

Waveform Charts (WCh)


WCh se comport la fel ca i WG, cu specificaia c, pe lng vectori sau matrici,
aceste indicatoare accept la intrare i scalari. Un scalar aplicat la intrare este afiat
imediat pe grafic, permind astfel urmrirea n timp real a evoluiei unui ir de
date sau a unei forme de und. In acest mod, WCh poate fi utilizat ca nregistrator
virtual. irul de date va fi actualizat prin adugare la datele afiate anterior.
Distana dintre valorile absciselor a dou puncte adiacente este x = 1. Datele
anterioare sunt pstrate ntr-un buffer al crui lungime poate fi prestabilit de ctre
utilizator. Pe WCh pot fi vizualizate datele anterioare prin derularea acestui buffer.
Pentru aceasta este disponibil un scroll-bar.

Afiarea unui singur grafic pe un Waveform Chart


Datele pot fi aduse la WCh fie sub form de vector, ca la WG, cnd toate vor fi
afiate odat, sau sub form de scalar, cnd vor fi adugate punct cu punct
graficului anterior. De regul, afiarea punct cu punct se face n cadrul unui proces
121

iterativ, care implic bucle FOR sau WHILE.


In exemplul din figura 9.4, pe WCh se afieaz punct cu punct restul mpririi
indexului buclei WHILE la 10, rezultnd un grafic sub form de dini de ferstru.
Punctele se acumuleaz n buffer i pot fi vizualizate prin derularea bufferului cu
ajutorul scroll-barului.

Figura 9.4

Mrimea bufferului poate fi ajustat din meniul shortcut, opiunea Chart


History Length Aceasta este dat n numrul maxim de puncte nregistrate.
Coninutul bufferului poate fi ters din meniul shortcut, opiunea Data
Operations Clear Chart.

Afiarea de grafice multiple pe acelai Waveform Chart


Dac graficele sunt sub form de vectori care trebuie afiai concomitent pe acelai
WCh, cu acetia se construiete utiliznd funcia Build Array o matrice
bidimensional ce va fi aplicat indicatorului (figura 9.5a).
Dac graficele sunt construite punct cu punct, scalarii fiecrui grafic se
nmnuncheaz ntr-un cluster, dup care se aplic indicatorului (figura 9.5b).

a)

b)
Figura 9.5

In cazul n care se afieaz mai multe grafice pe aceeai suprafa grafic a


unui WCh, acestea pot fi: a) suprapuse sau b) stivuite.
122

Graficele suprapuse se reprezint pe aceeai suprafa grafic, accesnd


opiunea Overlay Plots din meniul shortcut al indicatorului (figura 9.6a). Graficele
stivuite se reprezint pe suprafee grafice diferite, accesndu-se cu opiunea Stack
Plots din meniul shortcut al indicatorului (figura 9.6b).
Aceste dou opiuni sunt valabile numai cnd trasarea graficelor se face punct
cu punct (la intrare se aplic clustere de scalari).

a)

b)
Figura 9.6

Moduri de actualizare a graficelor pe un Waveform Chart


Actualizarea graficelor pe un WCh se poate face n 3 moduri, dup cum se
selecteaz din meniul shortcut, opiunea Update Mode. Cele 3 moduri sunt
disponibile doar la afiarea punct cu punct, n timp ce instrumentul funcioneaz.
Dac instrumentul se oprete, opiunea dispare din meniul shortcut. Cele 3 moduri
de actualizare sunt (figura 9.7):

Figura 9.7

Strip Chart graficul se desfoar continuu de la stnga spre dreapta, pe


msur ce se adaug noi puncte.

123

Scope Chart graficul este desenat progresiv, ca pe un osciloscop. Dup


baleierea complet de la stnga la dreapta a ecranului, graficul este ters i se
reia afiarea. ncepnd cu primul punct din stnga.
Sweep Chart permite vizualizarea i a vechiului grafic (de partea dreapt a
unei linii verticale ce baleiaz ecranul) i a celui nou (de partea stng a liniei),
ntocmai ca un EKG.

Schimbarea atributelor indicatoarelor grafice


Schimbarea atributelor indicatoarelor grafice Waveform Graph i Waveform Chart
se face utiliznd opiunile ce pot fi vizualizate sau ascunse din meniul shortcut,
Visible Items. Aceste opiuni deschid urmtoarele subpalete i legende prin care se
stabilesc atributele indicatoarelor:
- plot legend
- scale legend
- graph palette
- cursor palette (numai la graph)
- scrollbar (numai la chart)
1. Plot legend
Utiliznd aceast opiune, se pot modifica atributele graficelor legate de tipul i
forma punctelor, a liniilor, culoarea, modul de interpolare ntre puncte, etc.
Denumirea graficului poate fi schimbat cu unealta text.
2. Scale legend
Se pot stabili atribute legate de scalele x i y, cum ar fi: formatul i precizia
scalelor, dac s fie vizibile sau nu, autoscalarea, forma, culoarea i tipul gridurilor,
etc. Denumirile scalelor se modific cu unealta text.
3. Graph palette
Conine unelte de mrire sau micorare (zoom), de manevrare a graficului pe toat
suprafaa i de manevrare a cursoarelor. Cursoarele sunt disponibile numai la WG
i se definesc cu Cursor palette.
4. Cursor palette (numai la Waveform Graph)
De pe aceast palet se stabilesc forma, dimensiunile, culoarea, modul de
manevrare a cursoarelor i se pot realiza msurtori pe grafic. Cursorul indic n
orice moment coordonatele punctului n care se afl.
5. Scrollbar (numai la Waveform Chart)
Aceast opiune permite vizualizarea datelor anterioare stocate n bufferul WCh,
atunci cnd acestea nu pot fi afiate n ntregime pe suprafaa grafic disponibil.

124

XY Graphs (XYG)
Aceste indicatoare sunt tot forme de graph-uri la care datele sunt specificate prin
perechi de puncte ce reprezint coordonatele carteziene din planul de afiare
grafic. Se pot desena astfel orice forme geometrice plane, la care punctele nu
trebuie s fie neaprat egal distanate, ca la WG sau ca la WCh.

Afiarea unui singur grafic pe un XY Graph


Pentru afiarea unui singur grafic, un XYG aceept la intrare datele prezentate sub
dou forme:
a) un cluster cu dou elemente: unul este vectorul valorilor lui X, iar cellalt
vectorul valorilor lui Y (figura 9.8a). Cei doi vectori pot avea numr diferit de
elemente, dar numrul de puncte afiate este dat de vectorul cu cele mai puine
elemente.
b) un vector de clustere, fiecare element al vectorului fiind cte un cluster ce
conine dou controale numerice ce reprezint coordonatele carteziene ale
punctului (figura 9.8b).

b)

a)
Figura 9.8

Afiarea de grafice multiple pe acelai XY Graph


Pentru afiarea mai multor grafice pe acelai XYG, acestea se grupeaz ntr-un
vector dup care se aplic indicatorului, ca n figura 9.9. Vectorii pot avea orice
numr de elemente. Pentru fiecare grafic, numrul de elemente este dat de vectorul
cel mai mic.
Exerciiul 9.1
Enun

S se genereze i s se afieze grafic doi vectori formai din valorile funciei sinus,
respectiv cosinus, pe un numr de perioade selectate de pe panoul frontal. Pe PF se
mai dau numrul total de puncte i amplitudinea funciilor.
125

Figura 9.9

Cele dou funcii eantionate sunt date de urmtoarele relaii:

N p1

y1(i ) = A1sin 2
i
N

N p2

y 2(i ) = A2 cos 2
i
N

(9.1)

unde N este numrul total de puncte, Np1 i Np2 reprezint numrul de perioade,
iar A1 i A2 sunt amplitudinile funciilor sinus, respectiv cosinus.
Mod de lucru

1. Deschidei un nou IV.


2. Plasai pe PF controalele de fixare a numrului de eantioane (numeric I32), a
numrului de perioade (dbl) i a amplitudinilor celor dou funcii (dbl), precum
i un indicator de tip Waveform Graph, ca n figura 9.10.
Vom utiliza dou moduri de a construi funciile y1 i y2: cu ajutorul nodurilor
de formule i utiliznd generatorul de funcii din biblioteca LabVIEW.
Utilizarea nodului de formule

Generarea funciilor se va face prin calculul valorilor y1 i y2, punct cu punct, n


cadrul unei bucle FOR la care elementul de indexare i al formulelor este chiar
indexul buclei.
3. Construii cele dou funcii cu ajutorul unei structuri Formula Node, ca n
figura 9.11. Formele de und se obin prin autoindexarea la ieirea buclei FOR
a rezultatelor y1 i y2.
126

Figura 9.10

Figura 9.11

4. Dai valori parametrilor de intrare i rulai IV-ul. Vei obine pe indicatorul


grafic cele dou curbe, care au pe abscis indexul fiecrui punct de pe grafic
(n exemplul din figura 9.12 parametrii au fost urmtorii: N = 100, Np1 = 2,
Np2 = 3, A1 = 2, A2 = 3).
5. Deschidei meniul shortcut al indicatorului Waveform Graph i studiai-i
posibilitile de modificare a atributelor din Visible Items.
6. Ne propunem acum ca, pe abscis, n loc de indexul punctelor graficelor, s
avem valori de unghi exprimate n grade.

127

Figura 9.12

Pentru aceasta, vom utiliza modul b4) de la seciunea Afiarea de grafice multiple
pe acelai Waveform Graph, n care distana dintre dou valori adiacente de pe
abscis (cuanta de unghi), , este dat de transformarea n grade:

deltafi1 = 360 * Np1 / N


deltafi 2 = 360 * Np 2 / N

(9.2)

Cele dou relaii de mai sus ce definesc cuanta de unghi le calculm de


asemenea n cadrul nodului de formule. Diagrama final a IV-ului este prezentat
n figura 9.13.

Figura 9.13

7. Rulai acum instrumentul i observai rezultatul. Fiecare punct de pe grafic are


ca abscis un unghi, iar ca ordonat valoarea sinusului, respectiv a cosinusului
corespunztor.
128

8. Modificai eticheta abscisei din Time n Grade. Folosii pentru aceasta unealta
text.
9. Deschidei legenda de cursoare (Visible Items Cursor Legend) i creai dou
cursoare (MD pe legend Create Cursor Single Plot).
10. Micai cursoarele cte unul pe fiecare curb (iniial cursoarele se gsesc n
punctul de abscis 0) i urmrii coordonatele punctelor.
11. Adugai pe PF un Waveform Chart.
12. Realizai pe DL legturile pentru afiarea concomitent a ambelor grafice pe
WCh, n afara buclei FOR (figura 9.14).

Figura 9.14

Observai necesitatea intercalrii unei funcii de transpunere a matricii de intrare n


WCh, ntruct WCh citete datele pe coloane, iar cele dou funcii, y1 i y2, sunt
dispuse dup liniile matricii.

13. Rulai instrumentul de mai multe ori, cu diverse valori de intrare i observai
acumularea punctelor n istoricul WCh.
14. Adugai scrollbarul (Visible Items X Scrollbar) i derulai informaia
anterioar.
15. Modificai lungimea bufferului de stocare istoric din meniul shortcut, Chart
History Kength.
16. Mutai WCh n interiorul buclei FOR, pentru a-l utiliza cu funcia de
nregistrator punct cu punct. Realizai legturile conform figurii 9.15.

Figura 9.15

129

17. Adugai n bucl un temporizator de tipul Wait(ms) din subpaleta de funcii


Time. Fixai timpul de ateptare la 300 ms.
18. Rulai instrumentul i observai funcionarea.
19. Experimentai opiunile Stack Plots i Overlay Plots din meniul shortcut.
20. Utilizai cele 3 moduri de actualizare a graficelor, pe care le gsii n opiunea
Update Mode din meniul shortcut. Opiunea exist doar cnd instrumentul
funcioneaz.
21. Salvai IV-ul sub numele Ex 9.1a.vi.
Utilizarea generatorului de funcii

Aceleai grafice pot fi construite utiliznd generatorul de funcii Sine Wave.vi din
biblioteca LabVIEW. Acesta se afl n subpaleta Signal Processing Signal
Generation. In figura 9.16 este prezentat pictograma funciei Sine Wave.

Figura 9.16

Semnificaia terminalelor este urmtoarea:


Samples numrul de eantioane
Amplitude amplitudinea formei de und
Frequency frecvena normalizat, dat de relaia:
fn =

frecventa semnal
numar perioade
1
=
=
frecventa de esantionare numar total de esantioane numar esantioane pe perioada

(9.3)
Phase in faza iniial n grade
Reset phase determin faza iniial a formei de und. Dac Reset phase este
true, atunci faza iniial este phase in. Dac Reset phase este false, atunci faza
iniial este setat la valoarea phase aut a ultimei rulri a funciei.
Phase out faza ultimului eantion al irului, n grade.
Sine wave vectorul de materializeaz forma de und.

Nu este necesar includerea funciei ntr-o bucl, deoarece ea furnizeaz la ieire


direct forma de und printr-un vector.

130

22. Utiliznd aceleai date de intrare, construii formele de und y1 i y2 din


ecuaiile 9.1 cu ajutorul generatorul de funcii de mai sus. O soluie este dat n
figura 9.17.

Figura 9.17

23. Experimentai afiarea pe abscisa WG a fazei fiecrui punct generat.


24. Inlocuii WG cu WCh. Observai c n acest caz nu se mai poate face
nregistrarea punct cu punct a formei de und.
25. Salvai sub titlul Ex 9.1b.vi.
26. Studiai i alte funcii din subpaleta Signal Generation, citii-le helpul i
experimentai-le funcionarea.
Exerciiul 9.2
Enun

S se realizeze un IV care s deseneze n mod programatic, pe un XY Graph, un


ptrat cruia i se dau pe PF latura L i coordonatele colului din stnga sus, x1 i y1
(figura 9.18).
Mod de lucru

Dac (x1, y1) sunt coordonatele colului din stnga sus


i L este latura ptratului, atunci celelalte coordonate se
vor calcula cu relaiile:
x 2 = x1 + L
y 2 = y1

x3 = x 2

x 4 = x1

y 3 = y1 L

y 4 = y3

(9.4)

x1,y1

x2,y2

x4,y4

x3,y3

Astfel, vom crea un vector ce conine cele 4 abscise, plus al cincilea element egal
cu primul element, i alte vector format din ordonatele vrfurilor, plus al cincilea
element care este egal cu primul. Cel de-al cincilea element se adaug deoarece, pe
XYG, laturile ptratului se obin prin unirea cu linii drepte a punctelor plasate pe
131

suprafaa grafic, cel de-al cincilea punct fiind necesar pentru trasarea celei de a
patra laturi.

Figura 9.18

1. Utiliznd un nod de formule, construii cei doi vectori utiliznd relaiile (9.4).
2. Dai valori coordonatelor colului i laturii i rulai instrumentul.
3. Salvai IV-ul sub titlul Ex 9.2.vi.

Figura 9.19

Figuri geometrice, precum i desene complexe se pot realiza utiliznd funciile


specifice de desenare din subpaleta de funcii Graphics & Sound Picture
Functions. Desenarea se face pe un indicator grafic special al crui suprafa este
mprit n pixeli, coordonatele obiectelor desenate fiind date n pixeli. Colul din
stnga sus reprezint originea.

132

Exerciii propuse
EP 9.1.
Dup modelul de la exerciiul 9.2, desenai pe suprafaa unui WY Graph un
triunghi echilateral, cruia i se dau de pe panoul frontal latura i coordonatele unuia
dintre vrfuri. ncercai s realizai triunghiul i utiliznd funciile din biblioteca
Graphics & Sound Picture Functions.
EP 9.2.
S se realizeze un IV care s deseneze pe un WY Graph un cerc cruia i se
specific raza i coordonatele centrului.

) Coordonatele unui punct de pe cerc sunt date de relaiile:


x = x0 + r cos
y = y 0 + r sin

(9.5)

EP 9.3.
S se realizeze un instrument virtual care s ndeplineasc urmtoarele cerine:
1. Genereaz, la alegere, urmtoarele tipuri de funcii: sinusoidal,
triunghiular, dreptunghiular, ramp, selectabil dintr-un control de pe PF.
De pe PF se mai stabilesc: frecvena semnalului n Hz, frecvena de
eantionare n Hz, numrul de perioade, faza iniial, amplitudinea, offsetul (componenta continu). La funcia dreptunghiular se va specifica i
factorul de umplere (duty cycle %).
2. Pe PF va fi un LED care se aprinde dac nu este ndeplinit condiia
Nyquist i se afieaz mesajul: Conditia Nyquist nu este ndeplinit.
Ajustai f sau fe.
3. Indicatorul grafic va avea pe abscis faza, exprimat n grade (figura 9.20).

)Utilizai generatoarele din subpaleta Signal Generation.


) Pentru calculul parametrilor de intrare utilizai relaiile (9.3) i relaia:
Numarul total de esantionae =

Numar perioade
Frecventa normalizata

(9.6)

EP 9.4.
S se realizeze un instrument virtual care s calculeze i s traseze pe acelai grafic
funciile:

y = x 3 + mx 2 + 1;
y = ax + b

133

Figura 9.20

pentru x numr ntreg cuprins ntre dou valori, Nmin i Nmax, stabilite de pe
panoul frontal. De pe PF se mai stabilesc de asemenea valorile coeficienilor m, a i
b. Trasarea graficelor se va face att pe un WG ct i pe un WCh.
EP 9.5.
S se realizeze un IV care s roteasc pe suprafaa grafic a unui XY Graph un
segment de dreapt de lungime fix n jurul unuia din capete. Se dau de pe PF:
lungimea segmentului, coordonatele captului fix, numrul de puncte al cercului
dup care se face rotaia captului liber, viteza de rotaie i sensul de rotaie.
EP 9.6.
Aceeai problem ca mai sus, numai c segmentul se rotete n jurul mijlocului su.
EP 9.7.
S se construiasc un IV care s roteasc un cub de latur dat n jurul axei sale
verticale, cu o vitez dat. Aceeai problem pentru rotirea n jurul unei diagonale.

134

Capitolul 10

SALVAREA DATELOR N LABVIEW

Odat achiziionate i prelucrate, datele obinute din msurare trebuie stocate.


Acest lucru se realizeaz utiliznd funciile de lucru cu fiierele, cu ajutorul crora
se poate scrie sau citi n i din fiiere. O sesiune de lucru cu fiiere implic
urmtoarele operaii principale:
1. Crearea sau deschiderea fiierului, n urma creia LabVIEW furnizeaz un
numr de referin (refnum) care va fi utilizat n operaiile ulterioare.
2. Scrierea n sau citirea din fiier.
3. nchiderea fiierului.
Funciile de lucru cu fiierele se gsesc n subpaleta File I/O . Pe lng citirea
i scrierea fiierelor, n LabVIEW se pot crea, muta sau redenumi fiiere sau
directoare, crea fiiere speciale de forma spreadsheet sau n format ASCII, scrie i
citi date n format binar, etc.
Datele pot fi stocate sau citite din fiiere n urmtoarele formate:

Formate generale
Binar (Binary Byte Stream) reprezint cea mai compact i rapid metod de
stocare a datelor. Datele trebuie convertite n prealabil n iruri binare de
caractere i trebuie cunoscut exact ce tip de date au fost salvate pentru a putea
fi citite ulterior.
ASCII (ASCII byte stream) se salveaz cnd se dorete utilizarea datelor n
procesoare de text sau alte programe ce accept astfel de format (Matlab,
C/C++, Microsoft Office, etc.). Pentru stocarea n astfel de format, datele
trebuie s fie convertite ASCII.
Formate specifice
LVM (LabVIEW measurement data file) este tot un format ASCII, ns fiierul
creat prezint un preambul coninnd o serie de informaii legate de parametrii
msurrii, numele operatorul, data, ora, locul msurrii, etc. Citirea acestor
fiiere, ca i scrierea, se face cu funcii LabVIEW din subpaleta File I/O.

135

TDM este un format binar conceput special pentru produsele National


Instruments. Formatul const n crearea a dou fiiere separate: o seciune
XML coninnd atributele datelor nregistrate, i un fiiere cu formele de und
n binar.
In continuare ne vom ocupa doar de manipularea fiierelor n format ASCII.

Funcii pentru lucrul cu fiierele


In subpaleta File I/O exist dou tipuri de funcii pentru lucrul cu fiierele n
LabVIEW: funcii de nivel nalt i funcii de nivel sczut.

Funcii de nivel nalt


Funciile de nivel nalt sunt: Write To Spreadsheet File, Read From Spreadsheet
File, Write To Measurement File i Read From Measurement File.
Formatul spreadsheet se refer la modul n care sunt nscrise ntr-un fiier text
elementele unui vector sau ale unei matrici cu dou dimensiuni. Liniile matricii
reprezint linii n fiierul text, iar elementele, sub form de iruri de caractere, sunt
desprite printr-un tab. Liniile sunt desprite ntre ele prin caracterul end of line.
Write To Spreadsheet File convertete un vector sau o matrice de numere n
formatul text spreadsheet, pe care l nscrie ntr-un fiier nou sau l ataeaz la
un fiier existent. Funcia poate face, la cerere, transpunerea matricii. Funcia
creeaz sau deschide automat fiierul, scrie n el, apoi l nchide. Dac nu se
specific calea i numele fiierului, se deschide automat o fereastr interactiv
n care se stabilesc aceste date.
Read From Spreadsheet File citete un anumit numr de linii dintr-un fiier
spreadsheet ncepnd cu un offset i convertete datele citite ntr-o matrice
bidimensional. Funcia deschide fiierul, citete datele i la final l nchide.
Write To Measurement File este o funcie la care introducerea parametrilor se
face printr-o fereastr interactiv. Acest gen de funcii se numesc funcii
expres. Funcia scrie ntr-un fiier text de tip LVM sau binar de tip TDM.
Din fereastr se pot seta modul de deschidere sau creare a fiierului, formatul,
informaii despre header, delimitatorul. La fel ca i celelalte funcii de nivel
nalt, i aceasta deschide (creeaz) fiierul, scrie n el i apoi l nchide.
Read From Measurement File citete din fiierele de tip LVM sau TDM.
Fixarea parametrilor de citire se face de asemenea printr-o fereastr interactiv.

Nu este recomandabil s se foloseasc funciile de nivel nalt pentru scrieri/citiri


repetitive, deoarece operaiile de deschidere/nchidere fiiere repetate solicit mult
resursele calculatorului. Pentru aceasta este bine s se utilizeze funciile de nivel
sczut.

136

La operaiile cu fiiere este recomandabil s se ncadreze funciile de scriere/citire


sau chiar ntreaga diagram a instrumentului ntr-o bucl WHILE asistat de un
buton de STOP, deoarece lanul de operaii deschidere/creare fiier scriere/citire
nchidere fiier trebuie s se efectueze complet. Dac se utilizeaz butonul Abort
Execution de pe bara de butoane rapide, instrumentul se oprete brusc n orice
etap a execuiei i e posibil ca fiierele s rmn deschise.

Exerciiul 10.1
Enun

a) S se genereze i s se afieze grafic, n mod continuu, doi vectori formai din


valorile funciei sinus, respectiv cosinus, pe un numr de perioade selectate de
pe panoul frontal. Pe PF se mai dau numrul total de puncte i amplitudinea
funciilor.
b) La apsarea unui buton SALVARE de pe PF, s se salveze cei doi vectori fie n
format spreadsheet, fie n format LVM, la alegere dintr-un selector de pe PF.
Salvarea se va face cu dou cifre zecimale, pe coloane, iar la salvri repetate
datele se vor aduga la fiierul creat.
c) Instrumentul se oprete de la un buton de stop.
Mod de lucru

Panoul frontal al instrumentului este dat n figura 10.1.

Figura 10.1

137

1. Deschidei un nou IV.


2. Plasai pe PF controalele i indicatoarele necesare. Pentru selectorul de format
putei utiliza un control Ring sau Enum. Pentru butonul SALVARE utilizai un
OK Button.
3. Generai cei doi vectori dup modelul de la exemplul 9.1. Plasai toat
diagrama ntr-o bucl WHILE.

a)

b)
Figura 10.2

138

4. Operaiunea de salvare se include n cadrul true al unei structuri CASE,


selectabil prin butonul SALVARE. Selectarea celor dou formate se face
printr-o alt structur CASE, ca n figura 10.2.
5. Plasai n primul cadrul al structurii CASE aferente formatului, funcia Write
To Spreadsheet File.
6. Studiai helpul funciei i determinai parametrii de intrare.
7. Realizai un dublu click pe funcie i studiai-i diagrama. Realizai iari dublu
click pe funcia Write Spreadsheet String.vi i observai lanul deschidere
scriere nchidere fiier din componena acestei funcii.
8. Stabilii formatul i parametrii de intrare astfel nct s ndeplineasc cerinele
problemei. Observai c este necesar o transpunere a matricii de intrare
deoarece funcia salveaz fiecare vector pe linii.
9. Plasai pe cel de-al doilea cadru al structurii CASE aferente formatului, funcia
Write To Measurement File.
10. La depunerea funciei pe diagram se deschide fereastra interactiv (funcia
este de tip expres).
11. Studiai parametrii ferestrei prin apelarea helpului funciei.
12. Stabilii parametrii astfel nct s fie ndeplinite cerinele problemei (figura
10.3). In seciunea File Name scriei calea ctre directorul de lucru i numele
fiierului Ex 10.1.lvm. Dac aceast seciune rmne necompletat, LabVIEW
salveaz automat n directorul special creat la instalare: \My
Documents\LabVIEW Data.

Figura 10.3

139

Funcia expres Write To Measurement File nu are posibilitatea de a stabili


formatul conversiei numr string. Formatul este fix, cu 6 cifre zecimale.

13. Legai semnalul la intrrile funciilor.


14. Dai valori controalelor de intrare i rulai instrumentul. Salvai de cte 3 ori
consecutiv pentru fiecare format. Pentru formatul spreadsheet, scriei n
fereastra interactiv care se deschide numele fiierului Ex 10.1.txt pe calea
directorului de lucru.
15. Deschidei cele dou fiiere cu utilitarul Wordpad i observai modul n care au
fost salvate datele. Studiai headerul fiierului LVM. Facei o comparaie ntre
ele. Observai c n cazul formatului spreadsheet nu exist o delimitare ntre
irurile de date adugate, ca la fiierul LVM.
16. Salvai IV-ul sub numele Ex 10.1.vi.

Exerciii propuse
EP 10.1.
a) Construii un IV care s citeasc fiierele salvate la exerciiul 10.1, utiliznd
funciile de nivel nalt Read From Spreadsheet File i Read From
Measurement File.
b) Afiai vectorii citii pe PF sub form grafic i ntr-un tabel, pe coloane.
EP 10.2.
Construii un IV care s salveze cei doi vectori obinui din funciile sinus i
cosinus n format spreadsheet; fiierul s conin n capul fiecrei coloane numele
funciei, iar la sfrit s aib o legend cu detalii despre fiier coninnd data i ora
la care acesta a fost creat.
SINUS
COSINUS
0.00
3.00
0.13
2.98
0.25
2.91
0.37
2.79
0.50
2.63
0.62
2.43
0.74
2.19
0.85
1.91
0.96
1.61
Detalii despre fisier:
Data: 11/12/2003
Ora: 12:23:35 PM

140

) Pentru realizarea acestui IV, utilizai pentru scriere funcia Write To Text File
din subpaleta File I/O. Va trebui aadar s convertii nti matricea de numere
n format spreadsheet utiliznd funcii din subpaleta String. Construii apoi
textul care va fi salvat cu ajutorul funciei Concatenate Strings.
EP 10.3.
Construii un IV care s citeasc fiierul de la exerciiul EP 10.2.

Funcii de nivel sczut


Funciile de nivel sczut realizeaz cte una din sarcinile din lanul de scriere/citire
separat, adic exist o funcie pentru deschidere/creare fiier, cte o funcie pentru
scriere sau citire din fiier i o funcie de nchidere a fiierului. Aceste funcii se
utilizeaz cnd este necesar salvarea repetat a datelor sau cnd este necesar
adugarea de noi atribute fiierului, care nu pot fi adugate cu funciile de nivel
nalt.
Funciile principale de nivel sczut sunt: Open/Create/Replace File, Close File
i una din funciile de scriere/citire: Write to Text File, Read from Text File, Write
to Binary File, Read from Binary File, Format into File, Scqn from File.
Open/Create/Replace File este prima funcie din lanul de salvare, care
creeaz, deschide sau nlocuiete un fiier. Funcia returneaz un numr de
referin Refnum, care conine informaii despre fiier i care este trecut tuturor
celorlalte funcii ulterioare. In acest fel, dac se dorete scrierea repetitiv n acelai
fiier n cadrul unei bucle FOR sau WHILE, nu mai este necesar deschiderea i
nchiderea de fiecare dat a fiierului, operaii care solicit sistemul de operare i
ngreuneaz funcionarea calculatorului, ci se va introduce n bucl doar funcia
aferent scrierii. In figura 10.4 este dat un exemplu de adugare a unor numere
aleatoare, punct cu punct, la un vector.

Figura 10.4

141

In exemplul de mai sus, funcia de scriere Write to Text File este plasat ntr-o
bucl WHILE, primind printr-un registru de deplasare valoarea numrului de
referin furnizat de funcia Open/Create/Replace File. Textul scris n fiier este un
numr aleator cuprins ntre 0 i 1 furnizat de generatorul Random Number (0-1),
apoi convertit n ir de caractere ca numr cu 2 zecimale urmat de un caracter
special End of Line, care face ca scrierea vectorului s se fac pe coloan.
Un cluster de eroare creat de prima funcie este trecut celorlalte funcii, dup
care este aplicat unui indicator de tip Simple Error Handler din subpaleta Dialog &
User Interface. Aceast legtur are rolul de a semnala pe parcursul rulrii
instrumentului eventualele erori care apar. Legarea n cascad a lanului de
semnalizare a erorilor permite stabilirea cu precizie a locului i a cauzei de apariie
a erorii.
Bucla WHILE se oprete la apsarea unui buton de stop sau la apariia unei
erori, caz n care statusul se schimb din false n true.

Exerciii propuse
EP 10.4.
Utiliznd exemplul din figura 10.4, s se realizeze un instrument virtual care s
genereze i s salveze, punct cu punct, eantioanele a doi vectori construii prin
funciile sinus i cosinus, n urmtoarele condiii:
generarea eantioanelor i salvarea se face la intervale de timp stabilite pe
panoul frontal.
salvarea vectorilor n fiier se face pe coloane.
pe PF se afieaz cei doi vectori, punct cu punct pe un Waveform Chart.
oprirea instrumentului se face n unul din urmtoarele cazuri: la apsarea unui
buton de STOP, n cazul apariiei unei erori sau la atingerea unui numr de
eantioane prestabilit.
De pe PF se fixeaz:
- amplitudinile celor dou funcii
- numrul de eantioane dup care se oprete instrumentul
- intervalul de timp dintre dou eantioane
- calea fiierului de salvare
EP 10.5.
Aceeai problem ca mai sus, dar la care se adaug urmtoarele condiii:
fiecare eantion se salveaz mpreun cu ora la care a fost generat i unghiul
corespunztor
la atingerea numrului de eantioane prestabilit sau a unei mrimi a fiierului
fixate de pe PF n octei (byte), instrumentul nu se oprete, ci continu cu
salvarea ntr-un nou fiier. Fiierele vor fi denumite automat, n ordine: F1, F2,
F3,
La sfritul fiecrui fiier se va tipri un mesaj, dup caz:
142

continua cu fiier
inregistrare oprita de la butonul STOP
inregistrare oprita datorita unei erori

143

Capitolul 11

PROBLEME RECAPITULATIVE

PR 1
S se realizeze un instrument virtual care s calculeze rspunsul y(n) al filtrului
numeric dat de ecuaia:

y ( n ) = 0,25 y ( n 1) + 0,5 y ( n 2) + x ( n ) + 0,1x ( n 1)

la o secven de intrare x(n) format din 100 numere aleatoare cuprinse ntre 50 i
70. Filtrul este cauzal, adic toate valorile lui x(n) i y(n) pentru n < 0 sunt nule.

Se folosesc doi regitri de deplasare : unul pentru construirea lui x(n), iar
cellalt pentru y(n). Regitrii se iniializeaz cu 0, deoarece filtrul este cauzal.

PR 2
S se afle rspunsul filtrului de mai sus la o secven de intrare x(n) format din 10
perioade ale unui semnal sinusoidal cu amplitudinea 2, avnd 40 eantioane pe
perioad.
S se reprezinte ambele semnale pe acelai indicator grafic.
PR 3
S se realizeze un instrument virtual care s calculeze formula:

y = lg x 2 + e x + sin x + tgx

pentru 100 numere egal distanate cuprinse ntre 3 i 9.


S se reprezinte graficul lui y.
S se afieze ntr-un tabel, pe o coloan, valorile lui x, iar pe alt coloan
valorile lui y.

PR 4
S se reprezinte, pe acelai grafic, funciile :

144

y1( x ) = x 3 5 x + 3
y 2( x ) = 2 lg x + 1

pentru 200 de valori egal distanate ale lui x cuprinse ntre 1 i 3.


S se gseasc, pe cale grafic, soluia aproximativ a ecuaiei :
y1( x ) = y 2( x )

) Se reprezint pe acelai XY Graph funciile y1(x) i y2(x) (calculate eventual


cu Formula Node), dup care se determin pe grafic, utiliznd cursorul,
punctele de intersecie ale celor dou curbe, ale cror abscise reprezeint
valoarile lui x pentru care y1(x) = y2(x).
PR 5
S se deseneze pe acelai XG Graph :
un romb cruia i se specific coordonatele unuia din vrfuri, latura i un
unghi.
un segment de dreapt orizontal, cruia i se specific lungimea, iar unul din
capete este pe romb.
S se deplaseze segmentul cu unul din capete pe rombul desenat, plan-paralel,
cu o vitez fixat de pe panoul frontal. (Plan-paralel nseamn c, n timpul
deplasrii, segmentul rmne ntotdeauna paralel cu o direcie dat, orizontala
de exemplu)
PR 6
S se construiasc un IV care s afieze, pe un Waveform Chart, la intervale de
timp egale fixate de pe panoul frontal, punctele corespunztoare funciei:

y ( n ) = lg(n ) + x 2 6

calculate pentru n = 1,2,3,.


Cnd y(n) atinge sau depete o valoare maxim, Ymax, fixat de asemenea de
pe panoul frontal, se afieaz ntr-un indicator de tip string mesajul S-a
depasit limita maxima, iar instrumentul se oprete.
Dac instrumentul este oprit de ctre operator de la butonul STOP, se afieaz
mesajul: Oprit de la butonul STOP.

PR 7
S se construiasc un ir y(n) format din 20 numere aleatoare cuprinse ntre
dou numere date, Nmin i Nmax.
S se mpart irul de mai sus n alte dou subiruri:
- y1(n) care s conin elementele lui y(n) cuprinse ntre dou valori
date, N1min i N1max

145

- y2(n) care s conin celelalte elemente ale lui y(n).


S se afieze pe un indicator de tip string, pe panoul frontal, cele dou iruri, n
urmtorul format:
Sirul y1(n) este:
2.13 4.12 6.24 5.33..
Sirul y2(n) este:
9.44 1.16.
Numarul de elemente al lui y1 este.
Numarul de elemente al lui y2 este

S se salveze informaia afiat mai sus ntr-un fiier ASCII.


S se construiasc un IV care s citesc fiierul de mai sus.

PR 8
S se construiasc dou progresii: una aritmetic (p.a.) i una geometric (p.g.)
avnd cte 20 de termeni fiecare, cu raia 3 i primul termen 4.
S se construiasc un ir format din elementele celor dou progresii, n
alternan, astfel: primul element din p.a., al doilea din p.g., al treilea din p.a, al
patrulea din p.g., etc.
S se salveze cele dou progresii ntr-un fiier ASCII, pe dou coloane, n
dreptul fiecrei coloane scriindu-se numele progresiei.
S se calculeze pentru irul construit, urmtoarele valori: valoarea maxim,
valoare minim, valoarea medie, valoarea ptratic medie, deviaia standard i
variana. S se afieze aceste valori ntr-un tabel, n urmtoarea form:

Valoarea
Valoarea
Valoarea
RMS
Dev.
Varianta
maxima
minima
medie
standard
566
2
349
235.4
2.45
4.55

) Funciile pentru calculul valorilor cerute se gsesc n subpaleta: Mathematics


Probability and Statistics. Valoarea ptratic medie se numete n limba
englez Root Mean Square (RMS).
PR 9
S se construiasc o matrice cu M linii i N coloane, ale crei elemente sunt
numere aleatoare cuprinse ntre 10 i 10 (M i N se fixeaz de pe panoul
frontal).
S se determine valoarea maxim i valoarea minim a matricii.
S se salveze matricea i cele dou valori ntr-un fiier ASCII cu urmtorul
format:

146

Acest fiier a fost creat la data de ., ora .

Matrice M x N

Valoarea maxima este


Valoarea minima este .
PR 10
S se realizeze un instrument virtual care s genereze, la intervale de timp
stabilite de pe panoul frontal, numere aleatoare cuprinse ntre 0 i 10.
Dac numrul generat depete o limit superioar, se aprinde un LED verde
i se afieaz mesajul S-a depit limita superioar.
Dac numrul generat se afl sub o limit inferioar, se aprinde un LED rou i
se afieaz mesajul Numrul se afl sub limita inferioar.
Dac numrul se afl ntre cele dou limite ambele LEDuri sunt stinse i nu se
afieaz nici un mesaj.
PR 11
S se realizeze un instrument virtual cu urmtorul panou frontal:

Instrumentul ndeplinete urmtoarele cerine:


147

Genereaz, cu indicare pe un indicator de tipul Waveform Chart, o und sub


forma dinilor de fierstru, la care pantele s poat fi fixate de pe panoul
frontal (controalele a i b). De pe panoul frontal se fixeaz tensiunile maxim
i minim, U1 i U2, ntre care este ncadrat forma de und.
Instrumentul funcioneaz continuu o perioad de timp fixat de pe PF, dup
care face salvarea automat a datelor ntr-un fiier de tip spreadsheet.
Oprirea se face de la un buton de STOP.

PR 12
S se realizeze un instrument virtual care s deseneze pe un indicator de forma XY
Graph un sfert de cerc cu centrul n origine i de raz fixat de pe panoul frontal.
De pe un indicator de pe panoul frontal se selecteaz cadranul n care se face
desenarea sfertului de cerc.
De pe panoul frontal se mai fixeaz, de asemenea, numrul de puncte din care este
realizat curba.
PR 13
S se realizeze un instrument virtual care s ndeplineasc urmtoarele funcii:
s deseneze pe un indicator XY Graph un segment de dreapt ale crui capete
se dau prin coordonate carteziene de pe panoul frontal;
s deplaseze acest segment plan-paralel pe orizontal sau pe vertical, la
alegere dintr-un control de pe panoul frontal. Deplasarea se va face alternativ,
ntre dou puncte prestabilite.

PR 14

148

S se realizeze un instrument virtual care s calculeze cel mai mare divizor comun
(cmmdc) i cel mai mic multiplu comun (cmmmc) a dou numere date.

PR 15
S se simuleze n LabVIEW o instalaie automat care s menin nivelul de lichid
dintr-un rezervor ntre dou limite date, tiind urmtoarele:

N1

R1

R2
N2

Debitul consumului de lichid din rezervor este constant i se fixeaz de pe


panoul frontal, n l/s.
Debitul de alimentare cu lichid a rezervorului este constant i se fixeaz de pe
panoul frontal, n l/s.
Robinetul R2 este deschis permanent (consumul se face continuu).
Robinetul de alimentare (R1) se deschide cnd nivelul ajunge la nivelul minim
N2 i se nchide la nivelul maxim N1.
Se va monitoriza, pe un Wave Chart variaia n timp a nivelului.
Se va indica pe un indicator de tip tank nivelul lichidului din rezervor n fiecare
moment.
Se va afia pe un indicator de tip string starea la un moment dat a robinetului
R1 (robinet deschis/robinet nchis).
149

Indicaii suplimentare:
1) La pornirea instrumentului, rezervorul este plin.
2) Se tie c rezervorul este de form cilindric, cu aria bazei de 1 m2 i
nlimea de 1 m.

PR 16
S se construiasc, fr a utiliza generatorul de funcii din biblioteca
LabVIEW, un semnal triunghiular cruia i se specific: nr. de puncte/perioad,
amplitudinea i numrul de perioade generate.
S se calculeze valoarea medie i cea efectiv a semnalului utiliznd funciile
Mean.vi i RMS.vi din biblioteca Mathematics Probability & statistics.
S se salveze semnalul generat, la apsarea unui buton SALVARE, ntr-un
fiier cu urmtorul format:
Nr. puncte/perioada:..
Amplitudinea:..
Nr. perioade:
Media:..
Valoare efectiva:
Semnalul este:
.(semnalul n format spreadsheet)..
PR 17
S se construiasc un instrument virtual care s realizeze introducerea interactiv a
datelor ntr-o baz de date avnd urmtoarele cmpuri:
o Numele
o Prenumele
o Grupa

150

o Nota la examen
Introducerea datelor se va face interactiv, n modul urmtor:

a) La pornirea instrumentului se deschide fereastra a), unde se introduce numele


b) La apsarea tastei VALIDARE se deschide fereastra b), unde se introduce
prenumele
c) La apsarea tastei VALIDARE se deschide fereastra c), unde se introduce
grupa
d) La apsarea tastei VALIDARE se deschide fereastra d), unde se introduce nota
e) La apsarea tastei VALIDARE se deschide fereastra e), ce conine un tabel cu
cele 4 cmpuri.
Dac se dorete o nou nregistrare, se apas tasta VALIDARE i ciclul se
repet. Noile date se adaug celor anterioare.
La oprirea instrumentului de la butonul STOP se realizeaz salvarea tabelului
ntr-un fiier i se oprete funcionarea.

a)

b)
151

c)

d)

e)

152

PR 18
S se genereze un ir format din N numere ntregi aleatoare cuprinse ntre 1 i
1000.
S se separe apoi irul n alte 5 subiruri, formate din:
Subir 1 toate numerele din ir divizibile cu 3
Subir 2 toate numerele din ir divizibile cu 5
Subir 3 toate numerele din ir divizibile cu 6
Subir 4 toate numerele din ir divizibile cu 9
Subir 5 celelalte numere
S se afieze aceste numere ntr-un tabel ca cel de pe panoul frontal de mai jos.

PR 19
S se construiasc un instrument virtual care s gseasc i s afieze primele N
numere prime din irul numerelor naturale, N fiind dat pe PF.
PR 20
S se realizeze un instrument virtual care s determine i s afieze n ce zi a
sptmnii a czut o anumit dat din anul 2010, tiind c 1 ianuarie 2010 a fost
vineri.

153

S se generalizeze problema pentru aflarea oricrei zile a secolului 21.


PR 21
Pe panoul frontal al unui instrument virtual se gsesc 4 butoane de tip boolean i un
Framed Color Box, ca n figura de mai jos:

S se realizeze acest IV nct s funcioneze n modul urmtor:


la apsarea butonului B1, Color Box se coloreaz rou i plpie cu perioada
de 200 ms.
la apsarea butonului B2, Color Box se coloreaz galben i plpie cu perioada
de 400 ms.
la apsarea butonului B3, Color Box se coloreaz verde i plpie cu perioada
de 600 ms.
la apsarea butonului B4, Color Box se coloreaz alternativ rou-galben-verde
cu perioada de 600 ms.
la apsarea unuia din butoane, toate celelalte revin n starea neapsat.
PR 22
S se construiasc un instrument virtual care s gseasc i s afieze toi divizorii
unui numr dat. Afiarea divizorilor se va face ca elemente ale unui vector i ntrun tabel.

154

Bibliografie

National Instruments, LabVIEW Fundamentals, August 2005.


National Instruments, Getting Started with LabVIEW, August 2006.
National Instruments, LabVIEW Basics I Introduction Course Manual, May 2006
National Instruments, LabVIEW Basics II Development Course Manual, September
2007 Edition
National Instruments, LabVIEW Graphical Programming Course, 2007, disponibil
on-line la http://cnx.org/content/col10241/1.4/
J. Travis, J. Kring, LabVIEW for Everyone: Graphical Programming Made Easy
and Fun, Third Edition, 2007