+ All Categories
Home > Documents > Labview CURS

Labview CURS

Date post: 27-Dec-2015
Category:
Upload: basescumarius
View: 256 times
Download: 13 times
Share this document with a friend
94
INTRODUCERE Există diverse niveluri de complexitate ale pachetelor software ce permit programarea sistemelor computerizate de măsurare, de la variante ce utilizează funcţii specifice incluse în limbaje de programare de nivel înalt până la mediile de programare grafică, acestea din urmă constituind o soluţie ce oferă, printre altele, posibilitatea obţinerii unui raport maxim între performanţele aplicaţiei realizate şi volumul de muncă depus pentru obţinerea acesteia. Reprezentând probabil următorul pas decisiv în programarea calculatoarelor, mediile de programare grafică se caracterizează în principal, pe lângă posibilităţile deosebite de realizare a interfeţei grafice cu utilizatorul, prin aceea că programatorul nu mai este nevoit să descrie aplicaţia sub forma unui şir de instrucţiuni introduse într-un editor de texte, ci desenează diagrama acesteia utilizând unelte dedicate puse la dispoziţie de către mediul de programare. Vor fi descrise în continuare o serie de aspecte legate de utilizarea unuia dintre cele mai răspândite medii de programare grafică folosite în cadrul sistemelor de măsurare computerizate, pachetul software LabVIEW, realizat de corporaţia National Instruments. PREZENTAREA GENERALA A LIMBAJULUI G G este un limbaj de programare grafica . El diferă de celelalte medii de programare într-un singur şi important aspect, şi anume, celelalte limbaje sunt bazate pe text, pe când G este un mediu de programare exclusiv grafic. La fel ca C sau Basic, este un mediu de programare cu scop general , cu librării de funcţii extensibile pentru orice cerinţă de programare. G include librării specifice aplicaţiilor de: achiziţii de date, GPIB şi controlul instrumentelor seriale, 1
Transcript
Page 1: Labview CURS

INTRODUCERE

Există diverse niveluri de complexitate ale pachetelor software ce permit programarea sistemelor computerizate de măsurare, de la variante ce utilizează funcţii specifice incluse în limbaje de programare de nivel înalt până la mediile de programare grafică, acestea din urmă constituind o soluţie ce oferă, printre altele, posibilitatea obţinerii unui raport maxim între performanţele aplicaţiei realizate şi volumul de muncă depus pentru obţinerea acesteia.

Reprezentând probabil următorul pas decisiv în programarea calculatoarelor, mediile de programare grafică se caracterizează în principal, pe lângă posibilităţile deosebite de realizare a interfeţei grafice cu utilizatorul, prin aceea că programatorul nu mai este nevoit să descrie aplicaţia sub forma unui şir de instrucţiuni introduse într-un editor de texte, ci desenează diagrama acesteia utilizând unelte dedicate puse la dispoziţie de către mediul de programare.

Vor fi descrise în continuare o serie de aspecte legate de utilizarea unuia dintre cele mai răspândite medii de programare grafică folosite în cadrul sistemelor de măsurare computerizate, pachetul software LabVIEW, realizat de corporaţia National Instruments.

PREZENTAREA GENERALA A LIMBAJULUI G

G este un limbaj de programare grafica . El diferă de celelalte medii de programare într-un singur şi important aspect, şi anume, celelalte limbaje sunt bazate pe text, pe când G este un mediu de programare exclusiv grafic.

La fel ca C sau Basic, este un mediu de programare cu scop general, cu librării de funcţii extensibile pentru orice cerinţă de programare.

G include librării specifice aplicaţiilor de:

achiziţii de date,

GPIB şi controlul instrumentelor seriale,

analiză de date,

prezentare de date şi stocare de date.

G, cuprinde deasemenea unelte pentru depanarea programelor (Debugging Tools):

se pot plasa in sursa grafica puncte de control,

se poate anima execuţia programului pentru a vizualiza modul fluent în care circulă datele de la început până la sfârşitul programului, sau pas cu pas ceea ce permite o usoara depanare şi dezvoltare a programului.

Programele G sunt denumite instrumente virtuale (VIs), pentru că înfăţişarea şi operaţiile sale pot imita instrumentele fizice reale. Totuşi, istrumentele virtuale sunt similare cu funcţiile limbajelor de programare convenţionale.

Un VI constă dintr-o interfaţă utilizator interactivă şi o diagramă bloc care reprezintă codul sursă similar limbajelor de programare convenţionale. VI-urile pot fi concepute ca functii apelabile in alte

1

Page 2: Labview CURS

VI-uri. Rezulta astfel programe cu organizare ierarhica ce poate fi pusa in evidenta si vizualizata prin comenzi disponibile in meniul aplicatiei LabView.

Instrumentele virtuale sunt structurate după cum se arată în continuare:

Interfaţa interactivă cu utilizatorul a unui instrument virtual poartă numele de panou frontal (front panel), pentru că el simulează panoul unui instrument fizic. Panoul frontal poate conţine butoane, taste, clapete, potenţiometre, grafice şi alte controale sau indicatoare. Utilizatorul poate introduce date utilizând mouse-ul şi tastatura, şi apoi vizualizează rezultatele pe monitorul calculatorului;

Instrumentul virtual primeşte instrucţiuni de la diagrama bloc care a fost dezvoltată în G. Diagrama bloc reprezintă o soluţie grafică pentru o problemă de programare. Diagrama bloc este, de asemenea, codul sursă pentru instrumentul virtual;

Instrumentele virtuale se pot utiliza ierarhic şi modular. Se pot folosi ca programe de nivel superior, sau ca subprograme în alte programe sau subprograme. Un instrument virtual care este utilizat în alt instrument virtual este denumit sub-VI.

Cu aceste caracteristici G reuşeşte cea mai buna implementare a conceptului de programare modulară. Programatorul poate împărţi o aplicaţie într-o serie de task-uri, pe care le poate din nou împărţi până când o aplicaţie complicată devine o mulţime de subtask-uri simple. Programatorul construieşte instrumentul virtual pentru fiecare sub-task şi apoi combină acele VI-uri într-o nouă diagramă bloc pentru a îndeplini un task mai complicat. În sfârşit, conţinutul VI-ului de nivel superior conţine o colecţie de subVI-uri care reprezintă funcţiile aplicaţiei.

Pentru că se poate executa fiecare subVI singur, separat de restul aplicaţiei, depanatul este mult mai uşor. Pe de altă parte, unele subVI-uri de nivel inferior de multe ori îndeplinesc task-uri comune multor aplicaţii, deci programatorul LabView poate dezvolta un set specializat de subVI-uri care pot fi integrate în aplicaţiile viitoare.

Panoul frontal

Interfaţa cu utilizatorul pentru un instrument virtual este aceeaşi cu interfaţa unui instrument fizic si se numeşte panou frontal. Panoul frontal este, înainte de toate, o combinaţie de mărimi de control şi indicatori, ce simulează introducerea, preluarea şi afişarea datelor din diagrama bloc a unui instrument virtual. Mărimile de control simulează dispozitivele de intrare şi furnizează date către diagrama bloc a VI-ului. Indicatorii simulează dispozitivele de ieşire care afişează datele achizioţionate sau generate de diagrama bloc a VI-ului.

2

Page 3: Labview CURS

Figura 1.- Ilustrarea meniului Controls din Panoul Frontal

Mărimile de control şi indicatorii pot fi adăugaţi în panoul frontal prin selectarea lor din meniul Controls ilustrat în figura Figura 1:

În plus, fiecare obiect conţine un meniu specific cu ajutorul căruia putem schimba atributele obiectului. Acest meniu poate fi accesat efectuând click cu butonul din dreapta al mouse-ului pe obiect.

Figura 2- Exemplu de Panou Frontal

Elementele de control sau indicatoare de pe panoul frontal dispun, indiferent de tipul de date pe care îl manipulează, de facilităţi oferite de programarea orientată obiect în mediul de operare Windows (posibilităţi de repoziţionare, scalare, modificare a tipului şi dimesiunii caracterelor utilizate, modificare a culorilor etc.). Un exemplu de panou frontal este prezentat în Figura 2.:

Diagrama bloc

Pe măsură ce programatorul dispune elementele de control şi indicatoare in panoul frontal, simbolurile acestora sunt inserate automat în fereastra ce va conţine diagrama aplicaţiei. Reprezentarea grafică a unui simbol depinde de natura elementului corespunzător (de control sau indicator) de pe panoul frontal şi de tipul datelor manipulate de către acesta.

Pe lângă simbolurile elementelor din panoul frontal, în diagramă se mai pot introduce simboluri ale unor constante de diverse tipuri (numerice, logice, alfanumerice etc.), structuri specifice limbajelor de programare (iterative, cauzale, secvenţiale etc.), funcţii matematice cu diverse grade de complexitate şi proceduri pentru comanda sistemului computerizat de măsurare.

Diagrama bloc a VI-ului sau mai exact codul sursă în formă grafică a unui VI în LabVIEW se afişează în fereastra ,,Diagram". O astfel de diagramă se construieşte prin legarea obiectelor care trimit sau primesc date, aplica functii specifice de transformare a variabilelor sau controlează fluxul execuţiei programului. Aceste functii fac parte din biblioteca de functii elementare proprie

3

Page 4: Labview CURS

mediului si nu ofera acces la sursa, altele sunt macrofunctii disponibile in bibliotecile mediului Labview. Ele sunt concepute ca subrutine care permit accesul la sursa pana la cel mai scazut nivel.

Figura 3. Exemplu de Diagramă Bloc

De exemplu VI-ul din Figura 3 ilustrează două moduri de căutare a valorii maxime dintr-o sută de numere aleatoare, una după fiecare ciclu al buclii FOR şi alta după ce se termină de executat bucla:

Diagrama de mai sus conţine câteva elemente primare ce intră într-o diagramă bloc şi anume: noduri, terminale şi legături. Când în panoul frontal se plasează o mărime de control sau un indicator, LabVIEW plasează un terminal corespunzător în diagrama bloc. Nu se poate şterge un terminal ce aparţine unei mărimi de control sau indicator acestea dispărând numai la ştergerea mărimii de control sau indicatorului.

Semnificaţia zonelor din terminalul unei funcţii sau al unei proceduri poate fi vizualizată într-o fereastră Help de context, în momentul în care cursorul mouse-ului este poziţionat deasupra terminalului respectiv daca este activat din meniul Help optiunea Help de contex.

Terminalele

Terminalele trebuie gândite ca porturi de intrare sau ieşire. Datele introduse într-o mărime de control (în panoul frontal) ies din acesta prin terminalele mărimii de control şi intră în diagrama bloc. Aici sunt prelucrate în noduri ce materializează anumite funcţii: adunare, scădere, înmulţire etc. şi după execuţia acestora datele trec prin intermediul terminalelor indicatorilor în panoul frontal în scopul afişării acestora. Deci, datele ies dintr-un terminal sursă şi intră într-un terminal destinaţie.

Nodurile

Nodurile sunt elemente de execuţie a programelor. Ele sunt analoage definiţiilor operatorilor, funcţiilor şi subrutinelor din limbajele de programare convenţionale. LabVIEW are o bibliotecă extinsă de funcţii matematice, funcţii de comparaţie, funcţii de conversie, funcţii de intrare-ieşire (I/O) şi altele. Un alt tip de nod îl reprezintă structura. Structurile sunt similare structurilor de control din limbajele convenţionale. Ele realizează o execuţie repetitivă sau condiţionată a programelor. LabVIEW are deasemenea noduri speciale pentru legarea programelor externe scrise

4

Page 5: Labview CURS

în limbaje bazate pe text (Asamblare, C, Basic, etc. ) şi pentru evaluarea unor formule scrise de asemenea în limbaje bazate pe text.

Legăturile

Legaturile realizează căile dintre terminalele sursă şi terminalele destinaţie. Nu se pot lega între ele două terminale sursă sau două terminale destinaţie. O sursă se poate lega la mai multe destinaţii. Fiecare legătură are un anumit stil sau culoare în funcţie de tipul de date ce parcurge acea legătură.

