670 likes | 684 Views
III. Implementarea unui VI. Î n acest capitol este prezentat modul de implementare a codurilor în LabVIEW. Astfel, acest capitol cuprinde: proiectarea interfeței utilizator (PF); alegerea între diferitele tipuri de date; utilizarea buclelor în LabVIEW (bucla While și bucla For)
E N D
III. Implementarea unui VI • În acest capitol este prezentat modul de implementare a codurilor în LabVIEW. Astfel, acest capitol cuprinde: • proiectarea interfeței utilizator (PF); • alegerea între diferitele tipuri de date; • utilizarea buclelor în LabVIEW (bucla While și bucla For) • adăugarea unor întârzieri (timing) între iterațiile buclelor; • luarea deciziilor într-un VI, utilizând funcția Select și structura Case; • structura secvențială (Sequence) și nodul Formulă.
Topics A. Front Panel Design B. LabVIEW Data Types C. While Loops D. For Loops E. Timing a VI F. Iterative Data Transfer. Regiștrii de transfer (deplasare) G. Plotting Data H. Luarea deciziilor într-un VI. I. Structura secvențială (Sequence) J. Nodul Formulă (Formula Node)
A. Front Panel Design • În faza de proiectare a unui VI, trebuiesc mai întâi identificate intrarile și ieșirile VI-ului respectiv. • Această identificare duce practic la proiectarea ferestrei panoului frontal. • Intrările VI-ului se numest Controale (C), iar ieșirile Indicatoare (I). • Putem afișa rezultatele uneiaplicații cu ajutorul diferitelor tipuri de indicatoare, cum ar fi grafice, diagrame, sau LED-uri. De asemenea, ieșirile pot fi salvate într-un fișier.
Alegerea Controalelorși Indicatoarelor • Atunci când alegem C și I din PF, trebuie să ne asigurăm că acestea sunt adecvate pentru activitatea pe care dorim să o efectuăm. • De exemplu, atunci când dorim să modificăm frecvența unui semnal vom alege un C de tip cadran (Dial), iar atunci când dorim să afișăm temperatura, vom alege un I de tip termometru.
Asigurați-vă de etichetarea clară a controalelor și indicatoarelor. Etichetarea ajută utilizatorii să identifice scopul fiecărui C și I. • De asemenea, o etichetare clară a C și I din PF, ne va ajuta la realizarea DB, deoarece etichetele din PF vor apărea și la terminalele corespunzătoare în DB.
You can hide and view items on controls and indicators. For example,in Figure 2.1, you can see both the caption (legenda) and the label (eticheta). However, you onlyneed to see the caption. To hide the label, right-click the control and selectVisible Items»Label as shown in Figure 2.1. Figure 2.1. Hiding a Front Panel Label
B. LabVIEW Data Types • Many different data types exist for data. You already learned about numeric,Boolean, and string data types in Lesson, Navigating LabVIEW. Otherdata types include the enumerated data type, dynamic data, and others. Evenwithin numeric data types, there are different data types, such as wholenumbers or fractional numbers. Terminals • The block diagram terminals visually communicate to the user someinformation about the data type they represent.
For example, in Figure 2.2,Height (cm) is a double-precision, floating-point numeric. This is indicatedby the color of the terminal, orange, and by the text shown on the terminal,DBL.
Tipuri de date utilizate în LabVIEW • Numerice • Intreg cu semn - Signed integers (8-16-32-64 biti) • Intreg fara semn - Unsigned integers (8-16-32-64 biti) • Virgula mobila - Floating point ( single, double, extended) • Numar complex in virgula mobila - Complex floating point ( single, double, extended) • Booleane • String-uri • Formă de undă - Waveform • Cale - Path • Enumerare - Enum • Cluster • Numeric • Diverse tipuri Mixed data • Matrice - Array • 1D • 2D
Toate tipurile de date enumerate mai sus pot fi utilizate si plasate pe Diagrama Bloc. Fiecare tip de data are o reprezentare grafica sub forma de Icoanăsau de Terminal. • Reprezentarea sub forma de Icoanăeste mai sugestiva însă are o dimensiune mai mare, pe când reprezentarea sub forma deTerminal este mai restrânsă si ocupa mai putin loc în cadrul aplicatiei schitate în Diagrama Bloc.
Moduri de reprezentare avalorilor numerice • Meniurile proprii ale elementelor de tip control sau de tip indicatoar numeric contin o optiune specifica, Representation, cu ajutorul careia se specifica modul in care valoarea numerica respectiva este stocata in memorie.
In submeniul Representation, utilizatorul are la dispozitie 12 optiuni: • pe prima linie: optiuni pentru numere reale • pe a doua linie: optiuni pentru numere intregi • pe a treia linie: optiuni pentru numere naturale • pe a patra linie: optiuni pentru numere complexe • Intre diversele optiuni de pe o linie, diferenta consta in numarul de octeti (bytes) alocati in memorie pentru stocarea valorii respective:
EXT (extended) = numar real cu precizie extinsa (16 octeti) DBL (double) = numar real cu precizie dubla (8 octeti) SGL (single) = numar real cu precizie simpla (4 octeti) I32 (long) = numar intreg pe 4 octeti I16 (word) = numar intreg pe 2 octeti I8 (byte) = numar intreg pe 1 octet U32 (unsigned long) = numar natural pe 4 octeti U16 (unsigned word) = numar natural pe 2 octeti U8 (unsigned byte) = numar natural pe 1 octet CXT (complex extended) = numar complex cu precizie extinsa (32 octeti) CDB (complex double) = numar complex cu precizie dubla (16 octeti) CSG (complex single) = numar complex cu precizie simpla (8 octeti)
În calculatoare sunt utilizate două tipuri de reprezentări binare ale numerelor reale: - reprezentarea în virgulă fixă şi - reprezentarea în virgulă flotantă (mobilă). • Reprezentarea în virgulă fixă este o reprezentare care pune în evidenţă semnul, partea întreagă şi partea fracţionară a numărului. Dimensiunile locaţiei de memorie în care se reprezintă un număr în virgulă fixă este prefixată: 8, 16, 32 sau 64 de biţi. • Principalul dezavantaj al reprezentării în virgulă fixă este faptul că, dacă un număr nu mai încape în spaţiul de biţi rezervat, se pierd cifrele cele mai semnificative! • Reprezentarea în virgulă flotantă este astfel concepută, încât, la depăşire, se pierd cifrele cel mai puţin semnificative!
Numarul de octeti alocati pentru stocare se reflecta in intervalul de valori în care poate exista valoarea respectiva sau în precizia acesteia:
Atunci când se leagă date numerice de reprezentări diferite la intrările aceleiaşifuncţii, LabVIEW furnizează rezultatul de tipul cel mai lung. Dacă ambele intrăriau acelaşi număr de biţi dar sunt de reprezentări diferite (de ex. U32 şi I32),LabVIEW furnizează rezultatul fără semn. • In exemplul din figura următoare, adunareadintre un număr real în reprezentare dublă precizie (8 octeţi) și un număr întreg cusemn pe 4 octeţi I32 dă un rezultat corespunzător numărului mai lung, deci realdublă precizie. Această operaţie se numeşte constrângere, iar operandul constrânseste marcat printr-un punct la intrarea în funcţie.
Variabile locale • De multe ori avem nevoie sa utilizam in multe locuri aceeasi variabila. Pentru a nu supraâncărca diagrama bloc cu linii de legatura, se poate defini o variabila locală care va putea fi plasatăîn toate locurile în care avem nevoie de ea. Plasarea variabilei se face alegând din grupul: Functions->Programming->Structures->Local-Variable. Dupa plasarea ei, cu click dreapta pe variabila->Select Item, putem alege controlul atașat acestei variabile.
Sa presupunem ca dorim ca valoarea de intrare Ui să o afișăm în trei indicatoare.
Meniuri proprii specifice elementelor booleene • Elementele de control booleene dispun in meniul propriu de optiunea suplimentara Mechanical Action, aceasta permițând stabilirea modului in care elementul se comporta la apasarea butonului mouse-ului de catre utilizator.
>>> Switch When Pressed modifica valoarea logica a elementului atunci cand se apasa butonul mouse-ului, iar valoarea ramane modificata si dupa eliberarea butonului; >>> Switch When Released modifica valoarea logica a elementului atunci cand se elibereaza butonul mouse-ului (dupa ce in prealabil a fost apasat), iar valoarea ramane modificata si dupa eliberare; >>> Switch Until Released modifica valoarea logica a elementului atunci cand se apasa butonul mouse-ului, iar dupa eliberarea butonului valoarea elementului redevine cea dinaintea apasarii;
>>> Latch When Pressed modifica valoarea logica a elementului atunci cand se apasa butonul mouse-ului, dar aceasta modificare dureaza doar pana cand valoarea logica este transmisa in diagrama bloc pe fluxul de date. Imediat ce valoarea elementului a fost transmisa, acesta revine la valoarea dinaintea apasarii, chiar daca utilizatorul continua sa tina butonul mouse-ului apasat. >>> Latch When Released modifica valoarea logica a elementului atunci cand se elibereaza butonul mouse-ului (dupa ce in prealabil a fost apasat), dar această modificare dureaza doar pana cand valoarea logica este transmisa in diagrama pe fluxul de date. Dupa ce valoarea a fost transmisa, elementul revine la valoarea initiala. >>> Latch Until Released modifica valoarea logica a elementului atunci cand se apasa butonul mouse-ului, iar modificarea se pastreaza atat timp cat utilizatorul tine butonul apasat. Dupa ce utilizatorul elibereaza butonul, elementul revine la valoarea initiala doar in momentul in care se realizeaza o transmitere a valorii pe fluxul de date.
Aplicație • Dispuneti pe panou un element boolean de control de tipul Vertical Toggle Switch si un element indicator de tipul Round LED. In diagrama bloc, conectati intre ele terminalele celor doua elemente. • Pentru fiecare optiune Mechanical Option a elementului de control, efectuati o rulare continua (butonul Run Continuously) si observati modul in care se comporta comutatorul si modul in care valoarea sa logica este transmisa elementului Round LED.
Functiile pentru realizarea comparatiilor ale mediului LabVIEW.
Strings • A string is a sequence of displayable or non-displayable ASCII characters.Strings provide a platform-independent format for information and data.Some of the more common applications of strings include the following: • Creating simple text messages. • Controlling instruments by sending text commands to the instrumentand returning data values in the form of either ASCII or binary stringswhich you then convert to numeric values. • Storing numeric data to disk. To store numeric data in an ASCII file, youmust first convert numeric data to strings before writing the data to adisk file.
Atentionarea sau întrebarea utilizatorului prin intermediul unei cutii de dialog. • Funcţiile pentru valorile alfanumerice sunt grupate însubpaleta String a paletei de Funcții. • Mai frecvent utilizate sunt cele pentru transformarea caracterelor în majuscule (To Upper Case), pentru transformarea caracterelor în minuscule (To Lower Case), de calculare a lungimii unui şir de caractere (String Length), de compunere a unui şir din două şiruri distincte (Concatenate String), de identificare şi înlocuire a unui şir în cadrul altuia (Search and Replace String) etc. • De asemenea, subpaleta String conţine un element String Constant utilizat pentru introducerea în diagramă a valorilor alfanumerice constante.
Enums • An enum (enumerated control, constant or indicator) is a combination ofdata types. An enum represents a pair of values, a string and a numeric,where the enum can be one of a list of values. • For example, if you createdan enum type called Month, the possible value pairs for a Month variable areJanuary-0, February-1, and so on through December-11. Figure 2.5 showsan example of these data pairs in the Properties dialog box for anenumerated control. • Enums are useful because it is easier to manipulate numbers on the blockdiagram than strings. Figure 2.6 shows the Month enumerated control, theselection of a data pair in the enumerated control, and the correspondingblock diagram terminal.
The dynamic data type stores the information generated or acquired by anExpress VI. The dynamic data type appears as a dark blue terminal, shownat left. Most Express VIs accept and/or return the dynamic data type.You can wire the dynamic data type to any indicator or input that acceptsnumeric, waveform, or Boolean data. Wire the dynamic data type to anindicator that can best present the data. Indicators include graphs, charts,or numeric indicators. • Most other VIs and functions in LabVIEW do not accept the dynamic datatype. To use a built-in VI or function to analyze or process the data thedynamic data type includes, you must convert the dynamic data type. Dynamic
Most other VIs and functions in LabVIEW do not accept the dynamic datatype. To use a built-in VI or function to analyze or process the data thedynamic data type includes, you must convert the dynamic data type. • Use the Convert from Dynamic Data Express VI to convert the dynamic datatype to numeric, Boolean, waveform, and array data types for use with otherVIs and functions.
When you place the Convert from Dynamic Data ExpressVI on the block diagram, the Configure Convert from Dynamic Datadialog box appears. The Configure Convert from Dynamic Data dialogbox displays options that let you specify how you want to format the datathat the Convert from Dynamic Data Express VI returns. • When you wire a dynamic data type to an array indicator, LabVIEWautomatically adds the Convert from Dynamic Data Express VI to the blockdiagram. Double-click the Convert from Dynamic Data Express VI to openthe Configure Convert from Dynamic Data dialog box to control how thedata appears in the array.
C. While Loops • Similar comportarii unei bucle Dosau a unei bucleRepeat-Until(=repetă până când) în cadrul limbajelor de programare bazate pe text, o buclă While execută o subdiagramăatâta timp cât este îndeplinită o condiție. • The following illustration shows a While Loop in LabVIEW, a flowchartequivalent of the While Loop functionality, and a pseudo code example ofthe functionality of the While Loop.
The While Loop is located on the Structures palette. Select the While Loopfrom the palette then use the cursor to drag a selection rectangle around thesection of the block diagram you want to repeat. When you release themouse button, a While Loop boundary encloses the section you selected. • Add block diagram objects to the While Loop by dragging and droppingthem inside the While Loop.
1. Selectare buclă While 2. Înlănțuirea codului a fi repetat 3. Adăugarea de noduri suplimentare și apoi realizarea legăturilor Do (Execută diagrama din interiorul buclei) While Condition is TRUE Terminal iterație Terminal condiționare
A While loop repeats the sub diagram inside it until the conditional terminal, an input terminal, receives a particular Boolean value. The Boolean value depends on the continuation behavior of the While Loop. Right-click the conditional terminal and select Stop if True or Continue if True from the shortcut menu. You also can wire an error cluster to the conditional terminal, right-click the terminal, and select Stop on Error or Continue while Error from the shortcut menu. • The While Loop always executes at least once. • Below we see an empty While loop:
Terminal iterație Terminal condiționare Selectarea condițiilor buclei • Clic dreapta în terminalul condiționare pentru definirea opririi buclei • Pe marginile buclei se pot crea regiștri de deplasare care transferă datele de la o iterație la următoarea
Structure Tunnels • Tunnels feed data into and out of structures. • The tunnel is a block that appears on the border; the color of the block is related to the data type wired to the tunnel. • When a tunnel passes data into a loop, the loop executes only after data arrive at the tunnel. • Data pass out of a loop after the loop terminates.
Exemple de bucle While În diagrama bloc din figură, bucla While este executată până când ieșirea funcției de multiplicare este mai mare sau egală cu 5, iar controlul Enable este Adevărat (True). Funcția ȘI (AND) returnează la ieșire valoarea True doar dacă cele două intrări sunt True. Altfel ieșirea este False.