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
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)
În faza de proiectare a unui VI, trebuiesc mai întâi identificate intrarile și ieșirile VI-ului respectiv.
Î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 unei aplicaț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
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.
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 only need to see the caption. To hide the label, right-click the control and select Visible Items»Label as shown in Figure 2.1.
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 only need to see the caption. To hide the label, right-click the control and select Visible Items»Label as shown in Figure 2.1.
Many different data types exist for data. You already learned about numeric, Boolean, and string data types in Lesson, Navigating LabVIEW. Other data types include the enumerated data type, dynamic data, and others. Even within numeric data types, there are different data types, such as whole numbers or fractional numbers.
Many different data types exist for data. You already learned about numeric, Boolean, and string data types in Lesson, Navigating LabVIEW. Other data types include the enumerated data type, dynamic data, and others. Even within numeric data types, there are different data types, such as whole numbers or fractional numbers.
Terminals
The block diagram terminals visually communicate to the user some information about the data type they represent.
For example, in Figure 2.2, Height (cm) is a double-precision, floating-point numeric. This is indicated by the color of the terminal, orange, and by the text shown on the terminal, DBL.
For example, in Figure 2.2, Height (cm) is a double-precision, floating-point numeric. This is indicated by the color of the terminal, orange, and by the text shown on the terminal, DBL.
Numerice
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.
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 de Terminal este mai restrânsă si ocupa mai putin loc în cadrul aplicatiei schitate în Diagrama Bloc.
Moduri de reprezentare a valorilor numerice
Moduri de reprezentare a valorilor 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:
In submeniul Representation, utilizatorul are la dispozitie 12 optiuni:
În calculatoare sunt utilizate două tipuri de reprezentări binare ale numerelor reale:
Î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:
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şi funcţii, LabVIEW furnizează rezultatul de tipul cel mai lung. Dacă ambele intrări au acelaşi număr de biţi dar sunt de reprezentări diferite (de ex. U32 şi I32), LabVIEW furnizează rezultatul fără semn.
Atunci când se leagă date numerice de reprezentări diferite la intrările aceleiaşi funcţii, LabVIEW furnizează rezultatul de tipul cel mai lung. Dacă ambele intrări au 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, adunarea dintre un număr real în reprezentare dublă precizie (8 octeţi) și un număr întreg cu semn pe 4 octeţi I32 dă un rezultat corespunzător numărului mai lung, deci real dublă precizie. Această operaţie se numeşte constrângere, iar operandul constrâns este marcat printr-un punct la intrarea în funcţie.
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.
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.
Sa presupunem ca dorim ca valoarea de intrare Ui să o afișăm în trei indicatoare.
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.
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 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 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
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.
Strings
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 instrument and returning data values in the form of either ASCII or binary strings which you then convert to numeric values.
Storing numeric data to disk. To store numeric data in an ASCII file, you must first convert numeric data to strings before writing the data to a disk file.
Atentionarea sau întrebarea utilizatorului prin intermediul unei cutii de dialog.
Atentionarea sau întrebarea utilizatorului prin intermediul unei cutii de dialog.
Funcţiile pentru valorile alfanumerice sunt grupate în subpaleta 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
Enums
An enum (enumerated control, constant or indicator) is a combination of data 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 created an enum type called Month, the possible value pairs for a Month variable are January-0, February-1, and so on through December-11. Figure 2.5 shows an example of these data pairs in the Properties dialog box for an enumerated control.
Enums are useful because it is easier to manipulate numbers on the block diagram than strings. Figure 2.6 shows the Month enumerated control, the selection of a data pair in the enumerated control, and the corresponding block diagram terminal.
Dynamic
Dynamic
Similar comportarii unei bucle Do sau a unei bucle Repeat-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.
Similar comportarii unei bucle Do sau a unei bucle Repeat-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 flowchart equivalent of the While Loop functionality, and a pseudo code example of the functionality of the While Loop.
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.
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.
Clic dreapta în terminalul condiționare pentru definirea opririi 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
Tunnels feed data into and out of structures.
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.
This example run until either the user clicks the stop button or number of iterations is greater than 10.
This example run until either the user clicks the stop button or number of iterations is greater than 10.
VI-ul din figura de mai jos generează numere aleatoare, până când numărul generat corespunde cu numărul specificat. Terminalul iteratie înregistrează numărul de numere aleatoare generate, până când apare numărul specificat.
VI-ul din figura de mai jos generează numere aleatoare, până când numărul generat corespunde cu numărul specificat. Terminalul iteratie înregistrează numărul de numere aleatoare generate, până când apare numărul specificat.
A For Loop, shown as follows, executes a subdiagram a set number of times. Figure 2.9 shows a For Loop in LabVIEW, a flowchart equivalent of the For Loop functionality, and a pseudo code example of the functionality of the For Loop.
A For Loop, shown as follows, executes a subdiagram a set number of times. Figure 2.9 shows a For Loop in LabVIEW, a flowchart equivalent of the For Loop functionality, and a pseudo code example of the functionality of the For Loop.
The For Loop is located on the Structures palette. You also can place a While Loop on the block diagram, right-click the border of the While Loop, and select Replace with For Loop from the shortcut menu to change a While Loop to a For Loop. The count terminal is an input terminal whose value indicates how many times to repeat the subdiagram.
The iteration count for the For Loop always starts at zero.
The iteration count for the For Loop always starts at zero.
The For Loop differs from the While Loop in that the For Loop executes a set number of times. A While Loop stops executing the subdiagram only if the value at the conditional terminal exists.
Adding a Conditional Terminal to a For Loop
Adding a Conditional Terminal to a For Loop
If necessary, you can add a conditional terminal to configure a For Loop to stop when a Boolean condition or an error occurs. A For Loop with a conditional terminal executes until the condition occurs or until all iterations are complete, whichever happens first. For Loops you configure for a conditional exit have a red glyph in the count terminal as well as a conditional terminal in the lower right corner. After you configure the For Loop to exit conditionally, the loop appears similar to Figure 2.11. The following For Loop generates a random number every second until 100 seconds has passed or the user clicks the stop button.
Numeric Conversion
Numeric Conversion
LabVIEW can represent numeric data types as signed or unsigned integers, floating-point numeric values, or complex numeric values, as discussed in the LabVIEW Data Types section of this lesson.
Normally, when you wire different representation types to the inputs of a function, the function returns an output in the larger or wider format. If you use a signed integer with an unsigned integer, it will coerce to the unsigned integer. If you use an unsigned integer with a floating point, it will coerce to the floating point. If you use a floating point number with a complex number, it will coerce to the complex number.
If you use two numbers of the same type with different bit widths, LabVIEW will coerce to the larger of the two bit widths. For example, if you wire a DBL and an I32 to a Multiply function, the result is a DBL, as shown in Figure 2.13. LabVIEW coerces the 32-bit signed integer because it uses fewer bits than the double-precision, floating-point numeric value. The lower input of the Multiply function shows a red dot, called a coercion dot, that indicates LabVIEW coerced the data.
If you use two numbers of the same type with different bit widths, LabVIEW will coerce to the larger of the two bit widths. For example, if you wire a DBL and an I32 to a Multiply function, the result is a DBL, as shown in Figure 2.13. LabVIEW coerces the 32-bit signed integer because it uses fewer bits than the double-precision, floating-point numeric value. The lower input of the Multiply function shows a red dot, called a coercion dot, that indicates LabVIEW coerced the data.