Principiul care guvernează execuţia programelor LabVIEW este aşa numitul flux de date. Mai exact, un nod se execută numai când datele sosesc la toate intările sale, iar când acesta îşi termină execuţia furnizează datele la toate ieşirile sale. Fluxul de date contrastează cu metodele de control ale fluxului de date în execuţia programelor convenţionale în care instrucţiunile se execută în ordinea în care au fost scrise.

Atunci când operăm cu un subVI-uri (subrutine ale labVIEW-ului), mărimile de control şi indicatorii primesc şi transmit date de la VI-ul cerut.

Iconul

Iconul reprezintă un VI inserat diagrama bloc al altui VI. Grafic, iconul poate fi o reprezentare ilustrată a obiectivului VI-ului, sau o descriere text a VI-ului sau a terminalelor lui. Fiecare VI are un icon specific, afişat în fereastra situată în colţul din dreapta sus a ferestrei panoului frontal ori diagramei bloc. Iconul nedefinit este arătat în Figura 4. :

Figura 4. Ilustrarea în colţul din dreapta a unui icon nedefinit

Conectori

Conectorii materializeaza lista de parametrii de intrare/iesire ai funcţiei prin elemente grafice de tip terminal. Fiecărui conector ii corespunde o mărime de control sau un indicator.

Un conector primeşte date de la terminalele elementelor de control sau transfera date către terminalele mărimilor de iesire ale VI-ului ierarhic superior.

Fiecare Vi are conectori care pot fi vizualizati/asignati prin Show Connector din meniul de context al iconului. Setul de conectori evidentiaza marimile de control si indicatoarele pe care le manipuleaza aplicatia. Schema de amplasare grafica a conectorilor poate fi acceptata de utilizator ca aceea propusa de LabView sau se poate particulariza o schema de dispunere a acestora. Se pot atribui până la 28 de conectori. 5

Page 6: Labview CURS

MARIMI DE CONTROL SI INDICATORI

Mărimi de control şi indicatori numerici

Prin selectarea submeniului Numeric din meniul Controls va apare o paletă cu mărimi de control şi indicatori numerici. Poziţionând săgeata de selecţie peste un obiect al paletei, o margine de formă dreptunghiulară va înconjura obiectul selectat, iar numele obiectului va apare în partea de sus a paletei. Eliberând butonul mouse-ului în acest punct mărimea de control sau indicatorul selectat va apare în panoul frontal şi terminalul corespunzător va apare în diagrama bloc.

Modul de selectarea a mărimilor numerice

Mărime de control şi indicator numeric

În Error: Reference source not found sunt prezentate o mărime de control şi un indicator digitale.

Mărimile de control numerice sunt cel mai simplu mod de introducere a datelor numerice în Labview. Pentru modificarea unei mărimi de control se poate da un click cu instrumentul de operare (operating tool) după care se introduce numărul de la tastatură sau se poate modifica cu ajutorul săgeţilor de incrementare şi decrementare.

Noua valoare introdusă de la tastatură o înlocuieşte pe cea anterioară în momentul în care se apasă tasta "Enter", se dă un clic în afara obiectului sau se apasă butonul "Enter" ce apare în paleta instrumentelor.

6

Page 7: Labview CURS

Mărimile de control numerice acceptă doar cifre zecimale, un punct zecimal şi termenii Inf (infinity) şi NaN (not a number). Dacă limitele de reprezentare sunt depăşite, Labview-ul forţează numărul la limita naturală.

De exemplu, dacă se introduce 1234 într-o mărime de control setat pentru un număr pe 8 biţi întreg (byte integer), Labview-ul forţează numărul la 127. Dacă se introduc valori non-numerice eronate ca NN în loc de NaN sau Ifn în loc de Inf, Labview-ul le ignoră şi foloseşte valoarea anterioară.

Butoanele de incerementare sunt des folosite pentru a schimba numărul cu un număr foarte apropiat. Dacă apăsăm butonul de incrementare cu mouse-ul şi îl ţinem în continuare apăsat, incrementarea se va face mult mai rapid, respectiv decrementarea. Dacă ţinem şi celălalt buton apăsat în timp ce incrementăm rapid, mărimea incrementului va creşte succesiv către altă magnitudine de ordonare, de exemplu de la 1 la 10, apoi la 100 si aşa mai departe. Când şirul se va apropia de limită, incrementarea va scădea din magnitudinea de ordonare, coborând uşor către normal până când valoarea se va apropia de limită.

Numerele pot deveni mai mari decât lăţimea ecranului de afişare, o parte din cifre devenind invizibile. În acest caz pentru vizualizarea întregului număr se face mărimea de control mai mare pe orizontală.

Datele de tip întreg cu şi fără semn se pot afişa în hexazecimal, octal sau binar.

Pentru a schimba forma de afişare se selectează Show Radix din submeniul Show al meniului aparent.

Se poate opta pentru una din cele 12 reprezentări ale unui control sau indicator numeric folosind opţiunea Representation din meniul aparent al mărimii de control sau al indicatorului.

Se poate alege între:

Numere cu virgulă care au:

reprezentare pe 32 de biţi în simplă precizie (SGL - single precision);

7

Page 8: Labview CURS

reprezentare pe 32 de biţi în precizie extinsă (EXT - extended precision);

reprezentare cu precizie extinsă complexă (CXT - complex extended precision);

reprezentare cu dublă precizie complexă (CDB - complex double precision);

reprezentare cu o singură precizie complexă (CSG - complex single precision);

Numere întregi care au:

reprezentare cu semn (I8 - signed byte);

reprezentare fără semn pe 8 biţi (U8 - unsigned byte);

reprezentare cu semn (I16 - signed word);

reprezentare fără semn pe 16-biţi (U16 - unsigned word);

reprezentare cu semn (I32 - signed long);

reprezentare fără semn pe 32 biţi (U32 - unsigned long);

Fiecare reprezentare are limite naturale minimă şi maximă. De exemplu, numerele întregi cu semn pe 8 biţi (byte) sunt limitate de valorile -128 şi 127. Se pot alege alte limite în afara celor naturale cu opţiunea Data Range... din meniul aparent.

În seturile lor implicite, display-urile numerice au două cifre de precizie fracţională, adică sunt afişate două cifre în dreapta punctului zecimal. Această precizie poate fi modificată între 0 şi 20 de cifre. Precizia selectată afectează doar valoarea afişată, acurateţea internă depinzând de reprezentare. De asemenea notaţia poate fi zecimală, ştiinţifică sau inginerească.

Mărimile de control şi indicatorii numerici de tip cursor (slide) au un afişaj numeric ce poate fi utilizat pentru introducerea datelor.

8

Page 9: Labview CURS

Controale şi indicatori de tip slide

Un obiect de acest tip este format dintr-o parte mobilă ce arată valoarea mărimii de control sau a indicatorului, o parte fixă de-a lungul căreia se deplasează partea mobilă, o scală pentru indicarea valorilor şi două butoane de formă triunghiulară pentru incrementare şi decrementare. Scala poate fi cu sau fără linii de marcare a valorilor, cu sau fără valori numerice sau poate fi ascunsă. De asemenea scala poate fi gradată linear sau logaritmic.

Fiecare cursor are o afişare numerică. Opţiunile de lucru sunt aceleaşi ca la afişarea numerică cu excepţia numerelor complexe. Forma de prezentare a scalei poate fi cu sau fără valori pe scală, cu sau fără marcaje sau se poate inhiba afişarea scalei. Reprezentarea valorilor pe scală poate fi liniară sau logaritmică.

Intervalul de afişare al scalei trebuie să fie cuprins în intervalul de lucru al mărimii afişate şi în limita de reprezentare a tipului de dată. LabVIEW execută în mod automat recalcularea incrementului în cazul modificării a cel puţin uneia din valorile de minim sau maxim.

La fel ca şi mărimile de control şi indicatorii numerici, cele de tip cursor au opţiunile Represantation, Data Range.. and Format & Precision în meniu. Cu aceste opţiuni se lucrează la fel exceptând doar că cele de tip cursor nu pot reprezenta numere complexe şi că mai au în meniu şi alte opţiuni.

9

Page 10: Labview CURS

Opţiunea submeniu Scale se aplică numai scalei elementelor de tip cursor:

Comanda Format & Precision permite alegerea formatului şi preciziei:

Opţiunea Style permite alegerea tipului de scală:

Opţiunea Mapping ne oferă posibilitatea de scală liniară sau logaritmică:

10

Page 11: Labview CURS

Putem folosi eticheta text sau scala numerică .Etichetele sunt de folos deoarece permit sa asociem numere întregi fără semn de tip 16-bit cu şiruri. Această configuraţie este de folos pentru a selecta în mod reciproc opţiunile exclusive. Ca să activăm această opţiune, selectăm Text Labels din meniul cursorului. Cursorul instrumentului la selectare, apare fără eticheta text, min şi max, şi noi putem introduce imediat eticheta care o dorim. Se apasă <shift-enter> după fiecare etichetă ca să creăm o nouă etichetă, şi se apasă enter după ce introducem ultima etichetă.

Putem folosi instrumentul de scriere (Labeling tool) ca să edităm etichetele min şi max sau să punem propriile etichete. Se accesează mediul aparent al textului afişat, şi se selectează comanda Digital Display din submeniul Show pentru a afla ce valoare numerică este asociată la eticheta pe care o dorim să o creăm. Se folosesc opţiunile Add Item After sau Add Item Before din meniul aparent al afişajului pentru a creea noi etichete.

Mărimile de control numerice şi indicatorii numerici rotativi

Obiectele rotative au aceleaşi opţiuni la fel ca cele de tip cursor, exceptănd opţiunea fill. Acul la

obiectele rotative se reglează oarecum diferit decât la cele de tip cursor dar operaţia este

11

Page 12: Labview CURS

asemănătoare. Obiectele rotative la fel ca în cazul celor liniare (de tip cursor), pot afişa mai multe

valori. Ca să adăugăm un nou ac indicator selctăm Add Needle din meniul aparent al obiectului.

Modalitatea de ataşare a unui ac nou

Indicatori numerici grafici- Graph sau Graph derulant

Paleta ofera indicatori specializati in reprezentari grafice in doua sau trei dimensiuni. Cele mai utilizate indicatoare sunt Waveforme Graph, Waveforme Chart sau grafic derulant si XY Graph. Diferente dintre instrumente consta in maniera de reprezentare a vectorilor abscisei. Toate aceste indicatoare reprezinta vectori de 1D sau n-D (o curba sau reprezentari multi-curbe). Graficul derulant (Chart) nu solicita pentru reprezentare punctele sau vectorul absciselor (el reprezinta numai punctele sau vectori de puncte definiti de ordonata y) in timp ce indicatorul Graph si XY Graph reprezinta perechi de puncte (x,y) furnizate terminalului corespunzator singular sau sub forma de vectori de astfel de entitati (se vor defini cu cluster). De asemenea se pot defini vectori de clustere definite ca fiind compuse din entitatile x si ordonata y corespunzatoare. Graficele multiple se pot vizualiza suprapuse sau in stiva.

12

Page 13: Labview CURS

Diferenta dintre graficul derulant si graful clasic consta in tipul de date pe care il reprezinta. Indicatorul grafic derulant poate reprezenta scalari sau vectori 1D , 2D de puncte (sau de valori scalare). Indicatorul Graph poate reprezenta vectori 1D , 2D de elemente definite cu cluster. La nivelul fiecarui element functia suporta valoare numerica sau entitate definita cu cluster (ex: se poate defini ca entitate un pachet de puncte ale unui vector). Deci acesta functie reprezinta ca tip de date, vectori de scalari sau vectori de curbe (definiti ca vectori de scalari).

Obs: pentru definirea unui tablou 1D de clustere, se apeleaza la Build Array la care se activeaza dupa caz optiune de concatenare sau nu a intrarilor. In modul acesta se poat defini din doi vecori de marime egala aflati la intrare un tablou 1D sau 2D dupa cum este activata sau nu acesta optiune.

Ex: Grafic derulant(Chart)

13

Page 14: Labview CURS

Ex: Graph

Ex: XY Graph.vi

Sa se defineasca un Vi care sa permita diferite tipuri de reprezentari grafice pe care indicatorul XY Graph le permite.

