curs_iv

243
1. INTRODUCERE ÎN INSTRUMENTAŢIA VIRTUALĂ •Ca si în cazul calculatoarelor si al sistemelor de operare, ideea instrumentatiei virtuale s-a nascut în mintea unui tanar (James Trouchard), pe cand era doctorand la University of Texas, in Austin USA, iar Hewlett-Packard introducea pe piata un computer nou ce putea culege date din masuratorile efectuate cu instrumente ale aceleasi firme. Trouchard a avut ideea ca in locul unui instrument gata facut, ce costa destul de mult, sa realizeze instrumente pe care chiar utilizatorii sa le poata ansambla in propriul calculator folosind o placa si un software. Asa s-a nascut Instrumentatia Virtuala si odata cu ea Compania National Instruments pe care James Trouchard a fondat-o in 1976. Solutia propusa de Trouchard permite astazi multor firme sa depaseaca cu usurinta decalaje tehnice şi tehnologice, pentru eliminarea cărora ar fi necesare investiţii uriaşe. Există un singur obstacol: creatorul, dar şi utilizatorul unui instrument virtual, nu mai poate fi inginerul sau muncitorul anilor trecuţi.

Upload: liutu

Post on 04-Jul-2015

1.615 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: CURS_IV

1. INTRODUCERE ÎN INSTRUMENTAŢIA VIRTUALĂ• Ca si în cazul calculatoarelor si al sistemelor de operare, ideea instrumentatiei

virtuale s-a nascut în mintea unui tanar (James Trouchard), pe cand era doctorand la University of Texas, in Austin USA, iar Hewlett-Packard introducea pe piata un computer nou ce putea culege date din masuratorile efectuate cu instrumente ale aceleasi firme.

• Trouchard a avut ideea ca in locul unui instrument gata facut, ce costa destul de mult, sa realizeze instrumente pe care chiar utilizatorii sa le poata ansambla in propriul calculator folosind o placa si un software. Asa s-a nascut Instrumentatia Virtuala si odata cu ea Compania National Instruments pe care James Trouchard a fondat-o in 1976. Solutia propusa de Trouchard permite astazi multor firme sa depaseaca cu usurinta decalaje tehnice şi tehnologice, pentru eliminarea cărora ar fi necesare investiţii uriaşe. Există un singur obstacol: creatorul, dar şi utilizatorul unui instrument virtual, nu mai poate fi inginerul sau muncitorul anilor trecuţi.

Page 2: CURS_IV

• Instrumentele virtuale sunt combinații de elemente hardware și/sau software, utilizate cu un PC, care au funcționalități similare instrumentelor tradiționale, clasice, de sine stătătoare.

• Pe panoul frontal al unui instrument virtual, se vor găsi butoane, comutatoare, ecrane, afisaje digitale, indicatoare grafice, e.t.c. cu acelasi aspect ca al instrumentelor clasice .

• Un instrument virtual este compus deci, dintr-o parte hardware si o parte software care permite configurarea instrumentului dupa dorinta utilizatorului.

• Prin termenul de Instrumentaţie Virtuală se înţelege utilizarea unui computer, dotat cu echipamente periferice de intrare şi ieşire specializate, pentru a simula caracteristicile şi funcţionarea unui instrument sau sistem de măsurare, de testare sau de înregistrare a datelor. Instrumentele virtuale fac uz de traductoare si senzori pentru a intra în contact cu mărimea fizică măsurată, de eventuale sisteme de condiţionare a semnalelor, precum şi de circuite pentru conversia analog - digitală. Diferenţa în raport cu sistemele de măsurare "clasice" este aceea că de aceasta dată toate funcţiunile de prelucrare şi analiză a valorilor măsurate, de stocare a acestor informaţii şi de transmitere a lor către utilizatorul uman sunt realizate de către computer şi nu de către aparatura dedicată. Aplicaţiile software înlocuiesc astfel componente estimate a reprezenta 80% din circuitele unui aparat de măsurare sau testare specializat "clasic".

Page 3: CURS_IV

• Software-ul care realizează aceste funcţiuni posedă în majoritatea cazurilor o interfaţă grafică având acelaşi aspect ca şi cel al panoului frontal al unui aparat de măsurare. Acesta este motivul pentru care aplicaţiile respective sunt numite Instrumente Virtuale.In sistemele de măsurare computerizate cu instrumente virtuale, natura mărimilor fizice măsurate dictează doar configuraţia componentelor de genul traductoarelor şi în unele cazuri a condiţionatoarelor de semnal. In aval de acestea, după convertorul analog - digital, informaţia referitoare la valoarea mărimii măsurate este procesata doar prin intermediul componentelor software.

• Dacă, de exemplu, un semnal de tip tensiune electrică necesită atât vizualizarea variaţiei în timp cât şi determinarea spectrului de frecvenţe, utilizarea instrumentaţiei virtuale permite folosirea aceluiaşi sistem de măsurare. Se înlocuieşte doar aplicaţia de prelucrare a semnalului sau se construieşte o aplicaţie care să afişeze simultan, într-o fereastra unică, ambele informaţii necesare. Mai mult, acelaşi sistem de măsurare, dar cu o aplicaţie software diferita, poate fi utilizat ca voltmetru, ca instrument de stocare a datelor sau ca sistem de avertizare.

• Apariţia instrumentelor virtuale a permis astfel ca mai multe aparate de măsurare sau testare specializate sa poată fi înlocuite printr-o singură configuraţie hardware de sistem de măsurare computerizat, completată apoi cu diverse aplicaţii software.

Page 4: CURS_IV

• De aici derivă unele dintre avantajele utilizării Instrumentaţiei Virtuale: - flexibilitatea sporită a configuraţiilor sistemelor de măsurare; - fiabilitatea crescută a componentelor; - precizia crescută a prelucrării informaţiei; - capacitatea de a efectua prelucrări de mai mare complexitate; - costul mult redus în raport cu aparatele clasice.

• Aplicaţiile instrumentaţiei virtuale nu se rezumă doar la măsurarea de mărimi fizice analogice. Rezidente în sisteme computerizate, instrumentele virtuale pot fi folosite drept generatoare de semnale analogice, pot manipula bidirecţional semnale digitale şi pot efectua operaţiuni de numărare/cronometrare sau de generare de trenuri de impulsuri.

• Instrumentele virtuale pot transforma un computer în "centrul de comandă" al unei reţele de zeci de aparate de măsura capabile sa comunice prin protocolul GPIB. Seturi de instrumente virtuale specializate pot efectua funcţii de comandă a motoarelor pas cu pas sau operaţii evoluate de prelucrare şi analiză a imaginilor sau sunetelor.

• Sistemele de instrumentaţie virtuală nu se rezumă astfel doar la a înlocui aparatele de măsurare utilizate în aplicaţiile din laboratoarele de cercetare sau didactice, ci devin unelte complexe şi puternice de monitorizare şi control ale proceselor industriale.

Page 5: CURS_IV

• Un sistem de instrumentaţie virtuală nu trebuie înţeles ca fiind majoritar rezident într-un computer. In laboratoarele de cercetare se utilizează îndeosebi plăci multifuncţionale de achiziţie de date montate în PC-uri, conţinând multiplexoare şi convertoare A/D şi D/A. Sistemele de achiziţie "Real Time" îşi îndeplinesc funcţiunile şi în timpul "căderilor" sistemului de operare sau al resetărilor computerului gazdă.

• In multe categorii de sisteme distribuite, multiplexoarele şi convertoarele au "migrat" din computer în zona condiţionatoarelor de semnal, însoţite de o interfaţă serială. Computerul gestionează astfel o reţea de puncte de măsurare, mult mai numeroase decât ar fi permis varianta sub forma analogică. Sistemele dedicate uzului industrial, din gama PXI, utilizează computere de proces (controllere), având configuraţii şi caracteristici de funcţionare specifice şi dispunînd de o întreagă gamă de posibilităţi de comunicaţie ce includ protocoalele serial, Ethernet, SCSI, GPIB (IEEE 488), PCMCIA, CAN şi DeviceNet.

• Facilităţile oferite de hardware-ul de achiziţie de date şi control de proces nu ar putea fi puse în valoare fără existenţa unui software adecvat. În acest sens se foloseşte mediul LabVIEW (LABoratory Virtual Instrument Engineering Workbench) – un mediu de programare bazat pe limbajul de programare grafic G, produs de Firma National ǎInstruments (NI).

Page 6: CURS_IV

• Avantajul folosirii mediului de programare grafica LabVIEW în instrumentaţia virtuală constă în abordarea în mediu unitar a dezvoltării aplicaţiilor pentru configuraţii hardware diverse şi protocoale de comunicaţie dedicate interacţiunii cu procese (începând de la cele mai simple pana la procese industriale de mare complexitate).

• Funcţiunile mediului de programare grafică LabVIEW de transmitere a informaţiei prin intermediul diverselor protocoale de comunicaţie specifice Internet-ului vor face posibil un salt calitativ în dezvoltarea utilizatorilor spre folosirea de laboratoare virtuale şi spre monitorizarea şi comanda la distanţă a proceselor.

• În concluzie, se poate aprecia că Instrumentaţia Virtuală are, datorită flexibilităţii şi versatilităţii sale, un potenţial imens pentru cei ce lucrează în domeniul educaţiei, ştiinţei şi tehnologiei, indiferent de gradul lor de specializare sau de nivelul de calificare. Instrumentele şi aparatele vor deveni din ce în ce mai ieftine şi mai performante, software-ul va putea fi dezvoltat în masă, chiar de către programatori neprofesionişti, iar aplicaţiile realizate vor avea un grad mare de accesibilitate datorită facilităţilor de comunicaţie existente.

• Astăzi, utilizatorul introduce o placa de achizitie date in computer si cu ajutorul soft-ului de programare grafica isi configureaza instrumentul de masurare si in plus poate crea si cate inregistratoare grafice doreste. Toata partea fizica a lantului de masurare aflandu-se pe o placa controlata de microprocesorul computerului, utilizatorului nu-i ramane decat sa se conecteze la traductoarele specifice marimii de masurat si sa stie sa manevreze un mouse. Reprezentarea instrumentelor fizice se face pe monitorul computerului cu ajutorul elementelor grafice existente in biblioteca limbajului de programare grafica.

Page 7: CURS_IV

Din punct de vedere al domeniului de utilizare, sistemele de instrumentaţie virtuală pot fi clasificate în:

• sisteme pentru testare şi măsurări;• sisteme de control automat al proceselor;• sisteme pentru efectuarea de cercetări ştiinţifice.Din punct de vedere al modului în care poate funcţiona un instrument virtual există două variante:• modul de lucru “live”, în care se configurează fizic echipamentul de măsurare, cuplat la sistemul

de calcul şi care achiziţionează date din procesul studiat, urmat de procesul de analiză, interpretare şi afişare a rezultatelor;

• modul de lucru “not live” (simulare), în care se poate doar simula funcţionarea echipamentului de măsurare asupra eşantioanelor unor semnale generate prin mijloace software.

Exista doua posibilitati de a lucra cu instrumentatia virtuala:• doresti sa-ti creezi singur instrumentele necesare si atunci trebuie sa cunosti limbajul de

programare grafica si sa dispui de acesta (necesarul de timp minim pentru invatare ar fi de 30 de ore);

• doresti sa fii numai utilizator de instrumentatie virtuala, si atunci trebuie sa-ti cumperi de la un dezvoltator de aplicatii un program executabil ce va face numai ceea ce iti doresti.

Page 8: CURS_IV

Avantajele instrumentatiei virtuale față de instrumentele tradiționale:• ocupa un spatiu mic (practic un computer si un monitor);• poate fi cu elemente distribuite (pot masura in mai multe locuri odata);• datele se pot transmite prin internet (laboratorul de masurare se poate afla intr-un anume loc iar analiza

rezultatelor se poate face in cu totul alta parte);• instrumentele nu mai ocupa un spatiu fizic (o magazie) ci sunt stocate in memoria computerului;• flexibilitate maxima privind configurarea instrumentelor (oricand se poate sterge un instrument din memorie si

se poate face altul, se pot adauga elemente de comanda sau indicatoare, canale sau memorie);• dispar practic problemele legate de murdarirea comutatoarelor sau imperfectiunea conexiunilor;• costurile privind achizitia de aparate si intretinerea lor se reduc foarte mult, tinand cont ca o singura placa

multifunctionala de achizitie date, impreuna cu softul aferent poate inlocui o multime de alte instrumente fizice dedicate;

• interfata grafica foarte prietenoasa cu utilizatorul;• timpul relativ mic de invatare a limbajului de programare grafica;• multimea de instrumente virtuale gata construite pentru a masura, a face analiza semnalului, a-l prelucra si a-l

transmite oriunde doreste utilizatorul;

Page 9: CURS_IV

Instrumentaţie Virtuală cu LabVIEW

Laboratory Virtual Instruments

Engineering Workbench

Page 10: CURS_IV

• LabView este un limbaj de programare grafică (limbaj G) care foloseşte diagrame bloc în loc de linii de text pentru a crea aplicaţii.

• Este destinat în special, construirii de aplicaţii pentru controlul şi achiziţia de date, analiza acestora şi prezentarea rezultatelor

• LabView a fost dezvoltat de firma National Instruments, prima variantă a programului apărând în anul 1986. În prezent s-a ajuns la versiunea a 8-a a programului. Denumirea sa provine dintr-o prescurtare din limba engleză: “Laboratory Virtual Instruments Engineering Workbench”.

