Numaratorul Universal Realizat Prin Instrumentatie Virtuala
Numărătorul universal realizat prin instrumentație virtuală
Cuprins
CAPITOLUL I
1. Introducere
1.1. Obiectivele lucrării
1.2. Numărătorul universal. Prezentare generală
1.3. Schema bloc a unui numărător universal. Descrierea funcționării
1.4. Programarea grafică. Mediul de programare LabVIEW
CAPITOLUL II
2. Numărător universal realizat în LabVIEW
2.1. Prezentare generală
2.2. Blocurile și structurile utilizate în diagrama bloc
2.2.1. Bucla Do-While (While Loop)
2.2.2. Bucla FOR (For Loop)
2.2.3. Bucla de selecție (Case)
2.2.4. Blocuri de comparare
2.2.5. Blocuri logice
2.2.6. Constanta BOOLEANĂ
2.2.7. Constanta numerică
2.2.8. Operații algebrice
2.2.9. Blocul SELECT
2.2.10. Blocul Build Waveform
2.2.11. Blocul Get Waveform Components
2.2.12. Blocul Basic Function Generator (Generator de funcții)
2.2.13. Blocul Unbundle
2.2.14. Blocul Bundle
2.2.15. Blocul Get Waveform Subset
2.2.16. Blocul Waveform Scale and Offset
2.3. Controalele și indicatoarele de pe panoul de control
2.3.1. Controalele
2.3.2. Indicatoarele
CAPITOLUL III
3. Funcționarea programului
3.1. Generarea semnalelor de intrare
3.2. Numărarea semnalelor
CAPITOLUL IV
4. Concluzii și sugestii
Anexa 1 – Panoul Frontal
Anexa 2 – Diagrama Bloc
Anexa 3 – Sistem achiziție date wireless
Bibliografie
CAPITOLUL I
Introducere
Obiectivele lucrării
În această lucrare se va creea un instrument virtual care poate înlocui cu succes funcționarea unui numărător universal tradițional, ca și aparat de măsură al unor semnale electrice. Acest numărător virtual poate fi utilizat în diferite aplicații practice, pentru analizarea unor semnale electrice, fie simulate, fiind și cazul acestei lucrări, fie achiziționate cu ajutorul unui modul de achiziție date conectat la calculator.
Tot în cadrul acestei lucrări se dorește să se facă mai bine înțeles conceptul de instrument virtual, creat într-un mediu de programare grafică, și beneficiile pe care le oferă utilizarea acestui tip de instrument, pe post de aparat de măsură, fie că acesta este utilizat de către ingineri sau personal cu profil tehnic la locul de muncă, fie de către profesorii și studenții universitari în cadrul laboratoarelor. Deasemenea, putem spune că orice instrument virtual printre care și numărătorul universal, poate fi folosit și pentru generarea virtuală a semnalelor de diferite tipuri, care se doresc a fi analizate ulterior în aplicațiile educative, în special în cadrul laboratoarelor universitare de profil tehnic, pentru familiarizarea utilizatorului cu acest aparat și înțelegerea capabilităților sale înainte de folosirea lui în realitate.
Numărătorul universal. Prezentare generală
Numărătorul universal a fost primul aparat numeric utilizat pe larg în domeniul măsurărilor numerice. Utilizând o tehnică relativ simplă, numărătorul universal permite măsurarea unui număr mare de parametri de timp, într-un interval foarte larg de valori și cu o exactitate remarcabilă. Exactitatea dovedită a acestui aparat se datorează faptului că erorile predominante sunt cele ale unui oscilator cu cuarț, a cărui stabilitate poate fi foarte bună.
Numărătorul universal este instrumentul care stă la baza aparatelor digitale utilizate pentru măsurarea timpului și a frecvenței, însă acesta este folosit și pentru determinarea altor mărimi caracteristice derivate de la aceste mărimi de bază.
Numărătorul universal permite, în general, măsurarea următoarelor mărimi:
frecvența;
perioada;
multiplii 10, 100 1000 și 10000 ai perioadei;
intervalul de timp dintre două impulsuri, pozitive sau negative, cu posibilitatea selectării individuale a fronturilor între care are loc măsurarea;
raportul a două frecvențe, precum și multiplii ai acestuia;
numărul de impulsuri aplicate aparatului între două acționări succesive ale unui comutator.
Măsurarea tuturor acestor mărimi se bazează pe numărarea unor impulsuri ale semnalului care se dorește a fi analizat, într-un anumit interval de timp impus de către impulsul de comandă, după cum putem să observăm în figura 1.1.
Figura 1.1. Principiul de funcționare al numărătorului universal
Pentru a avea o imagine de ansamblu al numărătorului universal ca și aparat de măsură fizic, prezentăm în figura 1.2. mai jos vederea din față, respectiv în figura 1.3. mai jos vederea din spate, al unui exemplu al acestui echipament.
Figura 1.2. Vedere din față al unui numărător universal
Figura 1.3. Vedere din spate al unui numărător universal
Exemplul prezentat în figurile 1.2. și 1.3. mai sus este un numărător universal de ultimă generație, performant, produs în prezent de către compania americană Keysight (fosta Agilent Technologies), companie care produce o gamă largă de intrumente de măsură. Numărătorul universal dat ca și exemplu face parte din seria 53200, mai exact are numele 53230A. Pe scurt, fară să intrăm în detaliu, prezentăm câteva mărimi caracteristice importante și care fac ca acest numărător să fie considerat performant și de ultimă generație : două canale de intrare de 350 MHz și un al treilea canal de intrare opțional de 6 sau 15 GHz ; rezoluția frecvenței de 12 digiți pe secundă și rezoluția intervalului de timp de 20 ps ; conectivitate diversă prin interfețe ca USB, Ethernet LAN, GPIB și nu în ultimul rând afișajul mare de tip LCD.
Schema bloc a unui numărător universal. Descrierea funcționării
Figura 1.4. Schema bloc a numărătorului universal
Oscilatorul constituie etalonul de frecvență care, împreună cu decadele de divizare a frecvenței, alcătuiesc baza de timp a numărătorului. La ieșirea acesteia se obțin impulsuri având perioada cunoscută cu mare precizie.
Aparatul are două intrări, notate cu A și B, care pot fi legate împreună sau nu, în funcție de mărimea care se măsoară . Semnalele aplicate intrărilor sunt amplificate și formate pentru a se obține impulsuri dreptunghiulare cu fronturi foarte bune.
Impulsurile care trec prin poarta principală sunt numărate de decadele de numărare. Rezultatul măsurării este transferat într-o memorie și apoi afișat pe dispozitivul de afișare. Dispozitivul de comandă coordonează funcționarea numărătorului.
În continuarea acestui subcapitol vom descrie cum se face măsurarea sau determinarea mărimilor reprezentative pentru un numărător universal:
a) Măsurarea frecvenței (funcția FA)
Semnalul de măsurat se aplică la intrarea A și, după amplificare și formare, este adus la intrarea comutatorului logic, care îi permite trecerea către ieșirea 1, deci către intrarea de numărare a porții principale.
Prin intermediul ieșirii 2 a comutatorului logic, bistabilul porții principale este menținut în "1" (deci poarta principală este deschisă) pe o durată egală cu perioada semnalului furnizat de baza de timp (T2) și adus la intrarea comutatorului logic. Astfel, pentru T2=1s conținutul numărătorului va reprezenta valoarea în Hz a frecvenței. Rezoluția măsurării este în acest caz de 1Hz. Rezoluția măsurării se poate determina simplu :
Rezoluția lui Nx este 1, deci rezultă :
Pentru celelalte valori ale lui T2 (10s, 0,1s sau 10ms) se obțin multipli sau submultipli zecimali ai frecvenței, adică diferite rezoluții după cum urmează 0,1Hz, 10Hz și, respectiv, 100Hz.
b) Măsurarea perioadei (funcția TB)
Semnalul de măsurat se aplică la borna B. După amplificare și formare, acesta este adus la intrarea comutatorului logic, care îi permite trecerea către ieșirea 2. Bistabilul porții principale este menținut pe "1" pe o durată egală cu perioada TB a semnalului de măsurat.
Semnalul furnizat de baza de timp este adus la ieșirea 1, adică la intrarea de numărare a porții principale. Astfel, numărătorul numără, pe durata unei perioade a semnalului de măsurat, impulsurile furnizate de baza de timp. De exemplu, pentru f1=1MHz conținutul numărătorului va reprezenta perioada în s a semnalului de măsurat. Rezoluția măsurării este în acest caz de 1s. Celelalte valori posibile ale frecvenței f1 (10MHz, 100kHz și 1kHz) determină diferite rezoluții (0,1 s, 10s și, respectiv, 1ms).
c) Măsurarea multiplului perioadei (funcția NTB)
Funcționarea este similară cu cea de la măsurarea perioadei, cu deosebirea că impulsul dreptunghiular aplicat intrării de comandă a porții principale are durata egală cu NTB, unde N este multiplul selectat al perioadei semnalului de măsurat. Acest impuls se obține prin divizarea, cu ajutorul bazei de timp, a frecvenței semnalului de măsurat. Ca urmare, valoarea afișată – care reprezintă multiplul N al perioadei – trebuie împărțită la N pentru a obține valoarea perioadei. Utilitatea funcției NTB va rezulta mai jos.
d) Măsurarea intervalului de timp (funcția TA-B)
Numărătorul poate măsura intervalele de timp dintre fronturile a două impulsuri aplicate intrărilor A și B. Măsurarea se poate efectua asupra unor impulsuri provenite de la aceeași sursă (comutatorul COM/SEP în poziția COM) sau de la surse diferite (poziția SEP). Semnalul aplicat la intarea A determină începutul măsurării, iar cel aplicat la intrarea B determină sfârșitul măsurării. În acest scop, frontul selectat (pozitiv sau negativ) al impulsului de la intrarea A pune bistabilul porții principale pe "1", iar frontul selectat al impulsului de la intrarea B îl readuce pe "0". În acest fel poarta principală este deschisă pe durata delimitată de fronturile selectate.
La intrarea de numărare a porții principale se aplică semnalul furnizat de baza de timp, corespunzător rezoluției dorite.
Comutatoarele _|_/_|_ ale intrărilor A și B se poziționează în funcție de fronturile care trebuie să delimiteze intervalul de măsurat. Astfel, pentru măsurarea duratei ti a unui impuls pozitiv se pun A _|_ și B _|_ (figura 1.5 a), iar pentru măsurarea duratei tp a pauzei se pun A _|_ și B _|_ (figura 1.5 b).
Figura 1.5. Măsurarea duratei impulsului (a) și a pauzei (b)
e) Măsurarea raportului a două frecvențe și a multiplului acestuia (funcția NfA/fB)
Pentru măsurarea raportului a două frecvențe, la intrarea de comandă se aplică, prin intermediul comutatorului logic, un impuls dreptunghiular având durata egală cu perioada semnalului B, furnizat de baza de timp, iar la intrarea de numărare se aplică semnalul cu frecvența mai mare.
Pentru măsurarea multiplului N al raportului celor două frecvențe, impulsul dreptunghiular aplicat intrării de comandă are durata egală cu N perioade ale semnalului aplicat intrării B.
Aplicând relația amintită mai sus : , în care f1 = fA, iar T2 = NTB, pentru Nx se obține:
Programarea grafică. Mediul de programare LabVIEW
Mediile de programare grafică înlătură necesitatea cunoașterii expresiilor, regulilor semantice caracteristice unui limbaj de programare. În locul descrierii algoritmului de calcul sub forma unui set de instrucțiuni în format text, într-un mediu de programare grafică algoritmul este descris desenându-l sub forma unei scheme logice. Dispare astfel necesitatea memorării unor nume de instrucțiuni și a unor reguli complicate de sintaxă, iar riscul de apariție a erorilor de programare și timpul dezvoltării aplicației scade semnificativ. Modul în care algoritmul este descris este astfel mult mai intuitiv, un program putând fi înțeles mult mai ușor și de către alți programatori decât cel care l-a conceput.
Avantaje aduse de utilizarea programării de tip “G” sunt: simplitatea construirii unei interfețe cu utilizatorul complexe, ergonomice și cu aspect profesional, numărul mare de funcții și proceduri uzuale pe care le pune la dispoziția programatorului, începând de la funcțiile pentru prelucrarea textelor și șirurilor de valori, continuând cu procedurile complexe de lucru cu matrici din algebra liniară și până la procedurile matematice avansate de calcul probabilistic, calcul numeric diferențial și integral, calcule de regresie și interpolare.
După această scurtă introducere în programarea grafică, vom prezenta în continuarea acestui subcapitol mediul de programare grafică LabVIEW, care face și subiectrogramare. În locul descrierii algoritmului de calcul sub forma unui set de instrucțiuni în format text, într-un mediu de programare grafică algoritmul este descris desenându-l sub forma unei scheme logice. Dispare astfel necesitatea memorării unor nume de instrucțiuni și a unor reguli complicate de sintaxă, iar riscul de apariție a erorilor de programare și timpul dezvoltării aplicației scade semnificativ. Modul în care algoritmul este descris este astfel mult mai intuitiv, un program putând fi înțeles mult mai ușor și de către alți programatori decât cel care l-a conceput.
Avantaje aduse de utilizarea programării de tip “G” sunt: simplitatea construirii unei interfețe cu utilizatorul complexe, ergonomice și cu aspect profesional, numărul mare de funcții și proceduri uzuale pe care le pune la dispoziția programatorului, începând de la funcțiile pentru prelucrarea textelor și șirurilor de valori, continuând cu procedurile complexe de lucru cu matrici din algebra liniară și până la procedurile matematice avansate de calcul probabilistic, calcul numeric diferențial și integral, calcule de regresie și interpolare.
După această scurtă introducere în programarea grafică, vom prezenta în continuarea acestui subcapitol mediul de programare grafică LabVIEW, care face și subiectul acestei lucrări.
LabVIEW (Laboratory Virtual Instrumentation Engineering Workbench) este un mediu de dezvoltare pentru limbajul de programare vizuală dezvoltat de corporația americană National Instruments, corporație cu un domeniu internațional de operațiune și cu sediul central în Austin, Texas (vezi sigla National Instruments, pe scurt NI, în figura 1.6.).
Figura 1.6. Sigla corporației National Instrumets
Mediul de programare grafică LabVIEW a simplificat sarcinile de programare astfel că realizarea unui program se face prin desenarea schemei logice a programului, renunțându-se la utilizarea instrucțiunilor, prin folosirea de simboluri grafice sugestive.
Mediul de programare LabVIEW (vezi sigla în figura 1.7.) și-a început istoria în anul 1986 când a fost lansat, inițial, pentru Apple Macintosh. De-a lungul timpului LabVIEW a lansat mai multe versiuni și îmbunătățindu-se de la an la an, făcând astfel ca în anul 2015 să ajungă la versiunea LabVIEW 2014 SP1 care poate să ruleze pe platformele Windows, Mac OS și Linux. Acest mediu de programare este frecvent utilizat pentru achiziție de date, controlul unor instrumente, automatizări industriale și pentru crearea unor aplicații educative de laborator.
Figura 1.7. Sigla LabVIEW de la National Instrumets
Programele realizate în LabVIEW se numesc instrumente virtuale (în engleză Virtual Instruments, de unde rezultă abrevierea VIs) ceea ce reprezintă faptul că aceste programe simulează funcționarea unor instrumente fizice, ca de exemplu un aparat de măsură. Instrumentele virtuale pot fi construite pentru a fi utilizate în realizarea altor instrumente virtuale (VI), astfel aceste instrumente virtuale primesc denumirea de sub-instrumente virtuale (subVI), ceea ce este de fapt o subrutină.
Instrumentele virtuale create cu ajutorul LabVIEW se salvează sub forma unor fișiere *.vi ce sunt specifice pentru mediul de programare dezvoltat de National Instruments.
Pentru a putea construi instrumente virtuale se utilizează paletele de unelte, barele de comenzi, precum și meniurile panoului frontal și ale diagramei, pentru a plasa obiecte, respectiv terminale, constante și funcții asociate. Un instrument virtual conține trei tipuri de “ingrediente”: 1 – panoul frontal, 2 – diagrama bloc, 3 – pictograma și conectorul, iar în cele ce urmează vom face o introducere a acestor elemente pentru o mai bună familiarizare cu mediul de programare prezentat.
Panoul frontal este interfața dinspre utilizator a instrumentului virtual și elementul de bază al programelor elaborate în LabVIEW deoarece cu ajutorul său se realizează introducerea sau extragerea datelor în/din mediul de programare. În panoul frontal, comenzile care implică intervenția utilizatorului sunt simplificate, fiind preferate elementele de comandă și afișare grafice, denumite controale sau indicatoare. Putem vedea în figura 1.8. de mai jos un exemplu de panou frontal (generarea unui semnal electric virtual).
Figura 1.8. Exemplu de panou frontal
Controalele reprezintă intrările în instrumentul virtual, fiind cele care introduc datele și cu care practic controlăm instrumentul virtual. Controalele sunt în general butoane rotunde, butoane de apăsat, cadrane, și alte mecanisme de intrare. Pe de altă parte, sunt considerate ieșiri ale instrumentului virtual cele care comunică operatorului datele rezultate din proces și acestea poartă numele de indicatoare sau elemente de afișare. Indicatoarele sunt de obicei de tipul afișaj grafic, LED-uri, precum și alte tipuri de dispozitive de afișare. Putem vedea în figura 1.9. de mai jos câteva exemple de controale pe panoul frontal, iar în figura 1.10. câteva exemple de indicatoare.
Figura 1.9. Exemple de controale pe panoul frontal
Figura 1.10. Exemple de indicatoare pe panoul frontal
Diagrama bloc însoțește panoul frontal și reprezintă, de fapt, o schemă prin care programatorul descrie algoritmul după care aplicația va efectua calculele și raționamentele necesare pentru preluarea și prelucrarea datelor (vezi exemplul simplu din figura 1.11.). Diagrama bloc poate fi imaginată ca fiind un cod sursă, așa cum este denumit în limbajele de programare clasică. Componentele sale reprezintă nodurile programului, precum structurile de decizie, operatorii matematici, funcțiile de prelucrare logice etc. Între componente, legăturile se realizează prin fire (wire) care descriu fluxul de date în interiorul instrumentului virtual creat de program.
Figura 1.11. Exemplu simplu al unei diagrame bloc
Pictograma și Conectorul este elementul care transformă un instrument virtual într-un obiect pentru a fi folosit ulterior ca pe o subrutină în diagrama bloc a altor instrumente virtuale (vezi exemplul în figura 1.12.). Cu alte cuvinte, după ce construim un instrument virtual (VI) îl putem utiliza sub forma unui subVI, apelându-l din interiorul unui alt instrument virtual. Putem spune că pictograma și conectorul corespund în mod direct funcției din limbajele de programare bazate pe text.
Fiecare instrument virtual are afișat pictograma în partea dreaptă sus, atât pe panoul frontal, cât și în fereastra cu diagrama bloc. Aceasta este o reprezentare grafică a unui VI printr-un simbol care poate fi personalizat cu elemente de grafică și/sau text.
Conectorul sau panoul conector este un set de terminale pe care le putem folosi pe post de intrări și ieșiri atunci când utilizăm subVI-ul creat. Făcând din nou o comparație cu limbajele de programare bazate pe text, putem spune ca acesta corespunde listei de parametrii ai unui apel de funcție.
Figura 1.12. Pictograma și conectorul (panoul conector)
CAPITOLUL II
Numărător universal realizat în LabVIEW
Prezentare generală
Instrumentul virtual creat permite generarea unui semnal periodic de tipul sinus, dreptunghi, triunghi sau dinte de fierăstrău pe cele două canale de intrare și vizualizarea semnalelor pe un afișaj de tip Waveform Chart. După setarea parametrilor, numărătorul virtual analizează semnalele de intrare și numără impulsurile, frecvența, perioada și raportul frecvențelor semnalelor alese la cele două intrări ale numărătorului. Toate aceste date se pot vizualiza cu ajutorul indicatoarelor de diferite tipuri care se găsesc pe panoul frontal, interfața cu utilizatorul.
Generarea unui semnal de intrare virtual este necesară în lipsa unei plăci de achiziție date, componentă hardware care se poate achiziționa de pe piața internațională. Această placă de achiziție date este formată dintr-un ansamblu de sensori care preiau semnalul dorit a fi analizat și pe care îl transmit mai departe la dispozitivul ce include un convertor analog-digital. Astfel se face traducerea semnalului preluat din analog în digital pentru a fi afișat și analizat pe un computer. Desigur, este necesar și un mediu software care intermediază comunicarea, prelucrarea și controlul tuturor acestor componente hardware și a datelor achiziționate, iar în cazul de față vorbim de mediul de programare grafică LabVIEW.
În continuarea acestei lucrări vom prezenta varianta de numărător universal, ca aparat electronic de măsurat, realizat prin instrumentație virtuală și care analizează un semnal generat virtual, de diferite tipuri și cu parametrii impuși de utilizatorul instrumentului virtual. Interfața cu utilizatorul, adică panoul frontal, se poate vedea în Anexa 1 – Panoul Frontal care este atașată acestei lucrări. O altă anexă importantă este cea care prezintă diagrama bloc, cu alte cuvinte prezintă ce se întâmplă în spatele panoului frontal, iar acest lucru îl putem vedea în Anexa 2 – Diagrama Bloc.
Blocurile și structurile utilizate în diagrama bloc
Diagrama bloc este alcătuită din mai multe blocuri și structuri care sunt conectate împreună și formează un instrument virtual cu funcționare asemănătoare unui numărător universal real. În următoarele subcapitole sunt prezentate blocurile, structurile si funcțiile care alcătuiesc diagrama bloc.
Bucla Do-While (While Loop)
Bucla while este o structură ce repetă codul din interiorul ei până când valoarea booleană transmisă terminalului condițional ia valoarea FALS.
– terminal iterativ
– terminal condițional
Fig 2.1 Instrucțiunea Do-While
Instrumentul virtual verifică starea mărimii de intrare în terminalul condițional la fiecare terminare a execuției unui ciclu complet al buclei. Daca valoarea de la terminalul condițional devine FALS, bucla va fi executată încă un ciclu. Terminalul iterativ i reprezintă o mărime care furnizează numărul iterației curente. Valoarea inițială a terminalului iterativ este zero.
Bucla FOR (For Loop)
O buclă For execută de un număr N de ori porțiunea de diagramă pe care o conține. O execuție a porțiunii interne de diagramă poartă numele de iterație. Bucla For are un terminal N, la care trebuie legată o valoare care să specifice numărul de iterații pe care bucla urmează să le execute. În interiorul buclei se află un terminal numărător i care generează o valoare reprezentând indicele iterației curente. Indicii iterațiilor sunt numerotați începând cu valoarea 0, astfel încât ultima iterație executată de către bucla For va avea indicele N-1.
Figura 2.2 Bucla FOR
Bucla de selecție (Case)
Structura cauzală (Case). La dispunerea sa în diagramă, o structură Case conține două ferestre (True si False), fiecare dintre acestea cu propriul flux de date. Pe conturul structurii se află dispus un terminal selector (de culoare verde, conținând semnul întrebării). Structura Case va executa doar una dintre cele două ferestre, în funcție de valoarea booleană (True sau False) conectată la terminalul selector.
Figura 2.3 Structura CASE (exemplu de adunare)
Daca la terminalul selector al unei structuri Case, în locul unei valori booleene, se conectează o valoare numerică, numele ferestrelor se vor modifica automat din True si False în 0 si 1. În continuare, structura va executa fereastra al cărei nume coincide cu valoarea numerică ce ajunge la terminalul său selector. Deoarece structura Case nu va putea conține atâtea ferestre câte valori numerice pot ajunge la terminalul său selector, una dintre ferestre trebuie declarată drept fereastra implicită (Default) și va fi executată atunci când valorii ajunse la terminalul selector nu îi corespunde nici un nume de fereastră.
Structura de tip Case este similară cu instrucțiuni de tip switch sau declarații de tipul if, than, else din programarea bazată pe text. Fiecare structură Case conține o subdiagramă. Structura depinde de valoarea terminalului de selecție. Acesta poate fi de tip:, boolean, șir de caractere sau numeric. Structurile se pot adăuga, duplica, șterge, rearanja.
Blocuri de comparare
Returnează valoarea logica TRUE dacă intrările x și y satisfac condiția impusă de bloc. Blocurile utilizate în program sunt: Greater or Equal (mai mare sau egal), Less (mai mic).
Figura 2.4 Blocuri de comparare
a) Greater or Equal; b) Less
Blocuri logice
Implementează funcții logice între intrările x și y. Intrările x și y trebuie sa fie ambele de tip boolean sau numerice. Blocurile logice utilizate în program sunt: AND (poarta ȘI) și NOT (negare).
Figura 2.5 Blocurile logice
a) AND; b) NOT
Constanta BOOLEANĂ
Constanta booleană este un tip de date primitiv, ea poate să returneze valoarea TRUE (Adevărat) sau FALSE (Fals), valoare prestabilită de programator. În diagrama bloc acest tip de date este reprezentat printr-un fir verde.
Figura 2.6 Constanta BOOLEANĂ
Constanta numerică
Este o constantă reală de tip double (reprezentată pe 64 de biți) cu o precizie de aproximativ 15 digiți.
Figura 2.7 Exemple de constante numerice
Operații algebrice
În program sunt folosite următoarele blocuri care efectuează operații algebrice: Blocul Divide care calculează rezultatul împărțirii lui x la y și blocul Increment care adaugă valoarea 1 la valoarea intrării.
Figura 2.8 Operații algebrice
Blocul Divide; b ) Blocul Increment;
Blocul SELECT
Returnează valoarea conectată la intrarea t sau f în funcție de valoarea de adevăr a intrării s. Dacă s ia valoarea TRUE, blocul returnează valoarea conectată la terminalul t. Daca s are valoarea FALSE, blocul furnizează la ieșire valoarea conectată la terminalul f.
Figura 2.9 Blocul SELECT
Blocul Build Waveform
Creează sau modifică o formă de undă deja existentă. La intrarea Y se conectează valorile numerice ale unei forme de undă. Intrarea dt servește pentru introducerea valorii perioadei de eșantionare. La intrarea t0, se conectează o ștampilă de timp, în general constantă, care impune momentul de start al semnalului.
Figura 2.10 Blocul Build Waveform
Blocul Get Waveform Components
Returnează componentele unui semnal analogic introdus la intrare. Se specifică ce componente ale formei de undă se doresc a fi returnate prin alegerea terminalelor, în dreapta pictogramei. Este inversul blocului Build Waveform prezentat mai sus.
Figura 2.11 Blocul Get Waveform Components
Blocul Basic Function Generator (Generator de funcții)
Creează la ieșire o formă de undă în funcție de tipul semnalului selectat. Parametrii fiecărui semnal se pot introduce la intrările blocului.
Figura 2.12 Blocul Basic Function Generator
Blocul Unbundle
Împarte un cluster (grup de elemente) în fiecare din elementele sale individuale. La ieșirea sa găsim elementele în aceeași ordine în care se găsesc în cluster (grupul de elemente).
Figura 2.13 Blocul Unbundle
Blocul Bundle
Asamblează un cluster din elemente individuale. Acest bloc se mai poate folosi pentru a schimba valorile dintr-un cluster deja existent. Este inversul blocului prezentat mai sus.
Figura 2.14 Blocul Bundle
Blocul Get Waveform Subset
Returnează o parte dintr-o formă de undă în funcție de anumiți parametrii. La intrarea start/duration format avem un control de selecție de unde alegem Relative time(timp relativ) pentru a prelua din forma de undă introdusă la intrare o parte de semnal în funcție de durata introdusă la intrarea duration.
Figura 2.15 Blocul Get Waveform Subset
Blocul Waveform Scale and Offset
Acest bloc este utilizat în program pentru a introduce un decalaj (offset) formei de undă de la intrare în scopul de a se putea vizualiza, pe ecranul Waveform Graph de pe panoul frontal, toate semnalele nesuprapuse.
Figura 2.16 Blocul Waveform Scale and Offset
Controalele și indicatoarele de pe panoul de control
Controalele
Panoul frontal conține pentru fiecare canal de intrare câte patru controale numerice care modifică faza, factorul de umplere și parametrii eșantionării. Tot pentru fiecare canal de intrare mai este un control tip enumerare text de unde se alege tipul semnalului de intrare, un control tip dial care setează amplitudinea semnalului și un control tip knob care setează frecvența semnalului de intrare.
Pe panoul frontal mai există un control tip enumerare de unde se alege ce se vizualizează pe indicatorul Waveform Graph și alte trei controale cu care comandăm numărătorul: două controale tip enumerare pentru Gate time și Function și un buton de tip latch when pressed care îndeplinește comanda STOP atunci când este apăsat și are ca rol oprirea rulării programului. Controalele de pe panoul frontal sunt reprezentate în figura 2.17.
Figura 2.17. Controalele panoului frontal
Indicatoarele
Indicatorul de tip LED rotund funcționează pe baza principiului True sau False și este activat la valoarea logică True, atunci când culoarea sa devine verde deschis semnalizează că este selectată funcția în dreptul căreia se află LED-ul.
Figura 2.18. Indicator de tip LED
Indicatoarele de tip numeric ne indică valorile numerice ale frecvenței, perioadei și a numărului de impulsuri pentru fiecare semnal de intrare.
Figura 2.19. Indicator de tip numeric
Indicatorul Waveform Graph ne oferă posibilitatea vizualizării a trei semnale în același timp. Primul semnal, vizualizat cu culoarea galben, este semnalul de intrare furnizat de generatorul de funcții. Al doilea semnal, cel verde, este semnalul de comandă furnizat de baza de timp a numărătorului și ultimul semnal (culoarea roșu) este partea din semnalul de intrare de durată egală cu baza de timp.
Figura 2.20. Indicatorul Waveform Graph
CAPITOLUL III
Funcționarea programului
Funcționarea acestui instrument virtual se poate încadra în două etape, cea de generare a semnalelor folosite de numărător și cea de numărare și calcul pentru a determina numărul de impulsuri, frecvența și perioada semnalelor de intrare.
Generarea semnalelor de intrare
Semnalele de intrare sunt cele două forme de undă de la intrările A și B ale numărătorului. Acestea sunt generate de către blocul Basic Function Generator care are ca și intrări: Tip semnal, Frecvență, Amplitudine, Faza, Factor de umplere (pentru forma de undă dreptunghiulară), numărul de eșantioane #s și frecvența de eșantionare Fs. Toți acești parametrii sunt introduși de către utilizator de pe panoul frontal al instrumentului virtual. Se mai introduce un offset de 10V pentru semnalele de la cele două canale pentru ca acestea să se vizualizeze nesuprapuse cu restul semnalelor afișate pe indicatorul Waveform Graph.
Secvența de program care generează semnalele de intrare este prezentată în figura 3.1.
Figura 3.1. Generarea semnalelor de intrare
În cadrul programului se mai generează semnalul de comandă care este un impuls dreptunghiular simplu cu durata frontului crescător de 100 ms, 1 s și 10 s , această durată fiind setată de către utilizator de la selectorul Gate Time ce se găsește pe panoul frontal al instrumentului virtual. Semnalul de comandă este generat într-o buclă FOR, care execută de 1000 ori (în cazul de față) instrucțiunea din interiorul ei. Terminalul de iterație i are ințial valoarea 0, și este incrementat la fiecare execuție. Un impuls dreptunghiular simplu se generează prin compararea iterației i cu o valoare numerică, dată de durata frontului crescător. Dacă valoarea iterației i este mai mică decât valoarea duratei frontului crescător, la ieșire avem valoarea amplitudinii semnalului. Astfel se generează un semnal numeric, format din 1000 de eșantioane. Valoarea eșantioanelor se calculează conform relației:
unde yi reprezintă eșantionul curent și A reprezintă amplitudinea care în cazul nostru este setată la valoarea 2V pentru semnalul de comandă.
Valorile eșantioanelor se conectează la intrarea Y a blocului Build Waveform care ne furnizează la ieșire semnalul de comandă.
Secvența de program care generează semnalul de comandă este prezentată în figura 3.2. unde putem vedea toate elementele prezentate mai sus.
Figura 3.2. Generarea semnalului de comandă
Numărarea semnalelor
După generarea semnalului de intrare trebuie obținută partea din semnal care va fi supusă numărării, în funcție de cum setează utilizatorul baza de timp (Gate Time): 100 ms, 1s sau 10 secunde. Acest lucru se face prin trecerea semnalului de intrare prin blocul Get Waveform Subset. La intrarea start/duration format setăm Relative Time ca să achiziționăm o parte din semnal în funcție de cât timp avem introdus la intrarea duration, unde conectăm baza de timp. La intrarea start samples/time conectăm constanta numerică 0 care reprezintă timpul începerii achiziției semnalului. Semnalul achiziționat la ieșirea acestui bloc se împarte în două. Prima parte se conectează la blocul Waveform Scale and Offset care adaugă semnalului un decalaj de -20V pentru a se vizualiza, pe ecranul instrumentului virtual, nesuprapus cu celelalte semnale. A doua parte se conectează la blocul Get Waveform Components care ne furnizează la ieșirea Y valorile eșantioanelor ce vor servi ca și intrare pentru partea de program care numără impulsurile semnalului.
În figura 3.3. este prezentată secvența de program care realizează achiziția semnalului pentru numărarea impulsurilor.
Figura 3.3. Achiziția semnalului pentru numărare
Numărarea impulsurilor se face în cadrul unei structuri For. Valorile Y ale eșantioanelor se aduc în bucla For printr-o intrare cu auto-indexarea activată pentru a introduce pe rând în buclă valorile momentane ale eșantioanelor. Aceste valori sunt comparate pe rând cu valoarea decalajului (10 în acest caz) și de fiecare dată când valoarea lui Y este mai mare sau egală cu decalajul, poarta logică de comparare ne dă la ieșire valoarea logică TRUE care comandă blocul de incrementare cu +1 (poziționat într-o structură Case). Tot în același timp se face compararea în sens invers a valorilor lui Y cu valoarea decalajului, pentru a comanda pornirea numărătorului doar atunci când apare o perioadă nouă din semnal. Astfel de fiecare dată când începe o perioadă nouă din semnal se adună valoarea +1 la valoarea numărată înainte. Valoarea numărată precedent este reținută în bucla For cu ajutorul regiștrilor de deplasare care returnează la intrarea buclei valoarea calculată la ieșirea sa și care urmează să fie incrementată, sau nu, în pasul următor, în funcție de valorile logice calculate, în pasul precedent, care activează numărătorul pentru o nouă incrementare sau furnizează la ieșire aceeași valoare ca și la intrare. După terminarea numărării impulsurilor rezultatul este afișat pe indicatorul corespunzător de pe panoul frontal.
Secvența de program care realizează numărarea impulsurilor este dată în figura 3.4.
Figura 3.4. Numărarea impulsurilor
După ce s-au numărat impulsurile se poate calcula frecvența și perioada semnalului după formulele:
, unde N – numărul de impulsuri
ti – baza de timp
, unde T – perioada
f – frecvența
Pentru calcularea frecvenței și a perioadei în program se folosește blocul Divide (împărțire), iar secvența de program care le calculează este prezentată în figura 3.5.
Figura 3.5. Calcularea frecvenței și a perioadei
Raportul frecvențelor celor două semnale de la intrările canalelor A și B se face prin împarțirea frecvenței calculate pentru intrarea A la frecvența calculată pentru intrarea B. Acest calcul se face cu ajutorul blocului Divide (împărțire) și în program arată ca în figura 3.6.
Figura 3.6. Raportul frecvențelor semnalelor de la intrare
Semnalele utilizate în acest instrument virtual se vizualizează pe un indicator de tip Waveform Graph de pe panoul frontal. Pe ecran se pot vizualiza în același timp trei semnale pentru un canal de intrare din cele două: semnalul de intrare, partea din semnalul de intrare care este supusă numărării și semnalul de comandă. Pentru ca utilizatorul să poată vizualiza semnalele de pe al doilea canal de intrare s-a folosit o structură Case cu două cazuri: Semnal intrare A și Semnal intrare B , unde utilizatorul trebuie sa aleagă a doua opțiune de pe panoul frontal. În cadrul structurii Case se găsește blocul Build Array care are ca și intrări semnalele amintite mai sus. La ieșirea blocului avem o matrice formată din cele trei semnale prezentate mai sus și care diferă în funcție de cazul structurii Case.
Secvența de program care face posibilă vizualizarea semnalelor, folosite în instrumentul virtual, pe ecranul de tip Waveform Graph este prezentată în figura 3.7.
Figura 3.7. Adăugarea semnalelor la ecranul Waveform Graph
CAPITOLUL IV
Concluzii și sugestii
În finalizarea acestui proiect de diplomă am ajuns la ultimul capitol intitulat “Concluzii și sugestii” în care se urmărește să se facă un scurt rezumat la tot ce s-a prezentat pe parcursul capitolelor, asta pentru a putea prezenta în continuare concluziile și sugestiile.
Putem începe acest scurt rezumat cu câteva cuvinte despre importanța mediului de programare grafică, chiar dacă ideile pe parcursul capitolelor au fost prezentate într-o altă ordine. Programarea grafică într-un mediu de programare cum este LabVIEW poate înlocui cu succes, în multe cazuri, mediul de programare bazat pe text, în dezvoltarea unei aplicații, a unui instrument virtual. Pe lângă avantajele evidente pe care le aduce mediul de programare grafică, cum ar fi eliminarea necesității memorării unor nume de instrucțiuni și a unor reguli complicate de sintaxă, simplitatea construirii unei interfețe cu utilizatorul complexe, ergonomice și cu aspect profesional, numărul mare de funcții și proceduri uzuale pe care le pune la dispoziția programatorului, poate unul dintre avantajele importante pe care le mai aduce mediul de programare grafică este acela că este un mediu interactiv, plăcut de învățat și lucrat cu el. Astfel putem spune că mediul de programare grafică poate atrage programatorii începători, care în multe cazuri sunt “speriați” de necesitatea reținerii tuturor sintaxelor specifice mediilor de programare bazată pe text. În mediul de programare LabVIEW se pot salva anumite instrumente virtuale (VI) care ulterior pot fi apelate, asemănător cu apelarea funcțiilor din programarea cu text, în alte instrumente virtuale. Când se întâmplă acest lucru, instrumentele virtuale folosite în creearea altora capătă denumirea de sub-instrumente virtuale (subVI).
Instrumentele virtuale reprezintă o trecere fundamentală de la sistemele tradiționale de instrumentație centrate pe hardware la sistemele centrate pe software care exploatează puterea de calcul, productivitatea, afișajul, și capabilități de conectivitate ale unui sistem de tipul desktop sau stație de lucru.
În cadrul acestei lucrări am prezentat și numărătorul universal, care este un echipament electronic de măsurat. Acest echipament este folosit atât de către inginerii sau persoanele cu studii tehnice care fac cercetare și dezvoltare în domeniul electronicii sau electrotehnicii, cât și de către studenții și profesorii facultăților de inginerie sau cu profil tehnic. Pe scurt, numărătorul universal este un echipament de măsurat care folosind o tehnică relativ simplă, permite măsurarea unui număr mare de parametri de timp. Numărătorul universal este instrumentul care stă la baza aparatelor digitale utilizate pentru măsurarea timpului și a frecvenței, dar pe lângă aceste două mărimi fundamentale el mai permite măsurarea altor mărimi ca de exemplu multiplii 10, 100 1000 și 10000 ai perioadei,
intervalul de timp dintre două impulsuri, pozitive sau negative, cu posibilitatea selectării individuale a fronturilor între care are loc măsurarea, raportul a două frecvențe, precum și multiplii ai acestuia, numărul de impulsuri aplicate aparatului între două acționări succesive ale unui comutator.
În concluzie, dacă îmbinăm aceste două lucruri, programarea grafică prin instrumentația virtuală și logica funcționării unui aparat de măsurat al unor mărimi, putem să dezvoltăm un instrument de măsurat virtual. În cadrul acestei lucrări am prezentat numărătorul universal realizat prin instrumentație virtuală, astfel putem spune că avem un aparat de măsură perfect funcțional care face același lucru ca și aparatul de măsură fizic. În cele mai multe cazuri, se poate folosi un instrument virtual în locul unui instrument de măsurat fizic, fie că vorbim de numărătorul universal în cazul de față, fie că dezvoltăm alt instrument de măsurat. Acest lucru aduce mari avantaje, în primul rând din punctul de vedere al reducerii costurilor, dar și pentru că furnizează modalități numeroase de inovație și flexibilitate, putând astfel să creăm nu doar un instrument virtual copie a celor produse de furnizorii de astfel de aparate, ci putem chiar să dezvoltăm un aparat de măsurăt personalizat conform necesităților fiecăruia.
Dacă folosim instrumente virtuale în scopuri educative, cum ar fi în laboratoarele facultăților de inginerie sau cu profil tehnic, putem considera opțional folosirea unei plăci de achiziție date, care are rolul de a prelua și transforma semnalele astfel încât ele să fie redate pe afișajul computerului. Omiterea plăcii de achiziție date se face prin generarea virtuală a acestor semnale, tot în cadrul software-ului LabVIEW, și astfel se poate studia, utiliza și învața instrumentul virtual.
Folosirea unei configurații complete prin care se achiziționează un semnal analogic sau digital, care apoi este analizat și controlat de intrumentul virtual face mult mai ușor de înțeles utilitatea și importanța utilizării instrumentației virtuale. În figura 4.1. de mai jos este schițată o configurație pentru a înțelege mai bine ce înseamnă cele discutate mai sus.
Figura 4.1. Configurație a unui sistem de achiziție date
Prin achiziționarea unei plăci de achiziție date sau a unui sistem achiziție date format din mai multe plăci de achiziție, de exemplu versiunea compactă (vezi figura 4.2.) comercializată de compania National Instruments, putem spune ca avem aproape toate instrumentele de măsurat într-unul singur, desigur cu investiții minore de software. Astfel dacă facem un calcul total de investiții, doar comparativ cu un singur aparat de măsurat, putem spune că ajungem să investim jumătate din prețul unui astfel de echipament. Dacă facem configurația sistemului de achiziție date pentru a acoperi o gamă mai largă de intrumente, aparate de măsurat, atunci investiția per total se reduce considerabil. Pe lângă avantajul cu privire la costuri, mai avem și avantajul de a avea un sistem complet de aparate de măsurat foarte compact, care ocupă mult mai puțin spațiu decât intrumentele de măsurat tradiționale.
Figura 4.2. Configurație sistem de achiziție date
Printre ultimele noutăți apărute pe piață și ținând pas cu tehnologia în speranța de a mulțumi toate cererile venite din partea utilizatorilor, cei de la National Instruments au dezvoltat un modul de achiziție date care comunică wireless (fără fire) cu computerul și poate fi conectat și la un dispozitiv mobil, de exemplu o tabletă tot prin modul wireless. Acest sistem performant și flexibil poate fi văzut în Anexa 3 – Sistem achiziție date wireless. Acest sistem este cea mai bună variantă de luat în considerare pentru a face față cerințelor actuale și chiar pentru viitor, acesta având o structură modulară care se poate îmbunătăți.
Anexa 1 – Panoul Frontal
Anexa 2 – Diagrama Bloc
Anexa 3 – Sistem achiziție date wireless
Bibliografie
D.Stoiciu, T. Jurca, S. Mischie “Aparate electronice de măsurat”, Editura Orizonturi Universitare, Timișoara 2001
D. Stoiciu, “Aparate electronice de măsurat”, curs în format electronic, 2008
Mihaela Lascu “Tehnici avansate de programare în LabVIEW”, Editura Politehnica, Timișoara 2007
J. Travis, J. Kring “LabVIEW for Everyone: Graphical Programming Made Easy and Fun (3rd Edition)”, Prentice Hall 2006
C. Foșalău “Introducere în instrumentația virtuală”, Editura CERMI, Iași 2010
www.ni.com/forum
www.ni.com “Virtual Instrumentation”, 2013
http://labviewwiki.org/
www.catia.ro/articole
Măsurarea frecvenței.pdf
Aparate digitale pentru măsurarea timpului și frecvenței.pdf
http://www.eed.usv.ro/~cbuzduga/Initiere%20in%20LabView.doc
http://www.geocities.ws/grigorescu_stefan/LabVIEWv2.doc
http://www.automation.ro/Invata_Automatica/pdf/NI_Labview.pdf
http://www.keysight.com/
LabVIEW™ Help, LabView 2014
Bibliografie
D.Stoiciu, T. Jurca, S. Mischie “Aparate electronice de măsurat”, Editura Orizonturi Universitare, Timișoara 2001
D. Stoiciu, “Aparate electronice de măsurat”, curs în format electronic, 2008
Mihaela Lascu “Tehnici avansate de programare în LabVIEW”, Editura Politehnica, Timișoara 2007
J. Travis, J. Kring “LabVIEW for Everyone: Graphical Programming Made Easy and Fun (3rd Edition)”, Prentice Hall 2006
C. Foșalău “Introducere în instrumentația virtuală”, Editura CERMI, Iași 2010
www.ni.com/forum
www.ni.com “Virtual Instrumentation”, 2013
http://labviewwiki.org/
www.catia.ro/articole
Măsurarea frecvenței.pdf
Aparate digitale pentru măsurarea timpului și frecvenței.pdf
http://www.eed.usv.ro/~cbuzduga/Initiere%20in%20LabView.doc
http://www.geocities.ws/grigorescu_stefan/LabVIEWv2.doc
http://www.automation.ro/Invata_Automatica/pdf/NI_Labview.pdf
http://www.keysight.com/
LabVIEW™ Help, LabView 2014
Anexa 1 – Panoul Frontal
Anexa 2 – Diagrama Bloc
Anexa 3 – Sistem achiziție date wireless
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: Numaratorul Universal Realizat Prin Instrumentatie Virtuala (ID: 122585)
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.