14

Page 15: Labview CURS

15

Page 16: Labview CURS

Mărimi de control şi indicatori de tip şir

Acest capitol tratează utilizarea mărimilor de tip şir şi tablou. Putem accesa aceste obiecte prin paleta String&Table din menul Controls.

Selectarea submeniului String&Table

Aceste obiecte pot fi accesate din paleta String a meniului CONTROLS. Un control şir şi un indicator şir sunt prezentate în fig.2.23.:

Mărimi de tip şir

Se poate introduce sau modifica textul unei mărimi de control şir folosind instrumentul de operare sau cel de etichetare. Ca şi în cazul mărimilor de control numerice noul text sau textul modificat nu trece în diagramă pănă nu se apasă tasta "enter", se dă un clic în afara controlului sau se apasă butonul "enter" din paleta instrumentelor.

Apăsănd tasta "enter" de pe tastatura numerică se trece la rănd nou. Cănd textul atinge marginea din dreapta a ferestrei de afişare, şirul trece pe linia următoare începând de la un separator natural cum este spaţiul sau un caracterul tab. Şirurile au caracteristici speciale ce pot fi accesate din meniul aparent prezentat în Error: Reference source not found.:

16

Page 17: Labview CURS

Meniuul aparent pentru şiruri

Dacă se alege opţiunea Scrollbar din submeniul Show, o bară verticală apare în dreapta controlului sau indicatorului permiţănd vizualizarea textului care nu este vizibil. Această opţiune este utilă pentru a minimiza spaţiul ocupat pe panoul frontal de controalele de tip şir ce conţin texte mai mari. Alegând opţiunea Enable'\'Codes din meniul aparent al şirului, LabView interpretează caracterele ce urmează după backslash (\) ca un cod pentru caracterele neafişabile.

Se folosesc literele mari pentru caractere hexazecimal si litere mici pentru caractere speciale, ca de exemplu formfeed (salt la o pagina noua) sau backspace. Astfel LavVIEW interpretează secvenţa \BFare ca hexazecimal urmat de cuvantul are, pe când în cazul \bFare şi \bfare se interpretează ca backspace urmat de cuvăntul Fare şi fare. În secvenţa \Bfare, B nu este codul la backspace, şi Bf nu este un valid cod hexazecimal. În cazul acesta când backslash este urmat doar de un caracter valid hexazecimal, LabVIEW îşi însuşeşte un 0 urmat de backslash, deci LabVIEW interpretează \B ca 0B. Cât timp backslash nu este urmat de un carcater valid hexazecimal, LabVIEW ignoră caracterul backslash.

Deasemenea se pot introduce caractere neafişabile de la taste, ca de exemplu carriage return (la început de rând), în interiorul unui control şir cât timp nu selectăm Enable '\' Codes. Oricum, dacă activăm modul backslash când fereastra afişată conţine text, LabVIEW reconduce afişajul să arate reprezentarea backsalsh a caracterelor nedisponibile precum si caracterul însuşi.

Indicatorii se comporta în acelaşi fel.

Modul blackslash este foarte folosit pentru depanarea programelor, şi pentru transmiterea caracterelor neafişabile către instrumente, porturi seriale, şi alte mecanisme.

17

Page 18: Labview CURS

Mărimi de control şi indicatori de tip tabel

Elementele unui tablou

Un tabel este o matrice bidimensională de şiruri de caractere. Următoarea figură este un exemplu de

tabel trasăturile specificee.

Un tabel are capete de rând şi coloană care sunt separate de date pritr-o margine subţire. Acestea pot fi introduse când se pune tabelul pe panoul frontal şi pot fi modificate folosind instrumentul de etichetare sau instrumentul de operare. Ele pot fi scrise sau citite folosind nodul de atribute.

Indexul display-ului arată care celulă este vizibilă în partea din stânga sus a tabelului. Se poate lucra cu aceşti indecşi ca şi cu cei ai unei matrici. Se pot modifica dimensiunile tabelului cu instrumentul de editare a dimensiunii. Deasemenea se pot modifica dimensiunile rândurilor şi coloanelor individual ,,trăgând" de margini cu instrumentul de poziţionare. Pentru a introduce date rapid se utilizează tastatura. Se apasă în interiorul unei celule cu instrumentul de operare sau instrumentul de etichetare şi se introduc datele de la tastatură.

Când se lucrează în modul run sau edit tasta Enter de pe tastatura alfanumerică va introduce textul şi va muta cursorul în celula următoare. Tasta Enter de pe tastatura numerică introduce datele şi încheie primirea altor date.

Apăsănd tasta Shift sau Ctrl în timp ce este apăsată o săgeată, cursorul se mută de la o celulă la alta. Se pot copia de asemenea date utilizând Copy Data, Cut Data şi Paste Data din submeniul Data Operation al meniului aparent. Selecţia datelor se face folosind instrumentul de operare sau instrumentul de etichetare. Printr-o dublă apăsare se selectează o celulă, iar prin apăsare şi lărgire a frontierelor se poate selecta un anumit număr de celule, pentru a fi copiate. Se pot deasemenea, selecta toate datele dintr-un tabel, toate datele de pe un rând sau de pe o coloană. Pentru a selecta toate datele din tabel se poziţionează instrumentul de operare sau instrumentul de etichetare în colţul din stânga sus al tabelului şi se apasă pe butonul mouse-ului. Pentru a selecta un rând sau o coloană se poziţionează instrumentul de operare sau cel de etichetare în stânga rândului, respectiv în partea de sus a coloanei până apare o săgeată specială după care se apasă butonul mouse-ului.

18

Page 19: Labview CURS

Mărimi de control şi indicatori de tip ring (inel)

Ring-urile sunt obiecte numerice speciale care asociază numerele întregi de 16 biţi fără semn cu şiruri, imagini sau ambele. Ele au valoroasa particularitate de a selecta ambele opţiuni exclusive. De exemplu, putem să fim capabili să alegem dintre un semnal continuu, simplu sau extern.

Mărime de control de tip ring

Este folosită denumirea inel deoarece etichetele folosite sunt aranjate într-o listă circulară. În exemplul de mai sus, ring-ul numit Trigger Mode are trei moduri afişate unul după altul. Fiecare are o valoare numerică care tinde de la 0 la n-1, n fiind numărul valorilor (3 în cazul nostru). Utilizatorul poate folosi acest ring pentru a alege opţiunea din listă fără să aibă nevoie să ştie ce valoare este reprezentată. Valoarea asociată cu opţiunea selectată trece în diagrama bloc, unde de exemplu poate fi folosită a selecta un caz din structura Case care duce la opţiunea selectată.

Putem selecta o valoare a unui element ring în două feluri. Putem folosi butonul de incrementare ca să mutăm la valoarea următoare sau precedentă sau ţinem butonul apăsat ca să rulăm lista. De asemenea putem selecta orice valoare, dând click pe elementul ring şi alegănd ce dorim din meniul care ne apare. În figura de mai jos sunt prezentate elementele de tip ring:

Elementele listei pot fi introduse în capul listei sau în continuarea listei cu ajutorul opţiunilor: Add Item Before şi Add Item After din meniu. Ca să ştergem un element al listei se utiliezază Remove Item.

Opţiuni pentru mărimile de tip ring

19

Page 20: Labview CURS

Elemente de tip enumerare

Acestea sunt similare cu cele de tip ring. Dacă data de la elementul enumeraţie este conectat la o structură de cazuri, este afişat un şir în locul unui număr. Tipul datei este bit fără semn ori alt tip care poate fi selectat din paleta Represantation.

Mărimi de control şi indicatori boleeni

Un control bolean are 2 valori şi anume: true şi false. Mărimile de control şi indicatorii boleeni sunt disponibili în submeniul Boolean din meniul Controls aşa cum este fig. 2.31.:

Mărimile de control şi indicatorii boleeni

În Error: Reference source not found sunt prezentate câteva tipuri de controale boleene care simulează butoane, declanşatoare, butoane de dialog etc:

Tipuri de controale booleene

În continuare voi prezenta câţiva indicatori boleeni care simulează Led-uri sau becuri:

20

Page 21: Labview CURS

Tipuri de indicatori booleni

Fiecare control şi indicator bolean posedă câteva facilităţi, care de altfel sunt comune tuturor tipurilor de controale şi indicatori din Labview, putând fi puşi în evidenţă dând un click cu butonul din dreapta al mouse-ului pe indicator sau control ca în fig. 2.34:

Meniul aparent pentru mărimile boleene

Editarea controalelor

Alegerea culorilor pentru un control se face astfel: daca obiectul este umbrit se pot seta culori pentru forground sau backgraound. Paleta de colori comuta aplicarea culorii pe un obiect folosind tasta 'spatiu'. Daca se doreste ca o culoare sa fie 'transparenta' se alege optiunea T din fereastra care ofera graddientul de culoare.Daca un obiect nu e shadow este disponibila numai optiunea de culoare pentru background-ul sau.

FUNCTII SI PROCEDURI

Funcţiile si procedurile puse la dispozitie utilizatorului de mediul de programare grafică LabView sunt:

21

Page 22: Labview CURS

Figura 5. - Ilustrarea meniulu Functions din Diagrama Bloc

seturi de funcţii matematice pentru prelucrarea valorilor numerice (inclusiv funcţii trigonometrice şi logaritmice) şi logice, a şirurilor de caractere alfanumerice şi a mulţimilor uni- sau multidimensionale de valori de diverse tipuri;

funcţii şi proceduri pentru manipularea valorilor temporale, pentru lucrul cu fişiere în diverse formate, pentru generarea unor comenzi către sistemul de operare sau către procedurile de control ale mediului de programare grafică;

funcţii pentru comunicaţii în reţea, utilizând diverse standarde şi protocoluri de transfer al informaţiei;

funcţii şi proceduri complexe de prelucrare şi analiză de semnale, de la funcţiile pentru calculul indicatorilor statistici până la proceduri de calcul al transformatelor Fourier şi al spectrelor de putere şi frecvenţă, proceduri pentru calculul regresional, filtre digitale etc;

functii dedicate achizitiei de date

Funcţiile sunt noduri de prelucrare a variabilelor (argumentele functiei) si execută operaţii elementare cum ar fi adunarea numerelor, operaţii intrare-ieşire şi prelucrarea şirurilor. Funcţiile din Labview nu au panou frontal sau diagramă bloc. La compilare ele generează inline un cod maşină.

Când este selectată o funcţie din meniul Functions ea va apare în diagramă prin iconul specific. Se poate utiliza fereastra help pentru a vedea cum trebuie conectată funcţia respectivă sau din meniul aparent se selectează opţiunea Show Terminals pentru a vedea precis unde sunt localizate terminalele.

Cele două moduri de prezentare a unei funcţii

Când conectăm o funcţie punem in legatura fizica terminalele sale cu cele prezente in Diagrama

aplicatiei care o utilizeaza.

Anumite funcţii pentru tablouri şi grupuri au un număr variabil de terminale. Putem schimba numărul de terminale redimensionând iconul în acelaşi mod cum redimensionăm şi alte obiecte

O funcţie care se poate redimensiona cu mouse-ul

22

Page 23: Labview CURS

Numărul de terminale mai poate fi modificat şi folosind comenzile Add şi Remove Input/ Output a meniului aparent al terminalelor.

O funcţie care se poate redimensiona din opţiuni

Tipuri de date

Terminale asociate tipurilor de date scalare. Corespondenta de culori

intregi cu semn:

intregi fara semn:

- element de tip enumerare, - element de tip inel (lista derulanta)

real in virgula mobila:

complex

Tip de date

Scalar 1D array 2D array

23

Page 24: Labview CURS

real:

string(sir de caractere):

cale de fisier (path):

referinta numerica: ( codificare proprie labview pentru :fisier, task, comunicatie TCP, etc..)

cluster cu tip omogen de date:

cluster variabile cu tip diferit de date:

variant - tip de date oarecare ce poate fi convertit cu functii specifice in date cerute

de sablon:

waveform: - este o variabila cluster compusa din : t0, dt, [y]

polimorf: . Acest tip de data indica ca acel VI sau functie accepta ca si comanda (respectiv indicator) unul sau mai multe tipuri de date. Un terminal polimorf poate primi sau genera date de tip diferit.

