Documente Academic
Documente Profesional
Documente Cultură
50
fixa, dar când se setează valorile implicite ale unui tablou se setează
implicit şi dimensiunea lui. Dimensiunea implicită nu trebuie făcută
mai mare decât este necesar. Dacă un tablou este setat la o valoare
implicită mare, toate evaluările implicite ale sale sunt salvate în VI-ul
care îl conţine, ceea ce conduce la mărirea dimensiunii fişierului. Un
tablou nou creat fără elemente este nedefinit, nu are nici un tip de date,
nu are elemente şi nu poate fi folosit în program. Pentru a afla
dimensiunea unui tablou se selectează opţiunea Show Last Element din
submeniul Data Operations al meniului aparent. Din tablourile
LabVIEW se pot copia date. Pentru a selecta datele ce trebuie copiate
se setează indexul pe primul element ce se doreşte copiat şi apoi se
alege Start Selection din submeniul Data Operations al meniului
aparent. Se setează apoi indexul pe ultimul element din setul ce se
doreşte copiat şi se selectează opţiunea End Selection din submeniul
Data Operations al meniului aparent.
Grupuri
În LabVIEW un grup este o colecţie ordonată de unul sau mai multe
elemente similare structurilor din C sau din alte limbaje de
programare. Comparativ cu tablourile, grupurile conţin orice
combinaţie de tipuri de date. Grupurile diferă de tablouri şi prin faptul
că au dimensiune fixă. Ca şi un tablou, un grup este un control sau un
indicator şi el nu poate conţine un amestec de controale şi indicatoare.
Un control sau un indicator de tip grup se creează prin instalarea
oricărei combinaţii de date de tip boolean, şir, grafic, tablou sau alt
grup în interiorul unui grup. Obiectele de tip grup se accesează din
meniul Controls, submeniul Array & Cluster (Fig. 2).
Selectând Change to Control sau Change to Indicator din meniul
aparent al unui grup, toate elementele grupului se modifică din
indicatoare în controale şi invers. Selectând comanda Make Current
Value Default din meniul Data Operations al meniului aparent se
setează valorile curente ca valori implicite pentru fiecare element al
grupului. Elementele unui grup au o ordine logică ce nu are nici o
legătură cu poziţia lor în interiorul ferestrei de afişare de pe panoul
frontal. Primul element inserat în grup este elementul 0, al doilea
elementul 1, ş.a.m.d.
Dacă un element al grupului este şters, ordinea elementelor este
ajustată automat. Această ordine poate fi modificată selectând
opţiunea Cluster Order din meniul aparent. Ordinea în grup determină
ordinea în care elementele apar ca terminale în funcţiile de asamblare
şi dezasamblare din diagrama bloc.
51
52
Funcţia Bundle by Name este similară funcţiei Bundle cu deosebirea
că în loc de a accesa câmpurile grupului prin poziţie acestea sunt
accesate după nume. În acest caz pot fi accesate doar acele elemente
ce se doresc a fi utilizate. Pentru fiecare element ce se doreşte accesat
trebuie adăugată funcţiei o nouă intrare. Deoarece numele unui
element nu specifică poziţia acestuia în interiorul unui grup, un grup
trebuie conectat la terminalul din mijloc. Această funcţie poate fi
utilizată doar pentru a înlocui elementele după nume, nu şi pentru a
crea un nou grup. De notat că funcţia poate fi redimensionată pentru a
avea atâtea elemente câte sunt necesare. Această funcţie este utilă când
se lucrează cu structuri de date care se pot modifica în timpul
procesului de dezvoltare a programului. Dacă modificările făcute de
utilizatori implică adăugarea unui element nou, sau reordonarea
grupului, schimbarea nu necesită modificări în funcţia Bundle by
Name, deoarece numele elementelor rămân valide.
Funcţia Array to Cluster converteşte un tablou de elemente
unidimensional într-un grup de elemente. Această funcţie este utilă
când se doreşte afişarea elementelor pe panoul frontal într-un indicator
de tip grup, dar elementele trebuie manipulate în diagrama bloc prin
valoarea indexului. Numărul de elemente din grup se setează folosind
opţiunea Cluster Size din meniul aparent. Funcţia asignează tabloului
0 elementul 0 din grup, ş.a.m.d. Dacă tabloul are mai multe elemente
decât grupul, funcţia ignoră elementele suplimentare.
Pentru dezasamblarea grupurilor în elementele componente
corespunzătoare LabVIEW conţine funcţiile Unbundle şi Unbundle by
Name care dezasamblează grupurile şi Cluster to Array care
converteşte un grup cu elemente de acelaşi tip într-un tablou cu
elemente de acelaşi tip.
Funcţia Unbundle se obţine tot din submeniul Cluster al meniului
Functions şi are două terminale de ieşire în partea dreaptă. Similar
funcţiei Bundle, folosind instrumentul de redimensionare, se ajustează
numărul de ieşiri necesare. Elementul 0 corespunde primei ieşiri,
elementul 1 celei de-a doua ieşiri, ş.a.m.d.
Funcţia Unbundle by Name este similară funcţiei Unbundle cu
deosebirea că elementele grupului sunt referite prin nume şi nu prin
poziţie. În acest caz pot fi citite doar elementele care interesează şi nu
trebuie ca fiecare element al grupului să aibă o ieşire. Unul din
avantajele funcţiei Unbundle by Name faţă de funcţia Unbundle este
aceea că aceasta nu este aşa de ”legată” de structura datelor unui grup.
53
Funcţia Unbundle trebuie să aibă întotdeauna acelaşi număr de
terminale şi elemente. Dacă se mută sau se adaugă un element, VI-ul
devine inoperabil. Cu funcţia Unbundle by Name se pot adăuga sau
muta elemente într-un grup fără a afecta VI-ul.
Funcţia Cluster to Array converteşte elementele unui grup într-un
tablou cu o singură dimensiune format cu elementele grupului.
Elementele grupului trebuie să fie toate de acelaşi tip, iar tabloul
conţine acelaşi număr de elemente ca şi grupul. Funcţia este utilă
atunci când se doreşte gruparea unui set de controale pe panoul frontal
într-o anumită ordine în interiorul unui grup dar prelucrarea lor se face
în diagrama bloc folosind indexul.
Fig. 3.
54
Graficele sunt de două feluri: de tip formă de undă şi grafice XY (de
tip osciloscop). Formele de undă plotează numai funcţii de o singură
variabilă cu puncte uniform distribuite de-a lungul axei x. Graficele
XY pot fi utilizate pentru a plota funcţii multivariabile cum ar fi forme
circulare sau forme de undă cu bază de timp variabilă.
Ambele tipuri de grafice pot afişa orice număr de ploturi (curbe).
Pentru graficele ce afişează un singur plot, graficele de tip formă de
undă (Waveform Graph) acceptă două tipuri de date. Primul tip de date
este tabloul cu o singură dimensiune. LabVIEW interpretează datele
ca puncte pe grafic şi incrementează punctele cu 1 pornind de la x = 0.
În Fig. 4 este prezentată fereastra panou pentru un astfel de exemplu
de grafic, iar în Fig. 5 fereastra diagramă asociată, care arată cum sunt
conectate obiectele.
Fig. 4.
Fig. 5.
55
Al doilea tip de date care poate fi utilizat este un grup cu următoarele
elemente: o valoare iniţială x, un pas de incrementare ∆x şi un vector
cu date y. În Fig. 6 şi Fig. 7 sunt prezentate ferestrele Panel şi
Diagram pentru un grafic care foloseşte date de tip cluster.
Fig. 6.
Fig. 7.
Graficele de tip XY (XY Graph) acceptă tot două tipuri de date.
Primul tip de date acceptat este grupul format din două tablouri
(vectori de date): un vector x şi un vector y. În Fig. 8 şi Fig. 9 este
prezentat un exemplu, în care cei doi vectori x şi y sunt creaţi cu
ajutorul unei structuri de tip For care va fi descrisă ulterior (o altă
posibilitate simplă de a crea doi vectori este de a implementa două
controale de tip tablou).
56
Fig. 8.
Fig. 9.
Al doilea tip de date acceptat de un Grafic XY (pentru un
singur plot) este un tablou de ”puncte”, unde un ”punct” este un grup
constituit dintr-o valoare x şi o valoare y. Prin urmare, tipul de date
acceptat este un tablou de grupuri. Reprezentarea echivalentă
exemplului din Fig. 8 şi 9 este dată în Fig. 10 (fereastra panou va afişa
acelaşi rezultat ca cel din Fig. 8).
57
Fig. 10.
O altă posibilitate pentru acest tip de date (tablou de grupuri) este
ilustrată în Fig. 11.
Fig. 11.
58
plotare al unui grafic şi o paletă cursor folosită pentru a afişa cursoare
multiple. Graficele ajustează în mod automat scalele verticală şi
orizontală, opţiune ce poate fi inhibată folosind opţiunile Autoscale X
şi Autoscale Y din submeniul Data Operations al meniului aparent.
Autoscalarea poate conduce la o afişare a graficelor mai lentă în
funcţie de computerul şi sistemul video utilizate.
Chart
Formele de undă de tip diagramă (chart) sunt tipuri speciale de
indicatoare care afişează unul sau mai multe grafice. Chart-urile diferă
de grafice prin aceea că reţin datele anterioare până la o valoare ce
poate fi diferită. Noile date sunt adăugate la cele vechi permiţând
observarea valorii curente în contextul celor anterioare.
Diagramele au atribute similare graficelor, inclusiv legenda şi paleta
şi lucrează în acelaşi fel.
Opţiunea Update Mode din submeniul Data Operations al
meniului aparent al unei diagrame permite modificarea modului în
care diagrama se comportă când sunt adăugate noi date pe display.
Există trei opţiuni posibile: tip bandă rulantă, domeniu şi baleiaj.
Modul implicit este cel de tip bandă rulantă. Modul bandă rulantă are
un afişaj alunecător similar cu un registrator cu sul de hârtie. La
fiecare nouă valoare primită, aceasta este plotată la
marginea din dreapta, iar vechile valori se deplasează la stânga.
Modul domeniu are un afişaj similar unui osciloscop. La fiecare nouă
valoare primită aceasta este plotată la dreapta ultimei valori şi când
graficul ajunge la marginea din dreapta a suprafeţei de plotare, ecranul
este şters şi plotarea începe de la marginea din stânga. Acest mod de
afişare este mult mai rapid decât cel anterior deoarece este eliberat de
procesele implicate de deplasarea imaginii. Modul baleiaj acţionează
asemănător modului domeniu, dar ecranul nu este şters când datele
ating marginea din dreapta a ecranului. O linie verticală mobilă
marchează începutul noilor date şi se deplasează de-a lungul ecranului
pe măsură ce sunt adăugate date noi.
În Fig. 12 este prezentat un exemplu simplu (o curbă de tip
sinusoidal) cu un obiect grafic de tip chart (Waveform Chart) –
opţiunea bandă rulantă, în Fig. 13 este prezentat acelaşi plot dar pentru
opţiunea de domeniu. Ultima opţiune – cea de baleiaj – este ilustrată
pentru acelaşi exemplu în Fig. 14.
59
Un obiect de tip chart (diagramă) poate afişa mai multe
grafice prin suprapunerea lor unul peste altul. Un exemplu de grafice
suprapuse este prezentat în Fig. 15.
Fig. 12.
Fig. 13.
60
Fig. 14.
Fig. 15.
Se pot afişa alternativ mai multe grafice prin "stivuirea" unuia
deasupra celuilalt, cu scale Y diferite pentru fiecare grafic, prin
selectarea opţiunii Stack Plots din meniul aparent (Fig. 16).
61
Fig. 16. Prezentarea graficelor sub formă de stivă
Un alt obiect grafic care se poate selecta din submeniul Graph al
meniului Controls este diagrama de tip Intensity Chart. Acest
indicator este un mod de afişare a datelor tridimensionale într-un plot
bidimensional prin plasarea de blocuri colorate în planul cartezian.
Aceste diagrame acceptă tablouri bidimensionale de numere. Fiecare
număr din tablou reprezintă o culoare specifică, indicii unui element al
tabloului setând locaţia pentru aceasta culoare.
3. Temă de laborator
3.1. Să se realizeze programul pentru calculul expresiei: S =
(A+B)*C, unde A, B, C, S sunt matrice de numere reale (se va utiliza
pentru înmulţire meniul Functions/Analysis/Linear Algebra).
3.2. Să se realizeze programul pentru calculul normei unui / p n
1
=
∑=, p - tipul normei.
vector x de x x i p
dimensiune n: p
1
i
3.3. Să se creeze un tablou de grupuri, fiecare grup având
următoarele câmpuri: nume, prenume, vârstă şi ocupaţie. Să se
ordoneze elementele tabloului în ordine alfabetică şi apoi în ordine
crescătoare a vârstei (se poate utiliza funcţia Sort 1D Array din
submeniul Array al meniului Functions)
3.4. Să se realizeze graficul funcţiei: f(x)=sin(x)/x.
3.5. Să se afişeze simultan graficele funcţiilor cos(x) şi sin(x)
pe acelaşi ecran şi pe ecrane diferite.
62