• Noutatea adusă de LabView, comparativ cu limbajele de programare clasice (Pascal, C,C++,BorlandC++), este rapiditatea programării datorită introducerii unei interfeţe grafice mai intuitive.

• Mediile de programare grafică înlătură necesitatea cunoaşterii 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 (organigramă, diagramă). 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 scade drastic. 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.

• LabVIEW este cel mai răspândit şi mai evoluat mediu de programare grafică.

Page 11: CURS_IV

• Deşi LabVIEW este un instrument foarte puternic de simulare, acesta este cel mai adesea folosite pentru achiziția, analiza și prezentarea datelor de la diferite surse externe, conținând în librăria sa, multe instrumente virtuale special dedicate acestui scop.

• De exemplu LabVIEW poate comanda plăci de achiziție pug-in sau pe USB pentru achiziția sau generarea semnalelor analogice și numerice.

• S-ar putea utiliza plăcile DAQ şi LabVIEW pentru a monitoriza temperatura, trimite semnalele de la un sistem extern, sau determinarea frecvenţei unui semnal necunoscut.

• LabView permite achiziţia semnalelor de la o varietate de echipamente. Se pot achiziţiona date de la instrumente GPIB, seriale, Ethernet, PXI şi VXI, folosind driverele incluse. Există posibilitatea comunicării cu mai mult de 1400 instrumente aparţinând a 150 de producători, folosind driverele de comunicaţie LabView. Programul oferă performanţă şi portabilitate ridicate.

• Driverele de comunicaţie simplifică controlul instrumentelor şi timpul de dezvolatare a noi aplicaţii, eliminând necesitatea de a învăţa protocoale de programare pentru fiecare instrument în parte. Multe drivere folosesc Visual Instrument Software Architecture (VISA) pentru a comunica cu o gamă de bus-uri de comunicaţie, cum ar fi GPIB sau serial, folosind acelaşi cod LabView. Indiferent pe ce tip de bus este instrumentul, driverele VISA preiau controlul protocoalelor de comunicare respective.

Page 12: CURS_IV

Achiziție, Analiză și Prezentare

Aproape toate aplicațiile de măsurare, testare și control, pot fi împărțite în 3 mari componente: capacitatea de achiziție, analiză și prezentare a datelor. LabVIEW este cel mai puternic și mai simplu instrument pentru achiziția, analiza și prezentarea datelor din lumea reală.

Page 13: CURS_IV

Achiziția cu LabVIEWLabVIEW poate achiziționa date utilizând următoarele dispozitive și multe altele:• GPIB, Serial, Ethernet, VXI, PXI Instruments• Data Acquisition (DAQ)• PCI eXtensions for Instrumentation (PXI)• Image Acquisition (IMAQ)• Motion Control• Real-Time (RT) PXI• PLC • PDA• Instrumente modulare

LabVIEW este strâns integrat cu toate componentele hardware NI, și în plus se poate conecta la mii de dispozitive I/O de la alte sute de furnizori.

Page 14: CURS_IV

Tipuri de magistrale de proces, pentru interconectarea instrumentelor programabile, cu un sistem de calcul

• GPIB (General Purpose Interface Bus - magistrală de interfaţare de uz general) este specializată pentru comunicaţie cu instrumente programabile. Este standardul cel mai utilizat pentru controlul instrumentelor programabile de catre sistemele de calcul. Rolul dispozitivelor GPIB poate fi de a trimite mesaje, de a primi mesaje si/sau de a monitoriza comunicatiile pe retea. Este disponibilă pentru diverse platforme (PC, IBM, MacIntosh, etc.) şi oferă o rată de transfer de 1 Mbyte/secundă. Protocolul de comunicaţie este specificat de standardul industrial IEEE-488 (protocol pe 8 biţi, comenzi tip ASCII, maximum 14 instrumente aflate la cel mult 20m). O dezvoltare ulterioară, HS-488, a crescut rata de transfer la 8 Mbytes/secundă;

• RS-232, RS-422, RS-485 sunt utilizate în special la sisteme personale de calcul. Sunt destinate comunicaţiilor seriale sincrone/asincrone între instrumente, oferind o imunitate ridicată la zgomotul din mediul industrial. Dezavantajul major este rata de transfer redusă (sute de kbits/secundă). Protocolul de comunicare poate fi ASCII sau un protocol special al instrumentelor ce se interconectează. Ceea ce le diferenţiază este distanţa de interconexiune (de la 15m la RS-232, la 1200m la RS-485), care este mărită prin amplificări suplimentare pe intrări/ieşiri. Interfaţa RS-485 permite legături multi-punct (“daisychain”), deci economii importante de cablu;

Page 15: CURS_IV

• SCXI (Signal Conditioning eXtensions for Instruments): reprezintă o platformă de înaltă performanță pentru condiționarea sau direcționarea semnalelor din sistemele de măsurare sau automatizare. Utilizată pentru măsurări directe sau prin intermediul senzorilor, pentru generarea de semnale în tensiune sau curent, pentru manipularea semnalelor digitale sau pentru direcționarea unor semnale, gama de produse SCXI oferă o platformă unică, integrată, ce satisface toate necesitile. Un sistem SCXI constă din module multicanal de condiționare instalate în unul sau mai multe șasiuri. Șasiul (sau unul dintre șasiurile sistemului) este conectat la o placă de achiziie de date. Aceste module, montate sub formă de “rack” (dulap cu sertare de conexiuni modulare), sunt utilizate deci, la condiţionarea semnalului. La intrare, se admit semnale provenite de la traductoare, cum ar fi: termocupluri, termistoare, mărci tensometrice etc, iar la ieşire se obţin semnale permit efectuarea analogice (curenţi sau tensiuni) sau semnale numerice. Se utilizează module de filtrare, liniarizare, izolare galvanică, ieşiri de putere, etc.; Condiionatoarele de semnal SCXI au un design integrat care simplifică instalarea și configurarea maximizând performanele. Modulele SCXI măsurărilor cu o gamă largă de senzori și tipuri de semnale, permițând o paletă largă de combinații pentru formarea unui sistem de măsurare.

Page 16: CURS_IV

• PXI (extensie PCI pentru instrumentatie): PXI reprezinta o platforma pentru sisteme de masurare si automatizare, bazata pe PC. Instrumentatia modulara PXI profita de avantajele magistralei de mare viteza PCI (Peripheral Component Interconnect), care reprezinta standardul de facto ce dirijeaza proiectarea in domeniul calculatoarelor PC, atat ca hardware cat si ca software. In consecinta, utilizatorii de PXI pot sa beneficieze de toate avantajele PCI in cadrul uneri arhitecturi ce adauga caracteristici mecanice, electrice si de software, potrivite pentru aplicatiile de masura, achizitie de date si automatizari industriale. Bazată in intregime pe un stadard industrial deschis, instrumentatia modulara PXI reprezinta o solutie eficace, deoarece combina arhitectura electrica de mare viteza a PCI cu o carcasa industriala de înalta fiabilitate, functii de sincronizare si temporizare incorporate si deplina interoperabilitate cu CompactPCI. Dimensiunea redusa a sistemului PXI este ideala pentru o larga varietate de aplicatii portabile, cu montare pe birou sau in rack, pentru testare, masuratori, culegere de date si automatizari industriale.În sistemul PXI exista șasiuri (cu 4, 8 sau 18 sloturi), controlere, placi de achizitie de date, placi de achizitie de date in timp real, surse de semnal, module I/O digitale, placi de achizitie de semnal dinamic, numaratoare/ temporizatoare de 32 biti, instrumente dedicate, comutatoare, placi de achizitie si prelucrare de imagine, placi de control al miscarii, interfete de comunicare seriale, CAN, DeviceNet, Ethernet, GPIB, etc.

• VXI (VME eXtension for Instrumentation, unde VME reprezintă VESA Module Eurocard) reprezintă un standard de instrumentaţie ale cărui baze au fost puse încă din 1987 şi are ca obiectiv creşterea interoperabilităţii diverselor instrumente. Structura sa modulară permite o integrare atât din punct de vedere electronic, cât şi mecanic, conferindu-i denumirea de “standard pentru instrument pe cartelă”. Specificaţiile VXI grupează norma IEEE-488 şi norma VME, prima remarcăndu-se prin compatibilitatea între constructori diferiţi, iar cea de-a doua prin rapiditate.

Page 17: CURS_IV

Plăcii GPIB ale firmei NI

Sistem GPIB tipic

Page 18: CURS_IV

Analiză cu LabVIEWLabVIEW include următoarele instrumente cu ajutorul cărora pot fi analizate datele:• Mai mult de 400 de funcţii de analiza măsurării pentru:

Ecuatii Diferentiale, Optimizare, Curbe, Calcul, Algebra Liniara, Statistică, etc.

• 12 noi VI-uri Express special proiectate pentru analiza măsurării, inclusiv filtrare și analiză spectrală.

• VI-uri pentru procesarea semnalelor (Filtrare, Ferestruire, Analiză Armonică, Analiză spectrală, e.t.c.).

O analiză intensă a măsurării este realizată în mediul de dezvoltare LabVIEW.

Page 19: CURS_IV

Prezentare cu LabVIEWLabVIEW include următoarele instrumente utilizate pentru prezentarea datelor:• On your machine — Graphs, Charts,

Tables, Gauges, Meters, Tanks, 3D Controls, Picture Control, 3D Graphs (Windows Only), Report Generation (Windows Only)

• Over the Internet — Web Publishing Tools, Datasocket (Windows Only), TCP/IP, VI Server, Remote Panels, Email

Prezentarea cu LabVIEW poate fi facuta pe PC sau printr-o reţea.

Page 20: CURS_IV

PC, Mac, Linux, Sun

LabVIEW Everywhere

Networked I/O

PC Boards

Workstation

Handheld

Embedded(FPGA)

Industrial Computer (PXI)

Wireless

Sensor

Tektronix Open Windows Oscilloscopes

Page 21: CURS_IV

Fapte istorice

• 1983 – începe proiectul LabVIEW• 1986 –LabVIEW pentru Macintosh• 1990 –LabVIEW 2.0 și 2 brevete• 1992 –LabVIEW pentru Windows și Sun• 1993 –LAbVIEW 3.0• 1994 – LabVIEW pentru Windows NT și 2 noi brevete• 1995- 2000 – LabVIEW pentru Windows 95/98, LabVIEW 5.0• 2001 – LabVIEW 6i pentru Windows 2000/NT/ME• 2003– LabVIEW 7.0 pentru Windows XP• 2006 - LabVIEW 8.0 pentru Windows XP• 2009- LabVIEW 2009 pentru Windows 7

Page 22: CURS_IV

2. Introducere în LabVIEW

SUBIECTEA. LabVIEWB. Mediul LabVIEWC. Panoul FrontalD. Diagrama BlocE. Programarea Fluxului de DateF. LabVIEW HelpG. Depanarea unui VI

Page 23: CURS_IV

Panou Frontal• Controale = Intrări• Indicatoare = Ieşiri

Diagrama Bloc• “Program” ce însoţeşte

panoul frontal• Componentele sunt legate

împreună

A. Instrumente Virtuale (VI)

Page 24: CURS_IV

• Aplicatiile (programele) realizate in LabVIEW poarta denumirea de Instrumente Virtuale (în engleza, Virtual Instruments, prescurtat VI). Denumirea provine de la faptul ca, in primele sale versiuni, LabVIEW a fost strict dedicat pentru realizarea unor programe de monitorizare a proceselor. Programele respective inlocuiau o serie de aparate si instrumente electronice - de unde si motto-ul corporatiei National Instruments: The software is the instrument – primind astfel denumirea de Instrumente Virtuale.

• Fiecare VI conţine 3 părţi principale:1. Panoul Frontal – permite interacţionarea utilizatorului cu VI-ul.2. Diagrama Bloc – Codul care controlează programul.3. Icoana/Conectorul – Mijloc de conectare a VI-ului cu alte VI-uri.

• Utilizatorul poate controla programul, poate modica intrările şi poate urmării updatarea datelor în timp real.

• Fiecare control sau indicator al panoului frontal are un terminal corespunzător în diagrama bloc. Când un VI rulează, valorile controalelor trec în diagrama bloc, unde sunt utilizate în funcţionarea diagramei, iar rezultatele sunt trecute în alte funcţii sau indicatoare.

Page 25: CURS_IV

B. Mediul LabVIEW

Page 26: CURS_IV

Creating a new VI

To open a blank VI• Select File»New VI • Click the arrow on the New

button and select Blank VI

To open the New dialog box • Select File»New • Click the New button

Page 27: CURS_IV

Panoul Frontal (PF) al VI-ului

Uneltele (PF)

LegendaGraficului

ControlBoolean

IndicatorGrafic

Icoană

PlotLegend

Legenda Scalei

Page 28: CURS_IV

Diagrama Bloc (DB) a VI-ului

Firede date

TerminalulGrafic

SubVI

StructurăWhile Loop

Uneltele DB Funcţia

Divide

ConstantăNumerică

FuncţiaTiming

Terminalul Control Boolean

Page 29: CURS_IV

Front Panel and Block Diagram Toolbars

Run button

Continuous Run button

Abort button

Pause/Continue button

• Execution Highlighting button• Step Into button• Step Over button• Step Out button

Warning indicator

Enter button

Broken Run button

Font ring

Alignment ring

Distribution ring

Resize ring

Reorder ring

Context Help ButtonAdditional Buttons on the Block Diagram Toolbar