De exemplu functia sinus accepta la intrare scalar, un tablou sau un cluster de numere, un tablou de clustere de numere, etc.

nume I/O : . Are semnificatia:

pentru o placa de achizitie DAQ, numele canalelor,

numele resursei VISA

24

Page 25: Labview CURS

numele logic al VI-ului care va comunica cu un instrument sau un driver DAQ.

Picture: afiseaza o imagine importata cu "Copy/Paste"

Polimorfismul functiilor numerice

Polimorfism = proprietate specifica numai functiilor care permite combinatii omogene de date si tipuri de date, la intrare sau iesire. Omogenitatea se refera la tipul da data elementara din care este compusa variabila de intrare/iesire din functie. Se pot construi date de tip: scalar, array 1D , array 2D de variabile: sau numerice, sau string..etc. In cazul variabilei cluster, tipul de data se refera la repetabilitatea sa ca tip de data elementar.

Functiile aritmetice utilizeaza date numerice. Cu cateva excpetii iesirea are aceeasi reprezentare numerica ca si a intrarii sau intrarea de dimensinea cea mai mare atunci cand intrarile sunt de reprezentari diferite.

Functiile aritmetice pot fi utilizate cu numere, tablouri de numere, clustere de numere, tabouri de clustere de numere, numere complexe, etc. Typul de date autorizate pot fi definite de maniere formala si recursiva dupa cum urmeaza:

Tip_numeric= scalar numeric OR tablou [Tip_numeric] OR cluster[Tip_numeric]

Scalarele numerice pot fi numere in virgula flotanta, intregi sau numere complexe in virgula flotanta. LabView NU permite utilizarea tablourilor de tablouri.

Tablourile pot avea nu conteza ce numar de dimensiuni care pot fi de aceeasi talie.

Clusterele pot avea nu conteaza ce numar de elemente. Tipul de iesire al functiilor are aceeasi reprezentare numerica ca tipul intrarii.

Pentru functiile cu o intrare, ele trateaza fiecare element al tabloului sau clusterului (se aplica punctual pe element component).

Pentru functiile cu doua intrari, se vor utiliza combinatiile de intrari dupa cum urmeaza:

Intrari similare: cele doua intrari au aceeasi structura iesirea va avea aceeasi structura ca si intrarile

Intrari de tip scalar: daca una din iesiri este scalar numeric iar cealalta este un tablou sau un cluster iesirea este tablou sau cluster

Intrare tablou: daca una din intrari este tablou numeric iar cealalta este de tip numeric iesirea este un tablou

Vom prezenta combinatiile polimorfe posibile pentru unele din functiile din LabView :

25

Page 26: Labview CURS

Polimorfismul functiilor booleene

Functiile logice utilizeaza date de intrare booleene sau date de intrare numerice. Daca intraea este numerica, LabView efectueaza operatii de date in functie de biti. Daca intrarea este intreg, iesirea este in aceeasi reprezentare. Daca intrarea este un numar in virgula flotanta, LabView rotunjeste intrarea la un intreg lung , deci tipul iesirii este intreg lung. Sunt exceptate numerele complexe si tablorile de tablouri care nu sunt autorizate.

Functiile logice trateaza tablouri de numere sau valori booleene, tabele de clustere de numere sau valori booleene, etc.Tipul de date autorizate poate fi definit de maniera formala si recursiva astfel:

Tip_logic=Scalar boolean OR scalar numeric (cu semnificatie booleana) OR tablou [Tip_logic] OR cluster [Tip_logic]

Functiile logice pentru doua intrari pot avea aceeasi combinatie la intrare ca si cele matematice. Pe de alta parte, operatiile de baza efectuate prin functiile logice nu pot avea ca intrari decat valori booleene sau valori numerice. Astfel, nu vom putea avea un AND intre o valoare booleana si una numarica.

26

Page 27: Labview CURS

Structuri si noduri

În timpul programării, anumite seturi de instrucţiuni trebuie repetate de un anumit număr de ori sau până la îndeplinirea unei anumite condiţii. Labview-ul conţine 4 noduri speciale numite structuri care sunt utilizate în astfel de situaţii.

Fiecare structură are o margine distinctă, ce poate fi redimensionată. In interiorul sau sunt cuprinse instrucţiunile ce se execută după regulile speciale ale structurii. De exemplu, diagrama cuprinsă în interiorul unei structuri de tip buclă FOR se execută de un anumit număr de ori.

Din acest motiv, diagrama din interiorul unei structuri se numeşte subdiagrama. În afara buclei FOR Labview-ul are structuri de tip buclă WHILE care repetă execuţia unei subdiagrame până o condiţie devine adevărată, structuri CASE care au subdiagrame multiple din care numai una se execută şi structuri de tip secvenţă care execută instrucţiunile într-o anumită ordine şi structura SECVENŢĂ.

Deoarece structurile sunt noduri, ele au terminale care le conectează la alte noduri. De exemplu, terminalele ce vehiculează date către şi dinspre structuri se numesc tuneluri.

Implementarea structurilor de control

Labview-ul are patru tipuri de structuri: FOR, WHILE, CASE şi SECVENŢĂ, şi pot fi accesate din paleta "Structs & Constants" a meniului Error: Reference source not found. Simbolurile pentru fiecare structură sunt de tip cutie ce poate fi redimensionată cu margine distinctă aşa cum se arată în figura următoare:

Cele 4 tipuri de structuri din Labview.

Structurile se comportă ca orice alte noduri prin aceea că se execută automat când sunt disponibile datele de intrare şi furnizează date la ieşiri când execuţia se termină. Fiecare structură îşi execută subdiagrama conform cu regulile ce vor fi descrise mai jos. Fiecare structură îşi execută diagrama conform regulilor specifice pentru fiecare structură. O subdiagramă este o colecţie de noduri, fire, terminale şi spaţiu care se află în interiorul structurii.

Buclele FOR şi WHILE au câte o singură subdiagramă, in timp ce structurile CASE şi SECVENŢA au subdiagrame multiple aranjate ca un pachet de cărţi, doar o singură subdiagramă fiind vizibilă la un moment dat. LabVIEW-ul crează automat terminale pentru introducerea şi scoaterea datelor dintr-o structură, în momentul în care firele ce leagă noduri din interiorul şi exteriorul structurii traversează marginile structurii. Aceste terminale poartă numele de tunele. Tunelele se află pe

27

Page 28: Labview CURS

marginea structurii dar pot fi mutate oriunde de-a lungul marginii, ele au un capăt expus în interiorul structurii şi celălalt capăt în afară.

Structuri de tip buclă FOR

Acest tip de structuri sunt utilizate pentru controlul operaţiilor repetitive, până la îndeplinirea unui anumit număr de iteraţii. O buclă FOR execută subdiagrama ei de N ori, unde N este o valoare întregă conţinută în terminalul de numărare. Terminalul iteraţiilor conţine numărul curent de iteraţii ce au fost executate: 0 în timpul primei iteraţii, 1 în timpul celei de-a doua şi aşa mai departe pănă la N-1. Dacă N=0, bucla nu se execută niciodată. Daca se trimite o variabila, plasata in interiorul buclei FOR, in afara buclei pentru a fi afisata de exemplu, variabila este eliberata din structura abia dupa ce toate ciclurile sale se incheie.

Structuri de tip buclă WHILE

O buclă WHILE execută subdiagrama până când o valoare booleană legată la terminalul condiţional devine falsă. LabVIEW-ul verifică valoarea acestui terminal la sfârşitul fiecărei iteraţii şi dacă aceasta are valoarea TRUE are loc o nouă iteraţie, aşa că bucla se execută cel puţin o singură dată. Valoarea implicită a terminalului condiţional este FALSE, aşa că dacă acesta nu este legat, bucla se execută o singură dată.

Terminalul iteraţiilor se comportă la fel ca şi la bucla FOR. Ambele structuri pot avea terminale numite regiştrii de deplasare folosite pentru a transmite date de la iteraţia curentă la iteraţia următoare.

Se pot plasa obiecte înăuntrul structurilor, 'trăgăndu-le' înăuntru sau ori creându-le. Nu se poate pune un obiect înăuntrul structurii dacă punem structura peste obiect. Dacă mutăm structura peste un obiect, aceasta îl va acoperi, iar obiectul se poate vedea aşezat peste marginea structurii. Dacă punem structura complet peste un obiect atunci o umbră groasă va avertiza că obiectul este dedesubt şi nu în structură.

Putem plasa un terminal înăuntrul buclei când dorim ca bucla să verifice valoarea terminalului la fiecare iteraţie. De exemplu, când plasăm un terminal al unui control boolean din panoul frontal în bucla de tip WHILE, şi conectăm terminalul la terminalul condiţional al buclei, bucla verifică valoarea terminalului la fiecare pas (iteraţie) pentru a determina dacă poate sa treacă la următorul pas. Putem opri o buclă de tip WHILE, schimbând valoarea mărimii de control din panoul frontal în false:

Buclă While cu condiţie de break

Dacă plasăm terminalul mărimii de control booleane în afara buclei de tip WHILE creăm o buclă infinită:

28

Page 29: Labview CURS

Buclă While infinită

Dacă mărimea de control booleană este true, schimbarea valorii mărimii de control din panoul frontal, în false nu opreşte execuţia buclei deoarece valoarea nu este propagată atât timp cât bucla este oprită, iar VI-ul este repornit. Dacă din neglijenţă creăm o buclă infinită, putem opri VI-ul dând un click pe butonul Stop.

Ex: sa se defineasca un vi care sa calculeze media aritmetica a ultiumelor patru numere aleatoare

generate intre [0,1]:

Structura CONDITIONALA si CASE

O structrura conditionala poseda cel putin doua sub-diagrame sau conditii. O singura diagrama e vizibila odata iar structura se executa doar cand acea conditie e valida. O valoare de intrare (care este suportul testului logic) determina care subdiagrama se executa.Structura este echivalenta structurii IF sau Switch/CASE din limbajele de programare bazate pe text.

Selectorul de conditii se afla in partea de sus a structurii. El indica starea logica a variabilei testata iar secventa de program continuta se executa pentru aceasta valoare logica a variabilei testate. In stanga/dreapta sunt sageti de incrementare/decrementare a listei care rezultata din testele logice.

Cablati o valoare de intrare sau un selector la terminalul selector reprezentat in stanga conturului diagramei, pentru a determina conditia care se executa. Puteti cabla un intreg, o valoare booleana, un sir de caractere sau o valoare de enumerare. Puteti pozitiona selectorul nu conteaza

29

Page 30: Labview CURS

unde pe conturul din stanga al structurii conditionale. Se poate specifica o conditie implicita pentru a manevra valori in afara gamei sau se poate explicita fiecare conditie in parte. De exemplu sunt definite conditii pentru valorile 1 , 2 si 3 ale selectorului. Daca intrarea este 4, structura va executa conditia definita ca 'implicita'.

Tunele de intrare si de iesire

SE pot crea mai multe tunele de intrare si de iesire pentru o necesara intr-una sau mai multe sub-diagrame. Intrarile sunt disponibile pentru toate sub-diagramele dar acestea nu sunt obligate sa le utilizeze obligatoriu. In acelasi timp, se poate defini cate un tunel de iesire pentru fiecare conditie (in sensul ca fiecare conditie furnizeaza o variabila- in acest caz ea va fi plasata in afara structurii sar fiecare conditie este obligata sa returneze in tunel o valoare pentru acea variabila). Daca s-au creat tunele de iesire intr-o conditie, ele apar in aceeasi pozitie pe toate cadrele celorlalte conditii.Tunele de iesire necablate apar ca si dreptunghiuri albe dar nu sunt surse de eroare. Puteti defini o surse de date diferita pentru acelasi tunel de iesire in fiecare cadru conditional numai ca datele trebuie sa fie compatibile intre ele.

Daca o variabila este creata de o anumita conditie, atunci terminalul variabilei se va plasa in interiorul conditiei respective.

Generetor de semnale :

Panou frontal

Diagrama

30

Page 31: Labview CURS

Valorile selectorului de conditie si tipuri de date

