INTRODUCERE IN INSTRUMENTAȚIA VIRTUALĂ Introducere Prin instrumentația virtuală se înțelege facilitatea / modalitatea oferită de un computer dotat cu… [310588]
INTRODUCERE IN INSTRUMENTAȚIA VIRTUALĂ
Introducere
Prin instrumentația virtuală se înțelege facilitatea / modalitatea oferită de un computer dotat cu echipamente periferice de intrare / [anonimizat] a modela și simula caracteristicile și funcționarea unui instrument / [anonimizat].
[anonimizat], o concurență acerbă pentru lansarea pe scară largă a unei game variate de produse noi (din domeniul măsurărilor: osciloscoape, [anonimizat] s.a.m.d.), cu calităti superioare celor de pe piață sau cu soluții noi pentru monitorizarea unor procese automatizate. Un utilizator își poate construi un produs virtual destinat unei anumite aplicații cu caracteristicile dorite. Acest produs îl vom denumi în continuare instrument virtual ( [anonimizat]).
Instrumentația virtuală a devenit „ținta” mai multor medii de lucru specializate. Unul dintre cele mai răspândite și care s-a impus pe plan mondial este LabVIEW (Laboratory Virtual Instrument Engineering Workbench). Aceste este un mediu de programare bazat pe limbajul de programare grafică G. Firma National Instruments (NI) a introdus în anul 1986 conceptul de instrumentație virtuală și a lansat pe piață prima versiune a mediului LabView. În [1.1] instrumentul virtual se definește ca: program în LabView care modelează forma și funcția unui instrument fizic.
[anonimizat], este necesară o [anonimizat]:
[anonimizat], panoul frontal (interfața instrumentului) și funcționalitatea sa;
calculatorul devine “gazda” noului instrument creat de utilizator oferindu-i totodată facilitățile clasice: [anonimizat], stocare a informațiilor, [anonimizat] a datelor etc.
Mediul de programare utilizat pentru “modelarea” [anonimizat], [anonimizat] a informației pe care să le poată utiliza în “construirea” altor VI.
[anonimizat], PASCAL, C, BASIC ș.a – se bazează în construcția unui program prin scrierea unor instrucțiuni utilizând textul. Realizarea unui program în aceste medii poate să devină dificilă pentru un începător în special în perioada de depanare. [anonimizat]-au dovedit rolul esențial.
Limbajul grafic G – “inima” [anonimizat] “construiesc” în mod intuitiv un program.
Instrumentele virtuale au o structură ierarhică și modulară. Un instrument virtual utilizat pentru construcția unui alt instrument virtual poartă denumirea de subinstrument virtual (subVI).
[anonimizat] (fig.4.1) fie prin alegerea succesivă a opțiunilor: Start / Programs / National Instruments LabView / LabView ceea ce are ca efect dechiderea meniului de lucru.
Fig. 1.1 Pictograma LabView
În figura 4.2 se prezintă meniul de lucru pentru versiunea LabVIEW 5.1 care poate fi regăsit cu schimbări nesemnificative și pentru versiunea LabView 6.0.
Fig. 1.2 Meniul principal pentru LabView 5.1
Semnificațiile din meniu sunt următoarele:
opțiunea – New VI – permite crearea unui nou VI iar opțiunea – Open VI – pentru deschiderea unui VI existent;
opțiunea – Solution Wizards – lansează un utilitar care furnizează recomandări în mod interactiv pentru realizarea unei aplicații de achiziții de date sau instrumente.
opțiunea “Cautare exemple” – Search Examples – permite consultarea unui set de exemple, distribuite de firma National Instruments împreună cu mediul de lucru. Modul de consultare este cel clasic de lucru în sistemul Windows.
opțiunea “Îndrumător LabVIEW” – LabVIEW Tutorial – lansează un program demonstrativ de instruire despre LabVIEW.
pentru părăsirea mediului de lucru se apelează la opțiunea “Ieșire” – Exit .
În figura 4.3 se prezintă meniul principal pentru versiunea LabView 8.2 care este asemănător cu cel pentru versiunea LabView 7.0. Construirea unui instrument virtual se va lansa în acest caz prin selectarea opțiunii New / Blank VI.
Fig. 1.3 Meniul principal pentru LabView 8.2
Introducere în LabView
Structura unui instrument virtual
Un instrument virtual (VI) are trei componente:
panoul frontal – corespunde la interfața grafică cu utilizatorul sau ceea ce va vedea utilizatorul pe ecranul monitorului. Dacă dorim să facem o comparație a instrumentului virtual cu un instrument fizic, panoul frontal ar corespunde părții frontale a instrumentului fizic pe care există butoane, chei de comandă, afișaj, display etc. Pentru exemplificare se prezintă în figura 4.4 se prezintă panoul frontal al unui instrument virtual pentru vizualizarea legilor de mișcare a unui element mobil: accelerație, viteză și spațiu în funcție de timp (fig.4.5). Pentru o lege de mișcare dată a accelerației se poate scrie simplu:
( 1.)
( 1.)
Fig. 1.4 Element în mișcare de rotație
Fig. 1.5 Panou frontal
Panoul frontal este o combinație de elemente de control și indicatoare. Elementele de control simulează sursele de informații pentru instrumentul virtual. Indicatoarele simulează elementele de ieșire și vizualizare pentru informațiile achiziționate.
diagrama bloc – corespunde codului programului și definește funcționalitatea IV – lui pe baza operatorilor clasici, funcțiilor ș.a.m.d. În figura 4.6 se prezintă diagrama bloc pentru un element motor în mișcarea de rotație, construită pe baza bibliotecii mediului de lucru. Realizarea diagramei bloc se obține prin utilizarea limbajului grafic. Componentele se leagă între ele prin “fire = conductoare” definind fluxul datelor din diagamă. Dacă comparăm diagrama bloc cu instrumentul fizic, atunci, conținutul său coincide cu componentele fizice (rezistoare, fire de legătură, circuite logice etc.) din carcasa instrumentului.
Fig. 1.6 Diagramă bloc
pictograma și conectorul corespund “semnăturii” programului. Pictograma (icon-ul) este identificatorul graphic al VI. Terminalele de intrare și ieșire corespund parametrilor de intrare / ieșire.
Fig. 1.7 Pictograma (icon-ul) pentru VI-ul corespunzător calculului valorii medii
Construcția unui instrument virtual
Introducere
La selectarea opțiunii New VI din meniul principal (versiunea 5, 6) sau pentru versiunea 8.2 se deschid două ferestre de lucru suprapuse corespunzătoare panoului frontal și respectiv diagramei (fig.4.8).
Bara orizontală cu meniuri conține opțiuni implementate în aplicațiile Windows (File, Edit,…) și unele specifice mediului LabView.
Pentru un lucru ușor cele două pagini se pot aranja relativ una față de alta:
Selectând din bara meniului orizontal Windows / Tile Left and Right cele două pagini se poziționează vizibil pe aceeași orizontală.
Selectând din bara meniului orizontal Windows / Tile Up and Down cele două pagini se poziționează vizibil pe aceeași verticală;
Selectând din bara meniului orizonal Windows / Full Size se obține maximizarea paginii de lucru respective. Trecerea în cea de a doua pagină se realizează selectând din nou de ex.: Windows / Show Block Diagram sau Windows / Show Front Panel.
Fig. 1.8 Ferestrele de lucru corespunzătoare panoului frontal și diagramei
Prin selectarea unei opțiuni din bara orizontală superioară, prin butonul stâng al mouse-lui, se deschide un submeniu derulant cu o serie de opțiuni dispuse pe vericală.
Fig. 1.9 Meniul derulant pentru opțiunea File
Modul este specific programelor sub Windows iar opțiunile sunt în general clasice. Pentru meniul derulant corespunzător opțiunii File (fig.1.9) semnificațiile sunt:
opțiunea “Fișier” – File – permite utilizatorului realizarea unor operații de gestionare a fișierelor: lansarea operației de creare a unui nou VI (New), deschiderea unui VI existent (Open), închiderea ferestrei de lucru curente (Close), salvarea modificărilor realizate asupra VI (Save), salvarea VI cu opțiune pentru numele fișierului, director etc.(Save As), lansarea în lucru a unui nou proiect (New Project), deschiderea unui proiect existent (Open Project) opțiuni de tipărire (Print…) s.a.m.d.
Opțiunea de asistență – Help este de asemenea specifică sistemelor de operare și asigură facilități de obținere a unor informații despre elementele de lucru, program de instruire, versiunea mediului de lucru etc.
Opțiunile din a doua bară orizontală (pagina panou frontal) sunt specifice LabView (fig.4.10):
a – Run – lansează în execuție programul de lucru. Programul de lucru este modulul principal al aplicației și apelează alte VI;
b – Run Continuously – programul este executat continuu;
c – Abort Execution – realizează oprirea rulării;
d – Pause – realizează o oprire temporară a rulării programului;
e – …Font – opțiuni pentru selectarea fontului de text dorit;
f – Sunt patru opțiuni în ordine – Align Objects, Distribute Objects, Resize Objects, Reorder – care permit alinierea, distribuirea obiectelor selectate în panoul frontal, redimensionarea sau reordonarea acestora.
Fig. 1.10 Opțiunile din bara a doua orizontală
Semnificații asemănătoare sunt alocate și în bara orizontală din pagina diagramei VI (fig.4.11). Semnificațiile a – d sunt identice cu cele anterioare iar următoarele se referă la:
e – Highlight Execution – prin selectarea opțiunii execuțiunea progamului este încetinită și se vizualizează întregul transfer de date;
f – Retain Wire Values – reținerea valorilor pentru fluxul de date din firul selectat.
Fig. 1.11 Opțiunile din pagina diagramei
Am prezentat în cele anteriore cadrul general în care un utilizator urmează să construiască un intrument virtual. În acest scop, utilizatorul va apela la trei casete:
Caseta cu instrumente – Tools Palette care devine vizibilă prin selectarea opțiunii View / Tools Palette;
Caseta cu controale – Controls Palette care devine vizibilă prin selectarea în pagina panoului frontal a opțiunii View / Controls Palette;
Caseta cu funcții – Functions Palette care devine vizibilă prin selectarea în pagina diagramei a opțiunii View / Functions Palette.
În cazul versiunilor anterioare (5, 6) casetele de lucru se activează din opțiunea Windows / Controls Palette sau Windows / Functions Palette.
Caseta cu instrumente (Tools Palette)
Caseta cu unelte generale (Tools Palette) cuprinde facilitățile folosite de utilizator pentru crearea, editarea sau trasarea execuției instrumentelor virtuale. În figura 4.12 se prezintă imaginea casetei cu instrumente de lucru. Imaginea acesteia și facilitățile oferite sunt aceleași pentru versiunile LabView menționate.
Fig. 1.12 Caseta cu instrumente
Pentru a fi activă una dintre facilitățile oferite de casetă este necesar să fie selectată cu ajutorul mouse-lui. În figura 4.12 este activă facilitatea a2. Semnificația fiecăreia dintre aceste facilități este următoarea:
a1 – instrumentul de operare – permite manipularea controalelor și indicatoarelor pe panoul frontal;
a2 – instrumentul de editare – permite selectarea, deplasarea sau redimensionarea obiectelor;
a3 – instrumentul de etichetare – permite introducerea textului de la tastatură;
b1 – instrumentul interconectare – se folosește în diagrama bloc, pentru a realiza legăturile între noduri (elementele de execuție) în conformitate cu schema logică de lucru. Firele definesc fluxul datelor;
b2 – instrument pentru afișarea meniului aparent – permite deschiderea casetei meniu a obiectului vizat din panoul frontal prin butonul stâng al mouse-lui;
b3 – instrumentul de defilare – permite defilarea conținutului ecranului, fără a se utiliza barele de defilare ale ferestrei de lucru;
c1 – instrumentul de depanare : permite întreruperea execuției IV. Se folosește la depanarea programului;
c2 – instrument sondă (probă) : permite vizualizarea valorii transmise pe un fir de legătură în faza de execuție a programului. Se utilizează în general în faza de depanare a programului (fig.4.13);
Fig. 1.13 Modul de utilizare al sondei
c3 – instrumentul pentru culoare – permite preluarea culorii obiectului asupra căruia se execută “clic” cu butonul stânga al mouse-lui;
d – instrumentul de colorare: permite stabilirea culorilor pentru prim planul și fundalul obiectelor.
Numele fiecăreia dintre facilități devine vizibil pentru un scurt timp la poziționarea mouse-lui deasupra iconu-lui corespunzător instrumentului.
Caseta cu controale (Controls Palette)
LabView dispune de controale și indicatoare pentru majoritatea categoriilor de date: numerice, șir de caractere, boolean, tabel, tablou, grafic etc. Pentru un anumit tip de date sunt disponibile mai multe variante de controale și indicatoare. Utilizatorul poate să aleagă din variantele disponibile pe cea mai sugestivă pentru instrumentul vizat. Afișarea casetei cu controale – dacă nu este vizibilă – se poate realiza fie prin selectarea din meniul principal, fie prin poziționarea cursorului mouse-lui în interiorul panoului frontal și click cu butonul drept.
Semnificația grupului de elemente din casetă este indicată prin denumirea fiecărui grup în mod vizibil sub icon-ul caracteristic (fig.4.14). Poziționarea mouse-lui deasupra unuia din grupul de elemente deschide o subcasetă cu toate elementele disponibile în grupul respectiv (fig.4.15).
Plasarea elementului selectat pentru construcția VI în panoul frontal se realizează prin selectarea din casetă și “tragerea” acestuia cu mouse-ul în zona de lucru și confirmarea poziției în panoul frontal prin mouse. Plasarea elementului pe suprafața panoului frontal este însoțită de „apariția” în diagramă a unui corespondent colorat cu o etichetă având același nume cu cel plasat în panoul frontal.
Un element oarecare al acestei casete poate îndeplini în general două roluri: rol de control adică de prescriere a unei valori sau un rol de indicator adică de vizualizare a unei informații. Recunoașterea uneia sau a alteia dintre stări este posibilă prin urmărirea liniei de contur exterior pentru icon-ul elementului reprezentat în diagramă. Elementele de tip control au linia exterioară a conturului groasă iar indicatorul are linia de contur subțire.
Fig. 1.14 Caseta de controale (a) și elementele componente din grupul Graph (b)
Fiecărui control / indicator îi este atașat un meniu contextual care permite afișarea unor elemente suplimentare, selectarea unui anumit comportament, domeniul valorilor posibile etc.:
Replace – permite înlocuirea componentei cu alta dacă aceasta este mai convenabilă în construcția VI-lui;
Representation – permite selectarea formatului numeric: întreg pe x biți cu semn (Ix), întreg pe x biți fără semn (Ux), virgulă mobilă, precizie simplă (SGL), virgulă mobilă, precizie dublă (DBL), precizie extinsă (EXT),… ;
Data range – permite selectarea valorii inițiale, incrementarea, valoarea minimă și maximă, formatul de notare a valorilor numerice, textul etichetei;
Format & Precision – permite selectarea modului de notare a valorilor numerice;
Scale – permite selectarea formatului, a preciziei, grafica scalei, tipului scalei (liniară, logaritmică).
Din acest meniu este posibilă trecerea elementului din modul de lucru control în modul de lucru indicator și invers. Pentru aceasta se selectează opțiunea Change to…(fig.4.15).
Fig. 1.15 Controlul și meniul contextual corespunzător
Un clic cu butonul drept, pe scala atașată graficii obiectului, deschide meniul contextual de aceeași configurație pentru toate controalele și indicatoarele de tip numeric (fig.4.16). În exemplul din figura 4.16 pentru opțiunea Style se pot modifica formele de prezentare ale scalei.
Fig. 1.16 Selectarea graficii pentru scală
La alegerea opțiunii pentru “format & precizie“ – Format & Precision se poate stabili formatul de lucru pentru scala prezentată și numărul de zecimale în prezentare.
Fig. 1.17 Formatul de lucru
Se prezintă în figura 4.18 formatul liniar scalei pentru notația cu virgulă mobilă (VAR 1), notația științifică (VAR 2), notația în inginerie (VAR 3), în format SI (VAR 4),cu trei zecimale și valoarea maximă diferită (VAR 5) și respectiv formatul logaritmic (VAR 6).
Fig. 1.18 Formatul și forme de notare
În figura 4.19 se prezintă modul de stabilire a domeniului valorilor posibile pentru un control. Există posibilitatea alegerii unui increment implicit (se selectează Use Defaults) sau a unuia impus de utilizator.
Fig. 1.19 Selectarea valorii de incrementare pentru un control
Formatul de reprezentare a datelor numerice conferă precizia de operare. În figura 4.20 se prezintă aceste influențe în modul de adunare a două numere A și B. Rezultatul adunării este redat de un indicator cu două forme de reprezentare: întreg fără semn (32 bit) (I32) și respectiv real, dublă precizie (64 bit) (DBL).
Fig. 1.20 Influența formatului de prezentare numerică în precizia de operare
Caseta cu funcții (Functions Palette)
După realizarea panoului frontal al IV , trebuie implementată funcționalitatea programului. În acest scop se construiește diagrama bloc care reprezintă codul sursă al instrumentului adică arată CUM se rezolvă problema. În acest scop se utilizează limbajul grafic G. Dacă am face o comparație cu construcția unui instrument fizic atunci construcția diagramei ar fi echivalentă cu conectarea elementelor componente prin fire, conectori etc.
În diagramă se află corespondentele controalelor și indicatoarelor introduse în panoul frontal. În continuare utilizatorul selectează și utilizează componente grafice de execuție definind astfel funcționalitatea VI.
În figura 4.21a se prezintă caseta cu funcții în versiunea LabView 8.2. Aceasta este structurată pe grupuri de funcții: programare (Programming), instrumente I / O pentru măsurători (Measurement I / O), instrumentație I / O (Instrument I /O), prelucrare imagine și mișcare (Vision and Motion), matematică (Mathematics), procesare semnal (Signal Processing),…., bibliotecă utilizator (User Libraries), selectarea unui VI dintr-o bibliotecă (Select a VI). Fiecare dintre aceste grupuri de funcții se deschid într-o subcasetă de funcții care au atașat un icon sugestiv aplicației și numele acestuia. Noile funcții devenite vizibile pot permite deschiderea unor alte subcasete cu funcții particularizate. În fig.4.21b se prezintă, în sensul celor prezentate anterior, caseta pentru programare și subcaseta cu funcții pentru comparare.
Fig. 1.21 Caseta cu funcții cu subpaleta funcțiilor de programare (a) și sub-subpaleta funcțiilor booleane (b)
Editarea panoului frontal pentru un VI
În editarea unui VI putem considera esențiale două aspecte:
un aspect funcțional prin care se urmărește atingerea parametrilor doriți pentru instrumentul virtual;
un aspect de design prin care se urmărește crearea unui produs cu aspecte personalizate evidențiate prin modul de dispunere a controalelor în panoul frontal, a formelor și culorilor etc.
În figura 4.22 se prezintă panoul frontal al unui instrument virtual în care au fost selectate în scop funcțional un display (Controls/Graph/Waveform Graph), controale pentru start / stop (Controls/Boolean/Vert Rocker, ../Boolean/Vertical Toogle Switch) instrumente pentru semnalizare (../Boolean / Round Led) și redarea numerică a informației (Controls/Numeric/Numeric Indicator, ..Numeric / Gauge).
Fig. 1.22 Panou frontal al unui VI
Poziționarea și redimensionarea fiecărui control din panoul frontal s-a realizat apelând la facilitatea Tools Palette / Position/Size/Select. Pentru redimensionarea unui control se selectează obiectul cu ajutorul mouse-lui iar apoi se modifică mărimea acestuia la valoarea dorită (pe verticală, pe orizontală sau simultan) prin tragere de punctele aferente ale conturului.
Conținutul etichetei se modifică apelând la facilitatea Tools Palette/ Edit Text pentru a trece în regimul de editare a textului și apelând la Application Font /… din bara de meniu principal pentru: modificarea stilului …/Style/..Bold, poziționarea textului ../Style/..Center, mărimea fontului …/Style/Size/.
Particularizarea instrumentului de vizualizare a înregistrării grafice se realizează apelând la meniul contextual al instrumentului (clic dreapta în conturul instrumentului) (fig.4.23). Selectând facilitatea Properties se poate modifica stilul scalei, stilul pentru caroiaj (grid), culoarea caroiajului principal și secundar etc. Modificarea valorii maxime a scalei se poate realiza prin trecerea în regim de text și introducerea valorii dorite din tastatură. Dacă se dorește auto-adaptarea instrumentului la valorile înregistrate se poate selecta pentru scala dorită (X, Y sau ambele) opțiunea Auto Scale. În cazul înregistrării grafice a mai multor informații (mai multe caracteristici) se selectează modul reprezentare dorit (prin puncte, linii, culoare etc.) din Properties / Plot.
Dacă pe parcursul editării panoului frontal se dorește ștergerea unuia sau a mai multor controale, acestea se selectează individual sau în grup (prin fereastră) cu ajutorul mouse-lui și se apasă tasta <Delete>. Pentru păstrarea poziției relative a controalelor în panoul frontal acestea se pot include într-un grup sau mai multe printr-o succesiune de operații: selectarea controalelor (fereastră)/ Reorder / Group.
Fig. 1.23 Indicator grafic și meniul contextual
Pentru a fi cât mai sugestiv, panoul frontal al instrumentului virtual se poate personaliza prin includerea pe lângă controalele specifice aplicației și a unor desene ale instalației vizate, scheme, etc. În acest scop se poate apela la facilitatea oferită de mediul de lucru Controls / Decorations sau se poate importa desenul respectiv după ce a fost realizat într-un alt mediu. În figura 4.24 se prezintă, în sensul celor precizate anterior, particularizarea panoului frontal pentru un divizor de tensiune.
Particularizarea constă în includerea schemei electrice a divizorului și poziționarea sugestivă a controalelor în panoul frontal. S-a utilizat pentru editarea schemei electrice facilitatea din mediul LabView. Reprezentarea grafică se poate realiza și în AutoCAD. Pentru un import de calitate se realizează în AutoCAD: maximizarea imaginii în fereastra de vizualizare (View / Zoom / Extents), o reducere a scalei de vizualizare (..Zoom 0.95X) și salvare *.wmf. Desenul respectiv se importă în panoul frontal Edit / Import Picture to Clipboard.
Fig. 1.24 Panoul frontal al instrumentului virtual
În figura 4.25 se prezintă un control și meniul său contextual. Spre deosebire de cazul indicatorului grafic, în acest caz este necesară și alegerea corectă a modului de reprezentare a informației: întreg cu semn (pe 8 bit – I8, pe 16 bit – I16, pe 32 bit –I32), întreg fără semn (pe 8 bit – U8, pe 16 bit – U16, pe 32 bit –U32),…
Fig. 1.25 Control și meniul contextual
Editarea diagramei bloc
Componentele casetei cu funcții se constituie în nodurile diagramei bloc fiind elementele principale ale diagramei.
Cel de al doilea element pentru diagrama bloc sunt terminalele. Acestea reprezintă “porți” (tunele) prin care se realizează transferul datelor:
bidirecțional între panoul frontal și diagrama bloc;
unidirecțional între nodurile diagramei bloc.
În construcția diagamei bloc se recomandă respectarea următorului principiu: poziționarea nodurilor să fi făcută astfel încât circulația informației să se facă de la stânga la dreapta și de sus în jos. În acest mod este simplă și urmărirea legăturilor.
Terminalele au o reprezentare grafică sugestivă și sunt terminale sursă – pentru datele de intrare – și respectiv terminale destinație (ieșire). În figura 4.26 se prezintă icon-ul pentru funcția numerică de adunare în care sunt vizibile terminalele. Notarea terminalelor respectă principiul precizat anterior. Aceste terminale devin vizibile la poziționarea mouse-lui deasupra sa.
Fig. 1.26 Funcție și terminale
Ultimul element firele definesc și reprezintă grafic fluxul datelor în diagrama bloc. Fluxul datelor este de la terminalele sursă spre terminalele destinație. Prin culoarea și tipul liniei, firele codifică tipul datelor transmise (tabelul 4.1). Conectarea corectă a două componente din diagrama bloc este sesizată prin existența unui fir de legătură continuu de culoarea informației vehiculate. Dacă legătura nu este corectă firul se prezintă sub forma unei linii întrerupte de culoare neagră.
Tabelul 1.1
Construcția diagramei se realizează în conformitate cu schema logică pentru aplicația dată. Din acest motiv este necesară o cunoaștere prealabilă a aspectului funcțional / teoretic al instrumentului.
Pentru exemplificarea celor menționate reconsiderăm exemplul divizorului de tensiune pentru care a fost prezentat panoul frontal în figura 4.14. Divizorul de tensiune face parte din cadrul circuitelor de condiționarea semnalului și permite reducerea tensiunii de ieșire din circuit (fig.4.27). În conformitate cu schema electrică, tensiunea de ieșire se calculează ca fiind:
( 1.)
Fig. 1.27 Schema electrică a divizorului de tensiune
În panoul frontal au fost introduse patru elemente: un control pentru tensiunea de intrare, două controale pentru rezistențe și un indicator pentru tensiunea de ieșire. În diagrama bloc aceste elemente trebuie să respecte succesiunea logică a operațiilor matematice din relația (4.3). În acest scop s-au introdus în mod suplimentar în diagramă următoarele funcții (Functions / Programming / Numeric):
Funcția de adunare Add pentru însumarea valorilor rezistențelor;
Funcția de împărțire Divide pentru obținerea valorii raportului ( tensiune / sumă rezistențe);
Funcția de înmulțire Multiply pentru înmulțirea rezultatului anterior cu valoarea rezistenței R2.
Diagrama bloc rezultată este prezentată în figura 4.28.
Fig. 1.28 Diagrama bloc pentru VI-ul divizorului de tensiune
Introducerea de controale și indicatoare suplimentare se poate realiza și din diagrama bloc prin apelarea meniului contextual al funcției în cauză. Astfel de cerințe pot să apară pe parcursul editării diagramei bloc iar controalele respective s-ar constitui în elemente suplimentare care dau o claritate superioară instrumentului virtual. În figura 4.29 este exemplificat modul de apelare al meniului contextual pentru o funcție de comparare în scopul introducerii unui indicator pe parcursul editării diagramei bloc.
Confirmarea posibilității de a lega cele două obiecte constă din schimbarea promterului pentru mouse în semnul grafic din caseta de unelte (fig.4.30). Pentru a crea legătura între cele două terminale se apelează la butonul stâng al mouse-lui și se deplasează de la un terminal la celălalt (fig.4.31)
Fig. 1.29 Introducerea unui indicator prin apelarea meniului contextual
Fig. 1.30 Mouse-ul și semnul activ aferent posibilității de conectare a obiectelor
Ștergerea unui fir se realizează prin selectare și apăsarea tastei <Delete>. Un segment a firului este un fragment orizontal sau vertical a acestuia. Punctul de întâlnire dintre trei sau patru segmente de fir definesc o joncțiune. O ramificație conține toate segmentele de fir de la o joncțiune la alta, de la un terminal la joncțiunea următoare, de la un terminal la altul dacă nu este nici o joncțiune între ele (fig.4.32).
Fig. 1.31 Conectarea a două obiecte din diagrama bloc
Fig. 1.32 Segment, cot și nod în conectarea obiectelor
Un clic simplu (butonul stâng al mouse-lui) selectează un segment al firului (fig.4.33a). Dublu-clic selectează o ramificație (fig.4.33b) iar un triplu-clic selectează întregul fir (fig.4.33c).
Fig. 1.33 Modalități de ștergere a firelor
Tehnici de depanare în funcționarea instrumentului virtual
După editarea panoului frontal și a diagramei bloc următorul pas pe care utilizatorul trebuie să îl facă este verificarea funcționării instrumentului virtual. Lansarea în lucru a programului se realizează prin selectarea tastei Run sau Run Continuosly din bara de meniu orizontală.
Dacă din punct de vedere „tehnic” instrumentul virtual este corect construit, utilizatorul va constata că acesta funcționează iar acest lucru este semnalizat în a doua bară de meniu orizontală care va avea aspectul din figura 4.34.
Fig. 1.34 Aspectul barei de meniu la funcționarea instrumentului virtual
Dacă din punct de vedere „tehnic” există erori de editare (fire întrerupte, controale neconectate sau în plus, fără rol funcțional) acest lucru este semnalizat iar programul nu poate fi lansat în execuție (fig.4.35).
Fig. 1.35 Eroare de editare, listă de erori
Existența erorii este semnalizată pe bara de meniu orizontală prin icon-ul hașurat al opțiunii Run.Apăsarea acestui buton (butonul stâng al mouse-lui) deschide o casetă cu erorile din program. Detalii suplimentare privind cauzele posibile ale erorii sunt precizate în partea inferioară a listei de erori (Error list, Details). Un dublu click în zona erorii din lista deschisă, va localiza eroarea din diagrama bloc. După înlăturarea cauzelor care au dus la eroarea de funcționare, icon-ul opțiunii Run își recapătă aspectul normal (săgeată cu interior nehașurat).
Una din cauzele frecvente ale erorilor de funcționare constă în existența unor fragmente de fir neconectate în diagrama bloc datorită aspectului invizibil în primul moment pentru utilizator: sunt acoperite cu alte obiecte, sunt în altă parte a spațiului de lucru decât cel vizibil pentru utilizator etc. Eliminarea acestor fragmente ascunse este posibilă prin selectarea opțiunii (bara de meniu orizontală) Edit / Remove Broken Wires.
Pentru emiterea concluziei instrumentul virtual funcționează correct este necesară o verificare a rezultatelor finale prin comparare cu valori estimate / calculate. O astfel de verificare poate elimina în mod rapid unele din cauzele funcționării incorecte a instrumentului.
O atenție deosebită trebuie acordată corelării unităților de măsură pe de o parte și a modului de transfer a informațiilor de forme diferite de exprimare (numerice, Boolean, șir de caractere etc.)
Se pot menționa câteva facilități de testare a progamului editat:
execuția programului prin evidențiere (diagrama bloc / bara de meniu orizonală / Highlight Execution). În cadrul fiecărui ciclu de execuție a programului este evidențiată valoarea de execuție pe fiecare obiect din diagrama bloc (fig.4.36). În acest mod este posibilă determinarea acelui punct din care programul nu funcționează correct.
Fig. 1.36 Diagrama bloc la execuția programului prin evidențiere
execuția programului după selectarea opțiunii Retain Wire Values permite vizualizarea valorii informației pe oricare dintre firele de legătură din diagramă prin simpla plasare a mouse-lui peste firul respective. Apariția unei etichete în care este trecută valoarea informației vehiculate este însoțită și de apariția temporară a iconu-lui cu instrumental corespunzător probei din caseta de instrumente.
pentru vizualizarea permanentă a unei valori pe un anumit canal (fir) se selectează din caseta cu instrumente opțiunea instrumentului de probă Caseta cu instrumente(Tools Palette) / Probe Data. Acțiunea are ca rezultat înlocuirea prompterului mouse-lui cu instrumental de probă după care acesta este plasat pe firul vizat. Acțiunea se încheie prin apariția în zona firului a unei eticehete care marchează numărul de ordine a probei (pentru a o putea identifica dacă acestea sunt multiple), o casetă cu o zonă de vizualizare a valorii (fig.4.37). Dacă firul vizat este conectat pe terminalul de ieșire a unui control, caseta evidențiază și denumirea acestuia. Dacă firul vizat este conectat pe terminalul de ieșire a unei funcții, se evidențiază doar valoarea informației.
vizualizarea execuției programului în mod succesiv pe obiecte este posibilă prin selectarea din bara de meniu orizontală a diagramei bloc a opțiunii Start Single Stepping. La prima selectare este marcat primul obiect executat în program. La apăsarea următoare este evidențiat următorul obiect s.a.m.d. În acest mod utilizatorul poate stabili dacă succesiunea operațiilor este cea corectă sau nu. În cazul progamelor complexe acest lucru ar conduce la un consum mare de timp. Din acest motiv utilizatorul poate selecta un punct din program pe care să îl declare punct de oprire până în care programul funcționează normal și după care se trece la o execuție pas cu pas. Marcarea punctului respectiv se face după selectarea opțiunii din caseta de instrumente (Tools Palette)/ Set /Clear Breakpoint. Cu ajutorul mouse-lui se identifică firul iar acțiunea care are ca rezultat vizualizarea unui punct roșu pe firul în cauză.
Fig. 1.37 Diagrama bloc cu utilizarea instrumentului de probă
După verificarea corectitudinii funcționării instrumentului virtual acesta poate fi salvat (LabView / ….).
Crearea pictogramei instrumentului virtual
După construirea instrumentului virtual și în ideia utilizării ulterioare ca subVI, acestuia i se poate asocia o pictogramă / icon prin care să fie reprezentat în construcțiile viitoarelor instrumente care îl apelează. Acest subVI trebuie să aibă un conector pentru transferal de date .
Pentru construcția pictogramei se parcurg următoarele etape:
Selectarea diagramei construite prin utilizarea uneltei Tools Palette/ Position / Size / Select;
Selectarea opțiunii pentru crearea unui subVI: …bara de meniu orizontală diagrama bloc / Edit / Create SubVI. Acțiunea are ca rezultat înlocuirea instrumentului virtual cu un icon de formă generală. Se exemplifică acest lucru pentru diagrama VI-lui corepunzător divizorului de tensiune (fig.4.38). Rămân în „afara” icon-ului doar controalele și indicatoarele instrumentului virtual;
Salvarea SubVI – lui creat prin procedura clasicǎ: File/Save As (după îndepărtarea controalelor și indicatoarelor din afara iconu-lui);
Fig. 1.38 Crearea unui subVI
Se deschide panoul frontal al SubVI-lui creat prin apelarea meniului contextual al icon-ului rezultat și selectarea opțiunii Open Front Panel (fig.4.39);
Se selecteazǎ editarea icon-lui caracteristic pentru SubVI creat (fig.4.40)(click cu butonul stâng în suprafața icon-ului). Acțiunea are ca rezultat apariția casetei de lucru din figura 4.41.
Fig. 1.39 Deschiderea panoului frontal
Fig. 1.40 Selectarea opțiunii de editare a icon-ului
Fig. 1.41 Caseta de editare a icon-ului
Se particularizeazǎ icon-ul specific pentru problema datǎ : se utilizeazǎ facilitǎțile legate de text, culoare, linii, ștergere etc. disponibile în caseta cu “unelte” din figura 4.42. Semnificația fiecăreia dintre utilități este prezentată în tabelul 4.2. Icon-ul personalizat este prezentat în figura 4.38 iar icon-ul și terminalele subVI-lui în figura 4.44.
Fig. 1.42 Caseta cu instrumente pentru editare
Fig. 1.43 Icon-ul personalizat
Fig. 1.44 Icon-ul personalizat și terminalele vizualizate
Tabelul 1.2
Se salveazǎ construcția astfel realizatǎ cu numele subVI-lui dorit;
Utilizarea noului subVI se realizeazǎ prin apelarea funcției Select SubVI (fig.1.45)
Fig. 1.45 Apelarea unui VI din caseta de funcții
Structuri de program
Introducere
Circulația datelor în mediul LabView și prin aceasta arhitectura instrumentului virtual are la bază funcțiile structurale (fig.4.46). În grupul de funcții structurale sunt incluse și funcțiile legate de crearea unor variabile și o funcție grafică.
Semnificația acestor funcții este următoarea:
a1 – bucla For (For Loop)
b1 – bucla While (While Loop)
c1 – structuri dependente de timp (Timed Structures)
a2 – structura Case (Case Structures)
a3 – structură secvențială plată (Flat Sequence Structure)
b3 – structură secvențială stivuită (Stacked Sequence Structure)
c3 – structură de evaluare matematică (Formula Node)
a4 – structură de dezactivare a diagramei (Diagram Disable Structure)
b4 – structură de dezactivare condiționată (Conditional Disable Structure)
c4 – nod feedback (Feedback Node)
a5 – variabilă partajată (Shared Variable)
b5 – variabilă locală (Local Variable)
c5 – variabilă globală (Global Variable)
b6 – elemente de grafică (Decorations)
Fig. 1.46Funcțiile structurale
În variantele LabView 5, LabView 6 numărul de structuri utilizate este mai redus: structura secvențială, bucla While, bucla For, bucla Case.
Făcând o analogie cu instrumentele fizice, aceste funcții ar echivala cu plăcile de circuit, circuite logice s.a.m.d.
Structuri secvențiale
O secvență structurală conține una sau mai multe subdiagrame sau cadre (frame) care se execută în ordine secvențială. În interiorul fiecărui cadru al unei structuri secvențiale, ca și în restul diagramei bloc, dependența datelor determină ordinea de execuție a nodurilor.
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). Acestea se apelează selectând: Functions / Programming / Structures / Flat Sequence Structure sau Functions / Programming / Structures / Stacked Sequence Structure.
Structura secvențială plată (fig.4.47) 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.
Fig. 1.47 Structură secvențială plată
Structurile secvențiale plate se execută de la stânga la dreapta când toate datele legate la cadru sunt disponibile. Se recomandă structura secvențială plată pentru a evita secvențele locale și pentru o documentare mai bună a diagramei bloc. În figura 4.48 se prezintă o editare a unei structuri secvențiale plate formate din trei cadre.
Fig. 1.48 Exemplu de structură secvențială plată cu 3 cadre
În primul cadru se realizează operația de multiplicare a valorii controlui introdus în panoul frontal iar rezultatul este transferat spre cadrul 2. În cadrul 2 și 3 se execută alte două operații matematice care se bazează pe rezultatul anterior. Condiționarea privind succesiunea operațiilor și o ordonare clară a diagramei s-a soluționat astfel prin structura secvențială plată.
În figura 4.49 se prezintă o structură secvențială stivă formată din 3 cadre (0, 1, 2) cadrul activ în figura prezentată fiind cadrul 1.
Fig. 1.49 Structură secvențială cu două cadre
Î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.
O exemplificare a utilizării structurii secvențiale stivă este prezentată în figura 4.50.
Fig. 1.50 Exemplu de structură secvențială stivă: a – cadru 0; b – cadru 1; c – cadru 2
In primul cadru se realizează conform schemei logice impuse o operație de multiplicare iar rezultatul este vizualizat prin indicatorul Numeric 2 și utilizat atât în cadrul 2 cât și în cadrul 3. Acest lucru este posibil prin crearea secvenței locale apelând din meniul contextual pentru click dreapta pe conturul vertical al cadrului (fig.4.51).
Secvența locală devine activă după conectarea unui fir la aceasta. Starea activă este semnalizată prin apariția unei săgeți în interiorul semnului alocat secvenței.Pe același principiu rezultatul operației matematice din cadrul 2 este posibil să fie utilizat în cadrul 3 (dar nu și în cadrul 1, fluxul datelor fiind doar spre cadrele de ordin superior).
Terminalul local al secvenței poate fi mutat de utilizator cu unealta de editare ori unde pe cadrul instrucțiunii. Se recomandă asocierea unei etichete descriptive firelor conectate la terminalele de intrare / ieșire locale ale secvenței.
Fig. 1.51 Crearea secvenței locale și semnul aferent terminalului
Bucla For
Bucla For repetă un fragment din codul diagramei bloc de un număr predeterminat de ori. Această structură este echivalentă cu ciclul For din programarea clasică.
Structura se poate apela prin selectarea Functions / Programming / Structures/ For Loop. Rezultatul selecției constă în posibilitatea editării în spațiul diagramei bloc a unui cadru care se dimensionează scopului urmărit (fig.4.52). Sunt remarcate două terminale:
Contorul “N” care indică numărul de cicluri n de executat din operațiile considerate. Valoarea acestuia se impune să fie un număr natural.
Indexul “i” care indică valoarea curentă a iterației și ia valori în intervalul
Fig. 1.52 Bucla For
Pentru exemplificare, în figura 4.53 este prezentată diagrama bloc – bazată pe o structură For – și panoul frontal pentru construcția funcției “sin”. Funcția “sin” în cadrul buclei For a fost apelată din caseta de funcții: Functions / Mathematics / Elementary & Special Functions / Trigonometric Functions.
Fig. 1.53 Exemplificarea buclei For prin construcția funcției „sin”
Bucla For poate lucra cu regiștrii de deplasare. Aceștia se utilizează pentru transferal datelor de la o iterație către iterația următoare. Aceștia se pot accesa apelând din meniul contextual după click – dreapta pe bara verticală a cadrului (fig.4.54). Registru de deplasare conține două terminale corespondente, situate în opoziție, pe cele două bare verticale ale cadrului. Terminalul din dreapta memorează valoarea la sfârșitul iterației. Un registru de deplasare poate lucra cu orice tip de date: numeric, Boolean, șir de caractere etc.
O facilitate importantă este aceea că regiștrii de deplasare pot readuce în iterația curentă rezultate din iterații anterioare. Această facilitate este extrem de utilă când se fac medieri ale datelor. În acest caz este necesar să se creeze terminale adiționale pe bara din stânga a cadrului buclei apelând Add Element după click dreapta în terminalul registrului (fig.4.55).
Fig. 1.54 Apelarea regiștrilor de deplasare (a) și semnul aferent terminalelor (b)
Fig. 1.55 Terminale adiționale suplimentare
Bucla While
Aceasta se apelezează prin Functions / Programming / Structures/ While Loop. Bucla unei informa repetă de mai multe ori o secvență de cod din diagrama bloc atâta timp terminalul condițional (este un terminal de intrare) primește o valoare Booleană particulară. Cadrul de lucru dispune de un terminal de iterație “i” și terminalul de condiționare (fig.4.56). După selectare și dimensionarea cadrului la dimensiunea dorită se pot introduce obictele necesare pentru editare. Valoarea Booleană particulară se selectează din meniul contextual (fig.4.56). În versiunile LabView 5, LabView 6 bucla While avea o singură opțiune: continuă până când valoarea este adevărată (Continue if True).
Bucla While dispune de facilitatea lucrului cu regiștrii de deplasare în mod asemănător ca și în cazul buclei For .
Fig. 1.56 Bucla While și terminalele aferente
Exemplificăm utilizarea buclei While în construcția unui instrument virtual pentru achiziția unei informații. În acest scop apelăm la o structură secvențială în stivă cu două cadre.
În primul cadru se introduce bucla While iar în cadrul al doilea funcția de generare a unui număr aleatoriu (Functions / Programming / Numeric / Random Number (0 – 1)) și achiziția semnalului (Controls / Graph / Waveform Chart).
Achiziția de date demarează prin apăsarea unui alt buton și durează atâta timp cât acest buton nu își schimbă starea logică. Butoanele se selectează din caseta de controale: Controls / Modern / Boolean.
Fig. 1.57 Selectarea acțiunii mecanice pentru un buton de apăsare
Alegem din casetă un buton de apăsare (Push Button). Alegerea acțiunii mecanice a controlului Boolean se poate realiza fie selectând Mechanical Action (fig.4.57) fie din caseta de proprietăți a acestuia (fig.4.58). A doua variantă are avantajul și posibilității de vizualizare a modului de acțiune (Preview Selected Behavior).
Fig. 1.58 Caseta cu proprietăți a butonului de apăsare
Diagrama bloc cu structura secvențială stivă este prezentată în figura 4.59.
Fig. 1.59 Exemplificarea utilizării structurii secvențiale stivă: a – cadrul 0; b – cadrul 1
Structura de tip caz – Case
Structura Case se poate plasa în diagrama bloc după selectarea ei din caseta de funcții: Functions / Programming / Structures / Case. Este o structură existentă și în versiunile LabView 5, LabView 6 și echivalează cu instrucțiuni de tipul If …Then…din programarea clasică bazată pe text.
Reprezentarea grafică a structurii are la bază un cadru redimensionabil la cerințele utilizatorului, un terminal selector și o etichetă a selectorului (fig.4.60).
Fig. 1.60 Structura Case
Adăugarea sau ștergerea unui cadru este posibilă prin click dreapta pe cadru și alegerea opțiunii dorite din caseta de meniu deschisă: adăugarea unui caz după…(Add Case After), adăugarea unui caz înainte…(Add Case Before), ștergerea acestui caz (Delete This Case), înlătura cazurile goale (Remove Empty Cases), etc. Valoarea conectată la terminalul selector determină care caz se execută. Valoarea de control poate fi de tip Boolean (există două cazuri True și False), de tip numeric, de tip șir sau de tip enumerate.
Varianta implicită a structurii Case este cu valoarea de control de tip Boolean (fig.4.61).
Fig. 1.61 Structura Case pentru variabilă de control Booleană
Pentru valoarea de control de tip șir se introduc valorile în eticheta selectorului prin apelarea Add Case After sau Add Case Before. Funcție de informația de pe terminalul selector se va executa secvența de cod conținută în cadrul respectiv (fig.4.62).
Fig. 1.62 Structura Case cu variabilă control șir
Pentru valoare de control de enumerare se introduce în panoul frontal un control Enum (Controls / Modern / Ring & Enum / Enum) și se conectează în diagrama bloc pe terminalul selector de intrare. Printr-un clik – dreapta se deschide caseta de dialog al controlului Enum din care se selectează – Add Case After sau Add Case Before – introducerea valorii de control. După introducerea tuturor valorilor dorite, actualizarea etichetei selectorului se face selectând opțiunea Add Case for Every Value din caseta de dialog derulantă a etichetei selectorului (fig. 4.63). O astfel de structurare este utilă pentru construirea unui generator de semnal virtual.
Fig. 1.63 Structura Case cu variabilă control de enumerare
Varianta pentru valoare de control numerică este exemplificată în figura 4.64.
Valorile de control au fost inserate în eticheta selectorului pe principiul variantei șir. În exemplul construit există șase cadre cu secvențe de calcul numeric iar rezultatul este afișat pe un indicator numeric. Prin controlul numeric Dial se selectează care din cele șase cazuri se execută. În figura 4.64 s-a prezentat execuția cazului al șaselea.
Fig. 1.64 Exemplficarea structurii Case cu variabilă de control numerică: a – panoul frontal;
b – diagrama bloc
Structura – nodul formulă / de calcul (Formula Node )
Nodul Formula realizează evaluarea numerică a formulelor sau expresiilor în diagrama bloc, similar cu C.
Noua structură se apelează în mod asemănător cu cele anterioare. După apelare și redimensionarea cadrului la dorința utilizatorului, se poate introduce în ea modelul matematic dorit utilizând instrumental de editare din caseta de lucru cu instrumente (Tools Palette).
Avantajele utilizării formulelor de calcul sunt următoarele:
Se ușurează scrierea, depanarea și înțelegerea formulelor matematice;
Se elimină erorile, care pot apărea la transcrierea formulelor matematice complexe în limbajul grafic (se folosesc noduri și fire);
Se reduce suprafața ocupată în diagrama bloc față de cazul implementării prin noduri și fire
Editarea instrucțiunilor de atribuire se realizează cu uneltele de etichetare sau de operare. Finalizarea operațiilor este determinată de selectarea din bara cu “unelte” a opțiuni <Enter> sau prin acționarea butonuluidin tastatură. Trecerea de la un rând la următorul se realizează în același mod, prin tasta <Enter>.
Caseta pentru variabilele de intrare se adugă pe conturul grafic al nodului prin meniul contextual asociat chenarului: Add Input / Add Output (fig.4.65a). Denumirea variabilei se editează în caseta vizată cu ajutorul instrumentului de editare (Tools Palette). In general variabilele de intrare se poziționează în stânga iar cele de ieșire în dreapta.
Nodul Formula agrează lucru cu o serie de funcții (tabelul 4.3) și o serie de operatori (tabelul 4.4).
Fig. 1.65 Caseta și variabilele de intrare
Tabelul 1.3
Tabelul 1.4
Se recomandă comentarea operațiilor: începutul comentariului este cu caracterele “/*” și se termină cu secvența “*/”. În figura 4.66 se prezintă starea panoului frontal de evidențiere a rezultatelor și partea de diagrama. Se poate remarca prezența comentariilor de început și sfârșit.
Fig. 1.66 Panoul frontal si diagrama pentru formula nod
Unele variabile pot să fie declarate în interiorul structurii, obligatoriu înainte de relația de calcul care le apelează. În figura 4.67 se exemplifică modul de declarare internă a variabilelor și calculul rădăcinilor pentru ecuația de gradul 2.
Fig. 1.67 Declararea variabilelor pentru formula nod
Structura Formula Node poate fi utilizată pentru implementarea unor bucle de calcul condiționale. Exemplificăm această posibilitate în evaluarea expresiei . În limbajul de programare clasic codul corespunzător este prezentat în figura 4.68 și are semnificația:
dacă atunci execuția programului returnează valoarea radicalului;
dacă atunci execuția programului returnează expresia .
Modul de implementare în LabView este ilustrat în figura 4.63. Cele două cazuri posibile sunt evidențiate în fig. 4.68a și fig.4.68b.
Fig. 1.68 Buclă de calcul condiționată
Structura Formula Node permite implementarea buclelor DO….WHILE, FOR și WHILE.
Variabile locale
Structurile prezentate anterior sunt caracterizate de posibilitatea utilizării datelor prin citirea terminalelor din diagrama bloc. Unui element de pe panoul frontal îi corespunde un singur terminal în diagrama bloc. Există cazuri când este necesar ca un terminal să poată fi accesat simultan din mai multe locuri, în diagrama bloc. Soluția problemei o constituie utilizarea variabilelor locale.
Variabilele locale corespund elementelor componente ale panoului frontal – controale și indicatoare – și sunt accesibile doar în diagrama bloc a VI în cauză. Prin utilizarea lor se permite accesul din diagrama bloc la valorile controalelor/ indicatoarelor din panoul frontal în cazul în care nu este posibilă o legătură prin fire.
Unui control / indicator îi pot corespunde mai multe variabile din diagrama bloc. O variabilă corespunde însă unei singure componente din panoul frontal. Numărul variabilelor locale este nelimitat. În acest mod din diverse puncte ale diagramei bloc poate fi apelată o aceeași componentă din panoul frontal.
Crearea unei variabile locale presupune existența componentei în panoul frontal. După deschiderea casetei de dialog a controlului se selectează Create / Local Variable (fig.4.69).
Pentru varianta LabView 5 și LabView 6 crearea este indicată și inserată în diagrama bloc în apropierea terminalului corespunzător componentei (fig.4.70). Pentru varianta LabView 8.2 crearea este indicată prin trecerea prompterului mouse-lui sub forma casetei variabilei iar utilizatorul o va poziționa în locul dorit în diagrama bloc. Este exemplificată utilizarea variabilei locale în figura 4.71. Butonul de control pentru care s-au creat două variabile locale controlează simultan o informație vizualizată la indicatoarele 1, 2, 3. Diagrama este prezentată în figura 4.72.
Fig. 1.69 Selectarea opțiunii Local Variable
Fig. 1.70 Crearea variabilei locale
Fig. 1.71 Utilizarea variabilei locale
Selectarea varaibilei locale se poate realize și prin apelarea din: caseta de funcții / Programming / Structures / Local. În acest caz în diagrama bloc se inserează o etichetă cu semnul întrebării.
Fig. 1.72 Diagrama corespunzătoare pentru panoul frontal din figura 4.66
Deschiderea meniului contextual permite selectarea cărui control / indicator i se asociază variabila locală (fig.4.73). Exemplificarea este realizată pentru panoul frontal din figura 4.74. În contiunare se urmează pașii anteriori de editare a diagramei bloc.
Fig. 1.73 Crearea variabilei locale
Printr-un singur buton Start / Stop și respectiv un singur buton de reglaj se controlează cele două secvențe.
Fig. 1.74 Exemplu de utilizare a variabilei locale
Eliminarea variabilei locale se realizează prin selectarea ei cu ajutorul uneltei de editare și acționarea tastei <Delete>.
Variabila locala poate acționa în două moduri:
prin intermediul ei se poate consulta (urmări, citi) valoarea componentei în cauză, variabila având un rol de indicator (…to Write);
prin intermediul ei se poate actualiza (modifica) valoarea componentei, variabila având un rol de control (…to Read).
Selectarea unui mod de lucru sau al celuilalt se realizează din meniul contextual (fig.4.75).
Fig. 1.75 Selectarea modului de lucru pentru variabila locală
Variabilele locale se pot utiliza pentru:
Controlul cu un singură componentă a mai multor secvențe repetitive Do – While;
Consultarea valorilor componentelor referite la începutul execuției IV;
Atribuirea unor valori implicite componentelor din panoul frontal chiar la începutul execuției IV;
Variabila globală
Apare uneori necesitatea transferării informațiilor între mai multe VI-uri care rulează în același timp. Soluția problemei în acest caz sunt variabilele globale. Acestea se apelează din caseta de funcții / Programming / Structures /Glob.
După apelare, în diagrama bloc apare nodul variabilei locale care se poziționează de către utilizator în spațiul diagramei bloc.
Fig. 1.76 Eticheta variabilei globale
Eticheta cu semnul întrebării afișată are semnificația că nu este încă asociată nici unei componente. După un dublu –click în caseta variabilei globale se deschide panoul frontal al variabilei – Global 1 Front Panel în care se pot introduce controalele / indicatoarele dorite (fig.4.77).
Fig. 1.77 Exemplificarea utilizării variabilei globale
Se apelează meniul contextual și se alege componenta căreia i se va asocial variabila (fig.4.78). În acest moment eticheta inițială va fi schimbată în cea a componentei avute în vedere.
Fig. 1.78 Apelarea meniului contextual pentru alegerea componentei
Un exemplu de utilizare a variabilei globale este prezentat în figura 4.79.
Fig. 1.79 Exemplificare de utilizarea variabilei globale
La fel ca și variabilele locale, variabilele globale pot fi de tipul read global (lucrează ca o sursă de informație) și write global (lucrează ca un indicator pentru informația vehiculată). În figura … observăm prezența ambelor varinate. Configurarea variabilei globale se poate realize din meniul contextual al acesteia, selectând Change To.. .Read / Write.Utilizarea variabilelor locale și globale trebuie făcută cu rezerve având în vedere unele dezavantaje legate de greutăți în urmărirea fluxului informațional, scăderea vitezei de lucru, întârzieri în citirea informației dacă aceasta se face în parallel.
Noduri proprietate
Crearea nodului proprietate poate fi inițiată în panoul frontal sau în diagrama bloc prin accesarea meniului contextual: ….Create / Property Node.
Fig. 1.80 Crearea nodului proprietate
Prin intermediul acestora se pot defini:
Atribute fizice: dimensiuni, culoare, poziție pe ecran etc;
Comportare: obiectul să fie vizibil / invizibil, activ / inactiv la un moment dat, tipul de afișare utilizat, proprietăți asociate unui instrument grafic etc.
Fig. 1.81 Definirea unei proprietăți
Fig. 1.82 Exemplificarea utilizării nodului proprietate pentru instrumentul Meter
Nodul proprietate poate fi identificat după eticheta controlului / indicatorului referit. Nodul proprietate afișează inițial un singur terminal prin intermediul căruia se permite accesul la o anumită proprietate. Această proprietate este afișată în caseta corespunzătoare terminalului (fig.4.81). Ex: controlului numeric i s-a asociat un nod proprietate fiind posibil accesul la proprietatea de vizibilitate (fig.4.81a).
Apelarea meniului contextual corespunzător nodului proprietate permite vizualizarea celorlalte proprietăți ale nodului (fig.4.83). Selectarea modului de folosire al unui terminal – citire (control) sau scriere (indicator) – se face din meniul contextual: Change To Write sau Change To Read.
Valoarile proprietăților au semnificațiile:
Position – reține coordonatele obiectului relativ la colțul stânga superior al panoului frontal. Coordonatele sunt exprimate în pixeli și se rețin într-o grupare de date;
Disabled (inactiv) – se controlează interacțiunea operatorului cu obiectul: “0” permite operarea, “1” îngheață obiectul iar valoarea “2” afișează obiectul umbrit;
Key Focus (Focus) – indică proprietate unui obiect de a primi date din partea operatorului de la tastatură. Proprietatea poate fi activată prin selectarea obiectului cu mouse-ul, utilizarea unei taste asociate, apăsarea tastei <Tab> de parcurgere a obiectelor. Valoarea logică True a proprietății permite asocierea acesteia la obiectul respectiv;
Blinking (afișare intermitentă) – permite afișarea intermitentă a obiectului pentru valoarea logică True. Valoarea booleană Fals stabilește încheierea afișării intermitente.
Fig. 1.83 Apelarea meniului contextual pentru nodul proprietate
Unui nod proprietate i se pot asocia mai multe terminale cu acces la proprietăți diferite (fig.4.84).
Fig. 1.84 Asocierea unor proprietăți diferite
Redimensionarea și atașarea de noi proprietăți se poate realiza prin apelarea la meniul contextual și opțiunea Add Element.
Indicatoare și controale pentru date tip șir de caractere, liste și tabele
Introducere
Un rol aparte între controalele / indicatoarele din mediul LabView îl joacă cele pentru lucrul cu șir de caractere și tabele. Componentele din această categorie permit citirea / afișarea acestui tip de date.
În versiunea LabView 5 aceste obiecte se localizează în paleta de controale: Controls / String & Table (fig.4.85). Începând cu versiunea LabVIEW 6.01 obiectul Strings este inclus în cadrul grupului String & Path (fig.4.86a) iar obiectul Tables este inclus în cadrul unui grup separate denumit List & Table (fig.4.86b).
Fig. 1.85 Controale tip șir și tabele (LabView 5)
Fig. 1.86 Localizarea controalelor șir începând cu varianta LabView 6
Șir de caractere
Un control și un indicator pentru șir de caractere sunt ilustrate în fig.4.87. Diferența grafică constă în banda verticală prezentă în pictograma indicatorului.
Fig. 1.87 Control și indicator tip șir
Obiectul de interfață dispune de un meniu contextual prezentat în figura 4.88. Se pot selecta, pe principiul clasic, diverse opțiuni rezultate din aplicația de realizat:
opțiunile referitoare la display permit afișarea obișnuită a șirului de caractere, în codul “\” (backslash) sau hexa;
protejarea editării este oferită de opțiunea Password Display, s.a.m.d.
Fig. 1.88 Meniul contextual pentru obiectul tip șir
Un alt obiect al grupului de controale String.. este controlul Combo Box. Selectând din meniul contextual opțiunea Edit Items se va deschide o caseta de dialog în care se poate introduce șirul de caractere dorit. În timpul execuției programului, utilizatorul va putea selecta șirul dorit (fig.4.89).
Fig. 1.89 Caseta de dialog
Bara de defilare (scroll bar) verticală pentru indicator se selectează la opțiunea Show / Scrollbar. Opțiunea este disponibilă pentru ambele obiecte cu condiția ca dimensiunea verticală a pictogramei să fie minimum de trei ori înălțimea unei linii de text.
Pe lângă facilitățile prezentate LabView dispune de o serie de funcții legate de utilizarea șirurilor. Acestea se apelează fie din caseta de funcții / String, fie din diagrama bloc și meniul contextual al controlului respectiv (fig.4.90).
Fig. 1.90 Funcții în utilizarea șirurilor
În figura 4.91 se exemplifică utilizarea funcției String Length (lungimea șirului) pentru obținerea informației despre șirul manipulat. În diagrama bloc din figura 4.92 se prezintă și posibilitatea creării unei proprietăți pentru indicatorul utilizat (Create / Property Node).
Fig. 1.91 Exemplu de utilizarea funcției pentru lungimea șirului
Fig. 1.92 Crearea unei proprietăți
O nouă exemplificare privind utilizarea funcției de concatenare (… Concatenate Strings) este prezentată în figura 4.93.
a)
b)
Fig. 1.93 Panoul frontal (a) și diagrama (b) pentru exemplificarea funcției de concatenare
Conversia unui număr într-un șir prin utilizarea funcției Number to Decimal String este exemplificată în figura 4.94.
Conversia unui număr într-un șir prin utilizarea funcției Number to Hexadecimal String este ilustrată in figura 4.95.
Fig. 1.94 Conversia unui număr într-un șir
Fig. 1.95 O altă posibilitate de conversie număr – șir
Căi de fișiere (Path)
Calea fișierului (path) reprezintă o posibilitate de identificare și vizualizare ale unui fișier. Posibilitățile de lucru oferite sunt de tip control sau indicator. În același timp acest tip de control poate lucra cu funcții specifice apelate din caseta de funcții. În figura 4.96 se prezintă panoul frontal și diagrama aferentă pentru un instrument virtual de citire a unui fișier text a2.txt, indicarea conținutului și a lungimii șirului de caractere.
Fig. 1.96 Panoul frontal (a) și diagrama aferentă (b) pentru vizualizarea unui fișier
Liste și Tabele
Listele și tabelele sunt opțiuni pentru panoul frontal în vederea furnizării unor date sub formă tabelară. Conținutul informațiilor este indicat prin simbolul conținut în fiecare celulă.
În figura 4.97 se prezintă utilizarea unei liste multicoloană (Multicolumn Listbox). Instrumentul virtual creat permite simularea achiziției a trei informații. Selectarea canalului de achiziție se poate realiza prin intermediul unui control listă (fig.4.97a). Instrumentul virtual este structurat în două secvențe. Prima secvență conține o buclă While Loop prin care se simulează pornirea și oprirea achiziției (fig.4.97b). Obiectului listă îi este asociat o proprietate nod cu o două valori referitoare la denumirea coloanei și numele operației (fig.4.97c).
a)
b)
c)
Fig. 1.97 Panoul frontal și diagrama de exemplificare a utilizării unui control listă
Utilizarea obiectului Table este ilustrată în exemplul din figura 4.98. Valorile aleatoare generate prin funcția Random Number (0-1) sunt vizualizate în formă originală, după operația de adunare cu constanta 1 și respectiv după ridicarea la pătrat (fig.4.98a). Vizualizarea este posibilă în cadrul tabelului creat și pentru care:
S-a optat din meniul contextual pentru vizibilitatea barei verticale de defilare Visible Items / Vertical Scrollbar și respectiv orizontale Visible Items / Horizontal Scrollbar;
S-a optat din meniul contextual pentru barele de notare ale semnificației liniilor Visible Items/Row Headers și ale coloanelor Visible Items / Column Headers;
S-au notat semnificațiile liniilor și coloanelor;
S-a construit diagrama corespunzătoare (fig.4.98b). Pentru realizarea construcției s-a apelat în mod suplimentar la funcțiile: construcția unei matrici Array / Build Array, transpunerea într-o matrice 2D Array / Transpose 2D Array, conversia număr – șir Strig – Number Conversion Number To Fractional String. S-a apelat de asemenea introducerea controlului lățimii numărului reprezentat (width) și respectiv a controlului pentru precizia de reprezentare (precision). Modul de introducere a acestor controale se realizează prin: selectarea uneltei Tools…/ Connect Wire, clic butonul drept al mouse-lui în zona terminalului dorit și selectarea din meniul contextual care se deschide Create / Control.
a)
b)
Fig. 1.98 Panoul frontal (a) și diagrama bloc pentru lucru cu obiectul Table
Controale de tip boolean
Componentele de interfață ale panoului frontal, aparținând tipului boolean, au două valori posibile, corespunzând: stării de adevăr – True sau fals – False. Valoarea logică “fals” este cea implicită cu care componenta este introdusă în panoul frontal. Versiunea LabView 8.2 conține controale booleane distribuite în subpaleta Modern / Boolean (fig.4.99a) și un număr considerabil mai mare în subpaleta Clasic / Boolean (fig.4.99b).
Fig. 1.99 Controale de tip Boolean
Indicatoarele booleene sunt reprezentări vizuale ale valorii logice și se prezintă sub forma unor led-uri rotunde sau pătrate. În unele variante există o suprapunere de funcție prin existența indicatorului optic în control. În figura 4.100 se prezintă varianta grafică a două controale care includ și indicator. În scop demonstrativ fiecare control este conectat la un indicator suplimentar.
Fig. 1.100 Controale și indicatoare de tip Boolean
Există mai multe realizări grafice de controale tip boolean: butoane care pot fi apăsate, comutatoare orizontale și verticale, întrerupătoare de tip pârghie (bistabile).
Controalele / indicatoarele de tip boolean dispun de un meniu contextual asemănător în partea superioară celor numerice dar diferit în ceea ce privește referirile la tipul de dată reprezentat. Controalele au activă opțiunea Mechanical Action (fig.4.101) care permite selectarea modului de comutare sau zăvorâre funcție de apăsare sau eliberare. Prin alegerea opțiunii Change to Indicator / Change to Control rolul obiectului în panoul frontal poate fi schimbat.
Fig. 1.101 Meniul contextual și variantele pentru acțiunea mecanică
Pictograma asociată opțiunilor comportării mecanice pune în evidență în mod grafic succesiunea operațiilor prin trei diagrame: acțiunea utilizatorului cu mouse-ul asupra controlului (M), noua valoare logică a controlului (V), momentul preluării valorii controlului la nivelul diagramei bloc (RD).
Semnificația comportării mecanice a controalelor booleene este următoarea:
a1 – controlul își modifică valoarea logică la fiecare apăsare a butonului mouse-lui. Valoarea controlului nu este afectată de preluarea în timp a în diagrama bloc (RM lipsă);
a2 – valoarea logică a controlului se modifică după eliberarea butonului mouse-lui. Controlul își păstrează valoarea până la următoarea interacțiune a utilizatorului. Valoarea controlului nu este afectată în timp de diagrama bloc.
a3 – valoarea logică a controlului se modifică la apăsarea butonului, se reține până la eliberarea butonului mouse-lui după care revine la valoarea inițială anterioară apăsării. . Valoarea controlului nu este afectată în timp de diagrama bloc.
b1 – valoarea logică a controlului se modifică la apăsarea butonului, este reținută la starea actuală până când este preluată de diagrama bloc (există o scurtă “temporizare”) și revine la starea anterioară acționării după preluarea valorii în diagrama bloc.
b2 – valoarea logică a controlului se modifică la eliberarea butonului mouse-lui, rămâne la noua stare până când este preluată de diagrama bloc după care revine la starea inițială anterioară interacțiunii.
b3 – valoarea logică a controlului se modifică la apăsare și rămâne în starea rezultată până când diagrama bloc a preluat noua valoare și a fost eliberat butonul mouse-lui.
Grupare de date utilizând Matrice (Array) și Grup / Cluster și șir / String
Introducere
Obiectele menționate sunt controale / funcții care permit gruparea datelor. Caracterele ASCII sunt grupate prin secvența String. O matrice / array are elementele constituite din date de același tip. Un grup / cluster reunește date de tipuri diferite.
Matrice
Matricea poate avea una sau mai multe dimensiuni și până la 231 – 1 elemente pe fiecare dimensiune (dependent de memoria disponibilă).
Se pot constitui matrici cu elemente numerice, booleene, căi (path), șir, formă de unde (waveforms) și grup (cluster).
Matricile sunt ideale pentru stocarea datelor colectate din buclele de calcul unde fiecare iterație a buclei produce un element al matricii.
Există restricții în ceea ce privește crearea matricilor:
Nu se poate crea matrice cu elemente din matrici. Dacă se dorește o matrice multidimensională, se poate apela la matrice pe bază din grupuri / cluster unde fiecare grup / cluster conține una sau mai multe matrici;
Nu se poate crea matrice din controale panel, controale tab, controale ActiveX, diagrame sau grafice.
Pentru a localiza un element în matrice avem nevoie de un index pe fiecare dimensiune. Indicele este un număr întreg, cuprins între 0 și N-1 unde N este numărul de elemente ale matricii pe dimensiunea specificată.
Un exemplu de matrice 1D cu nouă coloane (0…8) conține informația privind modul de variație în timp a căderii de tensiune pe un element. Fiecare element al matricii reprezintă valorile tensiunii în mod succesiv, la intervale de timp egale (fig.4.102).
Un exemplu mai complex de reprezentare a grupării de date este ilustrat în figura 4.103.Matricea 1D conține informația despre o reprezentare grafică X-Y. Fiecare punct al matricii este un grup (cluster) compus dintr-o pereche de valori numerice reprezentând coordonatele X, Y. Pentru a ilustra corespondența valorilor cu punctele reprezentate s-a utilizat un segment orientat de la un punct inițial spre punctul următor. Succesiunea de reprezentare are legătură doar cu indexul general.
Fig. 1.102 Exemplificarea unui grup de date printr-o matrice 1D
Fig. 1.103 Matrice 1D având elementele formate din grup de valori numerice
O matrice 2D memorează datele elementelor într-o rețea formată din linii și coloane. În acest caz este necesară existența unui index pentru linii și a unui index pentru coloane (fig.4.104).
Fig. 1.104 Matrice 2D cu specificarea indexului pentru linii și coloane
Matricea din figura 4.104 are 6 linii și 7 coloane conținând de elemente. Un exemplu sugestiv de matrice 2D este tabla de șah (8 linii, 8 coloane). La un moment dat oricare poziție poate fi goală sau conținând o piesă.
Matricea 2D se poate obține și printr-o suplimentare a liniilor la o matrice 1D. Considerând grup de date conținut ca diverse semnale în timp, indexul coloanelor se atașează practic valorilor numerice succesive ale unui semnal. În același timp indexul liniilor se atașează categoriei de semnal. În figura 4.105 este exemplificată această abordare pentru două forme de variație a unor semnale și 9 puncte corespunzătoare valorilor numerice pe fiecare semnal.
Fig. 1.105 Reprezentarea a două semnale într-o matrice 2D
Crearea unei matrici cu controale sau indicatoare presupune două etape constând din combinarea unei structuri matriceale aleasă din paleta Controls / Array, Matrix & Cluster (LabView 8.2) (fig..106) cu un obiect de tip date – numeric, Boolean,…
Fig. 1.106 Localizarea subpaletei Array
Cele două etape enunțate anterior pot fi detaliate în mod suplimentar:
Etapa 1 – se selectează o structură matriceală din paleta Controls / Array, Matrix & Cluster și se poziționează în panoul frontal (fig.4.107)
Fig. 1.107 Grafica (pictograma) structurii matriceale în panel (a) și în diagrama bloc (b)
Selectarea unui obiect – din caseta de controale – care urmează să devină element al matricii și poziționarea lui în suprafața activă a structurii matriceale (fig.4.108), (fig.4.109)
Fig. 1.108 Matrice cu control Boolean și indicatorul echivalent asociat
Fig. 1.109 Matrice cu control numeric și indicatorul echivalent asociat
Prin apelarea meniului contextual al obiectului devenit element al matricei / tabloului putem adăuga dimensiune acesteia (fig.4.110)
Fig. 1.110 Pictogramele unei matrici cu elemente numerice: matrice control (a) și indicator (b)
Cu ajutorul structurilor For Loop și While Loop se pot genera în mod automat matrici în cadrul unui proces denumit auto-indexare.
În figura 4.111 se prezintă crearea unei matrici numerice în cadrul procesului de auto-indexare prin utilizarea structurii For Loop.
Fig. 1.111 Panoul frontal (a) și diagrama bloc (b) în procesul de auto-indexare
În cadrul procesului prezentat în figura 4.112 toate valorile generate în bucla For, în mod succesiv, sunt transferate și memorate în matricea indicator.
Fig. 1.112 Meniul contextual al tunelului
Dacă este necesară păstrarea doar a ultimei valori generată în cadrul buclei, trebuie ca din meniul contextual al tunelului (simbolizat prin pătratul cu contur negru de pe conturul buclei) să fie selectată opțiunea Disable Indexing. În acest caz se transferă o singură valoare și singurul lucru modificat este indicatorul conectat pe ieșirea buclei, un indicator numeric (fig.4.113). Schimbarea este semnalizată și la nivelul simbolului tunelului.
Fig. 1.113 Transferul ultimei valori generate în cadrul buclei For Loop
Introducerea unei valori în cadrul unei bucle For Loop este ilustrată în figura 4.114. Se remarcă valoarea introdusă și faptul că în acest caz indexarea este validată.
Fig. 1.114 Procesul de auto-indexare la introducerea valorilor în cadrul buclei
Introducerea tuturor valorilor în cadrul buclei necesită validarea opțiunii Disable Indexing (fig.4.115).
Fig. 1.115 Introducerea valorilor într-o buclă
Crearea unei matrici bidimensionale 2D este posibilă prin utilizarea a două bucle înseriate (una în interiorul celeilalte). Un astfel de proces este ilustrat în figura 4.116. Bucla exterioară definește elementele de pe linii iar bucla interioară definește coloanele matricei 2D. Matricea numerică creată conține 3 linii și 2 coloane.
Bucla interioară exportă spre exterior, prin tunelul aferent, o matrice 1D. Se poate verifica acest lucru prin introducerea corpului de probă (simbolizat prin mumărul 1). Bucla exterioară exportă prin tunelul aferent o matrice 2D. Și în acest caz se poate verifica traficul informației prin corpul de probă (simbolul 2). Acest mod de lucru reiese și din tipul firelor de legătură.
Fig. 1.116 Crearea matricei 2D utilizând bucla For Loop în cadrul procesului de auto-indexare
Cele mai multe din funcțiile pentru matrici sunt destinate pentru manipularea acestora. Funcțiile obișnuite sunt disponibile în subpaleta Array în caseta de funcții Functions / All Functions (LabView 7) sau în subpaleta Programming / Array (fig.4.117).
Fig. 1.117 Paleta funcțiilor pentru lucru cu matrici
Funcția Array Size returnează numărul de elemente ale unei matrici de intrare notată generic A. Dacă matricea A este n- dimensională, mărimea de ieșire returnată este o matrice B cu n elemente. Fiecare element al matricei B contorizează numărul de elemente al matricei A pe o dimensiune (fig.4.118, fig.4.119).
Fig. 1.118 Funcția Array Size și răspunsul pentru matricea de intrare A
Fig. 1.119 Funcția Array Size și răspunsul pentru matricea de intrare A de tip 2D
Funcția Initialize Array crează o matrice n – dimensională cu elementele conținând valorile specificate de utilizator. Dacă se dorește crearea mai multor dimensiuni, pentru matrricea de inițializat, se apelează la meniul contextual în care se selectează Add Dimension. Un rezultat echivalent se obține dacă se utilizează unealta de lucru Positioning din caseta Tools. În figura 4.120 se prezintă pictograma inițială a funcției (a) și cea transformată pentru mai multe dimensiuni (b).
Fig. 1.120 Pictogram funcției de inițializare a unei matrrici
În figura 4.121 se prezintă inițializarea unei matrici 1D cu 5 elemente pentru care s-a considerat valoarea numerică 1.12. Se prezintă existența celor două posibilități de creare a matricii 1D.
Fig. 1.121 Utilizarea funcției de inițializare a unei matrici 1D cu elementele de valoare 1.12
Inițializarea unei matrici 2D este ilustrată în figura 4.122. În scop demostrativ s-a supradimensionat instrumentul de vizualizare a matricii inițializate. Se vede astfel că dimensiunea reală a matricii este cea impusă.
Fig. 1.122 Inițializarea unei matrici 2D
Funcția Buid Array concatenează mai multe matrici sau adaugă elemente unei matrici existente. Pictograma funcției poate fi redimensionată prin adăugarea de noi intrări (ADD Input) din meniul contextual sau prin metoda clasică de redimensionare a unui obiect.
Fig. 1.123 Pictograma funcției Build Array
Concatenarea unei matrici și a două elemente numerice este prezentată în figura 4.124. Succesiunea elementelor în noua matrice respectă ordinea de sus – în jos pentru elementele de intrare.
Fig. 1.124 Construcția unei matrici prin concatenarea a două elemente și a unei matrici
Concatenarea a două matrici este ilustrată în figura 4.125.
Fig. 1.125 Concatenarea a două matrici cu opțiunea Concatenate Inputs activată (a) și respectiv dezactivată (b)
Matricea rezultată va avea dimensiunea impusă de utilizator prin selectarea din meniul contextual al ieșirii a opțiunii de activare a concatenării Concatenate Inputs.
Funcția Array Subset returnează un fragment dintr-o matrice începând cu elementul nominalizat prin index (intrare a funcției) și compus dintr-un număr de elemente specificat prin intrarea funcției length (fig.4.126).
Fig. 1.126 Extragerea unui fragment dintr-o matrice
Funcția Index Array returnează elementul matricii specificat prin intrarea funcției (index-ul elementului).
Funcția Array Max & Min returnează valoarea maximă și minimă dintr-o matrice analizată. Funcția are posibilitatea vizualizării și a index-ilor care nominalizează cele două valori.
Paleta funcției Array dispune și de alte posibilități de lucru: descompunerea unei matrici 1D (Split 1D Array), căutarea într-o matrice 1D (Search 1D Array), inițializarea unei matrici constante (Array Constant), conversii, etc.
Polimorfisme
Poliformismul reprezintă capabilitățile funcțiilor din LabView (de ex. adunare, înmulțire, împărțire) de a accepta la intrare date cu dimensiuni și reprezentări diferite. Funcțiile aritmetice care posedă aceste proprietăți se numesc funcții polimorfice.
Un exemplu clasic pentru această proprietate este poliformismul funcției aduniționale scalar – scalar, scalar – matrice, matrice – matrice de dimensiuni diferite. În figura 4.127 se prezintă exemplul de poliformism pentru adunarea scalar – matrice.
Fig. 1.127 Poliformismul funcției de adunare: scalar – matrice
În figura 4.128 se exemplifică poliformismul funcției de adunare pentru adunarea a două matrici de dimensiuni diferite. Dimensiunea matricii rezultate este cea a matricii cu numărul mai mic al elementelor. Elementele noii matrici se obțin prin însumarea clasică a elementelor corespondente, scalar – scalar.
Fig. 1.128 Poliformismul în adunarea a două matrici de dimensiuni diferite
Demonstrarea poliformismului funcției de înmulțire este ilustrată în figura 4.129. Matricea de ieșire are elementele înmulțite cu același coeficient 10 (coeficient de scalare).
a)
b)
Fig. 1.129 Poliformismul funcției de înmulțire
Funcțiile booleane se încadrează în rândul funcțiilor polimorfice. Se exemplifică proprietatea în figura 4.130 pentru funcția AND aplicată unui scalar boolean și unei matrici. Se returnează o matrice.
Fig. 1.130 Poliformismul funcției AND
Un rezultat asemănător se obține pentru funcția AND aplicată pentru două matrici de dimensiuni diferite (fig.4.131).
Fig. 1.131 Poliformismul funcției AND pentru două matrici booleane de dimensiuni diferite
Grupuri (Cluster)
Un grup = cluster definește o structură de date care combină unul sau mai multe tipuri de date într-unul nou. Este echivalentul tipului structură – struct din limbajul C sau înregistrare – record din Pascal.
Cluster-ul se regăsește atât în structura de controale cât și în structura de funcții din LabView.
Localizarea în paleta Controls este ilustrată în figura 4.132.
Fig. 1.132 Localizarea controlui Cluster
După introducerea variabilei în panoul frontal se va atașa cluster-ului, ca și în cazul tabloului – Array, tipul de date dorit.
În figura 4.133 se prezintă poziționarea în panoul frontal a variabilei de tip grupare de date cu trei controale: un control de tip șir de caractere (Nume), un control de tip numeric (Vîrsta) și unul de tip boolean (prezența). Se prezintă în paralel și diagrama bloc constituită după alegerea a trei indicatoare adecvate tipurilor de date specificate.
În faza de editare a IV se pot realiza modificări ale ordinei elementelor în cadrul variabilei. Prin selectarea opțiunii de editare – Positioning Tool și clic cu butonul stâng al mouse-lui pe conturul variabilei se deschide meniul contextual din care se alege opțiunea “Modificarea ordinii în grup” – Cluster Order…. Redimensionările elementelor din grupa de date se realizează pe principiile prezentate anterior.
Fig. 1.133 Exemplificarea utilizării cluster-ului compus din controale
Un rol esențial al cluster-ului este regăsit în cadrul funcțiilor pentru construcția diagramei bloc. Localizarea în cadrul paletei de funcții este prezentată în figura 4.134.
Fig. 1.134 Funcțiile Cluster
Principalele funcții din subpaleta Cluster sunt (în ordinea poziționarii în paleta de funcții): Unbundle, Bundle, Unbundle by Name, Bundle by Name, Build Cluster Array, Index & Bundle Cluster Array, Cluster Constant etc.
Funcția Bundle grupează mai multe componente, realizând un grup, sau înlocuiește una sau mai multe componente ale unui grup existent. Pictograma aferentă funcției este prezentată în figura 4.135.
Fig. 1.135 Pictograma funcției Bundle
Gruparea elementelor se realizează în ordinea acestora în cadrul grupului Prima componentă conectată la funcția Bundle este componenta cu index-ul 0, urmează componenta cu index-ul 1, s.a.m.d. Numărul de intrări poate fi modificat fie prin selectarea Add Input din meniul contextual al intrării fie utilizând unealta de poziționare / redimensionare din caseta Tools. În figura 4.136 se exemplifică utilizarea funcției Bundle.
a)
b)
Fig. 1.136 Panoul frontal (a) și diagrama bloc (b) în utilizarea funcției Bundle
O altă exemplificare a utilității funcției Bundle este prezentată în figura 4.137.
Fig. 1.137 Utilizarea funcției Bundle
Constanta numerică (setată la valoarea 0) definește punctul de origine real iar prin controlul numeric se impune valoarea de incrementare. Funcția Bundle reunește datele numerice permițând reprezentarea grafică.
În cazul în care funcția Bundle este utilizată pentru înlocuirea unor componenteale unui grup deja existent, grupul trebuie conectat la intrarea cluster a funcției (fig.4.138). În cadrul aplicației funcția bundle permite înlocuirea valorii numerice corespunzatoare controlului Knob și respectiv a controlului numeric 2.
a)
b)
Fig. 1.138 Utilizarea funcției Bundle în înlocuirea unor componente
Funcția Bundle by Name este folosit doar pentru înlocuirea unei componente dintr-un grup existent. Modul de lucru este asemănător cu cel prezentat anterior. Cluster-ul existent se conectează la intrarea specificată a funcției (cluster). În ordinea logică a construcției se introduce controlul care va înlocui o componentă. Componenta de înlocuit se va identifica după numele reprezentat prin eticheta asociată. Numărul intrărilor nu este obligatoriu să fie egal cu cel al componentelor grupului. Adăugarea de noi intrări se poate realiza tot din meniul contextual prin selectare opțiunii Add Element. Numărul posibilităților de înlocuire se pot vizualiza din meniul contextual al intrării funcției prin selectarea opțiunii Select Item. Asocierea numelui componentei cu intrarea se realizează prin selectarea numelui din lista posibilităților vizualizate.
a)
b)
Fig. 1.139 Panoul frontal (a) și diagrama bloc (b) în utilizarea funcției Bundle by Name
Descompunerea grupurilor în componente se bazează pe două funcții Unbundle și Unbundle by Name. Utilizarea primei funcții este prezentată în figura 4.140. Fiecărui control inclus în cluster-ul construit în panoul frontal i se poate asocia un indicator, conexiunea realizându-se prin funcția Unbundle.
a)
b)
Fig. 1.140 Panoul frontal (a) și diagrama bloc (b) în utilizarea funcției Unbundle
Controale și indicatoare pentru reprezentări grafice
Introducere
Controalele și indicatoarele pentru reprezentări grafice constituie componente pentru crearea interfeței, din panoul frontal, care permite vizualizarea reprezentărilor grafice.
Din punctul de vedere al modului de realizare, se deosebesc două variante de reprezentări grafice:
Diagrama ( chart ) – reprezentare grafică a unei informații care se modifică în timp. Acestea se reprezintă practic în timp real. Pe măsură ce noi valori sunt obținute, ele sunt adăugate la reprezentarea existentă. Punctele de reprezentare sunt păstrate, permițând vizualizarea variației în timp a procesului. Diagrama evoluției temperaturii într-o perioadă de timp este un exemplu clasic.
Graficul (graph) – înseamnă o reprezentare a dependenței unei mărimi de o alta. Pentru realizarea reprezentării, valorile sunt colectate într-un tablou și apoi reprezentate. Reprezentarea grafică x- y este un exemplu clasic al acestei categorii.
LabView 8.2 dispune de mai multe facilități pentru reprezentările grafice (fig.4.141):
Fig. 1.141 Subpaleta pentru reprezentări grafice
a1 – diagramă undă (Waveform Chart);
b1 – grafic undă (Waveform Graph);
c1 – grafic XY (XY Graph);
d1 – grafic XY special (Express XY Graph);
a2 – diagramă intensitate (Intensity Chart);
b2 – grafic intensitate (Intensity Graph);
c2 – grafic undă digitală (Digital Waveform Graph);
d2 – grafic cu semnale multiple (Mixed Signal Graph);
a3 – grafic suprafață 3D (3D Surface Graph);
b3 – grafic parametric 3D (3D Parametric Graph);
c3 – grafic curbă 3D (3D Curve Graph).
Elementele principale care intervin în reprezentarea grafică sunt evidențiate în figura 4.142. O serie dintre aceste elemente devin vizibile doar prin selectarea opțiunii respective în meniul contextual. Redimensionarea și poziționarea obiectului în panoul frontal respectă principiul clasic de lucru.
Fig. 1.142 Elementele reprezentărilor grafice
Diagrama undă
Diagrame undă (waveform charts) reprezintă indicator grafic pentru vizualizarea unuia sau mai multor reprezentări grafice simultan, pentru care se urmărește variația în timp.
Diagrama undă dispune de un meniu contextual (asemănător cu cele pentru restul controalelor / indicatoarelor) prin intermediul căruia indicatorul poate fi particularizat funcție de problema de rezolvat (fig.4.143):
Selectarea elementelor pentru care se dorește a fi vizibile din Visible Items;
Formatarea scalei X și Y prin opțiunile X Scale și respectiv Y Scale;
Vizualizarea mai multor grafice pe aceeași diagramă prin selectarea opțiunii Stack Plots. Revenirea la forma inițială se realizează prin selectarea opțiunii Overlay Plots (fig.4.144);
Actualizarea diagramei prin selectarea opțiunilor Advanced / Update Mode:
Diagrama tip panglică (strip chart) – noile puncte se afișează în partea dreaptă a celor existente, în timp ce punctele vechi sunt retrase spre stânga;
Diagrama tip osciloscop (scope chart) – noile puncte se afișează în partea dreaptă a celor existente. În momentul în care reprezentarea atinge marginea din dreapta a zonei vizibile, reprezentarea este ștearsă și reîncepută din marginea din stânga;
Diagrama tip baleiere (sweep chart) – noile puncte se afișează în partea dreaptă a celor existente. La atingerea marginii din dreapta a zonei vizibile, noile puncte sunt afișate începând din partea stângă, peste cele vechi. O linie verticală baleiază zona de vizualizare delimitând zona punctelor noi și a celor vechi (din dreapta).
Ștergerea ferestrei de afișare prin selectarea opțiunii Data Operations / Clear Chart;
Selectarea modului de reprezentare a curbei (puncte sau linie, culoare, grosime,..) din legenda Plot (fig.4.143).
În cazul unei singure reprezentări grafice în diagrama undă, structurile de date posibile sunt:
Scalar numeric – se transmite valoarea unui singur punct (fig.4.143)
Fig. 1.143 Transmiterea unei singure valori în reprezentarea grafică prin diagramă undă
Tablou 1D cu elemente tip scalar numerice – fiecare element al tabloului definește un punct al reprezentării și se transmit simultan valorile mai multor puncte (fig.4.144).
Fig. 1.144 Structura 1D în reprezentarea grafică prin diagrama undă
Un exemplu edificator pentru reprezentarea grafică unei diagrame undă este ilustrat în figura 4.143. Diagrama bloc a fost construită prin simpla conectare a generatorului de număr aleator la indicatorul grafic.
a)
b)
Fig. 1.145 Panoul frontal (a) și diagrama bloc (b) la reprezentarea unei diagrame undă
Pentru reprezentarea mai multor forme de undă în cadrul aceleeași diagrame se consideră 3 structuri de date permise pentru reținerea punctelor necesare reprezentării:
Gruparea de date. În acest scop se utilizează gruparea de date pe baza funcția…Cluster / Bundle. Pentru fiecare element conectat la funcția Bundle se reține la un moment dat o singură valoare. Toate cele n valori, corespunzătoare celor n elemente de intrare ale funcției, se transmit simultan (fig.4.146). Cele trei forme de undă sunt: numărul aleator (0-1), rezultatul înmulțirii număr aleator x 10, temperatura (temp ca și instrument virtual LabView8.2 / Activity / Digital Thermometer.vi). Reprezentarea celor trei curbe este în ordinea conectării la funcția Bundle iar culorile sunt în aceeași succesiune din legenda Plot). Pentru reprezentarea multiplă s-a selectat opțiunea Stack Plots. Pentru o vizualizare convenabilă a fost introdus funcția Time / Millisecond Multiple.
Tablou 1D cu elemente tip grupare de date (pe bază de elemente de tip scalar numeric). Pentru fiecare grupare de date (corespunzătoare unei reprezentări) sunt transmise punctele de reprezentat. Acestea sunt colectate într-un tablou (array) cu cluster având dimensiunea convenabilă. O reprezentare sugestivă pentru acest caz este ilustrată în figura 4.147.
a)
b)
Fig. 1.146 Panoul frontal (a) și diagrama bloc (b) pentru reprezentarea mai multor forme de undă
a)
b)
Fig. 1.147 Variantă de reprezentare grafică a formelor de undă multiple
Tablou 2D – Datele noi de reprezentare se transferă simultan la nouă actualizare și se cumulează într-o matrice de scalari numerici. Fiecare linie coincide cu punctele pentru o formă de undă de reprezentat. Un exemplu edificator este prezentat în figura 4.148. A fost introdusă funcția de transpunere a matricii de reprezentat: Functions / Array / Transpose 2D Array.
a)
b)
Fig. 1.148 Reprezentarea mai multor forme de undă
Grafice tip undă
Graficul de tip undă reprezintă o posibilitate de vizualizare uniformă a unor măsurători cu eșantionare. Este posibilă vizualizarea unui singur grafic sau a mai multor grafice. În primul caz graficul undă plotează o singură funcție cu puncte uniform distribuite pe axa x. Sunt posibile două variante:
Metoda 1 – Se furnizează indicatorului grafic de tip undă cu un singur parametru, tablou 1D. Se presupune implicit că plotarea începe din origine, x = 0 și incrementarea este unitară, x = 1. Un exemplu edificator este prezentat în figura 4.149. Pentru exemplificarea celor specificate anterior și a corespondenței valorilor s-a preferat o vizualizare dublă (și numeric). În plus s-a apelat la o reprezentare prin puncte conectate prin linie continuă. În acest exemplu de generare a tabloului 1D, valoarea maximă a scalei pe axa X corespunde unei relații simple unde N este dimensiunea tabloului.
a)
b)
Fig. 1.149 Panoul frontal (a) și diagrama bloc la reprezentarea unui grafic undă
Metoda 2 – Reprezentarea se bazează pe realizarea unui grup de date compus din valoarea inițială a abscisei , pasul de incrementare al axei , tabloul 1D. Formarea grupului de date se bazează pe funcția Bundle. În aplicațiile de achiziție a datelor tabloul 1D se obține prin „citirea” unui canal de achiziție (realizat hard). Un exemplu edificator pentru metoda de lucru este prezentat în figura 4.150. Generarea tabloului 1D se realizează în principiul clasic al unui ciclu FOR în care a fost inclus un generator de număr aleator (0-1). Valoarea maximă a scalei pe axa X corespunde în acest caz relației .
Fig. 1.150 Diagrama bloc în reprezentarea grafică prin metoda grupului
Reprezentarea mai multor grafice undă pe baza unui singur indicator este posibilă prin mai multe metode:
Se transmit spre a fi reprezentate M puncte pentru fiecare din cele N grafice. Structura formată este un tablou 2D unde o linie este compusă din punctele de reprezentat. Reprezentarea este uniformă cu originea abscisei în zero și incrementare unitară. Numărul de puncte este același pentu fiecare reprezentare. Un exemplu edificator pentru reprezentarea a două grafice undă este ilustrat în figura figura 4.151. Formarea tabloului 2D este posibilă fie prin utilizarea funcției Functions/Programming/Array/Build Array fie prin utilizarea funcției …./ Cluster / Build Cluster Array (reprezentat în fig.4.151).
Fig. 1.151 Diagrama bloc pentru reprezentare multiplă a două grafice undă
Punctele de reprezentat se rețin într-un tablou 1D cu elemente tip grup de date. Cele N grupuri de date vor fi incluse într-un tablou 2D prin utilizarea funcției Build Array. Reprezentarea este uniformă cu incrementare unitară, numărul de puncte poate fi diferit pe fiecare dintre cele N reprezentări (fig.4.152).
Fig. 1.152 Reprezentarea multiplă a unor grafice undă
Pe principiul anterior, se formează un grup de date compus din matricea 2D conținând punctele de reprezentat, originea pe axa X și pasul de incrementare. Crearea grupului de date are la bază funcția Bundle (fig.4.153).
Fig. 1.153 Reprezentarea graficelor undă pe bază de grup de date
O reprezentare multiplă se poate baza pe un același grup de date ca în cazul anterior realizându-se o reprezentare cu incrementare impusă. Tabloul 2D aplicat pe intrarea funcției Bundle poate fi o matrice din clustere (asemănător cu figura 4.151) (fig.4.154) sau o matrice 2D (fig.4.155) (cu elemente de tip scalar numeric corespunzător punctelor de reprezentat).
Fig. 1.154 Variantă de reprezentare cu incrementare impusă
Fig. 1.155 O altă variantă de reprezentare cu incrementare impusă unică
Reprezentarea multiplă se poate realiza cu origine pe abscisă și incrementare diferită pentru fiecare formă de undă reprezentată. Punctele de reprezentat pentru o formă de undă sunt incluse într-un grup de date prin utilizarea funcției Bundle. Cele N grupuri de date sunt reunite într-o matrice prin funcția Build Array care se aplica la intrarea indicatorului grafic. Un exemplu edificator este reprezentat în figura 4.156. Doar pentru înțelegerea modului de reprezentare a datelor în construcția diagramei bloc au fost introduce indicatoare suplimentare prin care se pot vizualiza grupul de date după reunirea prin funcția Bundle și respectiv a matricii aplicate pe indicatorul grafic. Se poate sesiza ușor originea și incrementarea diferită pentru cele două grafice.
a)
b)
Fig. 1.156 Reprezentare grafică a formelor de undă cu incrementări diferite
Grafice XY
Graficul XY se găsește în subpaleta Grapf a paletei de controale. Graficul XY este un grafic în coordonate carteziene. Pentru reprezentare este necesară specificarea coordonatelor punctelor de reprezentat (x, y). În același timp prin această facilitate pot fi reprezentate funcții circulare sau elipsoidale.
Realizarea unei singure reprezentări grafice se bazează pe două metode:
Metoda 1 – Pentru reprezentare se vor furniza inițial două tablouri 1D: 1 tablou 1D care cuprinde valorile absciselor iar cel de-al doilea, valorile ordonatelor. Cele două tablouri sunt reunite într-un grup de date prin utilizarea funcției Bundle (fig.4.157).
a)
b)
Fig. 1.157 Panoul frontal (a) și diagrama bloc într-o reprezentare grafică XY
Metoda 2 – Coordonatele unui punct de reprezentat se, pot reuni într-un grup de date. Cele N perechi de grupuri de date formează un tablou 1D care se transferă indicatorului grafic (fig.4.158).
Fig. 1.158 Reprezentare XY prin tablou 1D
Reprezentarea grafică XY permite afișarea simultană a mai multor reprezentări. Metodele posibile iau în considerare:
Metoda 1 – Fiecare reprezentare se constituie într-un grup de date compus din tabloul 1D corespunzător absciselor și tabloului 1D al ordonatelor. Cele N grupri de date sunt reunite într-o matrice de clustere (pe baza funcției Build Array) care se aplică indicatorului grafic (fig.4.159).
Fig. 1.159 Reprezentări XY multiple
Metoda 2 – Perechea de valori (x,y) a unei reprezentări se constituie într-un grup de date. Fiecare grup de date ale unei reprezentări se reunește într-un tablou 1D. Cele N tablouri 1D se reunesc într-o matrice de clustere prin aplicarea funcției Build Cluster Array (4.160).
Fig. 1.160 Reprezentarea multiplă XY prin matrice de clustere
Reprezentările grafice XY beneficiază în versiunile LabView7 și LabView8 și de facilitatea Express XY Graph. Partea de vizualizare (display) este asemănătoare indicatorului clasic XY Graph în timp ce pictograma este modificată (fig.4.161). Prin utilizarea acestui tip de indicator se modifică modul de transfer a datelor reprezentate.
Fig. 1.161 Pictograma indicatorului Express XY Graph
În figura 4.162 se prezintă diagrama bloc pentru modul de reprezentare grafică a unei singure funcții, un cerc de diametru unitar. În construcția diagramei s-au utilizat:
Funcția trigonometrică dublă sine & cosine.vi localizată în paleta de funcții la Mathematics/Elementary &Special Functions/Trigonometric Functions;
Funcția de conversie dinamică a datelor Convert to Dynamic Data localizată în paleta de funcții la Express/Signal Manipulation/To DDT.
Fig. 1.162 Reprezentarea grafică a unui cerc
Pentru reprezentarea unor funcții multiple se apelează în mod suplimentar la funcția de reuniune a mai multor semnale într-unul singur Merge Signals localizat în paleta de funcții la Express/Signal Manipulation. Diagrama bloc pentru reprezentarea grafică a cercului unitar și a funcției exponențiale este prezentată în figura 4.163.
Fig. 1.163 Reprezentarea multimplă a graficelor XY
Funcții numerice
Funcțiile numerice sunt localizate în cadrul casetei de funcții …Programming / Numeric (fig.4.164). Caseta include operațiile uzuale (adunare, scădere, înmulțire, împărțire, ridicare la pătrat, radical), conversii, constante numerice, operații cu numere complexe, valori pentru constanta π, e etc.
Fig. 1.164 Funcții numerice
Dacă funcția de adunare – Add, funcția de scădere – Subtract,….se aplică pentru două valori numerice (x și y) caseta de funcții numerice dispune și de funcția Compound Arithmetic pentru operații multiple din aceeași categorie. Operațiile disponibile (selectabile din meniul derulant atașat) pentru Compound Arithmetic sunt numerice – adunare (Add), înmulțire (multiply) sau logice – AND, OR, XOR. În figura 4.165 se prezintă utilizarea funcției Add multiplă.
Fig. 1.165 Operație de adunare multiplă cu Compound Arithmetic
Caseta de funcții numerice include și operații pe matrici numerice: adunarea și înmulțirea elementelor. În figura 4.166 se prezintă modul de aplicare a funcției Add Array Elements.
În varianta LabView 8, subpaleta Express/Arithmetic &Comparison conține un pachet mai larg de funcții matematice (funcții trigonometrice, funcții exponențiale, funcții pentru operații în domeniul timp). În figura 4.167 se prezintă construcția unei diagrame bloc pentru operația de derivare în raport cu timpul. Semnalul de intrare este un semnal sinusoidal (Express /Signal Analysis / Simulate Signal ). Pentru operația matematică în domeniul timp s-a selectat Express/Arithmetic&Comparison/Time Domain. S-a optat în final din domeniul timp pentru funcția de derivare Derivative(dx/dt).
Fig. 1.166 Operația de adunare a elementelor unei matrice
Fig. 1.167 Operație de derivare în domeniul timp
Funcții de comparare
Funcțiile de comparare sunt localizate în caseta de funcții …Programming / Comparison. Sunt incluse funcțiile de comparare pentru: egalitate ? (Equal ?), inegal ? (Not Equal ?), mai mare ? (Greater ?), mai mic ? (Less ?) etc. Aceste funcții compară două valori numerice (x și y) și returnează la ieșire valoarea TRUE sau FALSE dependent de funcția în cauză.
Utilizarea unei funcții de comparare cu o structură de tip Case este prezentată în figura 4.168. Funcția de compare Equal ? compară două valori numerice (x și constanta 4) și returnează TRUE dacă și FALSE în restul cazurilor. Dependent de valoarea logică rezultată se va executa programul corespunzător variabilei de control logice.
Fig. 1.168 Funcția de comparare și structura Case
Pictograma funcției de comparare Select este prezentată în figura 4.169. Funcția returnează valoarea conectată la intrarea t sau f dependent de valoarea care este conectată la s. Dacă s este FALSE atunci funcția va returna valoarea conectată la f. Exemplificarea utilizării funcției este prezentată în figura 4.170. încadrarea unei piese în câmpul de toleranță precizat este convertită de un senzor într-o valoare logică TRUE sau FALSE care se aplică la intrarea s a funcției de comparare. Rezultatul poate fi vizualizat pe panoul frontal al instrumentului virtual.
Fig. 1.169 Funcția de selectare
Fig. 1.170 Funcția Select și răspunsul pentru un s de valoare FALSE
Un număr de funcții de comparare lucrează cu variabile șir. Pentru detalii suplimentare referitor la acestea se poate accesa Help-ul funcției respective.
Funcții pentru lucru cu fișire I/O
Operațiile cu fișiere de intrare / ieșire (I/O) au ca scop principal stocarea datelor pe un suport și preluarea datelor dintr-un fișier. În figura 4.171 și 4.172 se exemplifică utilizarea funcției de scriere a datelor într-un fișier (Write to measurement file).
a)
b)
Fig. 1.171 Utilizarea funcției de scriere a fișierului de date din măsurătoare
Se remarcă (fig.4.172) construcția fișierului de date cu precizările referitoare la data simulării, numărul de eșantioane etc.
a)
b)
Fig. 1.172 Panoul frontal, diagrama bloc și fișierul salvat în aplicația de simulare a unui semnal
Exemplificarea citirii unui fișier de măsurători test.lvm și vizaualizarea informației acetuia este prezentată în figura 4.173. Selectarea indicatorului pentru vizualizarea semnalului s-a realizat prin accesarea meniului derulant / Create / Indicator.
a)
b)
Fig. 1.173 Exemplificarea utilizării funcției Read From Measurement File
Achiziția datelor dintr-un experiment
Achiziția de date în urma unui experiment și salvarea datelor respective presupune în primul rând existența componentelor hardware necesare. În figura 4.174 este prezentată structura standului utilizat pentru achiziția informațiilor referitoare la cinematica unui pendul (1 – PC; 2 – traductor rezistiv de deplasare; 3 – pendul fizic; 4 – sursă de alimentare de c.c.).
Fig. 1.174 Stand experimental pentru achiziția de date asistată de calculator
Construcția instrumentului virtual pentru achiziția de date presupune introducerea în diagrama bloc a subVI-lor specifice componentelor hardware. În figura 4.175 se prezintă secvența 1 din diagrama bloc în care au fost incluse subVI-le pentru configurarea plăcii de achiziție ADLink 8216 (8216 Config) și configurarea conexiunii cu PC-ul (ADLink Config).
a)
b)
Fig. 1.175 Placa de achiziție ADLink 8216 într-un instrument virtual cu LabView
Panoul frontal al instrumentului virtual construit este prezentat în figura 4.176.
Fig. 1.176 Panoul frontal al instrumentului virtual
Prin deschiderea casetei 8216 Config (fig.4.175b) se poate realiza configurarea plăcii:
Base Address – este adresa portului I / O a plăcii;
A/D Channel Config – configurează modul intrare A/D. Valoarea “1” selectată desemnează modalitatea “single-ended” iar valoarea “2” desemnează modalitatea “diferențială”. Acest aspect trebuie luat în considerare în momentul conectării la placa de bază;
IRQ – consemnează transferul de date sau stop DMA;
DMA – este utilizat pentru transferul DMA;
Error In și Error Out – consemnează printr-un cod specific existența unor erori;
Card Number – intervalul de valori 0 – 16 indică inițializarea plăcii. Valoarea terminalului de ieșire este utilizată de alte subVI-uri – ACLS –LabView.
Diagrama noului VI se complectează cu subVI – uri necesare din setul de care se dispune: AI Cont Config, AI Cont Read Multiple Channels, AI Cont Read Single Channel, AI Multiple Scale, AI Read Channel Voltage, AI Read Multiple Channels, AI Read Single Channel etc. oferite de ADLink pentru lucrul cu LabView. Mediul de lucru LabView dispune de biblioteci de drivere pentru astfel de componente de la o serie de firme constructoare de echipament de achiziție. În același timp diagrama bloc a fost construită pe baza instrumentelor, controalelor și funcțiilor cu caracter general, disponibile în LabView.
În figura 4.176 se prezintă un fragment din secvența 2 a diagramei bloc pentru cazul prezentat în care s-a introdus subVI-ul necesar ADLink Conti. AI pentru achiziția continuă a unui semnal analogic.
Fig. 1.177 Un nou subVI 8216 în diagrama bloc
Concluzii
Spațiul relativ restrâns, care a putut fi oferit pentru prezentarea softwere-lui LabVIEW, a condus la prezentarea elementelor strict necesare pentru definirea instrumentației virtuale și a modului de construcție a acestuia.
Alte funcții oferă posibilitatea prelucrării avansate a semnalelor achiziționate:
Funcții pentru lucrul cu forme de undă (Functions/Programming / Waveform): construcția unei forme de undă (Build Waveform), .., conversie A / D (Analog to Digital), conversie D / A (Digital to Analog), …, lucru cu fișiere I / O etc.;
Funcții pentru simplificarea realizării raportului (Functions/Programming Report generation);
Funcții pentru controlul unei aplicații (Functions/Programming/Application Control);
Funcții pentru lucru cu instrumente și interfețe (Functions / Instrument I/O): drivere pentru instrumente (Instr. Drivers), interfețe GPIB, Serial etc.;
Funcții pentru calculul matematic (Functions / Mathematics): algebră lineară cu matrici și determinanți (Linear Algebra), calcul statistic (Probability & Statistics), valori medii (Mean), deviație standard și varianță (StdDeviation and Variance), histograme;
Manipularea semnalelor (Functions /Express/ Signal Manipulation): multiplexarea semnalelor (Merge Signals), …, selectare semnal (Select Signals), releu (Relay), extragerea unor caracteristici (Extract Portion), ..etc.;
Funcții pentru procesarea semnalelor (Functions/Signal processing).
Exemplele introduse în conținutul capitolului permit proiectantului de instrumentație virtuală de verifica modalitățile de lucru dar și de a descoperi și dezvolta alte variante de instrumente virtuale.
Prin domeniul abordat și capabilitățile deosebite pentru modelare – simulare și achiziție de date programul LabVIEW reprezintă o unealtă eficientă pentru un viitor specialist în domeniul mecatronic. Acesta are posibilitatea de a verifica în mod rapid diferența între un model matematic teoretic și cel real dezvoltat prin identificarea parametrilor.
Instrumentație virtuală cu VEE-Agilent
Introducere
VEE Agilent este un mediu de programare grafică pentru aplicații de măsurări și testări precum și construcția interfețelor operator.
VEE oferă multiple avantaje în dezvoltarea testelor: productivitate deosebită și ușurință în exploatare, gamă largă pentru instrumentație I / O pentru controlul diverselor compenente ale sistemelor de achiziție: interfețe seriale, GPIB, LAN, plăci plug-in, instrumente de măsurare etc. În plus VEE permite lucru și cu alte limbaje uzuale C/C++, Visual Basic, Pascal și Fortran […], […].
Elemente generale privind capabilitatea sistemului
Lansarea programului respectă principiile clasice de lucru:
din icon-ul specific programului;
din Start / All Programs / Agilent VEE Pro 7.5 / VEE Pro7.5.
Interfața utilizator a programului cuprinde (fig.4…):
bara de meniu orizontală 1 – care oferă fie facilitățile clasice (File, Edit, View, Help,..) fie facilitățile specifice aplicației (Debug, Flow, Device, Diplay, etc..);
bara de meniu orizontală 2 – care oferă de asemenea facilități de lucru sub Windows (Save, Print,…) și facilități ale aplicației (Step Into, Step Over,…, Show Execution Flow, …Instrument Manager,…);
caseta 3 – pentru explorarea programului (Program Explorer) care permite vizualizarea ierarhică a acestuia;
caseta 4 – Properties – permite vizualizarea obiectelor incluse în program precum și setarea unor parametri ai acestuia;
caseta 5 – destinată dezvoltării unei aplicații.
Fig. 1.178 Interfața utilizator a programului VEE
Construcția instrumentului virtual se bazează pe diverse obiecte cu funcții specifice pentru control, vizualizare, prescrire de date etc. Un obiect dorit se alege prin deschiderea meniului derulant al clasei de obiecte din bara de meniu orizontală și poziționarea lui în zona de lucru. Clasele de obiecte se referă la:
fluxul de date (Flow) – definirea fluxului de date, condiționări, lansare, etc. : Start, IF/Then/Else/, Conditional, Jonction, Do, Gate,…;
procedee / mijloace (Device) – formule, MatlabScript, User Object, .., Shift Register;
sistem (System) – oferă posibilitatea lucrului cu directoare, fișiere, căi, utilizatori, etc.;
intrare / ieșire (I / O) – oferă posibilitătile de interfațare, de gestionare a instrumentelor, etc.;
informații / date – (Data) – selecție control, casetă dialog, constante: Selection control, Dialog Box, Constant, …;
indicatoare (Display) – permit vizualizarea datelor / informațiilor alfanumerice, grafice: AlphaNumeric, Indicator (Meter, Tank, Color Alarm,..), XY Trace, ..;
Pentru fiecare obiect selectat și inclus în pagina de lucru pot fi vizualitate proprietățile acestuia și particularizate conform utilizatorului (culoare, nume,..)(fig…).
Fig. 1.179 Obiect, icon și proprietăți
Fiecărui obiect îi este atașată un meniu derulant care oferă posibilitatea accesării unor facilități cu aspecte generale și pentru particularizarea parametrilor de lucru ai obiectului (fig….). Fiecare din etichetele Xname, Yname și Trace1 “ascund” buton de comandă pentru deschiderea casetelor de dialog aferente (fig.4….b).
În mod asemănător cu lucrul în LabView, obiectele introduse în pagina de lucru se conectează prin linii care modelează căile de transfer a informațiilor.
Fig. 1.180 Înregistratorul X-Y și meniul derulant (a); caseta de dialog (b)
În figura …se prezintă un instrument virtual pentru vizualizarea rezultatului unui calcul în corespondență cu o expresie de calcul. S-au utilizat: obiectul Int32 pentru precizarea valorii variabilei A, obiectul Formula în care s-a tastat expresia de calculat și obiectul pentru vizualizarea rezultatului numeric AlphaNumeric.
Fig. 1.181 Instrument virtual pentru calcul numeric
În figura ….se prezintă instrumentul virtual pentru simularea unui instrument de măsurare numeric. Instrumentul virtual are în componență panoul frontal compus din butoane, display, indicatoare (asemănător cu panoul frontal din LabView). Structura internă a instrumentului virtual este disponibilă în caseta de vizualizare Program Explorer (fig….).
Fig. 1.182 Instrument virtual cu panou frontal
În Program Explorer este posibilă și vizualizarea conexiunilor interne ale instrumentului virtual. Acest lucru corespunde cu diagrama bloc din cazul VI-lor construite în mediul LabVIEW. Principiul de construcție păstrează și modul de utilizare a etichetei cu numele obiectlui.
a)
b)
Fig. 1.183 Structura instrumentului virtual și conexiunile interne pentru nivelul Log Data
Concluzii
VEE este unul din programele cu licență aflate în dotarea Laboratorului de Senzori și Actuatoare a Departamentului de Mecatronică (alături de LabView 8.2, ControlDesk, Matlab 7, IMAQ).
Prin facilitățile oferite, VEE este extrem de util în instruirea specialiștilor din domeniu în instrumentația virtuală și achiziție de date. În cadrul laboratorului există o serie de instrumente Agilent astfel că este posibilă analiză modului de configurare a acestora în mediul VEE și LabView.
În plus, program VEE permite realizarea unei paralele cu celelalte medii disponibile în cadrul laboratorului și însușirea logică a aspectelor comune.
Instrumentație virtuală cu dSPACE
Introducre
SPACE Simulator oferă o posibilitate completă de control a unui experiment. ControlDesk se constituie într-o interfață cu utilizări multiple (interfață utilizator, generarea instrumentelor virtuale, preconfigurarea layout-uri pentru aplicații HIL etc.).
Componenta software oferită de firma dSPACE este însoțită de ofertele generoase hardware astfel încât să se poată atinge scopul urmărit: achiziție și control.
Componenta software a fost proiectată inițial pentru lucru în asociere cu mediul Matlab / Simulink. În ultima perioadă alte programe puternice (LabView, Dymola, 20SIM) pentru modelare / simulare au dezvoltat facilități pentru accesarea componentelor dSPACE
Instrumentația virtuală în ControlDesk
Lansarea programului ControlDesk (pe principiile clasice de lucru sub Windows) conduce la deschiderea interfeței utilizator prezentată în figura 4…Se remarcă 4 zone:
1 – zona de unealtă (Tool Window). Este posibilă accesarea a trei controale atașate acestei zone: Log Viewer (vizualizare mesaje, erori, legături); Interpretor (permite utilizarea mediului de programare Python pentru ControlDesk); File Selector (permite selectarea fișierului dorit)
Fig. 1.184 Interfața utilizator
2- zona navigator – oferă posibilitatea selectării a trei domenii: parte de experiment (Experiment); instrumentație (Instrumentation) care deschide layout-ul curent de lucru; platforma (Platforma) care permite selectarea platformei de lucru (Simulink, sistemul local).
3 – zona layout;
4 – zona de selectare a instrumentelor de lucru. Având în vedere scopul propus în acest subcapitol vom aborda doar două categorii dintre instrumentația disponibilă (fig.4…): instrumentele virtuale (Virtual Instruments) și instrumentele pentru achiziția de date (Data Acquitition)
Fig. 1.185 Caseta cu instrumentele disponibile în ControlDesk
Construcția interfeței grafice pentru utilizator presupune selectarea unei noi pagini de lucru: File >New > Layout. În pasul următor (dacă nu este încă vizibil) se validează vizualizarea selectorului de instrumente: View > Controlbars > Instrument Selector.
Pe principiul clasic se selectează din caseta instrumentelor (cu butonul stâng al mouse-lui) instrumentul dorit și se dimensionează la valoarea dorită în pagina de lucru. Icon-ul rezultat conține aspectul grafic care îl caracterizează și o zonă de etichetă pentru înscrierea numelui (fig.4…). Un clic cu butonul drept al mouse-lui în zona iconu-lui deschide meniul derulant din care se pot selecta facilitățile dorite.
Fig. 1.186 Instrument și meniul derulant
Selectarea opțiunii Properties permite deschiderea casetei de dialog cu o multitudine de facilități (fig.4…)
Fig. 1.187 Instrument și caseta de proprietăți
Când se generează unn layout asociat unui experiment orice variabilă din simulink se poate lega modelului creat. La construcția modelului Simulink sunt generate două tipuri de fișiere: de descriere a variabilei – Variable Description File (*.trc) și fișier de desciere a sistemului – System Description File (*.sdf). Selectarea opțiunii Highlight Variables din meniul derulant al instrrumentului permite vizualizarea grafului variabilelor și lista acestora (fig.4…).
Fig. 1.188 Vizualizarea variabilelor
Rezultatele experimentului se pot salva pe un suport sau se pot vizualiza grafic prin asocierea unui instrument grafic de plotare la instrumentul virtual creat.
Pentru configurarea programului ControlDesk refritor la stocarea informației din experiment se selectează caseta Capture Settings din Data Acquisition. Aceasta casetă permite selectarea variabilelor care se vor prelua, regimul de lucru. Pe lângă instrumentele numerice introduse în panoul instrumentului virtual se poate selecta și componenta grafică Data Acquisition / PlotterArray. La introducerea în pagina de lucru a acestui instrument, vom avea doar un cadru gol. Deschiderea meniului derulant și apoi a opțiunii Properties va conduce la deschiderea casetei de dialog asociată acestui instrument (fig.4…). Este posibilă astfel particularizarea zonei de plotare deupă dorința utilizatorului.
Fig. 1.189 Instrumentul de plotare și caseta de dialog asociată
În final se obține panoul corespunzător instrumentului virtual asociat experiemntului vizat (fig.4…).
Fig. 1.190 Instrument virtual creat în ControlDesk /dSPACE
Concluzii
Construcția instrumentului virtual în ControlDesk/dSPACE are aspecte asemănătoare cu LabView dar și diferențe de abordare. Împortant de reținut este disponibilitatea acestui softwere pentru controlul sistemelor pornind de la achiziția realizată și modelul sistemului construit în Matlab/Simulink.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: INTRODUCERE IN INSTRUMENTAȚIA VIRTUALĂ Introducere Prin instrumentația virtuală se înțelege facilitatea / modalitatea oferită de un computer dotat cu… [310588] (ID: 310588)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