Page 30: CURS_IV

Tools Palette• LabVIEW automatically selects the tool needed

• Available on the front panel and the block diagram

• A tool is a special operating mode of the mouse cursor

• Use the tools to operate and modify front panel and block diagram objects

• To show the tools palette, select Window»Show Tools Palette

Page 31: CURS_IV

Front Panel − Controls Palette

Controls PaletteContains the most commonly used controls

All Controls PaletteShows all controls

Page 32: CURS_IV

Block Diagram − Functions Palette

Functions PaletteContains the Express VIs (interactive VIs with configurable dialog page) and the most commonly used functions

All Functions PaletteShows all functions

Page 33: CURS_IV

Searching for Controls, VIs, and Functions

• Press the search button to perform text searches of the palettes

• Click and drag an item from the search window to the block diagram or double-click an item to open the owning palette

Page 34: CURS_IV

Shortcut Menus for Front Panel Objects

Right-click the label to access its shortcut menu

Right-click the digital display to access its shortcut menu

Page 35: CURS_IV

Panoul Frontal se construiește cu controale (intrări) și cu indicatoare (ieșiri)

Control Numeric

Indicator Numeric Etichete

Butoane pentruincrementare

Control Boolean

Indicator Boolean

C. Crearea unui Panou Frontal

Page 36: CURS_IV

Shortcut Menus for Front Panel Objects

Right-click the label to access its shortcut menu

Right-click the digital display to access its shortcut menu

Page 37: CURS_IV

Property Page

Right-click a control or indicator on the front panel and select Properties from the shortcut menu to access the property dialog box for that object

Page 38: CURS_IV

NodesWires

ControlTerminals

Diagrama BlocPanou FrontalIndicator Terminals

D. Crearea unei Diagrame Bloc

Page 39: CURS_IV

VI-uri Express, VI-uri Standard și Funcţii

• VI-uri Expres : VI-uri interactive cu pagină dialog configurabilă, ce permite utilizatorului modificarea funcționalității VI-ului expres.

• VI-uri Standard : VI-uri modularizate realizate prin fire de legătură. Au PF și DB• Funcţii: elemente fundamentale de operare în LabVIEW; Nu au PF sau DB

VI ExpresVI Expres VI StandardVI Standard

FuncFuncţieţie

Page 40: CURS_IV

Elementele utilizate la realizarea diagramei bloc • Terminale• Fire• NoduriTerminalele reprezintă „porţi” prin intermediul cărora se realizează transferul datelor:

-între panoul frontal şi diagrama bloc (bidirectional);-între nodurile diagramei bloc (unidirectional).

Există două tipuri de terminale :-terminale sursă;-terminale destinaţie.

Firele, definesc şi reprezintă grafic, fluxul datelor (între noduri se realizează schimbul de informaţii) în diagrama bloc. Fluxul datelor este de la terminalele sursă spre terminalele destinaţie. Firele codifică prin culoare şi stilul liniei tipul datelor transmise; poziţionand unealta de interconectare deasupra unui fir, care realizează o legătură validă, se obţine în fereastra de asistenţă descrierea tipului de dată care se transmite pe acea cale.

Page 41: CURS_IV

Nodurile sunt elemente de execuţie din programul G. Ele corespund operatorilor, funcţiilor predefinite, instrucţiunilor şi subrutinelor realizate de utilizator din limbajele de programere bazate pe text. Există patru tipuri de noduri: -funcţii-subIV-codul interfeţei nodurilor (CIN)-structuri

Funcţiile sunt elemente constructive ale nodurilor care cresc performanţa operaţiilor elementare: de exemplu adunarea numerelor.

SubIV sunt instrumente virtuale create anterior şi care se introduc în diagrama bloc a altor instrumente.

CIN reprezintă interfaţa dintre diagrama bloc şi codurile scrise în limbajul C. Structurile sunt elemente de control ale programului. Ele controlează transferul

datelor în interiorul instrumentului virtual.

Page 42: CURS_IV

Block Diagram Nodes

Icon Expandable Node Expanded Node

• Function Generator VI• Same VI, viewed three different ways• Yellow field designates a standard VI• Blue field designates an Express VI

Page 43: CURS_IV

Block Diagram Terminals• Terminals are entry and exit ports that

exchange information between the panel and diagram

• Terminals are analogous to parameters and constants in text-based programming languages

• Right-click and toggle View As Icon to change the icon view

Page 44: CURS_IV

Legături (fire) în DB

Dynamic Albastru

Page 45: CURS_IV

Wiring Techniques Hot Spot

• Automatic Wiring• Use Context Help Window when wiring• Right-click wire and select Clean Up Wire• Tip Strips• Automatic wire routing• Right-click terminals

and select Visible Items»Terminals

View the terminal connections to a function

Page 46: CURS_IV

Moduri de ralizare de legături – DBWiring “Hot Spot”

Clean Up WiringUse Automatic Wire Routing

Click To Select Wires

Page 47: CURS_IV

• Exercise: Acquiring a Signal VIObjective: Explore the LabVIEW environment by creating a VI that generates a signal and displays it on the front panel.

Page 48: CURS_IV

Tipuri de date în LabVIEW

• Date numerice:– Întregi– Numere în virgulă mobilă

• Date tip string (caractere alfanumerice)• Date Booleene• Date tip forme de undă

Page 49: CURS_IV

Date numerice întregi

• Întregi cu semn– 32-bit (I32): de la -2,147,483,648 to 2,147,483,647– 16-bit (I16): de la -32,768 to 32,767– 8-bit (I8): de la -128 to 127

• Întregi fără semn– 32-bit (U32): de la 0 to 4,294,967,295 – 16-bit (U16): de la 0 to 65,536– 8-bit (U8): de la 0 to 256

Meniurile proprii ale elementelor de control sau indicatoare numerice contin o optiune specifica, Representation, cu ajutorul careia se specifica modul in care valoarea numerica respectiva este stocata in

memorie.

Page 50: CURS_IV

Date numerice în virgulă mobilă• Număr real în virgulă mobilă:

– Precizie extinsă [EXT]: –1.19e+4932 to 1.19e+4932 – Dublă precizie [DBL]: –1.79e+308 to 1.79e+308 – Simplă precizie [SGL]: –3.40e+38 to 3.40e+38

• Număr complex în virgulă mobilă:– Numărul complex în virgulă mobilă are o reprezentare echivalentă

ca și numerele reale în virgulă mobilă. Singura diferență este că numărul complex are o parte reală și una imaginară.

CXT (complex extended) = numar complex cu precizie extinsa (32 octeti)CDB (complex double) = numar complex cu precizie dubla (16 octeti)CSG (complex single) = numar complex cu precizie simpla (8 octeti)

Page 51: CURS_IV

Date de tip string

• Un string este o secvență de caractere ASCII. • Câteva dintre multele aplicații ale stringurilor sunt:

− Creare unui simplu mesaj text.− Trecerea datelor numerice prin instrumente ca și caractere string și apoi convertirea

stringurilor în numere numerice.− Înmagazinarea datelor numerice pe disc. Pentru memorarea numerelor numerice într-un

fișier ASCII, trebuie mai întâi convertite numerele numerice în stringuri.− Cutii de dialog, pentru diferitele atenționări ale utilizatorului.

• Există următoarele tipuri de elemente de tip string:− Control String− Indicator String − Funcții String

Page 52: CURS_IV

Date Booleene

• Datele Booleene sunt date de tip logic. Acestea au două valori: ADEVĂRAT și FALS. Datele Booleene sunt reprezentate prin două stări ON și OFF.

• Un control Boolean din panoul frontal al unui VI este fie un buton fie un comutator (switch). Un indicator Boolean din panoul frontal al unui VI este un LED.

• Butoanele Booleene au asociate mai multe funcții logice. Există șase moduri de operare al acestora.

1. Switch when pressed (Comută când este apăsat)2. Switch when released (Comută când este eliberat)3. Switch until released (Comută până când este eliberat)4. Latch when pressed (Închide când este apăsat)5. Latch when released (Închide când este eliberat)6. Latch until released (Închide până când este eliberat)

Page 53: CURS_IV

Change state on a button press. Remain there until another button press.

Change state on a button release. Remain there until another button release.

Change state on a button press. Change back when the button is released.

Change state on a button press. Change back when the control is read by LabVIEW.

Change state on a button release. Change back when the control is read by LabVIEW.

Change state on a button press. Change back when released and read by LabVIEW.

Switch When Pressed

Switch When Released

Switch Until Released

Latch When Pressed

Latch When Released

Latch Until Released

Page 54: CURS_IV

• DB este executată în funcţie de fluxul de date

• Nodurile sunt executate când datele sunt disponibile la toate intrările terminalelor

• Nodurile alimentează cu date toate terminalele de ieşire

E. Programarea fluxului de date

Page 55: CURS_IV

Exercise: Express Filter VIObjective: Explore the data flow of an example VI.

Page 56: CURS_IV

F. LabVIEW Documentation: Context Help• To display the Context Help window, select

Help»Show Context Help, press the <Ctrl-H> keys, or press the Show Context Help Window button in the toolbar

• Move cursor over objectto display help

• Connections:Required – boldRecommended – normalOptional - dimmed

Simple/Detailed Context Help Lock Help More Help

Page 57: CURS_IV

LabVIEW Help

• Click the More Help button in the Context Help window• Select Help»VI, Function, & How-To Help• Click the sentence Click here for more help in the Context Help

window.

Contains detailed descriptions of most palettes, menus, tools, VIs, and functions, step-by-step instructions for using LabVIEW features, links to the LabVIEW Tutorial, PDF versions of all the LabVIEW manuals and Application Notes, and technical support resources.

Page 58: CURS_IV

Exercițiu: Convert °C în °F

Page 59: CURS_IV

Exercițiu: Generarea unui semnal și afișarea datelor într-un tabel

Obiectiv: To build a VI that generates a signal, reduces the number of samples in the signal, and displays the resulting data in a table on the front panel.

Page 60: CURS_IV
Page 61: CURS_IV

G. Tehnici de reparare

• Găsirea erorilor

• Sublinierea execuţiei

• Probe

Clic în butonul Run întreruptFereastra va arăta erorile apărute

Clic în butonul Execution Highlighting; fluxul de date este animat utilizând baloane. Valorile sunt afişate pe fire.

Clic-dreapta pe un fir pentru afişarea probei şi a datelor ce curg prin secţiunea respectivă de fir. Se poate de asemenea selecta unealta Probe din paleta cu unelte, iar apoi se va da clic pe fir

Page 62: CURS_IV

Debugging Techniques

Breakpoints

Right-click on wire and select Set Breakpoint; pause execution at the breakpoint.

Conditional Probe

Combination of a breakpoint and a probe. Right-click on wire and select custom probe.

Page 63: CURS_IV

Debugging Techniques

Step Into, Over, and Out buttons for Single Stepping

Click on Step Into button to enable single steppingOnce Single Stepping has begun, the button steps into nodes

Click on Step Over button to enable single stepping or to step over nodes

Click on Step Out button to step out of nodes

Page 64: CURS_IV

Summary• Virtual instruments (VIs) have three main parts — the front panel, the block diagram,

and the icon and connector pane• The front panel is the user interface of a LabVIEW program and the block diagram is

the executable code• The block diagram contains the graphical source code composed of nodes, terminals,

and wires• Use Express VIs, standard VIs and functions on the block diagram to create your

measurement code. For the most common requirements, use Express VIs with interactive configuration dialogs to define your application.

• Floating Palettes: Tools Palette, Controls Palette (only when Front Panel Window is active), and Functions Palette (only when Block Diagram Window is active)

• There are help utilities including the Context Help Window and LabVIEW Help

Page 65: CURS_IV

Summary• Place controls (inputs) and indicators (outputs) in the front panel window• Use the Operating tool to manipulate panel objects. Use the Positioning tool to select,

move, and resize panel objects. Use the Wiring tool to connect diagram objects• Control terminals have thicker borders than indicator terminals• All front panel objects have property pages and shortcut menus• Wiring is the mechanism to control dataflow and produce LabVIEW programs• Broken Run arrow means a nonexecutable VI• Various debugging tools and options available such as setting probes and breakpoints,

execution highlighting, and single stepping

Page 66: CURS_IV

Tips• Common keyboard shortcuts

• Access Tools Palette with <shift>-right-click• Increment/Decrement faster using <shift> key• Tools»Options selection — set preferences in LabVIEW• VI Properties (File menu)

Windows Sun Linux MacOS<Ctrl-R> <-R> <M-R> <-R> Run a VI<Ctrl-F> <-F> <M-F> <-F> Find object<Ctrl-H> <-H> <M-H> <-H> Activate Context Help window<Ctrl-B> <-B> <M-B> <-B> Remove all broken wires<Ctrl-W> <-W> <M-W> <-W> Close the active window<Ctrl-E> <-E> <M-E> <-E> Toggle btwn Diagram/Panel Window

Page 67: CURS_IV

3. Programare Modulară

SUBIECTE

A. SubVI-uriB. Panoul Icoană și ConectorC. Utilizarea SubVI-urilorD. Crearea unui SubVI dintr-o secțiune a unui VI

Page 68: CURS_IV

A. Ierarhia LabVIEW

SubVI

Page 69: CURS_IV

SubVI-uri• După construirea unui VI şi crearea icoanei şi conectorului său, acesta poate fi utilizat într-un alt VI. Un VI dintr-un alt VI se numeste subVI. Un subVI corespunde unei subrutine într-un limbaj de programare pe bază de text.

