lucrarea nr - wordpress.com · web viewgenerator de semnale virtual se va realiza un generator de...

13
LUCRAREA NR. 9 LUAREA DECIZIILOR ÎNTR-UN VI 1. Obiectivele lucrării a) Cunoasterea modului de executie a funcției Select b) Cunoasterea modului de executie a structurii de selectie (Case). c) Cunoasterea modului de executie a structurii secventiale (Sequence). d) Utilizarea nodului Formulă pentru realizarea operațiilor matematice. 2.Aparatura şi suporturile utilizate: a) PC în configuraţia unitate centrală,monitor, tastatură; b) Precizările din prezentul îndrumar; c) Manual de prezentare a mediului de programare grafic LabVIEW. 3.Breviar There are cases when a decision must be made in a program. For example, if a happens, do b; else if c happens, do d. In text-based programs, this can be accomplished with if-else statements, case statements, switch statements, and so on. LabVIEW includes many di_erent ways of making decisions. The simplest of these methods is the Select function. 3.1.Select Function The Select function, located on the Functions_Express Comparison palette, selects between two values dependent on a Boolean input. If the Boolean input s is True, this function returns the value wired to the t input. If the Boolean input is False, this function returns the value wired to the f input. You used the Select function in the Thermometer VI exercise to determine whether to output a Fahrenheit value or a Celsius value, as shown in the block diagram in Figure 9.1. 1

Upload: others

Post on 25-Dec-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LUCRAREA NR - WordPress.com · Web viewGenerator de semnale virtual Se va realiza un generator de semnal virtual (sinusoidal, dreptunghiular, triunghiular, dinți de fierăstrău)

LUCRAREA NR. 9

LUAREA DECIZIILOR ÎNTR-UN VI

1. Obiectivele lucrării

a) Cunoasterea modului de executie a funcției Selectb) Cunoasterea modului de executie a structurii de selectie (Case).c) Cunoasterea modului de executie a structurii secventiale (Sequence).d) Utilizarea nodului Formulă pentru realizarea operațiilor matematice.

2.Aparatura şi suporturile utilizate:

a) PC în configuraţia unitate centrală,monitor, tastatură;b) Precizările din prezentul îndrumar;c) Manual de prezentare a mediului de programare grafic LabVIEW.

3.Breviar

There are cases when a decision must be made in a program. For example, if a happens, do b; else if c happens, do d. In text-based programs, this can be accomplished with if-else statements, case statements, switch statements, and so on. LabVIEW includes many di_erent ways of making decisions. The simplest of these methods is the Select function.

3.1.Select FunctionThe Select function, located on the Functions_Express Comparison palette, selects between two values dependent on a Boolean input. If the Boolean input s is True, this function returns the value wired to the t input. If the Boolean input is False, this function returns the value wired to the f input.You used the Select function in the Thermometer VI exercise to determine whether to output a Fahrenheit value or a Celsius value, as shown in the block diagram in Figure 9.1.

Figure 9.1

If the decision to be made is more complex than a Select function can execute, a Case structure may be required.

3.2. Structura “CASE”Structura “CASE” permite execuţia uneia din mai multe subdiagrame funcţie de valoarea unei variabile de selecţie ce poate fi de tip boolean, întreg sau string.

1

Page 2: LUCRAREA NR - WordPress.com · Web viewGenerator de semnale virtual Se va realiza un generator de semnal virtual (sinusoidal, dreptunghiular, triunghiular, dinți de fierăstrău)

Figura 9.2. Cele 3 tipuri de variabile de selecție ale unei structuri Case

În cazul unui bloc de tip “CASE” este posibil să avem mai multe tuneluri de intrare şi de ieşire. Este necesar ca tunelurilor de ieşire să le fie asignată câte o valoare în fiecare subdiagramă a structurii “CASE”.

Exemplu:

Figura 9.3. Exemplu de structură “CASE”.

Valoarea legată la terminalul marcat cu “?” reprezintă selectorul structurii. În funcţie de tipul selectorului se schimbă şi constantele de selecţie din partea de sus a subdiagramei. În exemplul nostru am ales un selector de tip boolean deci identificatorii de selecţie sunt “TRUE” şi “FALSE”. Se trece prin fiecare identificator folosind săgeţile şi se construiesc subdiagramele asociate.

