LabVIEW, Osciloscop – Final

Cam asa se prezinta descrierea aplicatiei facuta de mine pentru proiectul de instrumentatie virtuala:
1. Descrierea Aplicatiei
1.1. Despre Aplicatiei

Aceasta aplicatie are drept scop crearea unui osciloscop virtual pentru familiarizarea personalului, a studentului de lucrul cu un osciloscop cu 4 canale ce indeplineste pe langa functia de osciloscop si functia de analizor de spectru dar si de generator de semnal.

1.2.Scurta descriere structurala a aplicatiei

Structural aplicatia este constituita dintr-un bloc de generare semnal numit si „generator de semnal” dar si din blocul principal de vizualizare a semnalului generat „blocul osciloscop” ce contine un subbloc „spectru semnal” ce poate fi activat prin apasarea unui buton de pe panoul frontal al osciloscopului.

Deasemenea avand in vedere abordarea structurala putem spune ca pe langa aceasta impartire pe blocuri functionale structura osciloscopului este formata din numeroase subinstrumente virtuale cu rol bine definit in functionarea acestuia. Astfel de sub instrumente sunt: vizualizare spectru, generarea cod canal activ, amplificare pe x , amplificare pe y, operatie matematica si altele.
1.3.  Interfata cu utilizatorul
Interfata cu utilizatorul sau panoul frontal are rolul de a familiariza utilizatorul cu utilizarea unui osciloscop real ce are facilitatile prezentate de catre un osciloscop real. Interfata grafica a acestui osciloscop este prezentata in imaginea de mai sus. Dupa cum se poate vedea in constructia acestei interfete am folosit cu preponderenta gruparile de date pentru a simplificat cat mai mult diagram bloc a instrumentului.

In interfata grafica am folosit controale specifice unui osciloscop de uz general, controale sau indicatoare ca de exemplu:

  • Knob – pentru butoanele ce permit setarea V/DIV , TIMP/DIV, POZITIE, FAZA, FRECVENTA, AMPLITUDINE etc.
  • Push Button – pentru butoane precum Math, FFT, RUN/STOP etc.
  • Ring Control – a fost utilizat in clusterele ce comanda generatorul de functii si anume pentru a putea selecta usor tipul de semnal generat de catre acestea
  • Slide Switch – utlizat pentru a trimite comanda de resetare acestor generatoare de functii
  • Waveform chart – este “ecranul” osciloscopului, acesta permite vizualizarea atat a semnalelor generate cat si a spectrului acestora.

1.4. Diagrama bloc

In constructia diagramei bloc principiile folosite in principal sunt cele de modularizare, principalele elemente ale diagramei bloc sunt subInstrumentele virtuale care indeplinesc diferite functii. Am folosit acest stil de programare pentru a permite si a generat totodata o diagram functional ace este usor de inteles si poate fi usor modificata in prealabil in cazul in care se doresc imbunatatite diverse functii ale acesteia.

Pe langa constructia modularizata digrama bloc prezinta o arhitectura denumita masina de stare. Astfel prin intermediul acesteia este posibila trecerea prin diverse stari ale osciloscopului in functie de comezile date de pe panoul frontal.

Spre exemplu in imaginea alaturata este prezentata starea „Math” denumita sugestiv datorita faptului ca in aceasta stare osciloscopul realizeaza operatii matematice asupra semnalelor prezente la canalele acestuia. Din aceasta stare prin deselectarea butonului se trece in starea „Signal” sau daca acesta ramane apasat se continua in starea de fata.

Aceasta arhitectura prezinta un singur deficit: in cazul aparitiei a 2 modificari concomitente de stare doar una dintre ele va fi tratata. In cazul nostru unde operatorul uman este cel ce este responsabil cu „ghidarea” prin aceste stari ale osciloscopului este greu de crezut ca viteza acestuia de lucru este atata de mare in cat 2 butoane sa fie apasate simultan generandu-se o astfel de stare de indecizie.

Pentru imbunatatirea performantelor s-a incercat cat mai mult reducerea citirii controalelor de pe panoul frontal. Astfel pentru acest lucru s-a procedat prin introducerea de variabile locale prin intermediul carora sa se transfere informatii in orice parte a diagramei.

  1. 2. Structura osciloscopului

2.1. Panoul Frontal

2.1.1. Ecranul

Ecranul osciloscopului este prezentat in figura de mai jos. Acesta este folosit atat pentru a reda formele de unde generate de catre generatorul de semnale da si pentru a reda spectrul semnalelor si eventualele operatii matematice ce se fac cu acestea.

Acesta prezinta si informatii despre pozitia cursorului pe ecran in cazul in care acesta este selectat pentru a fi vizibil. Aceste informatii prezentate sunt spre exemplu pozitia pe X si pe Y a acestuia.