Selectorul de conditii poate specifica o valoare unica intreaga sau game de valori pentru a selecta o conditie (observati ca selectorul de conditii poate fi o variabila logica sau intreaga -vezi culoarea). Listele se vor separa cu virgula. Se poate specifica o gama astfel: 10..20 ceea ce semnifica toate numerele intregi din intervalul 10-20. Se poate specifica o gama deschisa ..100 ceea ce semnifica toate numere inferioare sau egale cu 100. Se pot combina liste si game, de exemplu: ..5, 6,7..10,11,18..

Atunci cand se introduce un selector continand game care se suprapun, structura Secventa afiseaza un nou selector dar intr-un format mai compact. EX: ..5,6,7..10,11..18.

Se pot utiliza in selector siruri de caractere sau enumeratii. Valorile se vor afisa in ghilimele : "rosu", "galben".. Sirurile de caractere dintr-un control de tip enumerare, ring, meniuri derulante, liste derulante sunt puse in corespondenta cu valori nr. Intregi care le "numara". Numararea lor incepe cu numere intregi ce pornesc de la 0.

31

Page 32: Labview CURS

EX: extragerea radacinii patrate a unui numar. Mesaj de eroare daca nr. E negativ:

Structura de tip SECVENTA

O structura Secventa, contine una sau mai multe diagrame sau cadre care se executa intr-o ordine precisa secventiala. O structura Secventa executa cadrul 0, apoi 1, cadrul 2..pana la ultimul cadru. Srtuctura Secventa nu executa si nu intoarce nici o data cata vreme ultimul cadrul nu s-a executat. Utilizati structura Secventa pentru a controla ordinea de executie daca nu exista o dependenta naturala intre date. In fiecare cadru al unei structuri Secventa, ca si in restul diagramei, dependenta datelor determina ordinea de executie a nodurilor. Tunelele structurii Secventa nu pot avea decat o sursa de date. Iesirile pot fi furnizate de nu importa care cadru numai atunci cand toate cadrele au terminat executia lor. Ca si la structura conditionala, datele care intra pe tunele de intrare, sunt disponibile pentru toate cadrele. Pentru a transmite date de la un cadru la altul, utilizati un terminal

32

Page 33: Labview CURS

de variabila locala de secventa . O sageata orientata spre exterior, apare pe cadrul care contine sursa de date. Aceasta variabila va putea fi folosita in secventele care urmeaza celei in care s-a implementat variabila locala si nu in cele anterioare ei. Structura Secventa garanteza ordinea de excutie a programului si interzice operatiile in paralelel.

Ex1: sa se cronometreze timpul necesar pentru a 'potrivi' o secventa de numere aleatoare cu un numar de referinta introdus de utilizator:

Ex2: sa se determine timpul necesar generarii unui numar N de numere aleatoare.

Nod de formule (Formula Node) sau cutie de calcul matematic

Cutia de calcul este un nod textual practic care poate fi utilizat pentru efectuarea operatiilor matematice din diagrama. Prin intermediul acestei functii nu se pot accesa direct cod extern sau aplicatii exterene si nu se pot cabla functii aritmetice de nivel scazut (cele disponibile in paleta

33

Page 34: Labview CURS

LabView ) pentru a crea ecuatii. Pe langa expresiile text, cutia de calcul poate accepta versiuni text pentru declararea structurilor If, a buclelor FOR , While sau DO care sunt cele bine cunoscute de programatorii in limbajul C. Aceste elemente de progarmare sunt asemanatoate uneori dar nu identice.

Cutiile de calcul sunt utile pentru rezolvarea ecuatiilor complicate cum sunt cele care comporta un numar mare de variabile sau pentru reutilizarea unui cod text existent. Acesta se poate reinsera in cutie prin "copy/paste" dintr-o alta cutie de calcul in care a fost deja editat.

Obs: in cutia de calcul incheiati fiecare linie cu caracterul ';'

Utilizarea Cutiei de calculCutia de calcul este situata in paleta Fonctions» Structures si in Fonctions» Mathématiques» Formule. Este o cutie redimensionabila similara cu buclele For, While, Secventa sau Conditionala. In schimb, in locul diagramei ea contine cel putin o instructiune in limbaj C, delimitata prin ";". Ca si in C , adaugati comentarii cu sintaxa: /*commentaire*/.

Meniul local oferit de bordura cutiei propune optiuni pentru adaugarea variabilelor de intrare si de iesire. Cele de iesire se disting printr-un chenar mai accentuat. Doua intrari si doua iesiri nu pot avea acelasi nume. Pe de alta parte o iesire poate avea acelasi nume ca si o intrare. Toate variabilele sunt scalare numerice in virgula flotanta.

34

Page 35: Labview CURS

Urmatorii operatori, autorizati in declaratia formulelor, sunt clasati in ordinea crescatoare a prioritatii:

=, + ,- ,* ,/ ,>> ,<< ,^ ,| , % **

?: estimarea conditionala

| SAU logic

&& SI logic

| SAU binar

^ SAU exclusiv bit cu bit

& SI bit cu bit

!=, = = inegalitate, egalitate

<,>,>=,<=

* ,/ , inmultire, impartire

** exponentiala

+, -, !, ~ , ++, +1, -1, NU logic, complement fata de 2, pre-increment, post-increment.

Urmatoarele functii integrate sunt autorizate in declaratia formulelor:

Absacos, acosh, asin, asinh, atan, atanh, ceil, cos, cosh, cot, csc, exp, floor, getexp, getman, int, ln, log, log2, max, min, mod, rand, rem, sec, sign, sin, sinc, sinh, sqrt, tan, tanh.

Variabilele din cutia de calcul Utilizarea cutiei de calcul presupune respactarea urmatoarelor recomandari:

o Numarul de variabile sau de ecuatii este nelimitat

o Selectati din meniul local optiunea 'adaugati o intrare/iesire' .

o Nu este obligatoriu dupa declararea lor sa fie si cablate la o variabila din diagrama (adica sa primeasca valori de initializare sau sa furnizeze o iesire)

o Utilizand acelasi meniu local se poate schimba statutul unei variabile de intrare/iesire in iesire/intrare. Variabilele pot fi scalare in virgula flotanta a caror precizie variaza functie de configuratia calc. pe care lucrati.

o Variabilele nu pot avea unitati

Noduri de expresii

Utilizati noduri de expresii pentru a calcula expresii sau ecuatii continand o singura variabila. Ele sunt utile cand o ecuatie are o singura variabila dar sunt expresii foarte complicate. Nodul de

expresie se selecteaza din Function>> Numeric .

Operatorii disponibili in Nodul de expresii sunt cei autorizati in utilizarea Nodului de formule (prezentat anterior).

35

Page 36: Labview CURS

Polimorfismul nodului de expresii

sau:

sauTerminalul de intrare intr-un Nod este de acelasi tip ca si comanda sau constanta pe care o cablati. In exemplul 1 de sus, variabila de intrare este un cluster (o structura) format dintr-o variabila reala si o constanta. In celalalt exemplu, variabila cluster este formata dintr-o variabila reala scalara si un tablou 1D. Rezulta un cluster de tip diferit de data numerica. Cand tipul de data este diferit, variabila cluster de iesire este roz. Cand datele sunt de acelasi tip (in exemplul de jos sunt ambele de tip intreg scalar), clusterul este maro.

Tipul de data poate fi numar scalar necomplex, tablouri 1D sau 2D necomplexe.Nodul de expresie va aplica expresia la nivel de fiecare element.

Noduri de script Matlab

Se poate defini Nod de script Matlab din paleta Foctions»Mathématiques»Formule pentru a incarca si edita un script Matlab in diagrama disponibila ceea ce permite ca LabView sa apeleze la functiile lor matematice avansate.

36

Page 37: Labview CURS

Matlab trebuie sa fie instalat ca sa utilizati Nodul de script. Se vor defini terminalele nodului de script ca fiind intrari sau iesiri pentru variabilele care apar in script pentru a le pasa intre LabView si Matlab. Se poate determina functia unui terminal in functie de maniera in care ecuatia este scrisa. Astfel, daca un script contine declaratii de atribuire de genul: X= i+3, se va defini "i", ca terminal de intrare pentru a putea controla cum va calcula Nodul de script variabila X. Aceasta variabila X, va fi apoi afectata unui terminal de iesire ca va extrage rezultatul scriptului.

Pentru a executa scriptul scris in Matlab, LabView comunica cu motorul serverului de script care este un program care executa scriptul. LabView comunica si controleaza motorul serverului de script printr-un protocol inductrial. Matlab este instalat in motoarele serrverelor de script.

Nodul de script nu poate sa determine tipul de date specifice terminalelor pe care le-ati creat pe cadrul Nodului. Se va asigna un tip de data compatibil LabView fiecarui terminal al de nodului de script. Nodul de script in LabView recunoaste tipurile de date din Matlab.Tipurile de date din LabView si corespondentul lor in Matlab este ilustrat in tabelul urmator:

Sugestii de programare pentru importul de scripturi din MatlabEste recomandat deci sa scrieti un script in Matlab pe care sa il rulati in mediul sau pentru a ii verifica corectitudinea. Accesati meniul de context al Nodului de script din LabView si selectionati optiunea 'Editare in server' pentru a edita, compila si executa scriptul din fereastra.

37

Page 38: Labview CURS

Este recomandat de asemenea sa se creeze un indicator pentru verificarea eventualelor erori,creind indicatorul pentru eroarea de iesire din nod. Nodul de script va permite vizualizarea erorilor de compilare.

Variabile globale si locale

In LabView se pot citi sau afisa date de la/la un obiect plasat in panoul frontal. Este posibil ca informatia care este transmisa prin terminal sa fie necesar a fi accesata in mai multe puncte in diagrama. De asemenea in cazul structurilor de control care utilizeaza sub-diagrame distincte, daca este necesara prelucrarea aceleiasi informatii, este imposibila transmiterea sa printr-un singur fir deoarece sub-diagramele sunt "rupte" intre ele.

Utilizand variabile locale se poate citi sau modifica variabile control/indicator in panoul –frontal fara interventia manuala. Utilizand variabile globale se pot accesa date si transmite intre mai multe VI-uri ceea ce confera mediului LabView calitatea de multitask.

Variabile locale

Variabilele locale permit accesarea obiectelor din interfata din mai multe puncte din diagrama precum si transmiterea datelor intre diagramele structurilor care nu pot fi conectate printr-un fir de legatura (structurile CASE sau SECVENTA ruleaza in diagrame distincte). O variabile locala da acesul programatorului la citirea dar si scrierea variabilei din interfata. Aceeasi variabila locala ofera deci permisiunea de "read" sau "write". Orice obiect din panoul de control permite crearea (optiunea Create a meniului local) :

Variabila locala (creaza in diagrama un terminal corespunzator tipului de date pe care acest control il manevreaza). Se pot crea terminale multiple.

