Sunteți pe pagina 1din 12

LUCRAREA NR. 6 TABLOURI N LabVIEW 1. Obiectivele lucrrii a) nsuirea modului de operare cu tablouri n mediul de programare grafic LabVIEW.

b) Cunoaterea principalelor funcii utilizate n lucrul cu tablouri. 2. Aparatura i suporturile utilizate: a) PC n configuraia unitate central,monitor, tastatur; b) Precizrile din prezentul ndrumar; c) Manual de prezentare a mediului de programare grafic LabVIEW. 3.Breviar 3.1. Definirea tipului tablou Spre deosebire de elementele scalare, care reprezentau o singur valoare, de un anumit tip (numeric, boolean, alfanumeric), elementele vectoriale (Array) pot conine, ntr-o manier ordonat, mai multe valori de acelai tip. Pentru a fi dispus n panou, un element de tipul tablou se selecteaz din meniul Array & Cluster al paletei de controale. Atunci cnd un element de tipul tablou se dispune pe panou, tipul datelor pe care acesta le va conine nu este nc definit. Se spune c elementul de tip tablou este vid.

Figura 6.1. Tipul tablou n LabVIEW. Terminalul din diagram al elementului este de culoare neagr. Sgeata Run este spart, semn c programul este incomplet i nu poate fi rulat. Pentru a defini tipul de date, n elementul de tip tablou trebuie introdus un element de control sau indicator scalar de tipul dorit (numeric, boolean sau alfanumeric). Elementul scalar ce urmeaz a fi introdus n tablou poate exista deja pe panou sau poate fi selectat la momentul respectiv din paleta de elemente. Cnd elementul scalar este adus deasupra elementului tablou, nainte de a se elibera butonul stng al mouse-ului, conturul elementului tablou este marcat cu o linie ntrerupt (tabloul sesizeaz c i se va introduce un element scalar).

Figura 6.2. Introducerea unui element scalar n elementul tablou. La eliberarea butonului mouse-ului, elementul scalar apare n interiorul elementului tablou, acesta din urm modificndu-i corespunztor dimensiunile. n diagram, terminalul elementului scalar dispare, iar terminalul elementului tablou capt culoarea, textul i grosimea de chenar corespunztoare datelor pe care le va manipula.

Figura 6.3.Elementul tablou dup introducerea unui element scalar. 3.2. Definirea valorilor i a numrului de valori vizibile Atunci cnd este dispus n panou i i este definit tipul de date, un element de tip tablou afieaz la un moment dat o singur valoare. Pentru a modifica numrul de valori afiate, se poziioneaz nti cursorul mouse-ului pe un col al elementului tablou, astfel nct pe colurile acestuia s apar patru simboluri "echer" . La apariia celor patru simboluri "echer", se apas butonul stng al mouse-ului i, inndu-l apsat, se deplaseaz mouse-ul astfel nct s se redimensioneze conturul elementului tablou. Pe msur ce mouse-ul este deplasat, conturul redimensionat al elementului tablou este marcat cu linie ntrerupt. Atunci cnd conturul a fost redimensionat astfel nct s poat cuprinde numrul dorit de valori, se elibereaz butonul mouse-ului i elementul tablou este afiat redimensionat. Redimensionarea conturului se poate efectua att pe vertical ct i pe orizontal. n partea sa stang, un element de tip tablou dispune de un index. Indexul unui element tablou indic numrul de ordine al valorii afiate n poziia superioar (indicele valorii). Indicele primei valori dintr-un tablou este 0. Imediat dup ce i se definete tipul de date, un tablou nu conine nici o valoare (este vid). Faptul este semnalizat prin afiarea "opac a elementelor pe care tabloul le conine. Atunci cnd se definete o valoare din tablou, aceasta este afiat normal. Dac, la un moment dat, utilizatorul definete o valoare i exist valori cu indici mai mici nc nedefinite, acestea vor cpta automat o valoare implicit, n funcie de tip.