În cazul în care am fi avut mai multe valori posibile pentru identificatorii de selecţie (dacă de exemplu selectorul ar fi fost de tip întreg) aceştia s-ar fi adăugat folosind meniul contextual asociat structurii “CASE”. De remarcat ca în acest caz este necesar şi un identificator de selecţie de tip “default” care să prelucreze valorile nespecificate.

Efectul execuţiei diagramei anterioare este de a da indicatorului numeric valorile “5” sau “100” funcţie de starea selectorului boolean.

Figura 9.4. Rezultatul execuţiei programului.

The block diagram in Figure 9.5 is an example of the Thermometer VI that uses a Case structure instead of the Select function. It is shown with the True case foremost in the Case structure.

Figure 9.5

2

Page 3: LUCRAREA NR - WordPress.com · Web viewGenerator de semnale virtual Se va realiza un generator de semnal virtual (sinusoidal, dreptunghiular, triunghiular, dinți de fierăstrău)

Once you have selected another case, that case appears foremost, as shown in the block diagram in Figure 9.6.

Figure 9.6

3.3. Structura “Sequence”O secvenţă structurală conţine una sau mai multe subdiagrame sau cadre (frame) care se execută în ordine secvenţială. Secvenţele structurale sunt recomandate pentru a controla succesiunea execuţiei programului când nu există o dependenţă naturală a datelor şi nu sunt disponibili parametrii de flux de trecere (flux – through).Există două secvenţe structurale: structură secvenţială plată (Flat Sequence Structure) şi structură secvenţială stivuită (Stacked Sequence Structure).

a) b)Figura 9.7. Structuri Sequence: Flat Sequence (a); Stacked Sequence (b)

Structura secvenţială plată se utilizează pentru a asigura execuţia unei subdiagrame înainte sau după o altă subdiagramă. Adăugarea unei noi structuri secvenţiale se obţine prin click - dreapta pe chenarul structurii şi apelarea facilităţii dorite din meniul contextual. Un clik – dreapta pe bara orizontală a chenarului oferă două facilităţi: introducerea unei structuri secvenţiale în faţă (Add Frame Before) sau introducerea unei structuri după (Add Frame After). Un click – dreapta pe bara verticală a chenarului oferă doar una din cele două posibilităţi: pe bara stângă permite Add Frame Before iar pe bara dreaptă permite Add Frame After. Un click-dreapta pe o bară verticală a chenarului pentru o structură secvenţială intermediară oferă facilitatea Insert Frame.Structurile secvenţiale plate se execută de la stânga la dreapta când toate datele legate la cadru sunt disponibile. Atunci cand este dispusa in diagrama, o structura Sequence Stivă, contine o singura fereastra, aceasta fiind totodata si fereastra curenta (vizibila). Deschizand meniul propriu al structurii si alegand una din optiunile Add Frame After sau Add Frame Before, se poate adauga o fereastra dupa sau inaintea celei curente.

3

Page 4: LUCRAREA NR - WordPress.com · Web viewGenerator de semnale virtual Se va realiza un generator de semnal virtual (sinusoidal, dreptunghiular, triunghiular, dinți de fierăstrău)

Daca o structura Sequence stivă contine mai mult de o fereastra, atunci ferestrele primesc indici (numere de ordine) incepand cu 0, iar pe latura superioara a conturului structurii apare un selector prin intermediul caruia se poate trece de la o fereastra la alta.Atunci cand o structura Sequence Stivă contine cel putin doua ferestre, ordinea acestora poate fi schimbata: se modifica indicele ferestrei curente, selectand optiunea Make This Frame, apoi noul indice.Atunci cand se doreste transferul unei valori intre doua ferestre ale unei structuri Sequence, prin selectarea optiunii Add Sequence Local se dispune pe conturul structurii o variabila locala a acesteia (sub forma unui patrat galben).Daca, in una din ferestrele structurii, se conecteaza o valoare la variabila locala, fereastra respectiva devine fereastra sursa pentru acea variabila. In acea fereastra, simbolul variabilei locale contine o săgeată indreptata spre exteriorul structurii.In ferestrele anterioare ferestrei sursa, simbolul variabilei locale devine hasurat, semn ca valoarea variabilei locale nu este accesibila in acele ferestre.In ferestrele de dupa fereastra sursa, simbolul variabilei locale va contine o sageata indreptata spre interiorul structurii. In aceste ferestre, valoarea transferata prin intermediul variabilei locale poate fi utilizata in fluxul de date. O structura Stacked Sequence poate dispune de mai multe variabile locale. 