•Avantaje–Modular–Uşor de reparat–Nu trebuie recreat codul–Necesită mai puţină memorie

Page 70: CURS_IV

Function Pseudo Codefunction average (in1, in2, out)

{out = (in1 + in2)/2.0;}

SubVI Block Diagram

Calling Program Pseudo Codemain{average (point1, point2, pointavg)

}

Calling VI Block Diagram

Page 71: CURS_IV

Nodurile în DB

SubVI-urile din DB se pot vedea ca icoane sau ca noduri expandabile. Cele două moduri, depind de preferințele utilizatorului, nemodificându-se funcționalitatea subVI-ului

Page 72: CURS_IV

B. Icoana şi Conectorul

• O icoană reprezintă un VI într-o altă DB

• Un conector arată terminalele disponibile pentru transferul de date

Fiecare VI afişază o icoană în colţul din dreapta sus a PF şi a DB. O icoană este o reprezentare grafică a unui VI. Ea poate conţine text, imagini sau combinaţii de ambele. Icoana identifică subVI-ul dintr-o DB a unui VI.

Sunt mai multe modele de conectori. Printr-un clic-dreapta în conector se poate selecta modelul din meniul Patterns. Se pot atribui controalelor şi indicatoarelor din PF, terminalelor conectorului.

ICOANA

Terminale

CONECTOR

Page 73: CURS_IV

Paşi pentru crearea unui SubVI

• Crearea Icoanei• Crearea Conectorului• Asignarea terminalelor• Salvarea VI-ului• Inserarea VI-ului într-un VI de nivel superior

Page 74: CURS_IV

SubVI Example – Calculating Slope• A VI within another VI is called a subVI• To use a VI as a subVI, create an icon and a connector pane after building the

front panel and block diagram

Page 75: CURS_IV

Crearea Icoanei

• Icon: graphical representation of a VI

• Clic-dreapta în icoana DB sau a PF și selectare Edit Icon

Default Icon Create a custom icon

Page 76: CURS_IV

Crearea Conectorului

Clic dreapta în panoul icoană (doar în PF)

Page 77: CURS_IV

Asignarea Terminalelor

Page 78: CURS_IV

C. Inserarea subVI-ului într-un VI de nivel superior

Accesarea subVI-uluiFunctions >>All Functions >> Select a VI

Sau Tragerea icoanei cu mousul în DB dorită

Page 79: CURS_IV

Exercise: Thermometer VI

Objective: To build a VI using the Convert C to F subVI to read a temperature from the DAQ Signal Accessory in Celsius or Fahrenheit.

• The sensor returns a voltage proportional to temperature. For example, if the temperature is 23 °C, the sensor output voltage is 0.23 V. The sensor is connected to Channel 0 of Device 1. Device 1 is the DAQ device. On some systems, the DAQ device may have another device number.

Page 80: CURS_IV
Page 81: CURS_IV

D. Opțiuni de creare a subVI-urilor• Crearea unui subVI dintr-o secțiune a unui VI• Se îngrădește aria dorită a fi convertită în subVI• Select Create SubVI from the Edit Menu

Page 82: CURS_IV

Summary• VIs can be used as subVIs after you make the icon and connector• Icon created using Icon Editor• Connector defined by choosing number of terminals• Load subVIs using the Select a VI option in the All Functions palette or

dragging the icon onto a new diagram• Online help for subVIs using the Show Context Help option• Descriptions document functionality• Use Create SubVI feature to easily modularize the block diagram

Page 83: CURS_IV

4. Bucle de control și regiștri de transfer

A. Bucla While B. Bucla ForC. Regiștri de transfer

Page 84: CURS_IV

A. Bucla WhileSimilar comportarii unei bucle Do sau o buclă Repeat-Until (=repeta pana cand) în cadrul limbajelor de programare bazate pe text, o buclă While execută o subdiagramă până când este întâlnită o condiție.

Page 85: CURS_IV

Do

(Execută diagrama din interiorul buclei)

While Condition is TRUE

1. Selectare buclă While 2. Înlănțuirea codului a fi repetat

3. Adăugarea de noduri suplimentare și apoi realizarea legăturilor

Terminal condiționare

Terminal iterație

Page 86: CURS_IV

Selectarea condițiilor buclei• Clic dreapta în terminalul condiționare pentru definirea opririi buclei• Pe marginile buclei se pot crea regiștri de deplasare care transferă datele de la o Pe marginile buclei se pot crea regiștri de deplasare care transferă datele de la o

iterație la următoareaiterație la următoarea

Terminal iterație Terminal condiționare

Page 87: CURS_IV

Structure Tunnels• Tunnels feed data into and out of structures. • The tunnel is a block that appears on the border; the color of the

block is related to the data type wired to the tunnel. • When a tunnel passes data into a loop, the loop executes

only after data arrive at the tunnel.

• Data pass out of a loop after the loop terminates.

Page 88: CURS_IV

Exemple de bucle While

În diagrama bloc din figură, bucla While este executată până când ieșirea funcției de multiplicare este mai mare sau egală cu 5, iar controlul Enable este Adevărat (True). Funcția ȘI (AND) returnează la ieșire valoarea True doar dacă cele două intrări sunt True. Altfel ieșirea este False.

Page 89: CURS_IV
Page 90: CURS_IV

• VI-ul din figura de mai jos generează numere aleatoare, până când numărul generat corespunde cu numărul specificat. Terminalul iteratie înregistrează numărul de numere aleatoare generate, până când apare numărul specificat.

Page 91: CURS_IV

Următorul VI, va simula aruncarea a două zaruri și va determina numărul de aruncări necesare până cele două zaruri corespund.

Page 92: CURS_IV

B. Bucla ForO buclă For execută o subdiagramă de un număr de ori, număr specificat de terminalul de numărare N.

Page 93: CURS_IV

• Plasaţi bucla For în DB selectând-o din paleta Structs & Constants aflată în meniul Functions. • O buclă For este un element redimensionabil. • Ea execută diagrama din interiorul său de un număr predeterminat de ori. Ea execută diagrama din interiorul său de un număr predeterminat de ori. • Bucla For are două terminale: terminalul de numărare Bucla For are două terminale: terminalul de numărare NN (un terminal de intrare) şi terminalul (un terminal de intrare) şi terminalul

de iterare de iterare ii (un terminal de ieşire). Terminalul de numărare arată de câte ori se execută bucla. (un terminal de ieşire). Terminalul de numărare arată de câte ori se execută bucla. Terminalul de iteraţie arată de câte ori a fost executată bucla.Terminalul de iteraţie arată de câte ori a fost executată bucla.

• Pe marginile buclei se pot crea regiștri de deplasare care transferă datele de la o iterație la Pe marginile buclei se pot crea regiștri de deplasare care transferă datele de la o iterație la următoareaurmătoarea

Terminalul de numărare Terminalul de numărare (terminal de intrare)(terminal de intrare)

Terminal iterație(terminal de ieșire)

Page 94: CURS_IV

Timing Functions

Wait Until Next ms Multiple

Wait (ms)

Time Delay

Page 95: CURS_IV

Numeric Conversion• Numerics default to double-precision (8 bytes) or long integer

(4 bytes)• LabVIEW automatically converts to different representations• For Loop count terminal always converts to a long integer• Gray coercion dot on terminal indicates conversion

Page 96: CURS_IV

Numeric Conversion• LabVIEW chooses the representation that uses more bits. • If the number of bits is the same,

LabVIEW chooses unsigned over signed.• To choose the representation,

right-click on the terminal and select Representation.

• When LabVIEW converts floating-point numerics to integers, it rounds to the nearest integer. LabVIEW rounds x.5 to the nearest even integer. For example, LabVIEW rounds 2.5 to 2 and 3.5 to 4.

Page 97: CURS_IV

Exercise: Timed Temperature VI

Objective: To read a temperature once every second for one minute.

Page 98: CURS_IV

C. Regiștrii de transfer• Registrii de transfer sunt componente ale structurilor repetitive ce pot fi

utilizate pentru transferul unor valori intre doua sau mai multe iteratii succesive ale structurii.Pentru a adauga un registru de transfer unei structuri repetitive (bucla For sau While), se selecteaza optiunea Add Shift Register din meniul propriu al structurii.

• Un registru de transfer contine doua terminale (stang si drept) dispuse pe conturul structurii.

• O valoare conectata la terminalul drept al registrului va "apare" in terminalul stang la iteratia urmatoare. Cu alte cuvinte, terminalul stang introduce in iteratia curenta valoarea ce a fost transmisa la terminalul drept in iteratia anterioara.

• La executarea primei iteratii a unei bucle, nu exista inca nici un transfer efectuat de catre registru intre cele doua terminale ale sale. Terminalul stang al registrului nu a fost inca "alimentat" cu o valoare din iteratia precedenta. Pentru a se putea efectua extragerea unei valori din terminalul stang la prima iteratie, se conecteaza la acest terminal o valoare din exteriorul buclei. Se spune ca registrul de transfer se initializeaza.

Page 99: CURS_IV
Page 100: CURS_IV

• Terminalul stang al unui registru de transfer poate fi dimensionat, capatand astfel mai multe componente. Intr-o astfel de situatie, valoarea transferata din iteratia anterioara se afla in componenta superioara. De sus in jos, fiecare componenta contine cate o valoare provenita dintr-o iteratie mai indepartata.

• Dupa executarea ultimei iteratii a buclei, din terminalul drept al registrului se poate extrage ultima valoare transferata acestuia.

• O structura repetitiva poate contine mai multi registri de transfer, fiecare cu una sau mai multe componente ale terminalului stang si fiecare transferand intre iteratii valori de diverse tipuri.

Page 101: CURS_IV

• VI-ul din figura de mai jos folosește registrii de deplasare si o bucla For, pentru a accesa valorile din repetarile anterioare. Indicatorul X(i) afiseaza valoarea curenta, indicatorul X(i-1) afiseaza valoarea penultimei iteratii, indicatorul X(i-2) afiseaza o valoare cu doua iteratii in urma, si asa mai departe.

Page 102: CURS_IV

VI-ul din figura de mai jos folosește registrii de deplasare si o bucla While, ce simulează un semafor

Page 103: CURS_IV

Feedback Nodes

• Appears automatically in a For Loop or While Loop if you wire the output of a subVI, function, or group of subVIs and functions to the input of that same VI, function, or group.

• Stores data when the loop completes an iteration, sends that value to the next iteration of the loop, and transfers any data type

Page 104: CURS_IV

Feedback Node

• Wire from output to input to automatically create a feedback node

<OR>• Place a feedback node from the

Functions»Structures palette

Page 105: CURS_IV

Initialized Shift Registers & Feedback Nodes

Run Once VI stops execution Run Again

Output = 5Output = 5

Output = 5 Output = 5

Page 106: CURS_IV

Uninitialized Shift Registers & Feedback Nodes

Run Once VI stops execution Run Again

Output = 8Output = 4

Output = 4 Output = 8

Page 107: CURS_IV

Exercise: Accessing Previous DataObjective: To observe the use of shift registers and feedback nodes to hold

data from previous iterations of a For Loop.

Page 108: CURS_IV

• Revise the shift register to display the last three iterations of the For Loop data, as shown in the following block diagram.

Page 109: CURS_IV

Summary• Two structures to repeat execution: While Loop and For Loop• Loop timing controlled using Wait Until Next ms Multiple function, the

Wait (ms) function, or the Time Delay Express VI.• Coercion dots appear where LabVIEW coerces a numeric representation

of one terminal to match the numeric representation of another terminal• Feedback nodes and shift registers transfer data values from one

iteration to the next• Use shift registers only when more than one past iteration is needed

Page 110: CURS_IV

5. Tablouri (Arrays)

• TOPICS• Introduction to Arrays• Auto Indexing Arrays• Array Functions• Polymorphism

Page 111: CURS_IV

• Spre deosebire de elementele scalare, care reprezentau o singura valoare, de un anumit tip (numeric, boolean, alfanumeric), elementele vectoriale (Array) pot contine, intr-o maniera ordonata, mai multe valori de acelasi tip.

• Un tablou este o colecţie de elemente ale datelor care sunt toate de acelaşi tip. • Un tablou are una sau mai multe dimensiuni şi până la 2^31 – 1 de elemente pe dimensiune, sau cât permite

memoria.• Tablourile, în LabVIEW, pot fi de orice tip: numerice, Booleane, tip cale, stringuri, unde, și tip clustere (exceptând

şiruri, tabele sau grafice). • Se poate accesa fiecare element al tabloului prin index-ul său. Index-ul este în gama (0, N-1) unde N este

numărul elementelor din tablou. Tabloul unidimensional (1D) arătat mai jos ilustrează această structură. De notat că primul element are index-ul 0, al doilea element are index-ul 1, etc..

Un tablou bidimensional (2D) necesită doi indici pentru localizarea unui element, un indice

coloană şi un indice linie, amândoi pornind de la zero.

Page 112: CURS_IV

Controale și indicatoare Tablou (Array)Se va selecta Array din subpaleta Controls >> All Controls >> Array and Cluster

Atunci cand un element de tipul Array se dispune pe panou, tipul datelor pe care acesta le va contine nu este inca definit. Se spune ca elementul de tip Array este vid.Terminalul din diagrama bloc al elementului este de culoare neagra. Sageata Run este sparta, semn ca programul este incomplet si nu poate fi rulat.Pentru a defini tipul de date, in elementul de tip Array trebuie introdus un element de control sau indicator scalar de tipul dorit (numeric, boolean, alfanumeric, e.t.c.).Elementul scalar ce urmeaza a fi introdus in Array poate exista deja pe panou sau poate fi selectat la momentul respectiv din paleta de elemente.