2.1.2. Blocul pentru functii matematice

Acest Bloc prezentat in imaginea alaturata permite efectuarea de operatii matematice asupra semnalelor prezente in acel moment la intrarile osciloscopului. Astfel pentru realizarea unei insumari a doua semnale se procedeaza prin apasarea butonului „Math” pentru a trece in modulul  de operatii matematice dupa care este apasata butonul „ADD” prezent in imaginea alaturata.

In caz in care se doreste alta operatie se procedeaza prin apasarea unuia din butoanele prezente.

2.1.3. Blocul pentru salvare fisier

Acest bloc permite salvarea datelor, vizualizate la un moment dat pe ecran, in fisiere ce sunt specificate de catre operator, utilizator. Astfel acesta va avea de selectat locatia de salvare , locatie ce trebuie sa fie ori un fisier existent ori o cale catre un nou fisier.

Important de retinut este ca aceasta salvare se activeaza doar cand cel putin un canal este selectat. Cu alte cuvinte cand avem date prezente pentru a fi vizualizate pe ecran.

Starea disabled a acestui control pentru salvare este prezentata in imaginea mai jos in coparatie cu starea activa.

Tipul de fisiere in care este salvata informatia este lvm (labview measurement file). Astfel indiferent de extensia fisierului care este data de utilizator formatul datelor este salvat in acest mod.

2.1.4. Blocul pentru pozitie pe orizontala

Acest bloc are rolul de a reliza functia de timp/div astfel acesta permite crearea unei lupe de timp prin intermediul careia semnalul „sa fie prezentat mai dilatat pe ecran”.

2.1.5. Blocul pentru pozitie pe verticala

Rolul acestui bloc in realitate este indeplinit de un amplificator cu castig programabil si cu offset reglabil. Astfel amplificarea sau atenuarea este data prin  intermediul „potentiometrelor” scale si pozitia fata de axa orizontala este reglata prin intermediul „potentiometrelor” position.

Pe langa aceste controale exista si butoanele ce permit selectarea canalelor active. Acestea sunt niste controale boolene si prin simpla apsarea permit validarea intrarii „x” de la generatorul de functii.

2.1.6. Blocul de generare semnal

Acest bloc prezentat si anterior are rolul de a genera semnale pentru a fi vizualizate cu ajutorul osciloscopului. Parametrii semnalelor ce pot fi setati cu ajutorul controalelor de pe panoul generatorului sunt: frecventa, amplitudine, factor de umplere, faza si offset.

2.2. Diagrama Bloc

La prima vedere aceasta pare una simpla si usor de contruit dar in realitate complexitatea acesteia este redusa doar de folosirea tehnicilor de modularizare si ierarhizare. Dupa cum se poate observa si in imaginea de mai sus aceasta prezinta numeroase subinstrumente virtuale special create pentru a compacta codul si astfel a restrange posibilitate de eroare.

2.2.1. Structura secventiala

Prin intermediul acestei structuri este controlat defapt modul de executie al programul, aceasta avand rol in ordinea operatiilor efectuate.

Am folosit aceasta structura din considerente de performanta deorece impornta preluarii informatiilor de pe panoul frontal doar o singura data este una foarte mare reducand memoria si timpul de executie al unui ciclu.

2.2.2. Masina de stare

Un automat finit (AF) sau o “mașină cu un număr finit de stări” este un model de comportament compus din stări, tranziții și acțiuni. O stare stochează informații despre trecut, adică reflectă schimbările intrării de la inițializarea sistemului până în momentul de față. O tranziție indică o schimbare de stare și este descrisă de o condiție care este nevoie să fie îndeplinită pentru a declanșa tranziția. O acțiune este o descriere a unei activități ce urmează a fi executată la un anumit moment. Există câteva tipuri de acțiuni:

  1. Acțiune de intrare executată la intrarea într-o stare
  2. Acțiune de ieșire executată la ieșirea dintr-o stare
  3. Acțiune de intrare de date acțiune executată în funcție de starea prezentă și de datele de intrare
  4. Acțiune de tranziție acțiune executată în momentul unei tranziții

AF poate fi reprezentat printr-o diagramă de stări (sau diagramă de stări și tranziții) ca în figura 1. În plus, se folosesc și tabele de tranziție. Cea mai comună reprezentare este dată mai jos: combinația stării curente (B) și condiției (Y) dă starea următoare (C). Informații complete privind acțiunile pot fi adăugate doar ca note de subsol.

În plus față de utilizarea lor în modelarea sistemelor reactive, prezentată aici, automatele finite sunt importante în multe domenii, inclusiv în lingvistică, informatică, filosofie, biologie, matematică, și logică. Mașinile cu stări finite sunt un tip de automate studiate de teoria automatelor. În informatică, automatele finite sunt folosite pe larg în modelarea comportamentului aplicațiilor, proiectarea sistemelor digitale hardware, ingineria software, compilatoare, și în studiul computației și limbajelor.

 

 