Figura 9.8. Exemplu de structură Stacked Sequence

Intr-o structura Stacked Sequence pot fi utilizate valori provenite din fluxul de date exterior. O valoare introdusa din exterior intr-o structura Stacked Sequence va putea fi utilizata in oricare dintre ferestrele structurii. Daca, intr-o anumita fereastra, se face o legatura din structura Stacked Sequence in exteriorul acesteia, la iesirea respectiva (patratul de pe contur) nu va mai putea fi legata o alta valoare din alta fereastra (ar exista o incertitudine privind valoarea care iese din structura).Indiferent de indicele ferestrei in care s-a facut o legatura spre exterior, valoarea va parasi iesirea de pe conturul structurii Stacked Sequence doar dupa executarea ultimei ferestre.În figura alăturată se prezintă o structură secvenţială stivă formată din 3 cadre (0, 1, 2) cadrul activ în figura prezentată fiind cadrul 1. În fiecare cadru se pot introduce nodurile existente sau edita altele noi. Diagrama care trebuie execută prima se introduce în cadrul “0”, diagrama care trebuie executată a doua în cadrul “1” s.a.m.d.

Figura 9.9. Exemplu de structură Stacked Sequence

4

Page 5: LUCRAREA NR - WordPress.com · Web viewGenerator de semnale virtual Se va realiza un generator de semnal virtual (sinusoidal, dreptunghiular, triunghiular, dinți de fierăstrău)

Secvenţa anterioară cuprinde trei subdiagrame : prima calculează dublul unei valori introduse de la tastatură, a doua calculează pătratul aceleiaşi valori iar ultima calculează suma celor două rezultate anterioare. Se observă folosirea de terminale locale (Meniu contextual “Add Sequence Local”) pentru a trece rezultatele primelor două subdiagrame în cea de-a treia. Adăugarea de noi subdiagrame în secvenţă se face folosind meniul contextual ( “Add Frame Before”, “Add Frame After”).

Trecerea dintr-o subdiagramă în alta se face folosind săgeţile din partea de sus a simbolului pentru secvenţă. Rezultatul execuţiei diagramei anterioare este următorul:

Figura 9.10. Rezultatul execuţiei programului.

3.4. Formula NodeThe Formula Node is a convenient text-based node you can use to perform mathematical operations on the block diagram. Formula Nodes are useful for equations that have many variables or are otherwise complicated and for using existing text-based code. You can copy and paste the existing text-based code into a Formula Node rather than recreating it graphically on the block diagram.Create the input and output terminals of the Formula Node by right-clicking the border of thenode and selecting Add Input or Add Output from the shortcut menu, then enter the variable for the input or output. Type the equation in the structure. Each equation statement must terminate with a semicolon (;).Formula Nodes also can be used for decision making. The block diagram shown in Figure 9.11 shows two different ways of using an if-then statement in a Formula Node. The two structures produce the same result.

Figure 9.11

The Formula Node can perform many di_erent operations. Refer to theLabVIEW Help for more information about functions, operations, and syntax for the Formula Node.

5

Page 6: LUCRAREA NR - WordPress.com · Web viewGenerator de semnale virtual Se va realiza un generator de semnal virtual (sinusoidal, dreptunghiular, triunghiular, dinți de fierăstrău)

4. Mod de lucru

a) Se alimentează sistemul cu tensiune;b) Se lansează mediul LabVIEW;c) Se implementează programele descrise mai jos.

4.1. VI pentru adunarea și scăderea a două numereSe va realiza un instrument virtual pentru adunarea și scăderea a două numere utilizând un control boolean, un control numeric înteg, respectiv un control string

Figura 9.12. VI pentru adunarea și scăderea a două numere cu control boolean

Figura 9.13. VI pentru adunarea și scăderea a două numere cu control boolean

Figura 9.14. VI pentru adunarea și scăderea a două numere cu control string

6

Page 7: LUCRAREA NR - WordPress.com · Web viewGenerator de semnale virtual Se va realiza un generator de semnal virtual (sinusoidal, dreptunghiular, triunghiular, dinți de fierăstrău)

4.2. Generator de semnale virtualSe va realiza un generator de semnal virtual (sinusoidal, dreptunghiular, triunghiular, dinți de fierăstrău).

Figura 9.15. PF al generatorului de semnal

Figura 9.16. DB a generatorului de semnal