Page 113: CURS_IV

Modul de plasare a unui obiect de date (Control Numeric în cazul acesta) într-un tablou

EXERCITIUDispuneti pe panoul unei aplicatii:- un Array cu valori numerice;- un Array cu valori booleene;- un Array cu valori alfanumerice.Transformati cele trei Array-uri din elemente de control in elemente indicatoare.

Page 114: CURS_IV

• In mod implicit, atunci cand este creat, un Array are o singura dimensiune, putand fi descris drept o matrice coloana.

• Numarul de dimensiuni ale unui Array poate fi modificat prin dimensionarea indexului acestuia • Daca un Array are mai mult de o dimensiune, se poate stabili afisarea mai multor linii si mai

multor coloane.• Terminalul unui element Array se caracterizeaza prin prezenta unor paranteze drepte a caror

grosime este proportionala cu numarul de dimensiuni.• Atunci cand se realizeaza legaturi in diagrama, conexiunile pe care circula un Array cu o

dimensiune sunt mai groase decat cele pe care circula valori scalare.• Pentru Array-urile cu doua sau mai multe dimensiuni, conexiunile sunt reprezentate cu linie

dubla. Spatiul intermediar al liniei duble este cu atat mai mare cu cat numarul de dimensiuni ale Array-ului este mai mare.

EXERCITIUModificati numerele de valori vizibile ale celor trei Array-uri create in exercitiul anterior.Transformati Array-urile in elemente de control (daca este cazul) si definiti valori in cadrul acestora.Modificati indexul fiecarui Array si observati modul in care valorile se deplaseaza.

Page 115: CURS_IV

• Atunci cand este necesara existenta in diagrama a unei constante Array, aceasta poate fi selectata din meniul cu functii pentru valori vectoriale (Array) al paletei de functii.

• La dispunerea sa in diagrama, similar elementelor Array de pe panou, o astfel de constanta nu are definit tipul de date pe care le va contine.

• Definirea tipului de date se realizeaza prin introducerea in chenarul constantei Array a unei constante de tipul dorit (numeric, boolean sau alfanumeric).

• O constanta Array permite aceleasi operatii de definire a numarului de valori vizibile sau de modificare a numarului de dimensiuni ca si elementele Array din panou.

Page 116: CURS_IV

1. Select Array Constant shell from the Array subpalette

2. Place the data object in the array shell

Creating Array Constants

Page 117: CURS_IV

Crearea și utilizarea Tablourilor

• Auto-Indexarea – buclele acumulează array-urile la marginile lor.

• În mod implicit, buclele For sunt auto-indexate, în timp ce buclele While, nu.

Page 118: CURS_IV

Crearea Tablourilor cu ajutorul Buclelor

• Buclele acumulează tablourile la marginile lor

• Auto Indexarea poate fi eliminată

• Se pot utiliza două Bucle For, una în interiorul celeilalte, pentru crearea unui Array 2D.

• Bucla For exterioară crează elementele rânduri, iar Bucla For interioară crează elementele coloană.

Page 119: CURS_IV

Auto-Index Input

• An array input can be used to set the For Loop count terminal

• Number of elementsin the array equalsthe count terminalinput

• Run arrow not broken

Page 120: CURS_IV

Funcții Array

Pentru a obtine in mod dinamic (programatic), structuri de valori de tipul Array, pot fi utilizate o serie de functii specifice.

Page 121: CURS_IV

Array Size

Initialize Array

C. Common Array Functions

•Functia „Dimensiune Tablou” (Array Size), returneaza numarul de elemente ale fiecarei dimensiuni ale tabloului de intrare.

•Functia „Initializeaza tablou” (Initialize Array), realizeaza initializarea elementelor unui tablou cu N dimensiuni cu o valoare indicata.

Page 122: CURS_IV

Array Subset

•Functia „Subtablou” (Array Subset), returneaza un numar specificat din elementele unui tablou, începand de la un indice.

Page 123: CURS_IV

The Build Array Function

Building a higher dimension array

Concatenate Inputs

Appending an element

default

Page 124: CURS_IV

The Index Array Function

Extracting an Element

Extracting an Element of a Row

Extracting a Row

Page 125: CURS_IV

• Modurile in care un Array se poate comporta la intrarea sau la iesirea dintr-o structura repetitiva sunt valabile si in cazul buclelor While, cu deosebirea ca, in cazul acestora, comportamentul implicit este inversat:

-in mod implicit, o bucla While va prelua la fiecare iteratie intreg Array-ul de intrare. Doar in cazul in care componentei de pe contur i se selecteaza, din meniul propriu, optiunea Enable Indexing, bucla While va prelua cate o valoare la fiecare iteratie.

-in mod implicit, daca o valoare din interiorul unei bucle While se conecteaza la conturul acesteia, componenta de pe contur va genera, dupa incheierea executiei buclei, doar valoarea primita in ultima iteratie.Doar daca se selecteaza optiunea Enable Indexing a componentei de pe contur, aceasta va genera, dupa incheierea ultimei iteratii, un Array cuprinzand valorile primite in cadrul tuturor iteratiilor.

• Functiile aritmetice si logice pentru valori scalare, precum si cele pentru valori alfanumerice, permit conectarea de Array-uri continand valori de tipurile corespunzatoare.Se pot astfel realiza:

- operatii aritmetice asupra valorilor dintr-un Array (radacina patrata, functii trigonometrice etc.), intre un Array si o valoare scalara sau intre doua Array-uri;

- operatii logice intre un Array si o valoare booleana sau intre doua Array-uri cu valori booleene;-operatii asupra Array-urilor de valori alfanumerice.

Page 126: CURS_IV

• Functiile Add Array Elements si Multiply Array Elements determina suma, respectiv produsul valorilor numerice dintr-un Array.Functiile And Array Elements si Or Array Elements efectueaza operatiile logice SI, respectiv SAU, asupra tuturor valorilor booleene dintr-un Array, obtinand o valoare booleana scalara. Atunci cand au drept operanzi un Array si o valoare scalara sau doua Array-uri, functiile de comparatie genereaza un Array de valori booleene, compararea fiind efectuata valoare cu valoare.

• Daca, din meniul propriu al functiei de comparatie, se alege optiunea Compare Aggregates, functia va genera o valoare booleana scalara.De exemplu, daca se compara doua Array-uri de valori numerice cu functia Equal? in starea Compare Aggregates, functia va genera valoarea True doar daca este indeplinita conditia de egalitate intre toate perechile de valori aflate pe aceleasi pozitii in cele doua Array-uri.

• Functia Number To Boolean Array, aflata in meniul pentru functii booleene, transforma un numar natural intr-un Array de valori booleene, efectuand de fapt transformarea din baza 10 in baza 2.Bitul cel mai putin semnificativ este reprezentat in Array de valoarea cu indicele 0. De exemplu, valoarea 6=0+21+22 este transformata intr-un Array cu trei valori booleene: (False, True, True).

• Functia Boolean Array To Number realizeaza transformarea inversa, dintr-un Array de valori booleene intr-un numar natural.

Page 127: CURS_IV

D. Polimorfism• 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 adiţionale scalar – scalar, scalar – matrice și matrice-matrice de dimensiuni diferite.

Combinația Rezultatul

Scalar+Scalar

Array+scalar

Array+Array

Array+Array

Scalar

Array

Array

Array

Page 128: CURS_IV

Exerciții1. Să se creeze un VI cu 6 intrări booleane (opțional) și care să returneze numărul primei intrări

adevărate (opțional).

Page 129: CURS_IV

2. Să se creeze un VI care să genereze un tablou (array) cu 10 elemente aleatoare și care să scaleze aray-ul realizat, iar apoi să extragă ultimele 4 elemente din array-ul scalat.

Page 130: CURS_IV

• Exerciții (continuare)

Page 131: CURS_IV

• Arrays group data elements of the same type. You can build arrays of numeric, Boolean, path, string, waveform, and cluster data types.

• The array index is zero-based, which means it is in the range 0 to n – 1, where n is the number of elements in the array.

• To create an array control or indicator, select an Array on the Controls»Array & Cluster palette, place it on the front panel, and drag a control or indicator into the array shell.

• If you wire an array to a For Loop or While Loop input tunnel, you can read and process every element in that array by enabling auto-indexing.

• By default, LabVIEW enables auto-indexing in For Loops and disables auto-indexing in While Loops.

• Polymorphism is the ability of a function to adjust to input data of different data structures.

Summary

Page 132: CURS_IV

6. Clustere

TOPICS

A. Introduction to ClustersB. Cluster FunctionsC. Error Clusters

Page 133: CURS_IV

A. Clustere (Grupuri)

• Sunt structuri de date care grupează datele împreună• Datele pot fi de tipuri diferite (numerice, Booleene, stringuri, e.t.c.)• Elementele trebuie să fie, fie toate controale, fie toate indicatoare• Analog cu o legătură de fire dintr-un cablu• Fiecare fir din cablu reprezintă un element al clusterului• Deoarece un cluster are un singur fir (de intrare sau de ieșire) chiar dacă acesta transportă multiple valori

de diferite date, clusterele reduc firele și numărul de terminale conector pe care un subVI le necesită. Figura de mai jos ilustrează conceptul de grupare, respectiv degrupare, a elementelor de date într-un cluster.

Page 134: CURS_IV

134

1. Select a Cluster shell from the Array & Cluster subpalette

Cluster Controls and Indicators2. Place objects inside the shell

Page 135: CURS_IV

Creating Cluster Constants

1. Select Cluster Constant shell from the Cluster subpalette

2. Place objects in the Cluster shell

Page 136: CURS_IV

136

Cluster Order• Elements have a logical order (start with 0)• To change order, right-click the border and select Reorder Controls in

Cluster...

Page 137: CURS_IV

137

Utilizarea Clusterelor pentru transferul datelor în SubVI-uri

Unul dintre avantajele clusterelor este acela că acestea pot fi utilizate pentru gruparea datelor la intrarea și respectiv ieșirea subVI-urilor.

Clusterele reduc astfel numărul de fire într-o diagramă.

Page 138: CURS_IV

B. Funcții Cluster• Aceste funcții se găsesc în subpaleta Cluster, Class & Variant a paletei

Functions>>Programming

Page 139: CURS_IV

Funcţia Bundle • Grupează mai multe componente, realizând un grup, sau

înlocuieşte una sau mai multe componente ale unui grup existent.

• 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.

Page 140: CURS_IV

• O altă exemplificare a utilităţii funcţiei Bundle este prezentată în figura de mai jos.

• 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ă.

Page 141: CURS_IV

• Funcţia Bundle poate fi utilizată și pentru înlocuirea unor componente ale unui grup (cluster) deja existent. În acest caz, grupul trebuie conectat la intrarea cluster a funcţiei.

• În cadrul aplicaţiei de mai jos, funcţia bundle permite înlocuirea valorii numerice corespunzatoare controlului Knob şi respectiv a controlului Numeric 2, cu valorile numerice corespunzătoare controalelor knob_input, respectiv Numeric 2_input.

Page 142: CURS_IV