2.2.3. Bucle while paralele

Folosirea variabilelor locale a permis aceasta implementare altfel fiind practic imposibila transferare simultana comenzii oprire celor doua bucle.

2.2.4. Subinstrumente

2.2.4.1. Vizualizare semnale

Acest instrument virtual permite pe baza informatiilor preluate de la controale generarea semnalului dar si conditionarea acestuia prin procedee de atenuare sau de insumare cu o constanta. Cu alte cuvinte acest bloc are inglobat pe langa partea de selectie a canalului ce urmeaza a fi vizualizat si blocurile de amplificare pe Y si blocul de generare semnal.

2.2.4.1.1. Generator semnal

Generatorul de semnal are rol de generarea conditionata a semnalelor in functie de diversi parametrii cum ar fi cei ilustrati mai jos. Numarul de esantioane generate este de 5000 si este unul fix neputand fi setat de pe panoul frontal.

2.2.4.1.2. Amplificator Y

2.2.4.2. Cod transformata fourier

Transformata fourier este vizibila doar in cazul in care este selectat doar un canal. Aceasta este posibil prin evaluarea cazurilor valorii codului canalului. Acestea trebuie sa corespunda cu valorile in binar: 0001, 0010, 0100, 1000.

2.2.4.3. Operatie transformare fourier

In cazul in care osciloscopul afiseaza semnale doar de pe un singur canal aceast instrument permite generarea spectrului semnalului respectiv.

Astfel la intrare vom avea forma de unda prezenta la intrarea canalului „Wave” iar prin intermediul nodul spectrum and power analyzis este generat spectrul semnalului respectiv care este trimis inspre un array inspre inspre a fi afisa pe panoul frontal.

2.2.4.4. Math operation

Instrumentul virtual are drept rol in efectuarea de operatii matematice asupra semnalelor prezente la intrarea canalelor. Astfel de operatii sunt:

  • ADD – Suma
  • MUL – Inmultire
  • AND – SI logic
  • OR – SAU logic

2.2.4.5. Info selectie canal

Acest instrument virtual primeste ca si date canalele selectate de pe panoul frontal iar in functie de numarul acestora afisaza daca nu este selectat nici un canal. In cazul in care cel putin un canal a fost selectat atunci nici un mesaj nu este afisat utilizatorului.

2.2.4.6. Verificare scriere fisier

3. Functionalitate

In cele ce urmeaza sunt prezentate cateva capturi cu panoul frontal al osciloscopului in timpul functionarii acestuia. Dupa cum se poate observa in aceste imagini sunt prezente pe ecranul osciloscopului fie o singura forma de unda fie mai multe.

In imaginea de mai sus este prezentat un semnal dinte de fierestrau a carui freventa si alte caracteristici pot fi usor modificate folosind butoanele generatorului.

In cazul in care se doreste vizualizarea spectrului pentru doua semnale ce apar simultan pe ecran acest lucru nu este posibil utilizatorul fiind instiinta prin culoarea rosie a blocului de setari verticale culoare ce palpaie cat timp butonul „FFT” este apasat si cat timp avem mai mult de 1 canal vizualizat.

Spectrul semnalului, „dinte de fierestrau”, de mai sus este prezentat in imagine. Dupa cum spuneam pentru aceasta trebuie sa apasam butonul FFT de pe panoul frontal.

In imaginile precendente putem observa efectul functiilor matematice asupra 2 semnale. In imaginea anterioara avem apasat butonul de insumare pentru a face suma dintre un sinus si un semnal de tip dinte de fierestrau.

Aceleasi semnale dar alta operatie. In cazul de fata operatia implementata este „SI” logic.

Inmultirea semnalelor precedente va arata ca in imaginea de mai sus.

„SAU” intre cele doua semnale prezentate anterior va duce la urmatorul rezultat pe ecranul osciloscopului.

Cursorul are un rol foarte important pentru a determina anumite valor ale formei de unda prezentata pe ecran. Spre exemplu daca suntem interesat de valoarea de varf a unui semnal aceasta este simplu de aflat prin pozitionarea cursorului in pozitia respectiva iar coordonatele pe care acesta le arata in coltul din dreapta jos al „ecranului” vor reprezenta pozitia varfului in imagine.

4. Performanta si resurse consumate

Determinarea resurselor consumate de catre program a fost relativ simplu de facut. Acestea se pot afla usor folosind utilitarul cu acelasi nume.Datele obtinute pentru acest osciloscop virtual sunt prezentate in pagina ce urmeaza. Acestea au doar scop informativ pentru a manageria resursele pe care programul le consuma.

 

VI Time

Sub VIs Time