Figura 6.4. Modificarea numrului de valori afiate de elementul tablou. Cnd se modific valoarea indexului unui tablou, valorile acestuia se deplaseaz astfel nct n poziia superioar s fie afiat valoarea cu indexul selectat. Dac, n urma acestei deplasri, unele valori nu mai sunt vizibile, faptul nu echivaleaz cu tergerea acestora: valorile continu s existe n cadrul tabloului i pot fi vizualizate prin modificarea corespunztoare a indexului.

Figura 6.5. Introducerea i vizualizarea valorilor din elementul tablou. 3.3. Definirea numrului de dimensiuni n mod implicit, atunci cnd este creat, un tablou are o singur dimensiune, putnd fi descris drept o matrice coloan. Numrul de dimensiuni ale unui tablou poate fi modificat prin dimensionarea indexului acestuia: se poziioneaz cursorul mouse-ului pe un col al indexului, astfel nct pe colurile acestuia s apar patru simboluri "echer", se apas butonul mouse-ului i se deplaseaz mouse-ul innd butonul apsat, pn cnd indexul capt dimensiunea dorit. Dac un tablou are mai mult de o dimensiune, se poate stabili afiarea mai multor linii i mai multor coloane.

Figura 6.6. Mrirea numrului de dimensiuni ale elementului tablou. Terminalul unui element tablou se caracterizeaz prin prezena unor paranteze drepte a cror grosime este proporional cu numrul de dimensiuni. Atunci cnd se realizeaz legturi n diagram, conexiunile pe care circul un tablou cu o dimensiune sunt mai groase dect cele pe care circul valori scalare. Pentru tablourile cu dou sau mai multe dimensiuni, conexiunile sunt reprezentate cu linie dubl. Spaiul intermediar al liniei duble este cu att mai mare cu ct numrul de dimensiuni ale tabloului este mai mare.

Figura 6.7. Reprezentarea conexiunilor pentru elementul tablou. 3.4. Funcii utilizate pentru lucrul cu tablouri Aceste funcii se gsesc n paleta de funcii ale diagramei ca n figura 8.

Figura 6.8. Funcii utilizate pentru lucrul cu tablouri n LabVIEW. n continuare se vor prezenta principalele funcii de lucru cu tablouri. - Funcia Array Size determin numrul de valori dintr-un element de tip tablou cu una sau mai multe dimensiuni. Daca tabloul de intrare are o singura dimensiune, ieirea funciei va fi o valoare scalar. Dac tabloul de intrare are N dimensiuni (N>1), ieirea funciei este un tablou cu o dimensiune, coninnd N elemente. De exemplu, dac la intrarea funciei se conecteaz o matrice, ieirea funciei va fi un tablou cu dou elemente, primul reprezentnd numrul de linii i al doilea numrul de coloane ale intrrii.

- Funcia Index Array extrage una sau mai multe valori ai cror indici sunt specificai. ATENIE: prima valoare dintr-un ir are indexul 0 ! Atunci cnd este dispus n diagram, funcia Index Array are un singur terminal pentru specificarea indicelui. Simbolul funciei poate fi dimensionat astfel nct s dispun de mai multe astfel de terminale. Dac la terminalele pentru indici nu se conecteaz valori, funcia va lua n considerare valori implicite, ncepnd cu 0.

- Funcia Replace Array Subset nlocuiete valori dintr-un tablou, ncepnd de la un indice specificat. Simbolul funciei poate fi dimensionat pentru a permite nlocuiri simultane n mai multe poriuni. Atunci cnd la intrarea funciei se conecteaz un tablou cu mai multe dimensiuni, terminalele pentru indici capt intrri pentru linii i coloane ce pot fi activate sau dezactivate independent.

- Funcia Insert Into Array insereaz valori ntr-un tablou, ncepnd de la un indice specificat. Numrul de valori din Array crete. Funcia poate mri numrul de valori din tablou doar de-a lungul unei singure dimensiuni, astfel nct, dac inserarea urmeaz a se efectua ntr-un tablou cu N dimensiuni, se vor putea insera n acesta doar elemente cu N sau cu N-1 dimensiuni (de exemplu, nu se poate insera un element scalar ntr-o matrice).