• 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 (input 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 posibilităţilor de înlocuire se pot vizualiza din meniul contextual al intrării funcţiei prin selectarea opţiunii Select Item.

Funcţia Bundle by Name

Page 143: CURS_IV

Funcțiile Unbundle și Unbundle by Name • Descompunerea (degruparea) grupurilor (clusterelor) în componente, se

realizează cu ajutorul a două funcţii, Unbundle şi Unbundle by Name.

Page 144: CURS_IV

C. Error Clusters

• Error cluster contains the following information:– Boolean to report whether error occurred– Integer to report a specific error code– String to give information about the error

•Use the error in and error out clusters in each VI you use or build to handle errors in the VI.•The error clusters located on the Controls»Array & Cluster palette include the components of information shown

Page 145: CURS_IV

Error Cluster Details

• Status is a Boolean value that reports TRUE if an error occurred. Most VIs, functions, and structures that accept Boolean data also recognize this parameter.

• Code is a signed 32-bit integer that identifies the error numerically. A non-zero error code coupled with a status of FALSE signals a warning rather than a fatal error.

• Source is a string that identifies where the error occurred.

Page 146: CURS_IV

Error Handling with Clusters• You can make error handling decisions on the block diagram • Error handling in LabVIEW follows the dataflow model. Just as data flow through a VI, so can error

information • Wire the error information from the beginning of the VI to the end• Error information is passed from one subVI to the next• If an error occurs in one subVI, all subsequent subVIs are not executed in the usual manner• Error Clusters contain all error conditions• Automatic Error Handling

Error Cluster

Page 147: CURS_IV

Simple Error Handler

Use the Simple Error Handler to handle the error at the end of the execution flow.

The Simple Error Handler is located on the Functions»All Functions»Time and Dialog palette. Wire the error cluster to the Error In (no error) input.

Page 148: CURS_IV

Using While Loops for Error Handling

You can wire an error cluster to the conditional terminal of a While Loop to stop the iteration of the While Loop.

Only the TRUE or FALSE value of the status parameter of the error cluster is passed to the terminal.

When an error occurs, the While Loop stops.

Page 149: CURS_IV

Exercise 6 – Error Clusters & Handling

Page 150: CURS_IV

• Clusters group data elements of mixed types. A cluster cannot contain a mixture of controls and indicators.

• To create a cluster control or indicator, select a cluster on the Controls»Array & Cluster palette, place it on the front panel, and drag controls or indicators into the cluster shell.

• Use the Cluster functions located on the Functions»All Functions»Cluster palette to create and manipulate clusters.

• Error checking tells you why and where errors occur.• The error cluster reports the status, code and source of the error.• Use the error cluster controls and indicators to create error inputs and outputs

in subVIs.

Summary

Page 151: CURS_IV

7. Afișarea datelor

TOPICS

A. Waveform ChartsB. Waveform and XY GraphsC. Intensity Plots

Page 152: CURS_IV

Înregistratoare (Grafice)•Înregistratoarele sunt indicatoare numerice speciale care afişează una sau mai multe curbe. Acestea se găsesc în paleta Graph Idicators a meniului Controls.

Sunt disponibile 3 tipuri de componente de interfata pentru vizualizarea reprezentarii grafice: -diagrama unda (waveform charts);-grafice unda (waveform graphs); -grafice XY (XY graphs);

Diagrama unda: Este o componeta de interfata dedicata afisarii uneia sau mai multor reprezentari grafice simultan, pentru care se urmareste variatia in timp. Graficele unda: Se utilizeaza pentru reprezentarea functiilor de o variabila (de forma y=f(x)), avand punctele distribuite uniform pe axa absciselor. Aceasta se aseamana cu diagrama undă. Permite realizarea uneia sau mai multor reprezentari simultane. Graficul XY: Este componenta cea mai generala, care permite realizarea reprezentarilor grafice ale functiilor de doua variabile X si Y. Deasemenea se pot realiza una sau mai multe reprezentari simultane.

Page 153: CURS_IV

Wiring to Charts

Single-Plot Chart

Multiple-Plot Chart

Page 154: CURS_IV
Page 155: CURS_IV

Personalizarea graficelor

Page 156: CURS_IV

• Selected from the Graph subpalette• Waveform Graph – Plot an array of numbers against their indices• XY Graph – Plot one array against another

Plot Legend(point and line styles)

Graph PaletteScale Legend

B. Graphs

Page 157: CURS_IV

Uniform X axisInitial X = 0.0Delta X = 1.0

Uniform X axisyou specify point spacing

Single-Plot Waveform Graphs

Page 158: CURS_IV

Multiple-Plot Waveform Graphs

Each row is a separate plot: Initial X = 0Delta X = 1

Each row is a separate plot:Bundle specifies point spacing of the X axis

Page 159: CURS_IV

• Non-uniform X axis• Separate X and Y arrays

define data points

XY Graphs

Page 160: CURS_IV

Chart and Graph Use SummaryUse the Context Help window with charts and graphs

Page 161: CURS_IV

C. Intensity Plots and Graphs

• Useful in displaying terrain, temperature patterns, spectrum analysis, and image processing

• Data type is a 2D array of numbers; each number represents a color• Use these options to set and display color mapping scheme• Cursor also adds a third dimension

Page 162: CURS_IV

Se va realiza un VI care să genereze un număr aleator la o rată specificată de utilizator și afișarea rezultatelor pe un grafic (Waveform Chart) până când este oprit de utilizator. Se va salva salva VI-ul cu numele While_Graph.vi

Exemple:

Page 163: CURS_IV

Se va modifica While_Graph pentru a calcula și afișa media ultimelor trei măsurări. Se va salva salva VI-ul cu numele While_Graph_Average.vi

Page 164: CURS_IV

Următorul exemplu arată construcția funcției trigonometrice sinus cu ajutorul buclei For, și afișarea rezultatului pe un Grafic undă.

Page 165: CURS_IV

• The waveform chart is a special numeric indicator that displays one or more plots. • Waveform graphs and XY graphs display data from arrays.• Right-click a waveform chart or graph or its components to set attributes of the chart

and its plots.• You can display more than one plot on a graph using the Build Array function and the

Bundle function for charts and XY graphs. The graph becomes a multiplot graph when you wire the array of outputs to the terminal.

• When you wire data to charts and graphs, use the Context Help window to determine how to wire them.

• You can use intensity charts and graphs to plot three-dimensional data. The third dimension is represented by different colors corresponding to a color mapping that you define. Intensity charts and graphs are commonly used in conjunction with spectrum analysis, temperature display, and image processing.

Summary

Page 166: CURS_IV

8. Luarea deciziilor într-un VI și structura secvențială (Sequence)

TOPICSA. Decision making with the Select functionB. Case StructuresC. Formula NodesD. Structura Sequence

Page 167: CURS_IV

A. Simple Decision: Select Function

• If Temp Scale is TRUE, pass top input; • If temp scale is FALSE, pass bottom input.

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

Page 168: CURS_IV

B. Case StructuresStructura de selectie Case - contine multiple subdiagrame, numai una din acestea executandu-se depinzând de valoarea de intrare transmisă structurii.

Page 169: CURS_IV

• Atunci cand este dispusa in diagrama, o structura Case contine doua ferestre (True si False), fiecare dintre acestea cu propriul flux de date.

• Pe conturul structurii se afla dispus un terminal selector (de culoare verde, continand semnul intrebarii).

• Structura Case va executa doar una din cele doua ferestre, in functie de valoarea booleana (True sau False) conectata la terminalul sau selector.

• Daca la terminalul selector al unei structuri Case, in locul unei valori booleene, se conecteaza o valoare numerica (numar intreg sau natural), numele ferestrelor se vor modifica automat din True si False in 0 si 1.

• Structura va executa fereastra al carei nume va coincide cu valoarea numerica ce ajunge la terminalul sau selector. In aceasta situatie, are sens ca structura Case sa contina mai mult de doua ferestre.

• Deoarece structura Case nu va putea contine atatea ferestre cate valori numerice pot ajunge la terminalul sau selector, una dintre ferestre trebuie declarata drept fereastra implicita (Default). Fereastra implicita va fi executata atunci cand valorii ajunse la terminalul selector nu ii corespunde nici un nume de fereastra.

• Un nume de fereastra poate contine si descrierea unei multimi de valori, de genul 2..5, 7..9, intelegand prin aceasta ca fereastra respectiva va fi executata daca la terminalul selector ajunge una din valorile 2, 3, 4, 5, 7, 8 sau 9.

• O valoare nu poate exista in numele mai multor ferestre (ar exista o incertitudine privind fereastra ce trebuie executata).

Page 170: CURS_IV

Boolean Case Structure Example:If Temp Scale is TRUE, execute True case;If temp scale is FALSE, execute False case.

Page 171: CURS_IV

Boolean and Numeric Cases

Wire all possible outputs of the case structure

Page 172: CURS_IV

String, Enum, and Error Cases

String Case Enum Case Error Case

Page 173: CURS_IV

Acest VI utilizează o structură Case pentru calculul rădăcinii pătrate a unui număr dat și verificarea dacă numărul respectiv este negativ. Dacă este negativ, VI-ul va returna valoarea -99999.0 în Indicatorul Digital și va afișa un mesaj de eroare, mesaj aflat într-o Constantă String.

Page 174: CURS_IV

• In the Structures subpalette • Implement complicated equations• Variables created at border• Variable names are case sensitive• Each statement must terminate with a semicolon (;)• Context Help Window shows available functions

Note semicolonC. Formula Node

Page 175: CURS_IV

• Exercițiu: Să se realizeze VI-ul din figura de mai jos

Page 176: CURS_IV

D. Structura secvențială (Sequence)• O structură secvențială conţine una sau mai multe subdiagrame sau cadre (frame)

care se execută în ordine secvenţială.• Există două secvenţe structurale: structură secvenţială plată (Flat Sequence

Structure) şi structură secvenţială stivuită (Stacked Sequence Structure). • Structura secvenţială plată se utilizează pentru a asigura execuţia unei

subdiagrame înainte sau după o altă subdiagramă. Adăugarea unei noi structuri secvenţiale se obţine prin click - dreapta pe chenarul structurii şi apelarea facilităţii dorite din meniul contextual. Un clik – dreapta pe bara orizontală a chenarului oferă două facilităţi: introducerea unei structuri secvenţiale în faţă (Add Frame Before) sau introducerea unei structuri după (Add Frame After). Un click – dreapta pe bara verticală a chenarului oferă doar una din cele două posibilităţi: pe bara stângă permite Add Frame Before iar pe bara dreaptă permite Add Frame After. Un click-dreapta pe o bară verticală a chenarului pentru o structură secvenţială intermediară oferă facilitatea Insert Frame.

Page 177: CURS_IV

• 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 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ă.

Page 178: CURS_IV

•Atunci cand este dispusa in diagrama, o structura Sequence stivă, contine o singura fereastra, aceasta fiind totodata si fereastra curenta (vizibila). Deschizand meniul propriu al structurii si alegand una din optiunile Add Frame After sau Add Frame Before, se poate adauga o fereastra dupa sau inaintea celei curente. •Daca o structura Sequence stivă contine mai mult de o fereastra, atunci ferestrele primesc indici (numere de ordine) incepand cu 0, iar pe latura superioara a conturului structurii apare un selector prin intermediul caruia se poate trece de la o fereastra la alta.•Atunci cand o structura Sequence stivă contine cel putin doua ferestre, ordinea acestora poate fi schimbata: se modifica indicele ferestrei curente, selectand optiunea Make This Frame, apoi noul indice.

Page 179: CURS_IV

• Atunci cand se doreste transferul unei valori intre doua ferestre ale unei structuri Sequence, prin selectarea optiunii Add Sequence Local se dispune pe conturul structurii o variabila locala a acesteia (sub forma unui patrat galben).

• Daca, in una din ferestrele structurii, se conecteaza o valoare la variabila locala, fereastra respectiva devine fereastra sursa pentru acea variabila. In acea fereastra, simbolul variabilei locale contine o fereastra indreptata spre exteriorul structurii.In ferestrele anterioare ferestrei sursa, simbolul variabilei locale devine hasurat, semn ca valoarea variabilei locale nu este accesibila in acele ferestre.

• In ferestrele de dupa fereastra sursa, simbolul variabilei locale va contine o sageata indreptata spre interiorul structurii. In aceste ferestre, valoarea transferata prin intermediul variabilei locale poate fi utilizata in fluxul de date. O structura Sequence poate dispune de mai multe variabile locale.

• Intr-o structura Sequence pot fi utilizate valori provenite din fluxul de date exterior. O valoare introdusa din exterior intr-o structura Sequence va putea fi utilizata in oricare dintre ferestrele structurii. Daca, intr-o anumita fereastra, se face o legatura din structura Sequence in exteriorul acesteia, la iesirea respectiva (patratul de pe contur) nu va mai putea fi legata o alta valoare din alta fereastra (ar exista o incertitudine privind valoarea care iese din structura).Indiferent de indicele ferestrei in care s-a facut o legatura spre exterior, valoarea va parasi iesirea de pe conturul structurii Sequence doar dupa executarea ultimei ferestre.

Page 180: CURS_IV

• În figura alăturată se prezintă o structură secvenţială stivă formată din 3 cadre (0, 1, 2) cadrul activ în figura prezentată fiind cadrul 1.

• În fiecare cadru se pot introduce nodurile existente sau edita altele noi. Diagrama care trebuie execută prima se introduce în cadrul “0”, diagrama care trebuie executată a doua în cadrul “1” s.a.m.d.

• O exemplificare a utilizării structurii secvenţiale stivă este prezentată în figura de mai jos

a) b)

c)

• 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.

• 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).

Page 181: CURS_IV

• The Select function is used to choose between two inputs dependant on a boolean input.

• A Case structure has two or more cases. Only one case is visible at a time, and the structure executes only one case at a time.

• If the case selector terminal is Boolean, the structure has a TRUE case and a FALSE case. If the selector terminal is an integer, string, or enumerated type value, the structure can have up to 231–1 cases.

• Inputs are available to all cases, but cases do not need to use each input. If at least one output tunnel is not defined, all output tunnels on the structure appear as white squares.

• Formula Nodes are useful for complicated equations and for using existing text-based code. A semicolon (;) must terminate each statement.

Summary

Page 182: CURS_IV

9. Stringuri și Fișiere I/O (Intrare/Ieșire)

TOPICSA. String controls and indicatorsB. String functionsC. File I/O operationsD. High-level File I/O VIsE. Low-level File I/O VIsF. Format text files for use in spreadsheets

Page 183: CURS_IV

A. Controale și Indicatoare String (Șir de caractere)• Un rol aparte intre controalele/indicatoarele din mediul LabView il joacă cele pentru lucrul cu sir de

caractere si tabele. Componentele din această categorie permit citirea/afisarea acestui tip de date.• Un string este o secvență de caractere (ASCII) afișabile sau neafișabile (spațiu, tab, e.t.c.)• Utilizări – afișarea mesajelor, controlul instrumentelor, fișiere I/O• Controalele/indicatoarele string se găsesc în subpaleta Controls» »Text Control or Text

Indicator

Page 184: CURS_IV

• Normal display

• Password display

• \ code display

• Hex display

Moduri de afișare a stringurilor

Page 185: CURS_IV

• Funcţiile pentru valorile alfanumerice sunt grupate în subpaleta String a paletei de funcții. Mai frecvent utilizate sunt cele pentru transformarea caracterelor în majuscule (To Upper Case), pentru transformarea caracterelor în minuscule (To Lower Case), de calculare a lungimii unui şir de caractere (String Length), de compunere a unui şir din două şiruri distincte (Concatenate String), de identificare şi înlocuire a unui şir în cadrul altuia (Search and Replace String) etc.