Nod de proprietato (ceea ce ofera accesul la proprietatile grafice ale obiectului prin plasarea unui terminal specific in asociate obiectului Diagrama.

Nod de metode (ofera aceesul la metodele implementate pentru acest obiect)

38

Page 39: Labview CURS

Variabila de tip Referinta numerica: . Acesta referinta este utila daca se doreste crearea unei referinte numerice NmRef intr-un alt VI:

. Daca se deschide un sub-VI si se 'trage' terminalul in Diagrama sub-Viului. Aceasta manevra duce la aparitia in Diagrama sub-Viului a unei variabile de tip

.Acest tip de data este generat si daca utilizam variabile tip ReferintaNumerica pentru controalele/indicatoarele din panoul frantal cand suntem interesati de referinta numerica a unei aplicatii, a unui fisier, a unui obiect grafic..etc. Asemenea referinte numerice se pot prelua in Diagrama prin utilizarea controlului dedicat de tip NumRef:

Aceste controale sau indicatoare pot fi asociate unei aplicatii,unui VI, unui control, unui eveniment, unui meniu, unei conexiuni de retea TCP, unui fisier standard sau unuia de tip jurnal.

In mod similar, in Diagrama acest tip de data poate fi reclamat de una din functiile de Control al aplicatiilor sau de una din functiile ce permit controlul activ al aplicatiilor Activ X. Functiile de control al aplicatiilor sunt destinate deschiderii/inchiderii in Diagrama a unei aplicatii,

vizualizarii/editarii proprietatilor/metodelor aplicatiei. Nodurile de metode sau proprietati

ofera prin meniul local posibilitatea setarii unui tip de server asociat nodului.

Crearea variabilelor localeVariabilele locale se creaza prin acesarea din meniul local al obiectului din panoul frontal a optiunii Create>>Locale Variable. Altfel, se pot crea variabile locale din Fonctions»Structures»Variable locale. Un nod de variabila locala care nu este inca

asociat la un control sau indicator are aspectul . Meniul de contex ofera optiunea "Selection Item" si vizualizeaza toate controlele si indicatoarele din panoul frontal. Se pune in legatura variabila locala cu un obiect din interfata ceea ce ii va plasa in interior eticheta obiectului pe care il

39

Page 40: Labview CURS

refera. Se va apela la acelasi meniul local pentru a schimba statutul variabilei locale in 'citire' sau 'scriere'.

Variabile globale

Variabilele globale se utilizeaza pentru a accesa date si a le transmite la mai multe VI-uri care se executa simultan. Ele sunt obiecte integrate in LabView.Pentru declararea variabilelor globale, LabView creaza automat un VI global specializat care poseda numai panou frontal , nu si diagrama. In acest panou frontal se vor adauga controale si indicatori pentru a defini typurile de date ale variabilelor globale. Se poate asocia acest panou frontal al variabileor globale cu un container in care LabView are depuse date pe care le acceseaza.

Presupunem ca doua VI-uri se executa simultan. Fiecare VI contine o bucla While si scrie puncte de date pe un grafic derulant (Graph Chart). Primul VI contine o comanda booleana pentru a termina cele doua VI-uri. SE recomanda utilizarea unei variabile globale pentru a termina cele doua bucle cu o comanda booleana unica. Daca cele doua bucke se gasesc in aceeasi diagrama a unui VI, se utilizeaza o variabila locala pentru a termina buclele.

Crearea variabilelor globalePentru a crea o variabila globala de aceseaza Fonctions»Structures»Variable globale pentru a crea o variabila globala. Pe diagrama va apare nodul variabilei

globale: . Prin dublul clik de mouse pe nod, se va afisa un panou frontal nou a carui diagrama este inhibata. Se vor pune aici controale si indicatoare in maniera standard de creare a unei interfete de program.Se creaza astfel un VI global. Se pot crea VI-uri globale unice, corespunzatoare fiecarei var. globale sau se pot pune toate in aceasi fereastra. Un VI global cu mai multe obiecte este mult mai eficace . Se inregisctreaza pe disc un VI global ca fisier cu extensia "gbl".

Diagrama poate include mai multe noduri de variabile globale asociate controalelor si indicatorilor din VI global. Aceste noduri de variabile globale sunt fie copiile primului nod de variabila globala plasat pe diagrama VI global, fie noduri de variabile globale ale VI-urilor globale care sunt plasate in VI-ul curent. Se insereaza variabilele globale definite in VI-ul global prin inserarea lui VI global (variab.gbl) in maniera in care inseram orice VI creat de utilizator (din paletta Function>>Selection VI). Meniul local al variabilei globale ofera posibilitatea de a alege numai una din acele variabile plasate in VI-ul global, prin accesarea optiuni 'Selection Item'. Se creaza variabile globale care au inscrisa in interior eticheta controlului sau indicatorului la care se refera.

Variabile de citire sau de scriereDupa ce s-au inserat variabilele locale sau globale, in stare implicita ele functioneaza ca si indicatori deci permit modificarea (scrierea) variabilei numerice asociate obiectului grafic. Prin accesarea meniului local "Change en read" ele isi schimba statutul si se comporta ca surse de date (deci primesc statul de controale sau comenzi). Grafic cele doua stari difera prin contur care la starea de citire este mai accentuata.

Utilizarea controlata a variabilelor globale si locale

Variabilele globale si locale constituie concepte avansate in LabView . Ele nu fac parte din maniera fireasca de executie a unui VI bazat pe avansarea paralela a fluxului de date pe legaturile (firele) unde acestea pot fi elaborate. Diagramele pot deveni dificile de citit atunci cand se utilizeaza

40

Page 41: Labview CURS

variabile globale si locale motiv pentru care ele trebuie utilizate cu atentie. O utilizare incorecta a acestora poate conduce la o comportare greu de anticipat a Vi-ului apelant. O utilizare intensiva a acestora incetineste executia.

Initializarea variabilelor locale si globaleVariabilele locale si globale contin date initializate de programator la startarea VI-urilor apelante. Daca nu, ele pot contine date care pot genera un comportament incorect al VI-ului. Daca nu se initializeaza o variabila locala sau globala, ele contin la pornire datele implicite ale obiectului din panoul frontal al VI global.

Situatii de competitieDeoarece VI-urile urmeaza un model de executie in flux de date, variabilele globale si locale in LabView nu se comporta ca si variabilele locale si globale din limbajele cu text. O situatie de competitie se produce atunci cand daua parti de cod se excuta in paralel si schimba valoarea aceleiasi resurse partajate care este in general o variabila locala sau globala.

Ieisrea din VI depinde de ordinea de executie a operatiilor. Cum nu exista dependenta de date intre cele doua operatii, este imposibil de a detremina care operatie se excuta prima.

Consideratii privind memoria de utilizare a variabilelor locale

In momentul in care se creaza sub-Viuri, putem defini conectori care descriu in ce maniera se transmit datele in acel sub VI. Conectorul nu reclama o copie a bufferului de date. Variabilele locale efectueaza copii de buffere de date. Atunci cand se citeste variabila locala, se creaza un nou buffer pentru datele la care ea este asociata. In momentul in care se vor utiliza variabilele locale pentru transfer de date, se utilizeaza in general mai multa memorie ceea ce, in final scade viteza de executie a Vi –ului comparativ cu viteza de executie a unui Vi in care datele circula pe fire de legatura si nu apeleaza la stocari de date in variabile locale.

Exemplu : Sa se construiasca o aplicatie care sa genereze o secventa de numere care sa fie afisate simultan intr-un alt VI. Ambele aplicatii se pot opri prin controlul boolean propriu iar oprirea uneia dintre ele va declansa oprirea simultana a ambelkor aplicatii.

Se vor defini doua variabile globale 'Numarul' si un control boolean de oprire a aplicatiei intr-un fisier *.gbl. Aplicatia Generator de numere va modifica continuu variabila globala si va pune butonul de stop OFF iar aplicatia Afisare numere va citi variabila globala 'Numar' iar la oprirea sa va pune butonul de stop pe ON.

Generator de numere

41

Page 42: Labview CURS

Afisare numere

My Globals.gbl

Situatiile de blocaj apar numai atunci cand o variabila globala sau locala este accesata in scriere simultan din mai multe puncte. In acest caz nu este controlata disputa si nu se cunoaste cine a adjudecat operatia de scriere a variabilei. Daca o variabila globala e citita intr-un Vi iar altul o modifica atunci Vi-urile care le apeleaza functioneaza coerent.

Aplicatie: sa se construiasca o aplicatie care citeste pe trei canale trei tipuri diferite de semnale: unul random care pentru valori mai mici de 0.5 sa primesca valori aleatoare negative, unul sinusoidal si unul patrat. Aplicatia sa fie construita astfel incat daca se inregistreza eroare la citirea unui canal, sa returneze mesaje care sa confirme prezenta sau nu a erorii.

42

Page 43: Labview CURS

43

Page 44: Labview CURS

44

Page 45: Labview CURS

Functii numerice

Prezentam functiile de conversie a variabilelor numerice cu precizarea ca acestea pot fi de tip scalar, tablou, cluster de numere, tablou de clustere de numere, etc. Functiile care opereaza in general cu variabile de numerice sunt definite sa accepte ca variabile de intrare tipul polimorf si returneaza la iesire acelasi tip de data.

Functiile de conversie a variabilelor numerice de tip polimorf, efecuteaza conversia acestora in:

- intreg pe 8,16 sau 32 biti

- intreg fara semne pe 8,16,32 biti

- real simpla/dubla/extinsa precizie

- complex simpla/dubla/extinsa precizie

- tablou de booleene (codificarea binara)

( )

- tablou de booleene in numar ( )

- boolean in 0 sau 1. Intrarea poate fi un scalar, tablou sau cluster de valori booleene, un tablou de clustere de valori booleene, etc.

- siruri de caractere in tablou de octeti(

- tablou de octeti in sir de caractere

45

Page 46: Labview CURS

- ataseaza unitata de masura:

- schimba unitatea de masura

Gruparea datelor prin intermediul sirurilor, tablourilor, clusterelor

Pentru gruparea datelor se utilizeaza siruri, tablouri sau clustere. Sirurile grupeaza secvente de caractere ASCII. Tablourile grupeaza date de acelasi tip intr-o structura indexata. Clusterele grupeaza date de tipuri diferite.

Siruri

Un sir este o secventa ASCII de caractere afisabile sau nu. Ele furnizeaza un format independent al platformei pentru informatii si date. Aplicatiile cele mai curente furnizeaza pentru siruri functiile urmatoare:

Crearea de mesaje

46

Page 47: Labview CURS

Transmisia de date numerice sub forma de siruri prin aplicarea functiilor de conversie a sirurilor in valori numerice

Stocajul de date numerice pe disc. Pentru scrierea acestora in fisiere ASCII, trebuie inainte convertite valorile numerice in siruri.

Crearea de avertismente/observatii ale utilizatorului prin mesaje ce apar sub forma cutiilor de dialog.

In panoul frontal, sirurile apar ca tabele, cutii pentru editare de texte si etichete. Editarea si manipularea lor se efectueaza prin paleta de functii String din Functii.

Definirea controalelor/indicatoare de tip sir in panoul frontal Pentru definirea acestora se selecteaza din paleta de comenzi Command>>String&Path. Se ofera doua obiecte dedicate introducerii de text sau afisarii de etichete. Se poate defini de asemenea si obiectul de control Tabel din sub-paleta Command>>List&Table. Acest tip de control preia si trimite in Diagrama siruri de string.

Tipuri de afisare de siruri din meniul local corespunzator obiectului, tipul de afisaj prezentat in tabelul urmator:

Type de afisaj Descriere Mesaj

Afisaj normal

Afiseaza caractere imprimabile cu fontul de ediare. Caracterele neimprimabile sunt reprezentate prin cutii.

Afisarea de coduri '\'Afiseaza coduri de bare oblice inverse pentru toate caracterele neimprimabile

Afisare stil paswordAfiseaza caracterul '*' pentru fiecare caracter sau spatiu

*********************

Afisare hexazecimalAfiseaza val.ASCII a fiecarui caracter en hexazecimal in locul caracterului.

47

Page 48: Labview CURS

Tabele Daca se insereaza in panoul frontal un obiect de control de tip Tabel, el corespunde afisajului unui tablou 2D de siruri. Fiecare celula este un sir si este localizata prin indice de linie si coloana. Prezentam mai jos un Tabel cu toate componentele:

1- celula indicata prin valorile indicelui2- antet de coloana3- bara de defilare verticala4- bara de defimare pe orizontala5- antet de linie6- indice pe orizontalaù7- indice pe verticala

Editarea sirurilor prin functii dedicate

Apeland la peleta Fonction>>String se pot edita sirurile dupa cum urmeaza:

se cauta, recupereaza sau se inlocuiesc caractere sau sub-siruri intr-un sirse converteste textul intreg in majuscule sau minusculese recupereaza o linie dintr-un sirse pot deplasa sau inversa texte intr-un sirse pot concatena unul sau mai multe siruri

48

Page 49: Labview CURS

se pot suprima caractere dintr-un sir

Formatarea sirurilorPentru utilizarea datelor in alte VI-uri, functii sau aplicatii este necesara conversia datelor intr-un sir urmata apoi de de formatarea acestuia pentru ca el sa poata fi citit de acel VI, functie sau aplicatie. De exemplu Excel asteapta siruri care contin delimitatori pe care Excel ii utilizeaza pentru a separa numere sau cuvinte in celule. Pentru a scrie un tablou 1D de valori numerice intr-un tabel se utilizeaza functia de scriere intr-un fisier. Tabloul va trebui formatat intr-un sir si separata apoi fiecare valoare numerica printr-un delimitator (de ex. Tab).Vom exemplifica aceste functii prin cateva exemple:

Exempul 1 : convertiti un sir de numere reale intr-un sir de caractere ASCII si unul de caractere binare.

Functia de conversie 1D array intr-un sir este disponibila in Fonction>>Avansate>>Manipulari de date

Exemplul 2 : prezinta maniera de formatare a subsirurilor unui sir:

49

Page 50: Labview CURS

Functia de indexare a unui sir multi-linii(este de fapt un singur sir definit prin linii separate prin return). Indicele liniei trebuie sa fie scalar, 0 corespunde primei linii.

Exemplul 3: Sa se gasesca toate numerele dintr-un sir si sa se puna acestea intr-un sir de numere in simpla precizie.

Functia Fract/Exp String aseaza caracterele 0-9, +, -, e, E si '.' intr-un sir de numere reale in simpla precizie. Variabila 'offset' indica pozitia in sir de la care se cauta iar variabila 'offset dupa numar' indica pozitia imediat vecina numarului ce tocmai se extrage.

sir offset implicit offset dupa numar numar Comentarii-4,7e-3x 0 0 7 -,0047 x nu este autorizat+5,3,2 0 0 4 5,3 un al doilea separator

zecimal ne fiind autorizat conversia se operste aici.

50

Page 51: Labview CURS

Se utilizeaza functia care cauta o expresie intr-un sir si care returneaza sub-sirul precedente si cel ce urmeaza secventei gasite, precum si sirul cautat. De asemenea functia returneaza 'offsetul' ce urmeaza dupa gasirea unei corespondente , respectiv pozitia in sir de la care se poate continua cautarea.

Exemplul 4: sa se construiasca un VI care sa elimine spatiile goale dintr-un sir preluat de la utilizator. Daca expresia incepe cu '(' urmata de operatorul '+' se elimina operatorul iar daca este urmata de operatorul '-' se insereza un '0':

51

Page 52: Labview CURS

Functii pentru variabile de tip 2D array (tablouri cu variabile indexate)

RdP turneaza numarul de elemente pe fiecare dimensiune a unui array. Intrarea poate fi un array n-dimensional de orice tip.

Indexarea unui tablou

Returneaza un element sau sub-array aflat la indicele precizat. Daca un indice nu este cablat se poate asimila cu formularea "indiferent de linia x". Functia se redimensioneaza automat pentru a afisa dimensiunile tabloului. Functia se poate dimensiona si manual pentru a afisa anumite dimensiuni si pentru a putea avea acces la mai multe elemente dintr-o singura operatie.

52

Page 53: Labview CURS

Defineste un n-tablou n-dimensional in care fiecare dimensiune este initializata printr-un emelent

introdus pe prima pozitie a functiei.Ex: ,

Construieste un tablou cu n dimensiuni. Intrarile sunt concatenate in ordine (aduugate sau lipite in continuare). Daca intrarile sunt identice (n-dimensiuni) si daca se doreste construirea unui tablou de dimensiune n, se activeaza "concatenarea intrarilor" din meniul local al functiei sau se dezactiveaza optiunea pentru a se obtine un tablou de dimensiune (n+1). La activarea concatenarii functia sugereaza vizual concatenarea prin imaginea : iar la dezactivarea ei functia capata aspectul

care indica faptul ca fiecare element este asociat unei coloane. Ex:

sau exemplul care propune construirea unui vector de numere pozitive sau negative:

53

Page 54: Labview CURS

Returneaza un sub-tablou 2D incepand de la un anumit index si continand un numar de elemente de lungime n. Array-ul poate fi n-dimensional si de orice tip. Functia poate fi automat redimensionata ca sa contina unul sau mai multi indecsi/lungimea vectorului din pozitia respectiva.

Rearanjeaza elementele 2D intr-un array inlocuind in pozitiile [i, j] valorile din pozitiile [j,i]. Opertia este transpunerea de matrice cunoscuta in algebra matriceala.

Sterge un element sau sub-array incepand de la un anumit index si de lungime precizata. Functia returneaza sub-arrayul rezultant precum si pe cel sters.Functia poate fi automat redimensionata pentru a arata indici pentru fiecare intrare. Se pot face stregeri consecutive.

54

Page 55: Labview CURS

Roteste elementele unui vector cu numarul de pozitii si in directia indicata la argumentul de intrare n. Daca N este pozitiv, ultimele n elemente sunt asezate la intrare. Daca N este negativ, primele N elemente sunt puse la sfarsitul vectorului.

Cauta un element in tablou incepand cu un indice de pornire. 'Elementul' si 'indicele de pornire' trebuie sa fie variabile scalare.Valoarea implicita a indicelui este 0 iar terminalul sau nu este cablat. Functia returneaza -1 daca functia nu gaseste elementul.

Functii pentru variabile de tip cluster

Clusterele sunte echivalente variabilelor de tip structura din alte limbaje de programare. Ele grupeaza elemente reprezentand date de tip diferit sub forma unui fascicol de fire de lagatura (ca si cabul telefonic) in care fiecare fir din cablu reprezinta un element distinct al clusterului.

Crearea controalalor (comenzi) sau indicatoarelor cluster

Se poate crea o comanda sau indicator cluster in interfata combinand o anvelopa de cluster (un cadru care va integra componente adaugate prin 'drag and drop') cu obiecte sau elemente valide care pot fi combinatii de controlale/indicatori booleene, siruri, harti, grafice, scalari, tablouri sau alte clustere. Se va selecta din Controls>>Table&Cluster un obiect Cluster. Manevra va plasa in Panoul frontal o cutie vida care poate fi 'umpluta' cu componentele pe care dorim sa le asamblam intr-o variabila unica. Prin tragere se vor deplasa in aria vida a clusterului comenzi sai indicatoare de diferite tipuri.

Obs: daca se deplaseaza prin tragere o comanda sau indicator in Diagrama ea se va transforma intr-o constanta corespunzatoare tipului de date deplasat. Acesata este o sugestie de a crea diferite tipuri de constante necesare in Diagrama prin exploatarea tehnicilor de constructie a variabilelor in Panoul Frontal.

55

Page 56: Labview CURS

Asamblarea elementelor in cluster

Asamblarea elementelor intr-o variabila de tip cluster permite crearea clusterelor prin functii dedicate: se selectioneaza functia Bundle din Function>>Cluster. Functia plasata in Diagrama se poate redimensiona la un numar de intrari echivalent cu numarul componentelor clusterului. Se vor cabla terminalele controalelor din interfata sau alte variabile create in Diagrama.Ordinea in care se vor cabla elementele in cluster reprezinta si ordinea lor in cluster. Paleta de functii dedicate

variabilei cluster ofera de asemenea functii pentru construirea unui tablou de clustere (pe fiecare pozitie se cableaza o variabila scalara) dar si de indexare si asamblare a unui tablou de

clustere (la nivel de element se pot cabla vectori care vor fi reasezati in clustere elementare; fiecare cluster este definit de elementele vectorilor aflati pe aceeasi pozitie).

56

Page 57: Labview CURS

Deoarece se pot genera variabile cluster de tip vector sau tablou sunt diponibile si fuctii de

conversie din cluster in array si invers.

Redimensionarea unui cluster

Pentru a defini un cluster cu un numar variabil de intrari se poate redimensiona talia functiei de asamblare a unui cluster, in conditiile in care am trecut in regim de editare, prin redimensionarea cadrului care delimiteaza functia Bundle . La fel de bine de poate accesa meniul local al functiei 'Bundle' care ofera optiunea de 'Add / Remove Input'.

Definirea valorilor clusterului ca implicite

Prin definirea in Panoul Frontal a unui cluster, in Diagrama va fi inserat automat terminalul corespunzator acestei variabile. Prin accesarea din meniului local al acestei variabile a functiei 'Advance' se poate fixa valoarea actuala din interfata ca implicita. Odata initializata aceasta valoare ca implicita, atunci cand e necesar acelasi meniul local ofera reinstantierea variabilei actuale a clusterului la cea definita ca implicita.

Dezasamblarea elementelor clusterului

Prin actiunea inversa oferita de Function>>Cluster>>Unbundle se poate dezasambla o variabila cluster in componentele sale. Ulterior acestea se pot cabla la alte VI-uri, functii si indicatoare. Se pot dezasambla elementele clusterului dupa nume, dupa cum exista si functia duala de asamblare. Se pot de asemenea dezasambla si modifica variabilele unui cluster daca se cableaza acesata variabila la conectorul din mijloc al unei functii de dezasamblare cluster.

Functia de asamblare dupa nume de fapt re-asambleaza componentele unui cluster simplu. Clusterul de intrare trebuie sa fie mereu cablat.

57

Page 58: Labview CURS

In sinteza functiile care lucreaza cu variabile de tip cluster sunt:

F descompune un cluster in componente individiale. F este redimensionabila. Ea aranjeaza componentele de sus in jos dupa ordinea in care au fost adaugate in clusterul initial.

F compune (asambleaza) intr-un singur cluster sau inlocuieste (editeaza) componentele unui cluster existent. F este redimensionabila. Daca este conectata un cluster la intrare numai componentele pe care dorim sa le modificam trebuie conectate.

Returneaza elementele unui cluster cu specificarea numelui acestora. F este redimensionabila deci se poate extinde iesirea astfel incat sa se vada toate elementele clusterului.

Editeaza componentele unui cluster dupa nume Clusterul de intrare trebuie sa fie intotdeaune conectat. Dupa conectare va fi disponibila o lista cu cu numele terminalelor care corespund componentelor clusterului.

58

Page 59: Labview CURS

Asambleza toate componentele intr-un array de cluster. Fiecare componenta este compusa din componente cluster. Toate intrarile trebuie sa fie de acelasi tip. F este redimensionabila.

Creaza un array de clustere in care ficare element este un grup care corespunde elementelor de ordin i ale fiecaruia din variabilele array de intrare. Ex: pentru doua variabile array : (1,2,3) si (4,5,6) se va obtine variabila array ({1,4},{2,5},{3,6})

Converteste un cluster de componente identice intr-un 1D array de elemente de acelasi tip. Componentele intrarii pot sa nu fie de tip array. Elementele iesirii sunt de acelasi tip ca cele ale intrarii.

Converteste un 1D array intr-un cluster in care fiecare element este de acelasi tip cu elementele arrayului de intrare.

Exemple pentru utilizarea variabilelor cluster si array

Exemplul 1: Reprezentari grafice multiple

Sa se defineasca un VI care sa permita vizualizarea a doua semnale pe acelasi grafic.

Exemplul 2: Sterge harti si grafice

59

Page 60: Labview CURS

Sa se defineasca un VI care sa permita reprezentarea grafica a unor semnale sinus si cosinus pe harti (vizualizare instantantanee a fiecarui punct) si grafice. Vi-ul sa ofere printr-un control logic optiunea de stergere a tuturor reprezentarilor sau de oprire a celor de temporale.

Obs: reprezentarile pe indicatoare de tip Chart (grafic derulant sau temporar), retine datele intr-un buffer pa care il putem accesa din Proprietatile Nodului si optiunea History Data. Se va deschide Help de context care pentru ofera informatii complete despre tipul de date acceptat de un terminal. In acest mod se va putea

identifica tipul de data corespunzator proprietatii History Data:

Deosebit de utila este functia de initializare a unui tablou . Ea pune la nivel de element tipul de data (de exemplu o constanta sau un cluster de constante …dupa cum dorim sa fie tipul variabilei de iesire. Cel de-al doilea parametru reprezinta numarul de elemente pentru dimensiunea 0 (daca punem 0 se va crea o matrice cu 0 elemente pe prima linie care are indicele i=0). Functia poate fi redimensionata deci adaugate noi dimensiuni si lungimile lor.

Exemplul 2 : sa se definesaca un VI care sa afiseze numere prin reprezetari de tip harta derulanta (sau grafic temporar – chart) sau pe grafice cu originea in 0 si incrementul pe x de 0.1. VI-ul sa permita oprirea tuturor reprezentarilor grafice si sa ofere un control boolean pentru stregerea graficelor derulante.

60

Page 61: Labview CURS

Functii pentru schimb de date cu fisiere . Functii de I/O pe fisiere

Functii de nivel inalt:

Functii situate in primul rand din paleta Functions»File I/O care permit realizarea operatiilor de scriere/citire a urmatoarelor tipuri de date:

61

Page 62: Labview CURS

• caractere intr-un sau dintr-un fisier text

• linii dintr-un fisier text

• tablouri 1D sau 2D de date numerice in in simpla precizie dintr-un fisier text spreadsheet

• tablouri 1D sau 2D of de date numerice in in simpla precizie sau intregi cu semn pe 16 biti dintr-un fisier binar

Functiile de nivel inalt sunt de fapt macrofunctii care incorporeaza in acelasi VI functiile elementare pentru:

- selectare a caii pentru creare/deschidere fisier- deschiderea efectiva sau crearea/salvare a unui fisier nou- setarea unui anumit tip de data (text sau spread-sheet)- scriere/citire efectiva- inchidere de fisier

Ele au ca argumente de intrare variabile ca :

- variabila path (si nu numref ca pentru cele de nivel scazut) sau determinarea sa prin dialog cu utilizatorul

- tipuri de date (1D,2D,..string); pentru fisiere spread-sheet datele sunt variabile de tip numeric 1D sau 2D care sunt convertite in stringuri ; pentru cele text ele sunt de tip string

- tipul de scriere (ex : append T/F)- formatul numerelor

OBS : aceste macrofunctii nu au functia de tratare a erorii. Ea este definita pentru functiile elementare care valideaza sau nu continuarea executiei unui set de functii individuale care functioneaza in tandem. Aceste isi valideaza succesul individial prin mesajul pozitiv de lipsa a erorii si prin transmiterea la urmatoarea functie elementara a aceleiasi variabile de intrare care este una de tip refnum.Acesta variabila conserva calea si numele fisierului, tipul de acces al citirii/scrierii, ect.

Se pot salva timpul (momentul accesului citire/scriere) si rezultatele programarii utilizand functiile de nivel inalt pentru scriere si citire din fisiere. Ele permit operatii de citire sau scriere pe langa operatiile de deschidere si inchidere de fisier. Aceste functii solicita un fisier de intrare si o cale precizata. Daca nu este precizata calea si fisierul o cutie de dialog apare pentru specificare interactiva. Aceste functii au incorporata functia de tratare a erorii de scriere/citire.Se poate opri executia sau continua.

62

Page 63: Labview CURS

Functii de nivel scazut (sunt functii individuale) :

Functiile situate in randul mijloc al Functions»File I/O

Functiile avansate localizate in Functions»File I/O»Advanced File Functions,

permit realizarea operatiilor individuale :

• creare de directoare

• move, copy, sau delete fisiere.

• listarea continutului unui director

• schimbarea caracteristicilor unui fisier

• manipularea de pathuri

Alegerea formatului de I/O File (tip de fisier)

Datele se pot citi / scrie din urmatoarele tipuri de fisire:

text (string simplu sau string formatat de tip spread-sheet)-ASCII binar datalog

Alegerea formatului depinde de datele care se achizitioneaza sau creaza si de aplicatia care va avea aces la date. Putem face urmatoare observatii cu privire la tipul de fisier utilizat :

o Daca se doreste accesarea datele in alte aplicatii, cum ar fi Excel, se creaza/deschid fisiere text deoarece au cel mai comun si portabil format.

o Daca este necesara citirea/scrierea datelor (actiuni de conservare a datelor) fara sa fie necesar un format anumit insa spatiul compact pe disc sa fie un criteriu important atunci se utilizeaza fisiere binare care sunt mai eficiente decat cele text din punctul de vedere al spatiului pe disc si al vitezei de acces.

o Daca se doreste manipularea de inregistrari complexe formate din tipuri compuse de date din labview, se utilizeaza datalog deoarece sunt cel mai bun mod de a stoca date care sa fie accesibile numai in/din labview. Tipurile de date care se manipuleaza sunt de tip structura.

In sub-paleta de functii avansate sunt functii elementare (inchidere/deschidere/creare / scriere/citire/close) orientate pentru tipuri speciale de date : datalog.

63

Page 64: Labview CURS

Obs: atentie la urmatoarele tipuri de date:

Ele sunt tipuri de date care indica calea de cautare a unui fisier (deci calea nu va fi variabila

string ci aceasta de tip special sau dedicata) : Pentru variabila de tip fisier (in care se scriu sau din care se citesc date) daca s-au precizat

calea, numele fisierului (poate fi un new) tipul de acces la date (append, new..) se creaza o variabila speciala care retine aceste referinte fixate. Ea se numeste « referinta numerica »

si va fi variablia care paseaza de la o functie elementara (sau functie care executa actiuni individuale cum sunt : open, new, read, write, close) datele de referinta ale fisierului in lucru.

Aceste tipuri de date sunt specifice atunci cand se lucreaza cu functii dedicate lucrului cu fisiere I/O.

Functii de achizitie de date

Permit achizitia/comanda marimilor de proces prin functii dedicate. Ele pot achizitiona/commanda :

marimi analogice care corespund unei tensiuni echivalente a marimii fizice masurate/comandate .

marimi binare care corespund datelor cu acest tip de reprezentare.

64

Page 65: Labview CURS

Functie de complexitatea actiunii de achizitie/commanda aceste functii se pot clasifica astfel :

functii simple (easy) : ele sunt pozitionate in prima linie a paletei cu functii de achizitie. Ele permit efectuarea actiunilor simple de achizitie (singulara si necontinua) a uneia sau mai multor marimi fizice, prin achizitionarea simple a unei singure valoari sau a unui pachet de citiri. Pentru achizitionarea unei singure marimi analogice functia efectueaza achizitia pe un singur canal dedicat citirii acelei marimi. Pentru achizitionarea mai multor marimi fizice, functia va lucra cu mai multe canale dedicate respectiv marimilor monitorizate.

Deoarece achizitia prin aceste functii efectueaza citiri singulare, plasarea lor intr-o bucla For poate conduce la o actiune de achizitie continua. Timpul de achizitie este impus de viteza de executie a unui ciclu deci este un timp determinat soft-ware. Aceste functii se pot utiliza pentru achizitia marimilor care nu prezinta variatie rapida in timp. Pentru a intarzia executia unui ciclu de achizitite deci pentruu a evita citirea cu viteza prea mare a unei marimi (marimea pe perioade mari de timp ramane constanta) se va intarzia executia buclei de achizitie cu functii de timp dedicate ( Wait) care ii impun viteza de executie a unui ciclu.

functii intermediare : sunt situate in linia a doua a paletei cu functii DAQ. Ele executa taskuri elementare ale actiunii complexe de achizitie a unei sau mai multor marimi. Aceste functii permit si achizitia continua de date cu o marime precizata a vitezei de achizitie. In cazul achizitiei continui datele sunt depuse contiunuu intr-un buffer de memorie. Modul in care se scriu/citesc datele in buffer poate fi setat la continuu insa cu precizarea ca trebuie efectuate verificari soft-ware (concepute sub-viuri) astfel incat scrierea sa nu fie mai rapida decat prelucrarea de date pentru a evita pierderea datelor inca neprelucrate. Functia de achizitie presupune configurarea placii, a canalului/lelor de achizitie si eventual a bufferului de memorie dedicat stocarii de date (functia Config este dedicata executarii de setari hard-ware), Aceste configurari sunt efectuate de functia dedicata AI Config. O alta functie seteaza viteza de scanare prin numar de esantioane/secunda si numar de scanari de efecuat (impreuna aceste doua setari precizeaza talia sau volumul de date de achizitionat), functia AI Start . Functia dedicata citire/scriere preia date sau depune date analogice/binare pe canalul de achizitie sau comanda. Functia AI Clear sterge buffrul de memorie da datele ramase si incheie procesul de achizitie/comanda. Aceste functii elemantare lucreaza in linie sau tandem. Ele paseza de la una la cealalta variabila « tasl ID » - identificator de task care poate fi 0 sau 1. De asemenea o variabila cluster care trateaza aparitia unei erori este pasata in lantul de functii inseriate. Daca task ID este 1 iar variabila error este OK functiile elementare isi executa sarcina. Este recomandat ca functiile de configurare sa ramana in exteriorul unei eventuale structuri de control daca aceata este utilizata. In structura poate functiona numai functia de citire sau scriere de date precum si Vi –ul prin care ne propunem prelucrarea lor. Prezenta acestor functilor de achizitie/comanda si prelucrare in interiorul structurii conduce la viteze diferite intre cea de achizitie (care este specifica placii de achizitie deci timpul de achizitie are caracteristica hard-ware) si cea de citire din buffer care va avea o viteza determinta de rapiditatea executiei unui ciclu al structurii. Viteza de citire din buffer si prelucrarea sunt determinate de o variabila de timp soft-ware. Cele doua actiuni de

65

Page 66: Labview CURS

achizitie si citire/scriere fiind asincrone, se impun teste de verificare pentru a nu pierde date atat printr-o achizitie prea rapida si o prelucrare prea lenta.grafic

Ex :

functii avansate : sunt functii unice care executa actiuni echivalente cu cele efectuate de setul de functii intremediare sau de una din functiile simple. Ele insa sunt astfel concepute incat sa solicite ca argumente de intrare setarile hard-ware ale achizitiei si sa efectueze aciuni singulare sau continui de achizitie/commanda. Diferenta consta in aceea ca un astfel VI, odata plasat in intreiorul unei structuri va prelua date de configurare numai la prima iteratie. La iteratiile urmatoare, chiar daca aparent VI –ul fiind plasat in interiorul ciclului unei structuri ar RdP-efectua configurarea hard-ware a placii, acesta este ignorata deoarece datele s-au preluat la prima iteratie. Date achizitionate de functiile avansate sunt returnate in formatul

special array de waveform :

66

Page 67: Labview CURS

unde un :

Obs: utilizarea functiilor de achizitie evidentiaza utilizarea unui alt tip special de variabila (alaturi de variabila waveform prezentata): variabila “nume canal I/O” care se colecteaza printr-un control specific:

al carui terminal este :

Controlul aplicatiilor prin programare. Functii de comunicatii.

Noduri de proprietati si metode

Nodurile de Proprietati definesc sau returneaza informatii despre un VI, un obiect al unui VI sau proprietatile unei aplicatii. LabView propune si alte doua noduri : noduri de proprietati VISA si Nod de proprietati Activ X.

67

Page 68: Labview CURS

Pentru a selecta un VI, un obiect apartinand unui VI sau o clasa de aplicatii, se va accesa din meniul local al Nodului de proprietati o clasa LabView . Daca in diagrama exista o variabila NumRef corespunzatoare clasei ale carei proprietati sau metode vor fi vizualizate/editate, se va cabla la Nodul de proprietati pe conecorul care cere variabila de tip NumREf. Nodul se va adapta la clasa de obiecte la care este cablat.

Mai multe detalii despre aceste functii se vor prezenta in sectiunea : Controlul aplicatiilor prin programare.

68

Page 69: Labview CURS

69

Page 70: Labview CURS

Functii Activ X- functii pentru controlul activ al aplicatiilor

70

Page 71: Labview CURS

71

Page 72: Labview CURS

Functii de comunicatie prin protocolul TCP/IP

Exemplul 1: Simple Data Server.vi

Simple Data Server write a double precision array of a specified waveform type to the given TCP port. It does not provide any mechanism to halt the server or the client.

Simple Data Client.vi

Simple Data Client.vi reads a double precision array from a specified host and port and displays that array on a chart. It does not provide any mechanism to tell the server when to halt other than to close the connection.

72

Page 73: Labview CURS

Exemplul 2: sa se defineasca un server pentru un client care comanda un motor pas cu pas (alimentare sens si numar de pasi).

server test.vi

73

Page 74: Labview CURS

Client test.vi

74

Page 75: Labview CURS

MPP.vi

75

Page 76: Labview CURS

76


Recommended