- Funcia Delete From Array terge dintr-un tablou o poriune de mrime specificat (intrarea length, cu valoare implicit 1), ncepnd de la un indice specificat (implicit ultimul element). tergerea se efectueaz doar de-a lungul unei singure dimensiuni: se terg elemente dintrun tablou cu o dimensiune, linii sau coloane dintr-o matrice etc (nu se poate terge doar o valoare dintr-o matrice). Funcia dispune att de o ieire pentru tabloul din care s-a realizat tergerea, ct i de o ieire pentru poriunea ce a fost teara. Numrul de dimensiuni ale celei de a doua ieiri variaz: este egal cu numrul de dimensiuni ale tabloului de intrare dac a fost conectat o valoare la intrarea length i este cu o unitate mai mic dect numrul respectiv dac intrarea length a fost lsat neconectat.

- Atunci cnd este dispus n diagram, funcia are o singur intrare dimension size, genernd astfel un tablou cu o singur dimensiune. Dac se dorete generarea unui tablou cu mai multe dimensiuni, simbolul funciei poate fi dimensionat. Dac la una dintre intrrile dimension size se conecteaz valoarea 0, sau dac toate intrrile respective sunt neconectate, funcia va genera un tablou vid.

- Funcia Build Array concateneaz la un tablou una sau mai multe elemente cu un numr de dimensiuni imediat inferior (adaug valori scalare la un tablou cu o dimensiune, adaug linii la matrici .a.m.d.). Atunci cnd este dispus n diagram, funcia are o singur intrre. Numrul dorit de intrri se obine prin dimensionarea simbolului funciei.

- Funcia Array Subset extrage o poriune dintr-un tablou. Pentru fiecare dimensiune a tabloului de intrare, funcia dispune de o intrare index (poziia din care va ncepe extracia) i de o intrare length (numrul de valori extrase de-a lungul dimensiunii respective).

- Funcia Rotate 1D Array efectueaz n permutri circulare ale valorilor dintr-un tablou cu o singur dimensiune. Sensul permutrilor este determinat de semnul valorii n: a. dac n>0, la fiecare permutare ultima valoare din tablou trece pe prima poziie; b. dac n<0, la fiecare permutare prima valoare din tablou trece n ultima poziie.

- Funcia Reverse 1D Array inverseaz ordinea valorilor dintr-un tablou unidimensional

- Funcia Search 1D Array caut o valoare ntr-un tablou unidimensional, ncepnd de la un indice de start specificat, i returneaz indicele elementului gsit. Dac elementul cutat nu se afl n tablou, atunci funcia returneaz valoarea -1.

- Funcia Split 1D Array divide un tablou unidimensional n dou tablouri, locul n care se efectueaz divizarea fiind determinat de valoarea conectat la intrarea index a funciei. Tabloul rezultat la ieirea first subarray va conine valorile ce se aflau n tabloul iniial pe poziiile 0, 1, ..., index-1.

- Funcia Sort 1D Array sorteaz valorile dintr-un tablou unidimensional: cresctor dac valorile sunt numerice sau n ordine alfabetic dac valorile sunt de tip alfanumeric (String).

- Funcia Array Max & Min determin valorile maxim i minim dintr-un tablou de valori numerice, precum i indicii acestor valori extreme. Dac tabloul de intrare are mai multe dimensiuni, indicii valorilor extreme nu vor mai fi valori scalare, ci vor fi la rndul lor tablouri cu un numr de valori egal cu numrul de dimensiuni ale tabloului de intrare.

- Funcia Transpose 2D Array transpune o matrice.

- Funcia Interpolate 1D Array realizeaz o interpolare pe valorile tabloului de la intrarea array of numbers or points. Dac, de exemplu, tabloul de intrare conine valorile 1, 2, 4 i 6, iar la intrarea fractional index or x este conectat valoarea 1.7, funcia va genera rezultatul 3.4 (dup valoarea cu indicele 1, la 70 % din distana dintre aceasta i urmtoarea).