B. Funcţii String

• De asemenea, subpaleta String conţine un element String Constant utilizat pentru introducerea în diagramă a valorilor alfanumerice constante.

Page 186: CURS_IV

• Funcţia String Length determină numărul de caractere dintr-o valoare alfanumerică. Sunt luate în considerare şi caracterele neafişabile (spaţiu, Tab, sfârşit de linie etc). Numărul de caractere de la ieşirea funcţiei este exprimat ca un număr întreg pe patru octeţi.

• Funcţia Concatenate Strings posedă un număr de intrări ce poate fi modificat de către utilizator prin dimensionarea simbolului funcţiei (în mod asemănător cu Compound Arithmetic). La ieşirea sa, funcţia generează o valoare alfanumerică obţinută prin concatenarea textelor de la intrările sale, în ordinea de sus în jos.

Page 187: CURS_IV

• Funcţia String Subset extrage, din textul conectat la intrarea String, o porţiune de Length caractere începând de la caracterul aflat la poziţia Offset inclusiv (pentru primul caracter se consideră offset = 0). Dacă la intrarea Offset a funcţiei nu este introdusă nici o valoare, funcţia consideră că extragerea se va efectua începând cu primul caracter (valoarea implicită 0 a intrării offset). Dacă la intrarea Length nu este introdusă nici o valoare, funcţia consideră că extragerea se va efectua până la ultimul caracter inclusiv.

Page 188: CURS_IV

• Funcţia Replace Substring şterge o porţiune din textul conectat la intrarea String şi introduce în locul respectiv textul conectat la intrarea Substring. Porţiunea înlocuită începe de la caracterul aflat pe poziţia Offset inclusiv şi conţine Length caractere. Intrarea Offset are valoarea implicită 0, iar intrarea Length are o valoare implicită egală cu numărul de caractere legat la intrarea Substring. Dacă la intrarea Substring nu se leagă nici o valoare, funcţia efectuează o ştergere a unei porţiuni, iar dacă la intrarea Length se leagă valoarea 0 funcţia efectuează, de fapt, o inserare a unei porţiuni.

Page 189: CURS_IV

• Funcţia Search and Replace String caută textul Search String în textul conectat la intrarea String, iar când îl găseşte, îl înlocuieşte cu textul conectat la intrarea Replace String. Căutarea are loc începând de la poziţia Offset a textului String. Dacă la intrarea Offset nu se conectează nici o valoare, căutarea are loc începând cu prima poziţie. Dacă la intrarea Replace String nu se conectează nici o valoare, atunci funcţia efectuează o ştergere (înlocuire cu text vid). Dacă la intrarea Replace All nu se conectează nici o valoare, atunci funcţia se opreşte după prima apariţie a textului Search String. Dacă la această intrare se conectează o valoare logică de tip True, funcţia efectuează înlocuiri pentru toate apariţiile textului Search String. Funcţia generează textul rezultat în urma înlocuirii la ieşirea Result String, iar la ieşirea Offset Past Replacement generează o valoare indicând poziţia caracterului aflat imediat după ultimul caracter înlocuit.

Page 190: CURS_IV

• Funcţia Search/Split String caută textul conectat la intrarea Search String/char în textul conectat la intrarea String. Căutarea se efectuează începând cu poziţia Offset. Dacă textul căutat este găsit, funcţia împarte textul iniţial în două părţi, astfel: partea dinaintea textului căutat (Substring Before Match) şi textul căutat urmat de restul textului în care s-a făcut căutarea (Match + Rest Of String). Funcţia generează la ieşirea Offset Of Match poziţia în care a fost găsit textul căutat. Dacă textul căutat nu a fost găsit, ieşirea Substring Before Match conţine tot textul legat la intrarea String, iar ieşirea Offset Of Match are valoarea -1.

Page 191: CURS_IV

• Funcția Format Into String convertește numere într-un șir de caractere (1.28→1.2800). Această funcție nu este folosită doar pentru conversia datelor numerice în date string. Mai pot fi convertite în stringuri următoarele elemente: căi de fișiere, enumerări, date Booleene. De exemplu, utilizând formatul %s un Boolean va fi convertit în "FALSE" sau "TRUE." Utilizând formatul %d, Booleanul va fi convertit în "0" sau "1." Similar, utilizând formatul %s, un Enum va fi convertit în textul său. Utilizând formatul %d, Enum va fi convertit în valoarea sa întreagă.

Page 192: CURS_IV

Converting Numerics to StringsThe Build String Express VI concatenates an input string. If the inputs are not a string, the inputs are converted to a string based on the configuration of the Express VI. The Build String Express VI is available in the Functions»Output palette.

Page 193: CURS_IV

Converting Strings to NumericsScan From String: Converts the input string containing valid numeric characters to individual numbers. Format string can specify multiple outputs with differing data types (numeric, Boolean, etc.). The function can be stretched out to add more output terminals.

Page 194: CURS_IV

1. Să se realizeze un VI care să convertească un număr și un control slide (Trailer) într-un string și care să concateneze acest string cu un alt string (Header) astfel încât să rezulte un singur string de ieșire. VI-ul va determina de asemenea lungimea stringului de ieșire.

Exerciții

Page 195: CURS_IV

3. Se va realiza un VI care să exemplifice modul de creare a unui tabel în care fiecare coloană corespunde unei variabile diferite

2. Să se realizeze un VI care să convertească un număr într-un string și care să concateneze acest string cu alte stringuri astfel încât să rezulte un singur string de ieșire. VI-ul va determina de asemenea lungimea stringului de ieșire.

Page 196: CURS_IV

C. Fișiere Intrare/Ieș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

Principalele operații ce pot fi realizate sunt:• Deschidere si închidere fisiere de date;• Citirea datelor din fișiere si scrierea datelor în fisiere;• Mutarea si redenumirea fisierelor si directorilor;• Crearea de directori și fișiere, specificați în controlul

cale; • Scrierea de stringuri, numere, vectori și clustere în

fișiere.Fișierele pot fi binare, text sau tabel.Scrierea/Citirea în fișierele de măsurare LabVIEW au

extensia “lvm” (*.lvm)

Page 197: CURS_IV

Four Hierarchy Levels:

High-level File VIs

Intermediate File VIs and Functions

Advanced File Functions subpalette

Express VIs

There are 4 levels of file I/O hierarchy: High-Level Utility File VIs, Intermediate File I/O functions, Advanced File I/O and Express VIs functions.

Page 198: CURS_IV

The high-level VIs handle all lower level functions transparently and provide a simplified means of error handling. If an error occurs, a dialog box appears showing the error.The Intermediate File I/O functions provide substantially more flexibility while still handling the lowest level of functionality for you. You can handle 80-90% of file I/O operations at this level. Encourage students to use the Intermediate File I/O functions for their applicationsThe Advanced File I/O functions manage all file I/O operations explicitly but are the most complex.

This is a great place to explain the difference between VIs and Functions. Functions are manilla/yellow, are the lowest level calls LabVIEW can make, and you do not have access to their block diagram or source code. VIs included in the functions palette have white backgrounds and if you look at their block diagrams you will see they are composed of functions.

Page 199: CURS_IV

• Write to Spreadsheet File

• Read from Spreadsheet File

• Write Characters to File

• Read Characters from File

• Read Lines from File

D. High-level File I/O VIs

Page 200: CURS_IV

E. Model de program pentru un Fișier I/ODeschide/

Crează/Înlocuiește

Fișier

Citește și/sau

Scrie în Fișier

Închide Fișier

VerificăErorile

Page 201: CURS_IV

Salvarea (Scrierea) datelor într-un fișier

• Deschide/Crează/Înlocuiește, deschide fișierul existent test1.dat și generează fișierul identificator refnum și clusterul error, care este un mănunchi de date ce conține informații referitoare la erorile posibile.

• Write File scrie datele• Close File închide fișierul• Simple Error Handler verifică erorile

Page 202: CURS_IV

Exemplu de scriere într-un fișier

• Open/Create/Replace opens the existing file TEST1.DAT and generates refnum and error cluster

• Write File writes the data• Close File closes the file• Simple Error Handler checks for errors

Page 203: CURS_IV

Citirea datelor dintr-un fișier

• Open/Create/Replace opens the file

• Read File reads the specified number of bytes from the file

• Close File closes the file

• Simple Error Handler checks for errors

Page 204: CURS_IV

F. Formarea stringurilor tabelare• Tabelele sunt unelte foarte utile pentru manipularea și analiza datelor• Există mai multe formate pentru datele tabelare. Cel mai întâlnit este formatul

delimitat prin “tab”:– Coloanele sunt separate prin caracterul tab– Rândurile sunt separate prin caracterul end-of-line (enter)

• Tabelele sunt ușor de realizat utilizând VI-urile fișiere I/O din LabVIEW, cel mai utilizat fiind Format into File

Format Into File convertește orice număr într-un string și inserează caracterele “tab” si “end-of-line”. Ieșirea este un string în format tab delimitat compatibil cu multe programe tabelare.

Page 205: CURS_IV

Crearea fișierelor tabelare

Tab End of Line

Page 206: CURS_IV

Funcţii Expres pentru lucru cu Fişire I/OÎn figura de mai jos se exemplifică utilizarea funcţiei de scriere a datelor într-un fişier (Write To Measurement File). Se

remarcă construcţia fişierului de date cu precizările referitoare la data simulării, numărul de eşantioane etc. • LabVIEW Measurement• Writer_Version 2• Reader_Version 2• Separator Tab• Decimal_Separator ,• Multi_Headings Yes• X_Columns No• Time_Pref Relative• Operator Mihai• Date 2009/04/27• Time 11:01:18,363543• ***End_of_Header***•• Channels 1• Samples 100• Date 2009/04/27• Time 11:01:18,363543• X_Dimension Time• X0 0,0000000000000000E+0• Delta_X 0,001000• ***End_of_Header***• X_Value Sine Comment• 0,000000• 0,063418• 0,126580• 0,189233• 0,251123• 0,312003• 0,371627• 0,429755• 0,486152• 0,540593• 0,592857• 0,642734• 0,690024• 0,734536• 0,776090

Page 207: CURS_IV

Exemplificarea citirii unui fişier de măsurători test_2.lvm şi vizaualizarea informaţiei acetuia este prezentată în figura de mai jos.

Page 208: CURS_IV

Exercițiu: Să se realizeze VI-ul de mai jos, care stochează datele într-un fișier și care afișază valoarea medie, maximă și minimă a acestor date

Page 209: CURS_IV

10. Achiziția datelor

TOPICSA. Overview and ConfigurationB. Data Acquisition in LabVIEWC. Analog InputD. Data LoggingE. Analog OutputF. CountersG. Digital I/O

Page 210: CURS_IV

A. Overview and Configuration

Page 211: CURS_IV

• Sarcina fundamentală a unui sistem DAQ este măsurarea sau generarea semnalelor fizice din (în) lumea reală. Inainte ca un sistem bazat pe computer să poată măsura un semnal fizic, un senzor sau un traductor trebuie să convertească semnalul fizic într-un semnal electric cum este tensiunea sau curentul. Adesea, placa DAQ plug-in este considerată a fi întregul sistem DAQ; dar, placa este numai una din componentele sistemului. Spre deosebire de majoritatea instrumentelor independente, uneori nu se pot conecta semnalele direct la o placă DAQ plug-in. Un accesoriu pentru condiţionarea semnalului trebuie să condiţioneze semnalele înainte ca placa DAQ plug-in să le convertească în informaţie digitală. In final, software-ul controlează sistemul DAQ – achiziţionând datele brute, analizînd datele şi prezentând rezultatele.

• Schema simplificată a unui sistem computerizat de monitorizare şi control, cuprinzând componentele sale principale, este prezentată în figura de mai jos.

• Trebuie remarcat faptul că dacă între procesul monitorizat şi traductor, respectiv elementul de comandă şi procesul monitorizat, are loc un transfer de energie ce poate lua diverse forme (mecanică, termică, electromagnetică etc.), în restul sistemului există un transfer de informaţie conţinută în semnale de natură electrică.

Page 212: CURS_IV

•Traductoarele sondeaza lumea reala, “culeg” semnale analogice (ex: sunete, radiatii luminoase, etc.) si le transforma în semnale electrice pe care le va prelua placa de achizitie. Exemple de astfel de traductoare: microfoane, fotorezistente, celule fotovoltaice, termocupluri, etc. •În majoritatea situatiilor se utilizeaza sisteme de conditionare a semnalui (filtre, amplificatoare) care asigura compatibilitatea semnalului electric cu placa de achizitie si realizeaza, în unele situatii, o prelucrare primara a semnalului.

Page 213: CURS_IV

•Placa de achizitie are rolul de a asigura conversia semnalului analogic primit de la traductor sau de la un sistem de conditionare a semnalui, în semnal digital. Ea poate îndeplini si alte functii, precum generarea de semnale analogice, comunicatii digitale, numarare (cronometrare) prin primirea si transmiterea de semnale sub forma de impulsuri.•Semnalele electrice ce intră sau ies din condiţionatoarele de semnal sunt de natură analogică, pe când semnalele schimbate între computer şi convertoarele din cadrul plăcii de achiziţie de date sunt de natură digitală.•În sistemele computerizate de măsurare şi control, computerul are nu numai rolul de prelucrare a informaţiilor obţinute ci şi pe acelea de afişare a acestora pentru uzul utilizatorului şi stocare în vederea consultării ulterioare.

