Uploaded by Robert Fundeanu

L4-Controale si indicatoare de tip tablou si grup

advertisement
LUCRAREA NR. 4
Controale şi indicatoare de tip tablou şi grup.
Obiecte de tip grafic
1. Controale şi indicatoare de tip tablou şi grup (Array &
Cluster)
Aceste obiecte pot fi de două feluri: de tip matrice (tablou) şi
de tip grup. Ele pot fi accesate din submeniul Array & Cluster din
meniul Controls.
Tablouri
Un tablou este o colecţie de date de mărime variabilă ale cărui
elemente sunt toate de acelaşi tip, comparativ cu grupul care are
dimensiune fixă şi elemente de tipuri diferite. Elementele unui tablou
sunt ordonate, iar accesarea unui element din tablou se face indexând
tabloul. Indexarea se face începând de la 0, ceea ce înseamnă că
domeniul indexului este de la 0 la n-1 unde n este numărul de
elemente ale tabloului. În cazul tablourilor bidimensionale este nevoie
de doi indici pentru a localiza un element: un indice pentru rând şi un
indice pentru coloană, ambii indici plecând de la 0. În acest caz
vorbim de un tablou N x M, unde N este numărul de linii şi M
numărul de coloane şi conţine N x M elemente. Un exemplu simplu
este o tablă de şah care are 8 linii şi 8 coloane, deci în total 64 de
poziţii. Tablourile pot avea un număr arbitrar de dimensiuni, dar
pentru a localiza un element este necesar câte un indice pentru fiecare
dimensiune. Tipul datelor unui tablou poate fi un grup conţinând
diferite tipuri de date, inclusiv tablouri ale căror tipuri de elemente
este un grup. Nu se poate crea un tablou de tablouri, în schimb se pot
utiliza tablouri multidimensionale sau un tablou de grupuri de tablouri.
Tablourile sunt frecvent folosite atunci când trebuie executate calcule
sau operaţii intrare-ieşire în mod iterativ. Folosirea tablourilor reduce
dimensiunile, le face mai rapide şi mai uşor de dezvoltat (datorită
numărului mare de funcţii şi VI-uri pentru manipularea tablourilor din
LabVIEW).
49
Un tablou poate fi plasat în panoul frontal selectând opţiunea Array
din meniul Array & Cluster, aşa cum arată Fig. 1.
Fig. 1. Panoul frontal al unui tablou
Un tablou nou creat conţine un index, un cadru (display) gol şi o
etichetă ce poate fi opţională. Există două moduri pentru a defini tipul
unui tablou: i) se poate aduce un control sau indicator valid în cadrul
tabloului sau ii) se selectează un control sau indicator direct în
suprafaţa cadrului. În ambele cazuri, controlul (indicatorul) inserat
umple cadrul tabloului.
Un tablou nou creat are o singură dimensiune şi un singur index.
Pentru a creşte dimensiunea tabloului, se poate selecta opţiunea Add
Dimension din meniul aparent, iar pentru a scădea dimensiunea
acestuia se foloseşte Remove Dimension. Pentru fiecare dimensiune
adăugată apare un index adiţional. Dimensiunea tabloului este decisă
de utilizator care decide de asemenea de câţi indici este nevoie pentru
a localiza informaţia. De exemplu, pentru a localiza al şaselea cuvânt
de pe linia 28, pagina 192 al unei cărţi, sunt necesari trei indici: 6,
28,192.
Cu elementele unui tablou se lucrează ca şi cum ar fi elemente de
sine-stătătoare, iar cu indexul cadrului în acelaşi mod în care se
lucrează cu un control digital. Dimensiunea unui tablou nu se poate
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
Fig. 2. Selectarea unui obiect de tip cluster
Elementele unui grup nu sunt componente permanente ale
acestuia aşa că elementele pot fi mutate sau redimensionate în mod
independent chiar şi atunci când se află în fereastra de afişare de pe
panoul frontal.
LabVIEW-ul are mai multe funcţii în submeniul Cluster al meniului
Functions pentru asamblarea sau construirea de grupuri. Funcţiile
Bundle şi Bundle by Name asamblează un grup din elemente
individuale sau înlocuiesc elementele individuale cu elemente de
acelaşi tip. Funcţia Array to Cluster converteşte un tablou într-un grup
de elemente.
Funcţia Bundle apare în diagrama bloc cu două terminale de
intrare în partea stângă. Redimensionând pe verticală simbolul grafic,
se creează atâtea terminale câte sunt necesare. Elementul conectat la
primul terminal devine elementul zero, cel conectat la al doilea
terminal elementul 1, ş.a.m.d. Trebuie legate toate terminalele care au
fost create. În plus faţă de terminalele pentru elemente din partea
stângă, această funcţie mai are un terminal de intrare pentru grupuri în
mijloc. Acest terminal se utilizează pentru a înlocui unul sau mai
multe elemente ale unui grup deja existent fără a afecta celelalte
elemente.
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.
2. Obiecte de tip grafic
Obiectele de tip grafic sunt create din submeniul Graph al meniului
Controls. Aceste obiecte sunt de două tipuri principale: grafice (graph)
şi diagrame (chart).
Un indicator grafic este un cadru (afişaj) bidimensional ce conţine
graficul uneia sau mai multor mărimi. Graficul primeşte şi plotează
blocuri de date. O diagramă afişează de asemenea grafice, dar
primeşte date curente şi reactualizează display-ul punct cu punct sau
bloc cu bloc, reţinând numai un anumit număr din ultimele puncte de
afişare plasate într-un buffer. LabVIEW are trei tipuri de grafice şi
două tipuri de diagrame: Waveform Chart, Waveform Graph, XY
Graph, Intensity Chart şi Intensity Graph (Fig. 3).
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.
Ambele tipuri de grafice prezentate (Waveform Graph şi XY
Graph) conţin elemente opţionale care pot fi făcute vizibile sau
ascunse folosind submeniul Show al meniului aparent. Aceste opţiuni
includ o legendă cu ajutorul căreia se definesc culoarea şi stilul de
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
Download