- Funcia Threshold 1D Array realizeaz o operaie inversa interpolrii: dispunnd de un tablou de valori numerice i de un prag (intrarea threshold y), ncepnd de la un indice specificat, funcia caut dou valori consecutive din tablou astfel nct prima s fie mai mic dect pragul i a doua mai mare sau egal cu acesta.

- Funcia Interleave 1D Array construiete un tablou cu o singur dimensiune prin ntreeserea mai multor tablouri avnd de asemenea o singur dimensiune.

- Funcia Decimate 1D Array mparte un tablou iniial ntr-un numr de tablouri egal cu numrul de ieiri. Iniial, funcia are dou ieiri, dar numrul acestora poate fi modificat prin dimensionarea simbolului funciei. Valorile din tabloul iniial sunt repartizate alternativ tablourilor de ieire. De exemplu, dac funcia are trei ieiri, valoarea cu indicele 0 este repartizat la prima ieire, cea cu indicele 1 la a doua, cea cu indicele 2 la a treia, cea cu indicele 3 din nou la prima ieire, cea cu indicele 4 la a doua .a.m.d.

- Funcia Reshape Array modific numrul de dimensiuni ale unui element de tip tablou. De exemplu, un tablou unidimensional cu ase valori poate fi transformat ntr-o matrice cu trei linii i dou coloane, sau invers. Numrul de dimensiuni ale rezultatului va fi egal cu numrul de terminale dimension size ale simbolului funciei.

4. Mod de lucru a) Se alimenteaz sistemul cu tensiune; b) Se lanseaz mediul LabVIEW; c) Se implementeaz programele descrise mai jos. 4.1. Manipulating Arrays Goal Manipulate arrays using various LabVIEW functions. Description Realizai panoul Frontal i Diagrama Bloc a VI-ului de mai jos

Figure 6.9. Array Investigation VI Front Panel

Figure 6.10. Array Investigation VI Block Diagram

This exercise is divided into two parts. You are given the scenario for each part first. Detailed implementation instructions for each part follow the scenario information. Part 1: Iterate, Modify, and Graph Array Modify the Array Investigation VI so that after the array is created, the array is indexed into For Loops where you multiply each element of the array by 100 and coerce each element to the nearest whole number. Graph the resulting 2D array to an intensity graph. Part 2: Simplified Iterate, Modify, and Graph Array Modify the Array Investigation VI or the solution from Part 1 to accomplish the same goals without using the nested For Loops. Part 1: Implementation Modify the Array Investigation VI so that after the array is created, the array is indexed into For Loops where you multiply each element of the array by 100 and coerce each element to the nearest whole number. Graph the resulting 2D array on an intensity graph.

Figure 6.11. Array Investigation Part 1 VI Front Panel

Figure 6.12. Array Investigation Part 1 VI Block Diagram 1. Iterate the Array. Add a For Loop to the right of the existing code. Add a second For Loop inside the first For Loop. Wire the array indicator terminal to the interior For Loop border. This creates an auto-indexed input tunnel on both For Loops. 2. Multiply each element of the array by 100. 9

Add a Multiply function to the interior For Loop. Wire the indexed input tunnel to the x input of the Multiply function. Right-click the y input and select CreateConstant from the shortcut menu. Enter 100 in the constant. 3. Round each element to the nearest whole number. Add a Round To Nearest function to the right of the Multiple function. Wire the output of the Multiply function to the input of the Round To Nearest function. 4. Create a 2D array on the output of the For Loops to recreate the modified array. Wire the output of the Round To Nearest function to the outer For Loop. This creates an autoindexed output tunnel on both For Loops. 5. Wire the output array to the Intensity Graph indicator. 6. Switch to the front panel. 7. Save the VI. 8. Enter values for Rows and Columns. 9. Run the VI. Part 2: Implementation Modify Part 1 to accomplish the same goals without using the nested For Loops. 1. Open Array Investigation Part 1.vi if it is not still open. 2. Save the VI as Array Investigation Part 2.vi. 3. Open the block diagram. 4. Right-click the border of the interior For Loop, containing the Multiply function and the Round to Nearest function, and select Remove For Loop. 5. Right-click the border of the remaining For Loop and select Remove For Loop from the shortcut menu. Your block diagram should resemble Figure 6.13.