4.3. VI pentru extragerea radicaluluiRealizati urmatorii pasi pentru a construi un VI care verifica dacă un numar este pozitiv. In cazul in care este, VI calculeaza radacina patrata a numarului. Altfel, VI returneaza un mesaj de eroare.I.Deschideti un nou VI si construiti urmatorul panou frontal.

Figura 9.17

II.Construiti urmatoarea diagrama bloc

7

Page 8: LUCRAREA NR - WordPress.com · Web viewGenerator de semnale virtual Se va realiza un generator de semnal virtual (sinusoidal, dreptunghiular, triunghiular, dinți de fierăstrău)

Figura 9.18

a.Plasati o structura de proces amplasata in paleta Functions>>Structures.b.Click pe butonul sagetilor de crestere sau de descrestere pentru a selecta cazul FALSE.c.Plasati functia Greater or Equal to 0? Amplasata in paleta de functii Functions >> Comparison. Aceasta functie returneaza valoare TRUE in cazul in care Number este mai mare ca 0 sau egal cu 0.

d.Click-dreapta pe constanta numerica si selectati Format&Precision din meniu(shortcut menu!!!???).Setati Digits of Precision la 1, selectati Floating Point Notation, si dati click pe butonul OK.Acest lucru ne asigura ca nu exista nici o conversie de date intre constanta si indicatorul numeric din afara structurii de process(Case structure).e.Plasati functia One Button Dialog care se afla in paleta Functions>>Time&Dialog.Aceasta functie afiseaza o fereastra de dialog ce va contine mesajul Error…Negative Number.f.Click-dreapta pe terminalul de mesaj al functiei One Button Dialog, selectati Create>>Constant din meniul(shortcut menu!!!???), tipariti Error…Negative Number, si apasati tasta <Enter>.g.Selectati cazul TRUE si plasati functia Square Root care se afla in paleta de functii Functions>>Numeric, asa cum se arata in urmatoarea diagrama bloc.Aceasta functie returneaza radacina patrata a Number(numarului).

Figura 9.19

III. Salvati VI-ul sub denumirea Square Root.vi.IV. Afisati panoul frontal si rulati VI-ul.In cazul in care Number este pozitiv, atunci VI executa caz TRUE si returneaza radacina patrata a Number.In cazul in care Number este negative, VI executa cazul FALSE, returneaza -99999.0, si afiseaza o fereastra de dialog cu mesajul Error...Negativ Number.V.Inchideti VI.

4.4. Să se implementeze VI-ul din figură cu ajutorul structurii secvențiale Stivă

8

Page 9: LUCRAREA NR - WordPress.com · Web viewGenerator de semnale virtual Se va realiza un generator de semnal virtual (sinusoidal, dreptunghiular, triunghiular, dinți de fierăstrău)

Figura 9.20

4.5. Formula Node Exercise VIFront Panel1.Open a blank VI and build the front panel shown in Figure 9.21.

Figure 9.21Block Diagram1.Build the block diagram shown in Figure 9.22.

Figure 9.22

(a)Place the Formula Node, located on the Functions>>All Functions>>Structures palette, on the block diagram.(b)Create the x input terminal by right-clicking the left border and selecting Add Input from the shortcut menu. Type x in the box that appears.(c)Create the y and a output terminals by right-clicking the right border and selecting Add Output from the shortcut menu. Enter y and a, respectively, in the boxes that appear. You must create output terminals for temporary variables like a.Note: When you create an input or output terminal, you must use a variable name that exactly matches the one in the equation. Variable names are case sensitive.(d)Type the following equations in the Formula Node, where ** is the exponentiation operator. Refer to the LabVIEW Help for more information about syntax for the Formula Node.a = tanh(x) + cos(x);

9

Page 10: LUCRAREA NR - WordPress.com · Web viewGenerator de semnale virtual Se va realiza un generator de semnal virtual (sinusoidal, dreptunghiular, triunghiular, dinți de fierăstrău)

y = a**3 + a;(e)Complete the block diagram as shown in Figure 9.22.2.Save the VI as Formula Node Exercise.vi in the C:\Exercises\ LabVIEW Basics I directory.Run the VI1.Display the front panel and run the VI. The graph displays the plot of the equation y = f3 (x) + f (x), where f (x) = tanh (x) + cos (x). During each iteration, the VI divides the iteration terminal value by 15.0. The quotient is wired to the Formula Node, which calculates the function value. The VI plots the array as a graph.2.Close the VI.

10