Page 214: CURS_IV

Exemplu de achiziţie a undelor sonore Un exemplu de sistem de achiziţie ce are ca senzor un microfon este prezentat mai jos. Microfonul înregistraza vibratiile sonore emise de un diapazon, pe care le transforma în tensiune electrica variabila. Aceasta este transmisa placii de achizitie care o va converti în cod binar. Sub aceasta forma semnalul poate fi înregistrat, analizat si prezentat sub diferite forme pe monitorul computerului.

Page 215: CURS_IV

Exemplu de conversie a semnalului digital în unde sonore

Placa de achizitie poate efectua si conversia semnalului binar în semnal analogic care sa fie preluat în acest caz de boxele care îl vor transforma din nou în vibratii sonore.

Page 216: CURS_IV

Exemplu de măsurare a temperaturii

+12V supply

4400Ohm Resistor

RTD NI 6008

Laptop

LabVIEW

VI

USB

Traductorul/Senzorul este o termorezistență de platină (RTD)Condiționarea de semnal este realizată cu ajutorul unei surse de alimentare de 12V și o rezistență fixă de 4400Ω.Unitatea de achiziție este o placă pe USB NI 6008

Page 217: CURS_IV

• Plăcile de achiziție National Instruments, includ drivere NI-DAQ, care sunt o colecție de VI-uri, utilizate pentru configurarea, achiziția datelor de la placa de achiziție, precum și trimiterea datelor de la aceasta.

• NI-DAQ 7.0 conține două drivere NI-DAQ - NI-DAQ tradițional și NI-DAQmx – fiecare cu Interfață de Programare Aplicație (API) proprie, precum si configurare hardware și software diferite.

• NI-DAQmx este cea mai nouă versiune de driver NI-DAQ, practic singura versiune utilizată astăzi. Acest driver, are noi VI-uri (față de driverul tradițional), noi funcții și unelte de dezvoltare pentru controlul plăcilor de măsurare. Avantajul important al acestui nou driver îl constituie VI-ul DAQ Assistant utilizat pentru configurarea canalelor și a aplicațiilor de măsurare.

• Atât NI-DAQ tradițional cât și NI-DAQmx suportă diferite seturi de dispozitive

Page 218: CURS_IV

NI-DAQ conține:•NI-DAQ traditional•NI-DAQmx

Cadrul general al software-ului de măsurare

Page 219: CURS_IV

• Odată cu instalarea lui LabVIEW, are loc și instalarea instrumentului software al firmei National Instruments Measurement & Automation Explorer (MAX), care ajută la instalarea şi testarea echipamentelor hardware produse de firma National Instruments.

• Acest program instalează şi monitoriuzează orice echipament al firmei National Instruments, care a fost conectat la calculator.

Measurement & Automation

Explorer (MAX),

Page 220: CURS_IV

• În figura de mai jos se pot oberva posibilităţiile oferite de acest component software: se poate efectua un autotest (Self-Test) pentru a vedea dacă echipamentul selectat funcţionează bine, un test de verificare (Test Panels), se poate crea o activitate (Create Task) care se poate include în program, se poate vedea configuraţia pinilor (Device Pinouts), proprietăţiile placii (Properties).

Page 221: CURS_IV

• Se poate efectua un test în care se pot regla şi testa mai multe elemente. Acest test se numeşte Test Panels. Un asemenea test este prezentat în figura de mai jos. În acest test se pot testa intrarile analogice la care trebuie menţionat valoarea maximă şi minimă a intervalului de măsurare, frecvenţa (Rate) şi numărul de eșantioane (Samples To Read), ieşirile analogice, linii digitale I/O, numărătoarele (counter/timer).

Page 222: CURS_IV

• În figura alăturată este arătat modul de creare a unei activități (task), selectând opţiunea Create Task.

• În acest configurator trebuie setată valoarea maximă şi minimă a semnalului măsurat, driverul DAQmx amplificând sau atenuând automat semnalul pentru o rezoluţie căt mai bună a convertorului analog-numeric, astfel încât măsurarea ce va fi efectuată va fi mult mai sensibilă pe domeniul selectat. Mai trebuie de asemenea specificată configurarea intrărilor analogice (Terminal Configuration), unde există mai multe posibilităţi. Se va încheia definirea task-ului prin atribuirea unui nume. Toate activităţile pe care le definiţi se vor regăsi în lista Data Neighborhood\NI-DAQmx Tasks.

Page 223: CURS_IV

B. Achiziția datelor în LabVIEWVI-urile pentru achiziția de date în LabVIEW se află în subpaleta DAQmx - Data Acqusition a subpaletei Measurement I/O, a paletei Functions. Subpaleta DAQmx - Data Acqusition conține toate VI-urile onține toate VI-urile necesare pentru realizarea operațiilor I/O analogice, necesare pentru realizarea operațiilor I/O analogice, I/O digitale și a operațiilor de contorizare/numărare. I/O digitale și a operațiilor de contorizare/numărare. Se pot configura activitățile (task-urile) pentru a se Se pot configura activitățile (task-urile) pentru a se obține o sumedenie de funcții specifice utilizând obține o sumedenie de funcții specifice utilizând Nodurile Proprietate aflate în aceiași subpaletă.Nodurile Proprietate aflate în aceiași subpaletă.Multe aplicații, care nu necesită sincronizări și timing-Multe aplicații, care nu necesită sincronizări și timing-uri importante pot fi obținute cu ajutorul VI-ului uri importante pot fi obținute cu ajutorul VI-ului DAQ Assistant Express. Acest VI permite o ușoară configurare a plăcii de achiziție. La plasarea lui DAQ Assistant Expres, în diagrama bloc, apare și o cutie dialog unde sunt configurate diferitele obiecte locale pentru realizarea funcțiilor specifice de măsurare.

Page 224: CURS_IV

NI-DAQmx pentru achiziția de date

Set de VI-uri utilizate pentru realizarea operațiilor de I/O anlogice, I/O digitale și a celor de numărare.

VI-ul Express, DAQ Assistant• Programare rapidă și ușoară a placilor DAQ• Crează o aplicație (task) locală• Multe aplicații pot utiliza VI-ul Expres DAQ

Assistant

Page 225: CURS_IV

Tipuri de aplicații de achiziție de date cu NI-DAQmx

Se pot realiza următoarele tipuri de măsurări:•Analog Input•Analog Output•Counter Input•Counter Output•Digital I/O

• Atunci când este plasat VI-ul Express DAQ Assistant în diagrama bloc, apare o cutie de dialog în care se configurează aplicația (task-ul) pentru realizarea funcției de măsurare specifică. Prin crearea acestei aplicații locale se va specifica exact tipul de măsurare care va avea loc.

Page 226: CURS_IV

C. Intrare analogică• Intrarea analogică este utilizată

pentru realizarea conversiilor analog-digitale (A/D)

• Tipurile de măsurare disponibile în această aplicație sunt: tensiune, temperatură, efort (forță), curent rezistență sau frecvență.

• Fiecare tip de măsurare are propriile caracteristici, cum ar fi valoarea rezistenței pentru măsurarea curentului sau parametrii mărcii tensometrice pentru măsurarea efortului (forței)

Page 227: CURS_IV

Analog Input Task Timing and Triggering

Configures the number of samples and sample rate for the task

Configures the start and reference triggers for the task

Page 228: CURS_IV

• Atunci când se realizează o aplicație de intrare analogică, aceasta poate fi setată să achiziționeze 1 Eșantion, n Eșantioane sau o achiziționare Continuă. Achiziția 1 Eșantion

• Achiziția unui singur eșantion este o operație la cerere. Cu alte cuvinte, NI-DAQmx achiziționează o valoare la o intrare a canalului și imediat returnează valoarea. Această operație nu necesită sincronizare hardware. De exemplu, dacă se monitorizează periodic nivelul de fluid într-un rezervor, vor trebui achiziționate un singur punct de date. Traductorul conectat la rezervor va produce o tensiune reprezentând nivelul fluidului, la un singur canal al dispozitivului de măsurare inițiind un singur punct de achiziție.Achiziția n Eșantioane

• O modalitate de a achiziționa eșantioane multiple de la unul sau mai multe canale, constă în achiziția de eșantioane singulare în mod repetat. Totuși, achiziționând un singur eșantion de date, de la unul sau mai multe canale, de mai multe ori, este ineficient și consumă timp. Mai mult decât atât, va lipsi controlul asupra timpului dintre fiecare eșantion sau canal. În locul acestei metode de achiziție se poate utiliza sincronizarea hardware, care utilizează un buffer în memoria computerului, pentru a achiziționa date mult mai eficient. Din punct de vedere al programării, va trebui inclusă în program o funcție de sincronizare și va trebui specificat rata de eșantionare și modul de eșantionare. Ca şi în alte funcţii, vom avea posibilitatea să achiziţionăm eșantioane multiple de la un singur canal sau de la mai multe canale.

• În acest caz, am putea monitoriza atât nivelul de fluid în rezervor cât şi temperatura. Vom avea nevoie de două traductoare conectate la doua canale ale plăcii.Achiziția Continuă

• Utilizată atunci când se dorește vizualizarea unui proces.

Page 229: CURS_IV

OB

JEC

TIVE

Exercițiul 10.1: VI-ul Voltmetru

Obiectiv: Achiziția unui semnal analogic utilizând placa de achiziție NI USB 6008.

• Se vor completa pașii de mai jos pentru realizarea unui VI care să măsoare tensiunea conectată la canalul ai0 al plăcii de achiziție1. Se deschide un VI gol și se va realiza panoul frontal din figură

Page 230: CURS_IV

2. Se va realiza diagrama bloc din figură

Page 231: CURS_IV

a. Plasați VI-ul• Place the DAQ Assistant Express VI located on the Functions» Input palette, on the block diagram.

Configure this VI to read an analog input channel and return the voltage.• – Select Analog Input»Voltage for the measurement to make.• – Select Dev1»ai0 for the physical channel.• – Click the Finish button.• – The Analog Input Voltage Task dialog box appears. Configure the Task Timing to Acquire 1 Sample.• – Click the OK button to close the Analog Input Voltage Task• Configuration dialog box. This saves the settings specified for the task in the DAQ Assistant Express VI.• b. Place the Wait Until Next ms Multiple function, located on the Functions»All Functions»Time & Dialog

palette, on the block diagram. Right-click the input and select Create Constant from the shortcut menu. Type 100 in the constant to cause the loop to execute every 100 ms.

• c. Place the Unbundle by Name function, located on the Functions»All Functions»Cluster palette, on the block diagram. Use this function to access the status from the error cluster.

• d. Place the Or function, located on the Functions»Arithmetic&Comparison»Express Boolean palette, on the block diagram. This function stops the loop if an error occurs or the user clicks the power switch on the front panel.

• 3. Save the VI as Voltmeter.vi in the C:\Exercises\LabVIEW Basics I directory. You will use this VI later in the course.

• 4. Display the front panel and run the VI.

Page 232: CURS_IV

Exercise 9.3

Measurement Averaging VI

Time to complete: 15 min. Page 9-18

To reduce noise in analog measurement by averaging.

OB

JEC

TIVE

Page 233: CURS_IV

D. Data Logging• It is often necessary to permanently store data that is acquired from

the DAQ device• LabVIEW includes the ability to read and write a LabVIEW

Measurement File• LabVIEW Measurement File is an ASCII text file

Page 234: CURS_IV

Exercise 9.4

Simple Data Logger VI

Time to complete: 15 min. Page 9-20

Learn to use a LabVIEW Measurement File.

OB

JEC

TIVE

Page 235: CURS_IV

E. Analog Output

Analog Output task is specific to the generation type

Page 236: CURS_IV

Analog Output Task Timing and Triggering

Configures the number of samples and sample rate for the task

Configures the start and reference triggers for the task

Page 237: CURS_IV

Exercise 9.5

Voltage Output VI

Time to complete: 15 min. Page 9-25

To output an analog voltage using the DAQ device.

OB

JEC

TIVE

Page 238: CURS_IV

F. CountersA counter is a digital timing deviceTypical uses of a counter:• Event counting• Frequency measurement• Period measurement• Position measurement• Pulse generation

Gate

Source

Output

Count Register

Count register – Stores the current count of the counterSource – Input that causes the counter to increment each time it togglesGate – Input that is used to enable or disable the function of the counterOutput – Signal that generates pulses or a series of pulses

Page 239: CURS_IV

How does a counter work?

Source

Gate

Count (Output) 2 4 6

* Counter set to event counting on a rising edge.

Page 240: CURS_IV

Exercise 9.6

Simple Event Counting VI

Time to complete: 15 min. Page 9-29

To create a simple event counting VI.

OB

JEC

TIVE

Page 241: CURS_IV

G. Digital Input and Output• Digital I/O can read

from or write to a line or an entire digital port

• A digital port is a collection of digital lines

Page 242: CURS_IV

Exercise 9.7

Digital Example VI

Time to complete: 15 min. Page 9-32

To control the digital I/O lines on the DAQ device.

OB

JEC

TIVE

Page 243: CURS_IV

Summary• MAX is the primary configuration and testing utility that is available

for the DAQ device.• The DAQ Assistant is used to configure the DAQ device and

perform data acquisition.• Most application can use the DAQ Assistant. For applications that

require advanced timing and synchronization use the VIs that come with NI-DAQmx.

• The DAQ Assistant can perform Analog Input, Analog Output, Digital I/O, and Counter operations.