Figure 6.13. Array Investigation Part 2 VI Block Diagram 6. Save the VI. 7. Switch to the front panel. 8. Enter values for Rows and Columns. 9. Run the VI. Notice that the VI behaves the same as the solution for Part 1. This is because mathematical functions are polymorphic. For example, because the x input of the Multiply function is a twodimensional array, and the y input is a scalar, the Multiply function multiplies each element in the array by the scalar, and outputs an array of the same dimension as the x input. 4.2. Array Functions Goal Use functions in the Array sub-palette to manipulate an array. Scenario Modify the Array Investigation VI so that the VI creates a new array that contains the contents of the third row, and another new array that contains the contents of the second column. Then, modify the resulting VI to replace the second row of data with an array of the same size as the second row, with a value of zero in each element.

10

Part 1: Implementation 1. Open Array Investigation.vi. 2. Save the VI as Array Investigation Part 3.vi. 3. Open the block diagram of the VI. In the following steps, you build a block diagram similar to that shown in Figure 6.14.

Figure 6.14. Array Investigation Part 3 VI Block Diagram 4. Retrieve the third row of data from Array using the Index Array function. Add the Index Array function to the block diagram. Wire Array to the array input of the Index Array function. Tip The Index Array function accepts an n-dimensional array. After you wire the input array to the Index Array function, the input and output terminal names change to match the dimension of the array wired. Therefore, wire the input array to the Index Array function before wiring any other terminals. Right-click the index(row) input of the Index Array function. Select CreateConstant from the shortcut menu. Enter 2 in the constant to retrieve the third row. Remember that the index begins at zero. Right-click the subarray output of the Index Array function. Select CreateIndicator from the shortcut menu. Name the indicator Third Row. 5. Retrieve the second column of data from the Array using the Index Array function. Add another Index Array function to the block diagram. Wire Array to the array input of the Index Array function. Right-click the disabled index(col) input of the Index Array function. Select CreateConstant. Enter 1 in the constant to retrieve the second column because the index begins at zero. Right-click the subarray output of the Index Array function. Select CreateIndicator. Name the indicator Second Column. 6. Save the VI. 7. Switch to the front panel. 8. Enter values for Rows and Columns. 9. Run the VI. Part 2: Implementation 1. With the previous VI open, select FileSave As. 2. Select the Substitute copy for original option and save the VI as Array Investigation Part 4.vi. 3. Open the block diagram of the VI. In the following steps, you build a block diagram similar to that shown in Figure 6.15.

11

Figure 6.15. Array Investigation Part 4 VI Block Diagram 4. Retrieve the number of elements in the third row of data using the Array Size function. Add the Array Size function to the block diagram. Wire Third Row to the array input of the Array Size function. 5. Create an array of equal size as the Third Row array using the Initialize Array function. Add the Initialize Array function to the block diagram. Wire the size(s) output of the Array Size function to the dimension size input of the Initialize Array function. Right-click the element input of the Initialize Array function. Select CreateConstant from the shortcut menu. Enter 0 in the constant to create an array with values of 0. 6. Replace the third row of data in the original array with the Replace Array Subset function. Add the Replace Array Subset function to the block diagram. Wire the 2D array output from the For Loop to the array input of the Replace Array Subset function. Wire the initialized array output of the Initialize Array function to the new element/subarray input of the Replace Array Subset function. Right-click the index(row) input of the Replace Array Subset function. Select CreateConstant from the shortcut menu. Enter 2 in the constant to replace the third row. 7. Output the new array. Delete the section of wire going into the Array indicator. Move the indicator to the right of the Replace Array Subset function. Wire the output array output from the Replace Array Subset function into the Array indicator. 8. Save the VI. 9. Switch to the front panel. 10. Run the VI. Notice that the third row has been replaced with zeros.

12

S-ar putea să vă placă și