Total Time

# Runs

Average

Diagram

Tracking

Locals

Avg Bytes

Max Bytes

Avg Blocks

Min Blocks

Max Blocks

osciloscop.vi

7,33

8,92

16,26

1,00

7,33

0,78

0,17

0,12

0,42M

0,42M

29,00

29,00

29,00

amplificator_x.vi

6,60

0,00

6,60

1415,00

0,00

6,60

0,00

0,00

0,01M

0,01M

2,00

2,00

2,00

ex_subFileWrite.vi

1,00

0,19

1,19

2993,00

0,00

1,00

0,00

0,00

0,04M

0,04M

54,00

54,00

54,00

Sawtooth Wave.vi

0,37

0,00

0,37

1415,00

0,00

0,37

0,00

0,00

0,00M

0,00M

2,00

2,00

2,00

[osciloscop.vi]

0,22

0,12

0,34

2993,00

0,00

0,22

0,00

0,00

0,16M

0,16M

6,00

6,00

7,00

Waveform Array To Dynamic.vi

0,12

0,00

0,12

2993,00

0,00

0,12

0,00

0,00

0,00M

0,00M

0,00

0,00

0,00

amplificator_y.vi

0,11

0,00

0,11

2778,00

0,00

0,11

0,00

0,00

0,00M

0,00M

0,00

0,00

0,00

vizualizare_semnale.vi

0,09

0,62

0,72

1415,00

0,00

0,09

0,00

0,00

0,18M

0,19M

4,00

4,00

5,00

ex_ExpandPathIfRelative.vi

0,06

0,00

0,06

2993,00

0,00

0,06

0,00

0,00

0,00M

0,00M

9,00

9,00

9,00

Sine Wave.vi

0,06

0,00

0,06

1363,00

0,00

0,06

0,00

0,00

0,00M

0,00M

4,00

4,00

4,00

[osciloscop.vi]

0,03

1,19

1,22

2993,00

0,00

0,03

0,00

0,00

0,01M

0,01M

15,00

15,00

15,00

generator_forma_unda.vi

0,03

0,47

0,50

2778,00

0,00

0,03

0,00

0,00

0,00M

0,00M

0,00

0,00

0,00

Signal Generator by Duration.vi

0,03

0,44

0,47

2778,00

0,00

0,03

0,00

0,00

0,01M

0,01M

4,00

4,00

4,00

ex_UnflattenDescriptionString.vi

0,03

0,06

0,09

2993,00

0,00

0,03

0,00

0,00

0,00M

0,00M

7,00

7,00

7,00

General Error Handler.vi

0,03

0,02

0,05

2993,00

0,00

0,03

0,00

0,00

0,01M

0,01M

3,00

3,00

3,00

math_operation_maker.vi

0,03

0,00

0,03

1205,00

0,00

0,03

0,00

0,00

0,29M

0,35M

12,00

12,00

15,00

ex_resolveStaticPath.vi

0,03

0,00

0,03

2993,00

0,00

0,03

0,00

0,00

0,00M

0,00M

9,00

9,00

9,00

Simple Error Handler.vi

0,02

0,05

0,06

2993,00

0,00

0,02

0,00

0,00

0,01M

0,01M

3,00

3,00

3,00

General Error Handler CORE.vi

0,02

0,00

0,02

2993,00

0,00

0,02

0,00

0,00

0,03M

0,03M

57,00

57,00

57,00

file_wr_yn.vi

0,02

0,00

0,02

2993,00

0,00

0,02

0,00

0,00

0,00M

0,00M

0,00

0,00

0,00

convertol_cod_canal.vi

0,02

0,00

0,02

2620,00

0,00

0,02

0,00

0,00

0,00M

0,00M

1,00

1,00

1,00

  1. 5.  Controlul de la distanta

In prezent principalul lucru ce se incearca in majoritatea aplicatiilor de ultima generatie este crearea posibilitatii pentru monitorizare si control de la distanta. Aceste aplicatii trebuie sa fie compatibile cu diverse standarde si sa se faca posibil controlul acestora prin diverse interfete din diverse locuri. Labview ofera posibilitatea crearii unei interfete web ce sa permita controlul instrumentelor virtuale create de oriunde singura constrangere este necesitatea unei conexiuni la internet.

In imaginea urmatoare este prezentat instrumentul virtual controlat la distanta.

  1. 6. Concluzii

Prin prezentul proiect am dorit sa demonstrez deosebita functionalitate pe care o prezinta mediul de dezvoltare labview dar si totodata numeroasele avantaje pe care le prezinta programarea grafica in viata de zi cu zi.

mai multe detalii si poze aici: https://docs.google.com/document/d/1HUzS4L9-QHFxKekPe_6uJkSQ9pGDu0KNOTyVyf52Dd8/edit

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s