Sunteți pe pagina 1din 200

DAN SELIŞTEANU COSMIN IONETE

EMIL PETRE DAN POPESCU


DORIN ŞENDRESCU

APLICAŢII LABVIEW PENTRU ACHIZIŢIA


ŞI GENERAREA DATELOR

Editura SITECH
Craiova 2004
PREFAŢĂ

LabVIEW este un limbaj de programare grafică produs de


National Instruments, SUA, prima variantă a limbajului fiind lansată
pe piaţă în anul 1983. Denumirea limbajului LabVIEW provine din
prescurtarea din limba engleză: Laboratory Virtual Instrument
Engineering Workbench. Limbajul de programare este conceput
pentru valorificarea facilităţilor interfeţelor grafice cu utilizatorul
dezvoltate de sistemele de operare moderne. LabVIEW este un limbaj
grafic prin modul în care este construit şi salvat codul sursă: nu există
un cod bazat pe text ca în limbajele clasice, ci o diagramă a fluxului de
date. Din acest motiv, LabVIEW este un limbaj des utilizat de către
ingineri, care, în locul folosirii unui limbaj convenţional bazat pe text,
preferă crearea şi vizualizarea grafică a fluxului de date.
LabVIEW este un mediu de programare destinat achiziţiei,
analizei, prelucrării şi afişării datelor. Utilizarea acestui limbaj s-a
remarcat în special în cazul instrumentaţiei de măsurare bazată pe
tehnica de calcul. Principiul fundamental pe baza căruia este scris
codul LabVIEW este fluxul de date: datele sunt trecute prin noduri în
interiorul cărora programul determină ordinea de execuţie a diverselor
funcţii. LabVIEW este un limbaj modular, un modul de program fiind
numit Instrument Virtual (Virtual Instrument – VI). Un VI este un
obiect care are intrări, procesează date şi furnizează ieşiri. Ordinea în
care utilizatorul doreşte să prelucreze datele prin intermediul unor
funcţii se poate realiza prin înlănţuirea mai multor VI-uri care au
intrări şi ieşiri comune. Din punct de vedere al versiunilor LabVIEW
existente în circulaţie, în mod uzual sunt folosite versiunile 4 - 7,
ultima recent lansată de firma producătoare. Prezenta lucrare se
bazează pe versiunile 4 şi 6 ale limbajului, care au fost achiziţionate
de către Facultatea de Automatică, Calculatoare şi Electronică a
Universităţii din Craiova.

3
Bazele programării în LabVIEW au fost abordate de către
autori în lucrarea [18] din referinţele bibliografice: Ghid de
programare în LabVIEW. Aplicaţii pentru prelucrarea semnalelor,
Tipografia Universităţii din Craiova, 2003. Noţiunile de bază privind
programarea în LabVIEW pot fi însuşite şi prin studiul manualului de
utilizare [22] sau prin parcurgerea lucrărilor [4], [7], [23], [24] din
lista referinţelor bibliografice. Prezenta lucrare presupune că aceste
cunoştinţe de bază despre LabVIEW sunt cunoscute.
Lucrarea de faţă îşi propune realizarea unor aplicaţii de
achiziţie şi generare a datelor prin utilizarea unor sisteme de achiziţie
a datelor bazate pe LabVIEW ca software de aplicaţie şi pe hardware-
ul de achiziţie existent în dotarea laboratoarelor Facultăţii de
Automatică, Calculatoare şi Electronică din Craiova.
Prin sistem de achiziţie a datelor se înţelege în sens larg un
sistem de măsurare care permite vizualizarea şi/sau înregistrarea
evoluţiei temporale a mai multor mărimi, analogice şi/sau numerice,
poate implementa mai multe regimuri de achiziţie şi permite diverse
prelucrări numerice. Prin completarea configuraţiei unui calculator (de
regulă un calculator personal – PC) cu elemente din categoria
interfeţelor de proces (plăci de achiziţie) se poate obţine un sistem de
achiziţie a datelor. Un sistem de achiziţie astfel obţinut mai poartă
numele de sistem de achiziţie a datelor de tip instrument virtual.
Placa de achiziţie este o placă de extensie care poate fi
conectată intern prin instalarea directă într-un slot de extensie al
calculatorului sau poate fi externă, caz în care este conectată la
calculator printr-un cablu extern. Placa de achiziţie este caracterizată
prin subsisteme specializate (sistemul intrărilor analogice, sistemul
intrărilor numerice, sistemul ieşirilor analogice, sistemul ieşirilor
numerice, sistemul de numărare/temporizare).
Prezenta lucrare utilizează hardware de achiziţie furnizat de
firma National Instruments şi anume plăci de achiziţie AT-MIO-16H
şi module de condiţionare a semnalului din seria 5B. Pentru
cunoaşterea funcţionării plăcilor de achiziţie este prezentată (în anexă)
traducerea manualului de utilizare editat de firma producătoare.
Deoarece prezentul volum abordează aplicaţii practice de
achiziţie a datelor, pentru aprofundarea unor noţiuni teoretice privind
sistemele de achiziţie a datelor, precum şi parcurgerea altor exemple
de implementare practică a acestora, se recomandă lucrările [1], [3],
[5], [8], [12], [14], [19], [20] din lista referinţelor bibliografice.

4
Prezentul manual este structurat în 8 lucrări practice, care
implementează aplicaţii de achiziţie şi generare a datelor, declanşarea
achiziţiilor cu semnale de tip trigger, stocarea datelor în regim data
logger, aplicaţii de achiziţie şi generare a semnalului audio (prin
utilizarea plăcilor de sunet ca şi plăci de achiziţie).
Lucrarea se adresează studenţilor Facultăţii de Automatică,
Calculatoare şi Electronică, constituind un suport de curs şi îndeosebi
de laborator pentru o serie de discipline, cum ar fi Sisteme de achiziţie
şi interfeţe de proces; Semnale, circuite şi sisteme; Software
industrial; Sisteme de operare şi limbaje în timp real; Procesarea
numerică a semnalelor etc. Lucrarea poate fi utilă şi altor studenţi şi
specialişti interesaţi de utilizarea unui software modern pentru
aplicaţii complexe de achiziţie a datelor. Deoarece în lucrare sunt
abordate în special achiziţia şi generarea datelor analogice, prezentul
manual va fi continuat prin aplicaţii dezvoltate pentru intrări şi ieşiri
numerice, precum şi pentru controlul transmisiilor seriale şi paralele.
De asemenea, va fi abordată analiza şi proiectarea unor aplicaţii de
timp real pentru conducerea proceselor.

Autorii

5
CUPRINS

Lucrarea nr. 1. Instrumente virtuale pentru achiziţii de date.


Intrări analogice. Achiziţii de date mono-punct 7
Lucrarea nr. 2. Intrări analogice. Achiziţii de date multi-punct 27
Lucrarea nr. 3. Controlul achiziţiilor de date cu semnale de tip
trigger 45
Lucrarea nr. 4. Instrumente virtuale pentru generarea datelor.
Ieşiri analogice. Generarea fără buffer a datelor 61
Lucrarea nr. 5. Ieşiri analogice. Generarea bufferată a datelor 71
Lucrarea nr. 6. Operaţii cu fişiere. Stocarea (data logging) şi
citirea datelor 89
Lucrarea nr. 7. Aplicaţie de măsurare şi achiziţie a temperaturii 109
Lucrarea nr. 8. Aplicaţii de achiziţie/generare a semnalului
audio (controlul intrărilor/ieşirilor plăcilor
de sunet) 119
Anexa 1. Placa de achiziţie AT-MIO-16H
Manual de utilizare, National Instruments 139
Anexa 2. Amplificatorul de precizie pentru
termocuplul de tip J 195
Bibliografie 199

6
LUCRAREA NR. 1

Instrumente virtuale pentru achiziţii de date.


Intrări analogice. Achiziţii de date mono-punct
1. Tipuri de achiziţii de date
1.1. Achiziţii mono-canal şi multi-canal
O placă de achiziţie poate realiza achiziţii de date pe un singur
canal sau pe mai multe canale:
- achiziţie mono-canal (single-channel data acquisition)
- achiziţie multi-canal (multiple-channel data acquisition)
În cazul achiziţiei mono-canal se selectează un singur canal de
intrare analogică şi se setează o singură amplificare (care determină în
funcţie de domeniul de intrare un domeniu efectiv de intrare – a se
vedea subcapitolul de configurare a intrărilor analogice). La fiecare
perioadă de eşantionare este realizată o singură conversie analog-
numerică pe canalul respectiv.
În cazul achiziţiei multi-canal, placa de achiziţie scanează un
set de canale de intrări analogice, fiecare cu propria sa amplificare
(domeniu efectiv de intrare). În cadrul acestei metode, placa stochează
o listă sub forma unei secvenţe care precizează canalele analogice care
trebuie citite, precum şi amplificările setate pentru canalele respective.
În timpul citirii, circuitul de intrări analogice realizează câte o
conversie analog-numerică pentru fiecare canal analogic (fiecare
pereche canal/amplificare) din secvenţa respectivă. Conversia analog-
numerică este realizată o dată la fiecare perioadă de eşantionare. În
timpul realizării conversiei analog-numerice curente, placa comută pe
canalul analogic următor din secvenţă, astfel încât achiziţia să fie cât
mai rapidă. Atunci când s-a ajuns la sfârşitul secvenţei, placa aşteaptă
până la terminarea unui interval de citire înainte de a relua achiziţia
canalelor din secvenţă. Canalele sunt citite în mod repetat la începutul
fiecărui interval de citire până când numărul de eşantioane precizat de
utilizator este achiziţionat.
1.2. Achiziţii cu trigger
Achiziţiile de date pot fi startate pentru anumite aplicaţii la un
anumit moment de timp, fără o legătură directă cu evoluţia datelor

7
respective (fără triggerare). Pentru alte aplicaţii, este necesară
declanşarea achiziţiei de date analogice la momente de timp bine
precizate (cu triggerare). De exemplu, dacă testăm răspunsul unei
instalaţii la o intrare tip (treaptă, impuls etc.), intrarea de test
respectivă poate fi utilizată şi pentru startarea achiziţiei de date. În caz
contrar este necesară începerea achiziţiei înainte de aplicarea intrării
respective, ceea ce determină un consum nejustificat de resurse.
Prin urmare, achiziţia de date poate începe în funcţie de
condiţia sau starea unui semnal numeric sau analogic, utilizând o
tehnică numită triggerare (declanşare). Un trigger este un eveniment
care startează achiziţia datelor. Există două tipuri de triggerare:
hardware (care poate fi analogică sau numerică) şi software.
Plăcile de achiziţie pot funcţiona în două moduri principale de
achiziţie, în funcţie de apariţia evenimentului trigger, prin care se
defineşte zona de interes din evoluţiile analizate:
modul posttrigger
modul pretrigger
Modul posttrigger realizează achiziţia unui număr specificat
de eşantioane după apariţia unui eveniment trigger, adică după
recepţionarea unui semnal trigger (de sincronizare). După ce bufferul
care stochează datele achiziţionate (de lungime specificată de
utilizator) este plin, achiziţia este stopată.
În cadrul modului pretrigger datele sunt achiziţionate
continuu, înainte şi după primirea unui semnal trigger. Datele sunt
colectate într-un buffer precizat de utilizator până când placa
recepţionează semnalul trigger. După aceasta, sistemul de achiziţie va
mai colecta un număr specificat de eşantioane după care stopează
achiziţia. Bufferul este tratat ca un buffer circular, adică după ce
întregul buffer este completat, datele sunt stocate de la început prin
suprascrierea datelor vechi. La terminarea achiziţiei, bufferul conţine
eşantioane dinaintea şi după apariţia semnalului trigger. Numărul de
eşantioane salvate în buffer depinde de lungimea acestuia (specificată
de utilizator) şi de numărul specificat de eşantioane de achiziţionat
după apariţia semnalului trigger.
1.3. Achiziţii mono-punct şi multi-punct
Din punct de vedere al numărului de eşantioane achiziţionat
de către sistemul de achiziţie pentru o anumită aplicaţie, putem avea
achiziţii mono-punct (single-point) şi achiziţii de puncte multiple

8
(multiple-point). De exemplu, o achiziţie a unui singur eşantion, pe un
singur canal (single-channel single-point) este o operaţie de achiziţie
foarte simplă, care nu utilizează buffere. Software-ul de achiziţie
citeşte o singură valoare (un singur eşantion) de la un canal de intrare
şi furnizează imediat sistemului acea valoare. Un exemplu de astfel de
achiziţie este monitorizarea periodică a nivelului unui lichid dintr-un
rezervor. Traductorul, care converteşte nivelul într-o tensiune, este
conectat (eventual printr-un circuit de condiţionare a semnalului) la
unul dintre canalele de intrare analogică ale plăcii de achiziţie; atunci
când se doreşte cunoaşterea nivelului din rezervor se iniţiază o
achiziţie mono-canal mono-punct.
Dacă sunt necesare informaţii mono-punct de la mai multe
surse (de exemplu, se doreşte şi cunoaşterea temperaturii lichidului
din rezervor) se realizează o achiziţie mono-punct dar multi-canal
(multiple-channel, single-point). Software-ul de achiziţie va executa o
citire a tuturor canalelor de intrare specificate şi va furniza câte un
eşantion de pe fiecare canal utilizat.
Observaţie: Achiziţia de date se poate realiza sub control
software (software-timed), şi atunci tactul necesar controlului vitezei
de achiziţie este furnizat de către ceasul sistemului de calcul (în acest
caz controlul fiind afectat de posibile întreruperi), sau atunci când este
necesară o mai mare precizie, achiziţia se realizează sub controlul
ceasului de pe hardware-ul de achiziţie sau sub controlul unui ceas
extern (hardware-timed).
Achiziţiile multiple de date (multi-point) pe un singur canal
sau multi-canal se pot realiza fie prin utilizarea unei structuri software
repetitive (de tip buclă) a unei achiziţii single-point, deci fără
utilizarea unui buffer, metodă care este însă consumatoare de timp şi
ineficientă, sau prin utilizarea metodelor cu bufferare. În funcţie de
modul de utilizare al bufferelor pentru stocarea eşantioanelor
achiziţionate, există tehnici cu buffer simplu (simple-buffer) şi tehnici
cu buffer circular (circular-buffer). Acestea din urmă se bazează pe
completarea unui buffer specificat de utilizator în mod continuu, de
unde şi denumirea de buffer circular. Spre deosebire de tehnica cu
buffer simplu, în cadrul acestei tehnici se apelează la un al doilea
buffer, care preia datele vechi din primul buffer, înainte ca acestea să
fie suprascrise.
Achiziţiile multi-punct reprezintă de fapt achiziţionarea
datelor ca forme de undă (waveforms) – semnale variabile în timp.

9
În diagrama din Fig. 1 este realizată o prezentare succintă a
tipurilor de achiziţii de date (analogice).
Fără trigger
Achiziţii de -Analogic
Hardware:
date -Numeric
Cu trigger
Software
Mod posttrigger

Mod pretrigger

Mono-punct Multi-punct
(single-point) (multiple-point sau
(achiziţia unui singur eşantion) waveform acquisition)

Mono-canal Multi-canal Mono-canal Multi-canal


(single-channel) (multiple-channel) (single-channel) (multiple-
channel)

Achiziţii ne-bufferate (non-buffered)


şi fără sincronizare (non-timed)

Achiziţii cu -Software-timed Achiziţii bufferate


structuri repetitive -Hardware-timed
(control loops) (cu ceas intern sau
(ne-bufferate) extern)

Cu buffer simplu Cu buffer circular


(simple-buffer) (circular-buffer)
(achiziţii hardware-timed)
Fig. 1. Tipuri de achiziţii de date

10
2. Instrumente virtuale LabVIEW pentru achiziţii de date
În LabVIEW controlul plăcilor de achiziţie se realizează cu
ajutorul unor instrumente virtuale (VI) obţinute din lista de comenzi
Functions, meniul DAQ. Lista de comenzi DAQ (Data Acquisition)
conţine instrumente virtuale grupate în următoarele biblioteci (Fig. 2):
Analog Input, Analog Output, Digital Input/Output, Counter,
Calibration and Configuration, Signal Conditioning.
La realizarea unor aplicaţii cu VI-urile de achiziţie trebuie
respectat un principiu de bază şi anume o aranjare secvenţială a
acestor instrumente (numite şi funcţii de achiziţie) în vederea unei
executări coerente a programului. Spre exemplu, configurarea plăcii şi
calibrarea sa se realizează înaintea citirii datelor. Programarea acestei
aranjări se realizează printr-o înlănţuire de conexiuni numite task ID
[in/out] (Fig. 3). Task ID este de fapt un număr generat de LabVIEW
care codifică numărul plăcii de achiziţie şi numărul de grup după
configurarea acestuia (prin grup înţelegând o colecţie de canale de
intrare sau de ieşire sau porturi). Conexiunile de tip error se referă la
erorile de execuţie apărute în diferite etape.

Fig. 2. Meniul Data Acquisition – DAQ


TaskID TaskID in TaskID out TaskID in

Fig. 3. Înlănţuirea logică a funcţiilor de achiziţii de date


prin conexiuni task ID şi error

11
2.1. Biblioteca de instrumente pentru intrări analogice
Funcţiile pentru intrări analogice sunt grupate în patru clase
sau sub-biblioteci: Easy Analog Input VIs, Intermediate Analog Input
VIs, Analog Input Utilities VIs, şi Advanced Analog Input VIs (Fig. 4).
Biblioteca Easy Analog Input VIs conţine instrumente
executabile, de nivel înalt, capabile să realizeze operaţiuni de bază
pentru intrări analogice. Instrumentele din biblioteca Easy Analog
Input VIs sunt construite pe baza VI-urilor din biblioteca Intermediate
Analog Input VIs, care la rândul lor sunt construite pe baza VI-urilor
din biblioteca Advanced Analog Input VIs. Un instrument de tip Easy
Analog Input VIs furnizează o interfaţă utilizator convenabilă pentru
intrările analogice uzuale, pentru aplicaţii complexe fiind necesară
folosirea instrumentelor din celelalte biblioteci.
Instrumentele de nivel intermediar pentru intrări analogice se
pot găsi în biblioteca Intermediate Analog Input VIs. Aceste
instrumente sunt construite pe baza instrumentelor fundamentale din
Advanced Analog Input VIs. Instrumentele de nivel intermediar sunt
flexibile în utilizare, asigurând în acelaşi timp majoritatea facilităţilor
instrumentelor avansate.
Instrumentele din Analog Input Utilities VIs sunt tot
instrumente de nivel intermediar şi oferă soluţii simple pentru
situaţiile uzuale de folosire a intrărilor analogice.

Easy Analog Input VIs


Intermediate
Analog Input VIs

Analog Input Utilities VIs Advanced Analog Input VIs

Fig. 4. Biblioteca Analog Input

12
Instrumentele avansate pentru achiziţia intrărilor analogice
sunt grupate în Advanced Analog Input VIs. Aceste instrumente
constituie interfaţa între software-ul de aplicaţie LabVIEW şi driverele
NI-DAQ, constituind baza celorlalte VI-uri din meniul Analog Input.
Atunci când se doreşte realizarea unei aplicaţii pentru
achiziţia de date analogice instrumentele virtuale trebuie ordonate într-
o secvenţă logică; aceasta conţine etape de configurare a plăcii, de
lansare a achiziţiei, de citire a datelor şi de ştergere a acestora şi este
prezentată în Fig. 4. Această secvenţă poate fi realizată prin utilizarea
unor VI-uri de nivel intermediar, secvenţiate ca în Fig. 5. De
asemenea, etapele din secvenţă corespunzătoare pot fi executate de un
singur VI, ce aparţine de regulă bibliotecii Analog Input Utilities VIs.
Configurare placă
(AI Config.vi)

Lansare achiziţie
(AI Start.vi)

Citire date
(AI Read.vi)

Ştergere date
(AI Clear.vi)
Fig. 5. Secvenţa VI-urilor pentru achiziţia de date analogice

Instrumentele de achiziţie au o serie de parametri care permit


realizarea unor aplicaţii precizate. De regulă, aceşti parametri au valori
ce corespund unei utilizări clasice a funcţiei. Diferenţa dintre
parametrii primari şi parametrii secundari ai instrumentului este
vizualizată în fereastra de ajutor (help) prin grosimea caracterelor.
Parametrii primari (cei mai importanţi) apar îngroşaţi. Valorile
implicite ale parametrilor (default) apar între paranteze.
Aşa cum s-a precizat în primul paragraf, achiziţiile de date pot
fi de tip mono-punct sau multi-punct, mono-canal sau multi-canal. În
funcţie de tipul achiziţiei care se realizează, pot fi folosite diferite VI-
uri din biblioteca Analog Input.

2.2. Achiziţii de date mono-punct (single-point)


Achiziţia mono-punct, a unui singur eşantion, pe un singur
canal (single-channel single-point) este o operaţie de achiziţie simplă,

13
nesincronizată, care nu utilizează buffere – eşantionul achiziţionat este
preluat direct de la placă, fără stocare intermediară în memoria
calculatorului. Pentru operaţiile single-point single-channel simple se
poate utiliza instrumentul virtual AI Sample Channel.vi, disponibil în
sub-biblioteca Easy Analog Input VIs. AI Sample Channel.vi măsoară
semnalul de pe canalul specificat şi furnizează valoarea citită şi
scalată. Acest instrument virtual, cu precizarea terminalelor este
prezentat în Fig. 6.
Parametrul de intrare device reprezintă numărul plăcii de
achiziţii de date utilizate (atunci când există o singură placă, device =
1), iar parametrul de intrare channel este numărul canalului de intrare
analogică utilizat pentru achiziţie. High limit şi low limit sunt cea mai
mare, respectiv cea mai mică valoare permisă pentru semnalul - în
cazul de faţă un singur punct - care este achiziţionat. Ieşirea sample
conţine valoarea scalată (în volţi) citită pe intrarea analogică
specificată prin device şi channel.
O aplicaţie LabVIEW realizată cu acest VI este foarte simplă
şi are diagrama din Fig. 7, eşantionul achiziţionat fiind afişat cu
ajutorul unui indicator numeric (se poate folosi şi un indicator grafic).
În cazul în care sunt necesare informaţii mono-punct de la mai
multe surse se realizează o achiziţie mono-punct dar multi-canal
(multiple-channel single-point), prin citirea tuturor canalelor de intrare
specificate şi furnizarea a câte unui eşantion de pe fiecare canal. Unul
dintre instrumentele virtuale care se poate utiliza în acest caz este AI
Sample Channels.vi, din sub-biblioteca Easy Analog Input VIs. AI
Sample Channels.vi (Fig. 8) măsoară câte o singură tensiune (un
singur punct) de la canalele specificate. Parametrii acestui VI sunt
asemănători cu cei ai instrumentului AI Sample Channel.vi, cu
deosebirea că parametrul channels permite precizarea unei liste cu
canalele de pe care se face achiziţia şi parametrul de ieşire samples
furnizează un vector care conţine valorile în volţi ale eşantioanelor
citite de pe canalele specificate (câte un eşantion de pe fiecare canal).
Domeniul de intrare permis pentru semnalele de intrare este definit în
mod identic pentru toate canalele prin high limit şi low limit.

Fig. 6. Instrumentul AI Sample Channel.vi

14
Fig. 7. Achiziţia mono-punct mono-canal cu AI Sample Channel.vi

Fig. 8. Instrumentul AI Sample Channels.vi

Fig. 9. Achiziţia mono-punct multi-canal cu AI Sample Channels.vi

Diagrama unei aplicaţii LabVIEW pentru achiziţia mono-


punct pe două canale cu VI-ul AI Sample Channels.vi este prezentată
în Fig. 9. Aplicaţia utilizează funcţii Index Array pentru selectarea
datelor de pe cele două canale şi indicatoare numerice pentru afişarea
celor două eşantioane.
După cum s-a observat din cele două exemple prezentate
anterior, folosirea unor instrumente de nivel înalt din sub-biblioteca

15
Easy Analog Input VIs are anumite avantaje, cum ar fi: prezenţa unui
singur VI în diagramă, număr mic de terminale, nu apar conexiuni de
tip taskID şi error etc. Pe de altă parte, aceste VI-uri nu sunt flexibile,
ceea ce înseamnă că programatorul nu are acces la facilităţi importante
ale hardware-ului de achiziţie, cum ar fi stabilirea modului de
triggerare sau achiziţia scanată (cu interval de scanare). În plus,
instrumentele din Easy Analog Input VIs realizează totdeauna o
reconfigurare la iniţializare, ceea ce determină micşorarea vitezei de
procesare.
Atunci când se impun eficienţă şi viteză sporite, trebuie
utilizate instrumente din sub-biblioteca Intermediate Analog Input VIs,
care realizează configurarea achiziţiei o singură dată şi permit
achiziţia continuă a datelor fără reconfigurare. De asemenea, VI-urile
intermediare oferă flexibilitate, controlul erorilor şi eficienţă în
dezvoltarea aplicaţiei de achiziţie. Instrumentele intermediare sunt
recomandate pentru achiziţii de date multi-punct bufferate.
Un exemplu de utilizare a unui instrument de nivel
intermediar pentru o achiziţie single-point este cel din Fig. 10, în care
un instrument intermediar AI Single Scan.vi este cuplat cu un
instrument intermediar AI Config.vi. Instrumentul AI Single Scan.vi
poate fi utilizat pentru realizarea unei singure scanări, adică pentru
citirea a câte unui eşantion de pe fiecare canal din lista specificată.
Dacă se specifică un singur canal (prin AI Config.vi), atunci se
realizează o achiziţie mono-punct mono-canal.
Ambele VI-uri de achiziţie utilizate în aplicaţia din Fig. 10 vor
fi prezentate în cadrul analizei instrumentelor din sub-biblioteca de
instrumente intermediare. În aplicaţia LabVIEW din Fig. 10, controlul
care defineşte canalele de intrare este un vector de stringuri (şiruri de
caractere), fiecare din aceste stringuri definind o listă cu canale de
intrare (prin numerele canalelor, despărţite prin virgulă, de exemplu:
0, 3, 5). În cazul utilizării unui singur canal, se păstrează setarea
implicită. Parametrul input limits este un vector (tablou uni-
dimensional) de clustere, fiecare cluster conţinând două controale
numerice care definesc high limit şi low limit corespunzătoare unui
anumit canal de intrare (definite separat în exemplele anterioare). Din
Fig. 10 se observă apariţia conexiunii task ID in / task ID out şi a
conexiunii de eroare, analizate în Fig. 3. Indicatorul Voltage data
conţine datele analogice citite, care în cazul achiziţiei mono-punct
mono-canal reprezintă un singur eşantion de pe canalul specificat.

16
Fig. 10. Achiziţie single-point cu instrumente de nivel intermediar

2.3. Instrumente virtuale de achiziţie intermediare


În continuare vor fi descrise VI-urile intermediare pentru
achiziţia de date, şi anume cinci instrumente de nivel intermediar din
biblioteca Intermediate Analog Input VIs şi două instrumente din
biblioteca Analog Input Utilities VIs.
În Fig. 11 – 15 sunt prezentate instrumentele intermediare AI
Config.vi, AI Start.vi, AI Read.vi, AI Single Scan.vi şi AI Clear.vi, cu
terminalele de intrare şi de ieşire corespunzătoare. Se observă o serie
de terminale comune care apar la toate instrumentele virtuale din
figurile precizate. În Tabelul 1 sunt descrise pe scurt terminalele
comune, cu menţiunea că fiecare VI poate avea terminale de intrare şi
ieşire specifice a căror semnificaţie se desprinde fie din context fie se
poate afla apelând la sistemul de help.
AI Config.vi realizează configurarea unei operaţiuni de intrare
analogică pentru un set de canale de intrare specificat, prin
configurarea hardware-ului şi alocarea unei memorii tampon (buffer)
pentru datele analogice. AI Start.vi setează rata de scanare, numărul de
scanări care se vor efectua, condiţiile de triggerare, după care startează
achiziţia de date analogice. AI Read.vi citeşte datele în cadrul unei
achiziţii bufferate. După cum s-a văzut în paragraful anterior, AI
Single Scan.vi returnează rezultatul unei singure scanări
corespunzătoare unui grup de canale specificat anterior. AI Clear.vi
şterge task-ul de intrare analogică asociat cu taskID in.

17
Fig. 11. Instrumentul AI Config.vi

Fig. 12. Instrumentul AI Start.vi

Fig. 13. Instrumentul AI Read.vi

Fig. 14. Instrumentul AI Single Scan.vi

Fig. 15. Instrumentul AI Clear.vi

18
Tabelul 1
Denumire Descriere
terminal
device numărul conectorului plăcii de achiziţii de date.
Pentru o singură placă AT-MIO, device = 1
channels (0) descrie canalele de intrare utilizate. Implicit are
valoarea 0
task ID in identifică grupul şi tipul operaţiei I/O
task ID out are aceeaşi valoare ca task ID in
error in (no descrie erorile care apar înainte de execuţia VI-
error) ului respectiv. Dacă a apărut o eroare, VI-ul
returnează valoarea erorii într-un cluster în error
out. Implicit are valoarea "no error"
error out conţine informaţia despre erori. În cazul în care
clusterul error in indică o eroare, clusterul error
out va conţine aceeaşi informaţie. Dacă nu, error
out descrie erorile apărute la execuţia VI-ului
respectiv
buffer size (1000 mărimea memoriei tampon alocată pentru
scans) stocarea eşantioanelor (implicit 1000)
number of scans numărul de scanări care se efectuează (implicit
to acquire 1000)
scan rate frecvenţa de achiziţie (1000 de scanări pe secundă
(scan/sec) în lipsa precizării). Este echivalentă cu frecvenţa
de eşantionare pe canalul respectiv
voltage data Este un tablou (o matrice) care conţine datele
analogice achiziţionate

În Fig. 16 şi Fig. 17 sunt prezentate instrumentele AI


Waveform Scan.vi şi AI Continuous Scan.vi din sub-biblioteca Analog
Input Utilities VIs, instrumente de nivel intermediar des utilizate în
aplicaţii, o parte din terminalele de intrare şi de ieşire comune fiind
descrise în Tabelul 1.
AI Waveform Scan.vi realizează numărul specificat de scanări
cu rata de scanare specificată şi returnează toate datele achiziţionate.
Achiziţia poate fi declanşată (triggerată) prin intermediul unui trigger.
AI Continuous Scan.vi realizează măsurarea în mod continuu
(dar eşantionată în timp) a unui grup de canale, stochează datele într-

19
un buffer circular şi returnează un număr specificat de date măsurate
la fiecare apelare a VI-ului.

Fig. 16. Instrumentul AI Waveform Scan.vi

Fig. 17. Instrumentul AI Continuous Scan.vi

3. Exemple de achiziţii de date mono-punct


Rularea programelor de achiziţie şi/sau generare de date
analogice se poate face doar în prezenţa unei plăci de achiziţie, care
trebuie configurată corespunzător. În Anexa 1 este prezentată detaliat
placa de achiziţie AT-MIO-16H a firmei National Instruments, placă
pe care se bazează aplicaţiile din acest paragraf. Prelucrarea datelor
numerice precum şi gestionarea interfeţelor de intrări/ieşiri
analogice/numerice se face sub controlul pachetelor de programe
LabVIEW şi al software-ului (driver) NI-DAQ pentru DOS/
Windows.
Pentru utilizarea corectă a plăcii de achiziţie AT-MIO-16H
este necesară parcurgerea atentă a descrierii modului de funcţionare a
plăcii din Anexa 1, după care trebuie realizată configurarea acesteia în
funcţie de aplicaţia dorită.

20
3.1. Configurarea plăcii AT-MIO-16
Placa de achiziţie AT-MIO-16H are, din fabricaţie, o setare
iniţială (implicită), care se poate modifica în funcţie de situaţia reală în
care este folosită. Placa de achiziţie AT-MIO-16H nu dispune de
tehnologia plug and play. Cu alte cuvinte, sistemul de operare
Windows nu poate detecta tipul plăcii de achiziţie şi nici nu se pot
face setări software ale plăcii. Orice modificare a setărilor plăcii se
face mai întâi prin dispunerea corespunzătoare a jumperelor pe placă
şi apoi, printr-un program de configurare special, sistemul de operare
este informat de toate aceste schimbări.
Placa AT-MIO-16H conţine 13 jumpere (ştrapuri) şi un
comutator DIP pentru configurarea interfeţei cu magistrala AT şi
setarea intrărilor şi ieşirilor analogice (Analog I/O settings).
Comutatorul DIP este folosit pentru setarea adresei I/O de bază. Două
jumpere sunt folosite pentru selectarea canalului de întrerupere şi
pentru accesul direct la memorie (DMA – Direct Memory Access).
Celelalte 11 jumpere rămase sunt folosite pentru a schimba
configuraţia circuitelor de intrări şi ieşiri analogice (a se vedea Anexa
1 – Capitolul 3).
Pentru verificarea şi prezentarea modului de folosire a plăcii
se poate lansa utilitarul NI-DAQ Configuration Utility (Fig. 18) din
pachetul de programe al driverului NI-DAQ, instalat în prealabil pe
calculatorul în care este poziţionată placa de achiziţie.

Fig. 18. Meniul principal al utilitarului de configurare NI-DAQ

21
Din Fig. 18 rezultă că avem o singură placă de achiziţie
(Device # 1) de tipul AT-MIO-16H9, care foloseşte adresa de bază
220H, canalele DMA 6 şi 7 şi nivelul de întrerupere 5. Prin apăsarea
butonului de configurare/test din meniul principal se deschide o altă
fereastră (Fig. 19) în care se poate realiza o verificare a setărilor şi o
configurare a adresei de bază (care trebuie să corespundă cu setarea de
pe placă). Prin acţionarea push-butonului Hardware (Fig. 19) se pot
vizualiza/testa setările pentru intrările analogice (Fig. 20) şi ieşirile
analogice (Fig. 21). Intrările analogice sunt setate pentru gama –
5V…+5V, mod diferenţial, domeniul de intrare fiind corespunzător cu
modulele de condiţionare a semnalelor (izolare galvanică) disponibile
în laborator (seria 5B31-02 şi 5B41-02 – National Instruments).
Ieşirile analogice sunt setate în domeniul -10V...+10V (bipolar).

Fig. 19. Setările pentru adresa de bază, DMA şi întreruperi

Fig. 20. Configurarea intrărilor analogice

22
Fig. 21. Configurarea ieşirilor analogice

Pentru testarea configuraţiei plăcii şi pentru aplicaţiile de


achiziţii de date se va folosi o sursă de tensiune duală de tip IEMI -
I4102 M de 2 x 40 V, 1.2 A şi un voltmetru de c.c. Sursa de c.c. va fi
conectată la bornele 2, 3 ale modulului de intrare 5B41-02 (de bandă
largă) de pe canalul de intrare analogică 0, situat pe rack-ul exterior.
Voltmetrul va fi cuplat la ieşirea analogică 0 (pinii 20, 23 ai
conectorului I/O al plăcii - a se vedea Anexa 1).
Pentru testarea plăcii se va apăsa butonul Test (Fig. 19), ceea
ce va avea ca rezultat apariţia ferestrei de test din Fig. 22. Pentru
testarea intrării analogice de pe canalul 0 se va conecta sursa de
tensiune din care se va furniza o tensiune (până în 5V). La apăsarea
butonului Analog Input va fi afişată tensiunea citită de placă şi un
semnal de eroare (0 în cazul funcţionării corecte) – Fig. 23.

Fig. 22. Fereastra de testare a intrărilor/ieşirilor analogice

23
Fig. 23. Teste pentru intrarea analogică 0 şi pentru ieşirea analogică 0

Pentru testarea ieşirii analogice de pe canalul 0, se va


introduce în caseta Voltage o tensiune continuă (de exemplu 3V) şi se
apasă butonul Analog Output. Pe voltmetrul de c.c. conectat la ieşirea
0 trebuie să fie citită tensiunea de 3V, iar în fereastra de test va fi
afişat un semnal de eroare (0 în cazul funcţionării corecte) – Fig. 23.
Dacă se doreşte testarea altor canale de intrare sau ieşire analogică
trebuie făcute modificări corespunzătoare (conexiuni şi casete).

3.2. Achiziţia unei tensiuni de la o sursă


După configurarea şi verificarea plăcii AT-MIO-16H, se poate
construi o aplicaţie de achiziţie mono-punct a unei tensiuni de la o
sursă exterioară. Achiziţia mono-punct, a unui singur eşantion, pe un
singur canal (single-channel single-point) se poate realiza utilizând
instrumentul virtual AI Sample Channel.vi, descris în subparagraful
2.2. AI Sample Channel.vi măsoară semnalul de pe canalul specificat
şi furnizează valoarea citită şi scalată.
Aplicaţia LabVIEW are diagrama din Fig. 7, iar fereastra
panou este prezentată în Fig. 24. Reamintim că parametrul de intrare
device reprezintă numărul plăcii de achiziţii de date utilizate, iar
parametrul de intrare channel este numărul canalului de intrare
analogică utilizat pentru achiziţie. Ieşirea sample conţine valoarea
scalată (în volţi) citită pe intrarea analogică specificată prin device: 1
şi channel: 0. Eşantionul achiziţionat poate fi afişat cu ajutorul unui
indicator numeric şi/sau grafic (în Fig. 25 s-a realizat o rulare continuă
a aplicaţiei pentru vizualizarea tensiunii cu Waveform Chart).
24
Fig. 24. Achiziţia cu AI Sample Channel.vi a unei tensiuni continue

Fig. 25. Achiziţia mono-punct mono-canal cu AI Sample Channel.vi

3.3. Achiziţia mono-punct multi-canal a două tensiuni


În cazul în care sunt necesare informaţii mono-punct de la mai
multe surse se realizează o achiziţie mono-punct dar multi-canal
(multiple-channel single-point), prin citirea tuturor canalelor de intrare
specificate şi furnizarea a câte unui eşantion de pe fiecare canal.
În Fig. 26 este prezentată fereastra panou a diagramei din Fig.
9, care permite achiziţia mono-punct a două tensiuni de pe două
canale de intrare analogică. Pentru realizarea aplicaţiei este necesară
conectarea a încă unei surse de tensiune la bornele 2, 3 ale modulului
de izolare galvanică de pe canalul de intrare 1 (modul de tip 5B31).

25
Fig. 26. Achiziţia mono-punct multi-canal cu AI Sample Channels.vi
Aplicaţia LabVIEW este construită în jurul instrumentului AI
Sample Channels.vi. Au fost utilizate suplimentar faţă de aplicaţia din
Fig. 9 două indicatoare numerice circulare pentru afişarea tensiunilor
de la cele două intrări. Se observă că indicatorul channels, de tip
string, conţine o listă cu cele două canale de intrări analogice care sunt
scanate prin intermediul instrumentului virtual de achiziţie.
4. Temă de laborator
4.1. Ce înţelegeţi prin achiziţie mono-punct, respectiv multi-
punct? Dar prin achiziţie mono-canal, respectiv multi-canal? Ce
înţelegeţi prin semnal de trigger? Ce tipuri de triggerare există? Ce
înţelegeţi prin scan rate?
4.2. Identificaţi instrumentele virtuale pentru achiziţii de date
din biblioteca Data Acquisition. Ce înţelegeţi prin conexiuni task ID şi
error? Parcurgeţi cu atenţie VI-urile din sub-biblioteca Analog Input
şi instrumentele intermediare din paragraful 2.3. Analizaţi
semnificaţia VI-urilor şi a terminalelor acestora.
4.3. Implementaţi aplicaţia de achiziţie a unei tensiuni
descrisă în paragraful 3.2, după configurarea plăcii AT-MIO-16 şi
realizarea conexiunilor necesare (paragraful 3.1).
4.4. Dezvoltaţi o aplicaţie care să citească o tensiune de la o
baterie sau de la o sursă de tensiune continuă, cu instrumente de nivel
intermediar (Fig. 10), pe baza exemplului din paragraful 3.2.
4.5. Dezvoltaţi şi rulaţi aplicaţia de achiziţie a două tensiuni
descrisă în paragraful 3.3.
4.6. Refaceţi aplicaţia mono-punct multi-canal de la punctul
4.5 utilizând instrumente de achiziţie de nivel intermediar.

26
LUCRAREA NR. 2

Intrări analogice. Achiziţii de date multi-punct

După cum s-a precizat în lucrarea de laborator precedentă, din


punct de vedere al numărului de eşantioane achiziţionat de către
sistemul de achiziţie pentru o anumită aplicaţie, putem avea achiziţii
mono-punct (single-point) şi achiziţii de puncte multiple (multi-point).
Achiziţiile multiple de date (multi-point) pe un singur canal
sau multi-canal se pot realiza fie prin utilizarea unei structuri software
repetitive (de tip buclă) a unei achiziţii single-point, deci fără
utilizarea unui buffer, metodă care este însă consumatoare de timp şi
ineficientă, sau prin utilizarea metodelor cu bufferare (simple-buffer
sau circular-buffer). Achiziţiile multi-punct reprezintă de fapt
achiziţionarea datelor ca forme de undă (waveforms) – semnale
variabile în timp.

1. Achiziţia de date multi-punct cu utilizarea structurilor


repetitive (control loops)
Pentru achiziţiile multi-punct se pot utiliza structuri repetitive
(bucle) de tip For sau While în care sunt conţinute aplicaţii de
achiziţie single-point, fără buffere, sau se folosesc aplicaţii cu
bufferare. Achiziţia cu structuri repetitive este lentă, dar se foloseşte în
aplicaţii de conducere, atunci când după achiziţia unei valori
corespunzătoare unui semnal de intrare (cum ar fi mărimea reglată) se
generează o valoare corespunzătoare unui semnal de ieşire (mărimea
de comandă), operaţia de achiziţie/generare continuând în acest mod
pe tot parcursul funcţionării procesului condus.
Un exemplu de achiziţie repetată care utilizează instrumentele
intermediare AI Config.vi şi AI Single Scan.vi incluse într-o buclă
While este prezentat în VI-ul Cont Acq&Chart (immediate).vi din
biblioteca de exemple Examples\ daq\ anlogin\ anlogin.llb a
LabVIEW. Prin intermediul buclei While VI-ul realizează o serie de
scanări single-point, ceea ce înseamnă că practic avem un control
software al vitezei de achiziţie (achiziţie software-timed). Diagrama
asociată acestei aplicaţii este prezentată în Fig. 1.

27
Fig. 1. Aplicaţia Cont Acq&Chart (immediate).vi

Aşa cum s-a afirmat în prima lucrare, avantajul utilizării


instrumentelor intermediare constă în faptul că nu este necesară
configurarea canalelor de fiecare dată când se doreşte achiziţia datelor.
Pentru ca instrumentul AI Config.vi să fie apelat o singură dată, acesta
se plasează în afara buclei, aşa cum se observă în Fig. 1. AI Config.vi
configurează canalele, setează limitele de intrare şi generează un
taskID. După aceasta, pasează taskID şi clusterul de eroare buclei
While. LabVIEW apelează AI Single Scan.vi pentru realizarea unei
scanări şi transferă datele obţinute unui VI numit My Single-Scan
Processing.vi (care poate lipsi din aplicaţie şi care permite realizarea
unor prelucrări ale datelor achiziţionate). Datele sunt transferate apoi
prin intermediul unei funcţii Build Array la un indicator grafic de tip
Waveform chart în scopul vizualizării. Funcţia Wait Until Next ms
Multiple (metronom) controlează tactul buclei While. După ce
utilizatorul introduce valoarea ratei de scanare, aplicaţia converteşte
această valoare în milisecunde şi trece această valoare convertită
funcţiei Wait Until Next ms Multiple. Bucla va fi executată pe tactul
dat de rata de scanare. Bucla se va termina la apăsarea butonului de
Stop sau la apariţia unei erori.
Exemplul prezentat utilizează controlul vitezei (ratei) de
achiziţie printr-un mecanism software. Întrucât viteza de achiziţie este
controlată prin intermediul ceasului sistemului de calcul, în sistem pot

28
să apară o serie de întreruperi datorită intervenţiei utilizatorului, care
pot duce la scăderea preciziei controlului soft a unei aplicaţii de
achiziţie. De asemenea, existenţa unor structuri de calcul (prelucrare)
determină apariţia unor întârzieri care trebuie luate în consideraţie.
Pentru a îmbunătăţi precizia în cazul controlului software, trebuie
redus la minimum numărul şi dimensiunea indicatoarelor grafice
utilizate (refresh-ul afişajului monitorului determină apariţia
întreruperilor, ceea ce afectează viteza de execuţie a buclelor).
Dacă aplicaţiile sunt pretenţioase, se va utiliza controlul
hardware al vitezei de achiziţie (hardware-timed control loops), care
conduce la creşterea preciziei achiziţiei şi permite obţinerea unor
viteze de achiziţie mult mai mari. În acest caz, achiziţia nu mai este
întreruptă de intervenţia utilizatorului. Achiziţia controlată hardware
plasează în mod automat datele în memoria FIFO a plăcii de achiziţie
la intervale de timp determinate de semnalele de tact de pe placă. Un
exemplu de achiziţie controlată hardware, ne-bufferată, cu structură
repetitivă este prezentat în aplicaţia Cont Acq&Chart (hw timed).vi din
biblioteca Examples\daq\anlogin\anlogin.llb a LabVIEW.

2. Achiziţia de date multi-punct bufferată


Una din posibilităţile de realizare a achiziţiilor multi-punct de
la unul sau mai multe canale este de a utiliza tehnici fără buffer într-o
manieră repetitivă, aşa cum s-a văzut în paragraful anterior. Această
tehnică este ineficientă, mare consumatoare de timp şi în plus nu
există un control al intervalului de timp dintre eşantioane sau al
intervalului de timp de transfer între canale. Pentru realizarea unei
achiziţii multi-punct eficientă trebuie folosite buffere de date.
Achiziţia multi-punct mai este denumită achiziţie de forme de undă
(waveforms). În funcţie de modul de utilizare a datelor achiziţionate
există două tehnici de achiziţie bufferată multi-punct: achiziţie cu
buffer simplu şi achiziţie cu buffer circular.

2.1. Achiziţia multi-punct cu buffer simplu


Modul de transfer bufferat al datelor presupune că LabVIEW
transferă datele de la hardware-ul de achiziţie în memorie la anumite
intervale de timp. Pentru o achiziţie bufferată, în cadrul VI-ului
trebuie specificat numărul de eşantioane care vor fi achiziţionate şi
numărul de canale de la care se preiau aceste eşantioane. Pe baza

29
acestor două informaţii, LabVIEW alocă un buffer în memorie pentru
stocarea unui număr de puncte egal cu numărul de eşantioane pe canal
multiplicat cu numărul de canale. Pe măsură ce se desfăşoară achiziţia,
bufferul este umplut cu date. Atunci când este folosit un buffer
simplu, datele din buffer nu sunt accesibile până când LabVIEW nu
achiziţionează toate eşantioanele. După aceasta, datele din buffer pot
fi analizate, stocate pe harddisc, afişate sau prelucrate.
Pentru achiziţia bufferată a unei singure forme de undă de la
un singur canal (achiziţie multi-punct mono-canal), cea mai simplă
cale este de a utiliza instrumentul AI Acquire Waveform.vi (Fig. 2) din
sub-biblioteca Easy Analog Input VIs, aşa cum se observă în Fig. 3.
Pentru acest VI trebuie precizate numărul plăcii, canalul, numărul de
eşantioane care se doreşte a fi achiziţionat de pe canalul respectiv şi
frecvenţa de eşantionare (echivalentă cu rata de scanare pentru un
singur canal). Se poate seta amplificarea utilizând high limit şi low
limit. Forma de undă obţinută este vizualizată cu un Waveform graph.
Perioada de eşantionare reală este inversa frecvenţei de eşantionare
reală, care poate fi diferită de frecvenţa de eşantionare setată la
intrarea VI-ului, în funcţie de performanţele hardware-ului.
Instrumentul de nivel înalt permite o programare uşoară dar nu există
facilităţi cum ar fi setarea triggerului, a semnalului de tact etc.
Pentru achiziţia bufferată a mai multor forme de undă, adică
achiziţia multi-punct multi-canal, se poate utiliza, de exemplu,
instrumentul AI Acquire Waveforms.vi (Fig. 4), tot din biblioteca Easy
Analog Input VIs. Acest VI este asemănător cu AI Acquire
Waveform.vi, dar permite achiziţia de la mai multe canale. Se poate
construi o aplicaţie asemănătoare cu cea precedentă, cu precizarea
unei liste cu canalele de intrare folosite, iar ieşirea instrumentului
(terminalul waveforms) furnizează o matrice care conţine datele
achiziţionate de la canalele specificate. Pentru afişarea formelor de
undă obţinute de pe fiecare canal se pot utiliza funcţii Index Array ca
în aplicaţia din Fig. 9 – Lucrarea de laborator nr. 1, urmate de
indicatoare grafice de tip Waveform graph.

Fig. 2. Instrumentul AI Acquire Waveform.vi

30
Fig. 3. Achiziţia multi-punct mono-canal cu AI Acquire Waveform.vi

Fig. 4. Instrumentul AI Acquire Waveforms.vi

Pentru asigurarea unei flexibilităţi sporite, achiziţia multi-


punct bufferată utilizează instrumente de nivel intermediar. Aceste
instrumente, prezentate în Lucrarea de laborator nr. 1, permit controlul
optim al achiziţiei, cum ar fi, de exemplu, citirea numai a unei părţi
din datele achiziţionate şi plasate în buffer. Instrumentele intermediare
trebuie conectate într-o anumită ordine (a se vedea Fig. 5 – Lucrarea
de laborator nr. 1) iar pentru a identifica operaţiunea de achiziţie şi
pentru a executa VI-urile în ordinea corectă trebuie realizate
conexiunile taskID şi error. Prin folosirea VI-urilor intermediare, se
pot configura: triggerul, semnalul de tact pentru achiziţie etc. şi se
poate controla fiecare etapă a achiziţiei.
În Fig. 5 este prezentată diagrama unei aplicaţii de achiziţie
bufferată multi-punct multi-canal care utilizează instrumente de nivel
intermediar. Cu instrumentul AI Config.vi, se configurează diferiţii
parametri de achiziţie, cum ar fi canalele care sunt citite, mărimea
bufferului etc. În AI Start.vi se specifică parametrii utilizaţi pentru
începerea achiziţiei şi anume numărul de scanări, frecvenţa de scanare
şi setările de trigger. În AI Read.vi se specifică parametrii folosiţi

31
pentru citirea datelor din bufferul cu date achiziţionate. În final,
aplicaţia utilizează AI Clear.vi pentru dezafectarea bufferelor şi
celorlalte resurse folosite pentru achiziţie prin invalidarea task ID.
Dacă apare o eroare la execuţia acestor VI-uri, programul o pasează
prin conexiunea error până la instrumentul General Error Handler.vi,
care generează o descriere a erorilor apărute în procesul de achiziţie.
Se observă că doar o parte din terminalele de intrare şi de ieşire ale
VI-urilor sunt utilizate, restul fiind lăsate la valorile lor implicite.
Datele achiziţionate sunt afişate cu ajutorul unui indicator grafic de tip
Waveform Graph, cu opţiunea Transpose Array activată, fiind posibilă
vizualizarea datelor primite de la mai multe canale (plotare multiplă).
După cum se cunoaşte, multe din sistemele de achiziţie
utilizează aşa-numita eşantionare secvenţială, cu un singur CAN şi
mutliplexoare, ceea ce înseamnă că acelaşi CAN este folosit pentru
mai multe canale de intrare. De aici rezultă că frecvenţa de eşantionare
maximă pe canal este egală cu frecvenţa de eşantionare maximă a
plăcii împărţită la numărul de canale.
Pentru aceste plăci, rata de scanare introdusă la intrarea VI-
urilor este de fapt frecvenţa de eşantionare care se doreşte a fi obţinută
pe un canal, iar aceasta poate fi cel mult frecvenţa de eşantionare
maximă a plăcii împărţită la numărul de canale utilizate.
O aplicaţie similară cu cea din Fig. 5, dar în care se utilizează
un singur instrument virtual AI Waveform Scan.vi, instrument de nivel
intermediar (a se vedea Fig. 16 – Lucrarea de laborator nr. 1) din
biblioteca Analog Input Utilities VIs, este prezentată în Fig. 6.

Fig. 5. Achiziţia bufferată multi-punct cu VI-uri de nivel intermediar

32
Fig. 6. Achiziţia simple-buffer multi-punct cu AI Waveform Scan.vi

Trebuie precizat că aplicaţiile de achiziţie bufferată prezentate


anterior sunt executate pe un semnal de tact furnizat de placa de
achiziţie, adică hardware timed, ceea ce asigură o achiziţie rapidă şi
precisă.
Observaţie: Din punct de vedere al transferului datelor din
exterior până la utilizator, achiziţia bufferată a datelor poate fi descrisă
pe scurt, după cum urmează. Semnalul analogic care trebuie
achiziţionat este preluat de către hardware-ul de achiziţie pe unul din
canalele analogice prin intermediul amplificatorului de instrumentaţie
şi al convertorului analog-numeric. După ce este convertit în formă
numerică, semnalul este plasat în memoria FIFO (first-in first-out) a
hardware-ului de achiziţie, care păstrează datele până când acestea pot
fi transferate către calculator. Datele sunt transferate către calculator
prin intermediul sistemului de întreruperi sau prin DMA (Direct
Memory Access) şi sunt stocate într-un buffer al calculatorului (o zonă
de memorie). Mărimea bufferului este dimensionată prin instrumentul
AI Config.vi. Achiziţia este declanşată de către AI Start.vi, iar bufferul
este citit prin intermediul AI Read.vi, care transferă datele din bufferul
calculatorului, după ce acesta este completat, într-un buffer al
LabVIEW, de unde acestea pot fi afişate sau prelucrate. Dacă se
doreşte scrierea datelor achiziţionate într-un fişier, se pot utiliza VI-uri
din biblioteca Functions/File I/O.

33
2.2. Achiziţia multi-punct cu buffer circular
Tehnicile de achiziţie cu buffer simplu se pot utiliza în multe
aplicaţii, însă dacă trebuie vizualizate sau procesate porţiuni din date
imediat ce acestea sunt achiziţionate, trebuie setat şi folosit un buffer
circular. În cazul acestei tehnici, porţiuni din datele stocate în buffer
sunt citite din acesta în timp ce este completat cu alte date. Prin
utilizarea bufferului circular, hardware-ul de achiziţie poate fi setat să
achiziţioneze date în mod continuu în background, în timp ce
LabVIEW citeşte datele achiziţionate din buffer. Bufferul circular
diferă de un buffer simplu doar prin modul în care LabVIEW plasează
şi recuperează datele din buffer. Bufferul circular este umplut cu date,
ca un buffer obişnuit, dar când ajunge la sfârşitul bufferului,
LabVIEW se întoarce la începutul acestuia şi reia completarea cu date,
suprascriind datele existente. Prin urmare, datele sunt citite în mod
continuu. Instrumentul virtual folosit va citi datele sub formă de
blocuri, de la o anumită locaţie din buffer, în timp ce datele intră în
buffer începând cu altă locaţie, astfel încât să nu fie suprascrise date
care nu au fost citite din buffer. Tehnica de achiziţie cu buffer circular
poate fi aplicată doar cu instrumente intermediare sau avansate.
La folosirea bufferului circular există două probleme posibile:
VI-ul poate citi date din buffer mai repede decât acesta este scris, sau
VI-ul nu poate citi datele din buffer mai rapid decât sunt suprascrise
datele. În primul caz LabVIEW aşteaptă sosirea datelor ce trebuie
citite, în timp ce în al doilea caz VI-ul trimite un mesaj de eroare care
avertizează că anumite date au fost suprascrise şi pierdute (overflow
error) – datele din memoria FIFO a plăcii vor fi suprascrise.
Datele achiziţionate prin tehnica cu buffer circular pot fi puse
la dispoziţia aplicaţiei imediat ce acestea sunt achiziţionate – de
exemplu, pentru afişarea lor (în aşa-numitul pseudo - timp real).
Singurele diferenţe majore care apar în ferestrele diagramă ale
aplicaţiilor LabVIEW cu buffer circular faţă de cele cu buffer simplu
sunt: modul de setare a terminalului de intrare number of scans to
acquire al instrumentului AI Start.vi (0 pentru achiziţie continuă), şi
apelarea repetată a instrumentului AI Read.vi pentru citirea datelor.
Aceste setări pot fi aplicate pe exemplul de achiziţie multi-punct cu
buffer simplu din Fig. 5. Astfel, diagrama pentru o achiziţie cu buffer
circular derivată din această aplicaţie este prezentată în Fig. 7. Se
observă că se achiziţionează date cu o rată de 1000 de eşantioane pe
secundă utilizând un buffer care poate stoca 5000 de eşantioane.

34
Fig. 7. Achiziţia în mod continuu multi-punct cu buffer circular

Aplicaţia este utilă în cazul monitorizării datelor de la intrare


pentru o perioadă îndelungată (în mod continuu).
În aplicaţia din Fig. 7, instrumentul AI Config.vi setează
canalele şi mărimea bufferului, apoi AI Start.vi iniţiază achiziţia de
date din background şi specifică rata de scanare (cu number of scans
to acquire setat la 0 pentru achiziţie în mod continuu). În interiorul
buclei While, AI Read.vi citeşte în mod repetat blocuri de date din
buffer, a căror dimensiune este dată de terminalul number of scan to
read al AI Read.vi, care nu mai este la valoarea sa implicită -1: citirea
tuturor datelor din buffer, ci este setat la numărul de eşantioane care se
doreşte a fi citite o dată şi puse la dispoziţia aplicaţiei. În aplicaţia
dată, blocurile au dimensiunea egală cu maximul dintre 1000 de
eşantioane şi dimensiunea scan backlog. Această alegere este
efectuată prin utilizarea unei funcţii Max & Min (meniul Comparison).
Aplicaţia poate funcţiona şi fără această funcţie, dar aceasta este utilă
pentru controlul dimensiunii scan backlog, care arată câte eşantioane
au rămas în bufferul circular.
Instrumentul virtual creat prin diagrama din Fig. 7 citeşte şi
afişează date în mod continuu (cu un indicator Waveform chart) până
la apariţia unei erori sau până la apăsarea butonului stop.
La aplicaţiile de achiziţie cu buffer circular este posibilă
apariţia unei erori de tip overwrite (cod – 10846), care înseamnă că
datele nu sunt citite suficient de repede din bufferul calculatorului de
către VI - şi prin urmare datele noi vor fi suprascrise în buffer peste

35
cele necitite încă, sau a unei erori overflow (cod –10845) care arată că
datele nu pot fi preluate suficient de rapid din memoria FIFO a plăcii
către buffer, ceea ce înseamnă că datele din memoria FIFO vor fi
suprascrise înainte de a fi transferate.
Pentru prevenirea erorii overwrite se poate mări numărul de
eşantioane citite de AI Read.vi (number of scan to read) sau se
micşorează rata de scanare sau se măreşte dimensiunea bufferului.
Pentru prevenirea erorii overflow trebuie folosit transferul DMA care
este mai rapid sau se micşorează rata de scanare sau se utilizează alt
hardware de achiziţie (placă cu memorie FIFO mai mare şi/sau
calculator mai rapid).
O aplicaţie asemănătoare care foloseşte însă instrumentul AI
Continuous Scan.vi din Analog Input Utilities VIs este cea din Fig. 8.
Terminalul de iteraţie al buclei While este legat la terminalul de
iteraţie al VI-ului de achiziţie, pentru a evita configurarea repetată a
achiziţiei. Achiziţia este oprită la apăsarea butonului Stop sau la
apariţia unei erori. Condiţia booleană de terminare a achiziţiei este de
asemenea conectată la terminalul clear acquisition al VI-ului (astfel
încât să fie true la ultima iteraţie).

Fig. 8. Achiziţia continuă (buffer circular) cu AI Continuous Scan.vi

Pentru aprofundarea problemelor legate de achiziţia datelor


analogice se pot analiza şi rula exemple din directorul Examples/Daq
cum ar fi Getting Started Analog Input.vi. Pentru achiziţii multi-punct
cu buffer circular se pot analiza şi rula VI-uri cum ar fi: Cont Acq &
Chart (buffered).vi, similară cu aplicaţia din Fig. 7, Cont Acq &
Graph (buffered).vi, Cont Acq to File (scaled).vi etc.

36
Achiziţiile single-point şi multi-point descrise în paragrafele
anterioare sunt startate la momente de timp aleatoare în raport cu
datele achiziţionate. Atunci când este necesară declanşarea achiziţiei
la un anumit moment de timp trebuie utilizate în mod corespunzător
semnale de trigger hardware (analogic sau numeric) sau software.

3. Exemple de achiziţii de date multi-punct


Pentru implementarea exemplelor din acest paragraf trebuie
configurată şi verificată placa AT-MIO-16H conform indicaţiilor din
Lucrarea de laborator nr. 1 şi din Anexa 1.
3.1. Achiziţia multi-punct cu structuri repetitive
Aplicaţia din acest subparagraf constă în achiziţia multi-punct
bazată pe o buclă While a semnalelor provenite de la un generator de
semnal tip Kabid KZ1404 (sau Versatester E0502) aflat în dotarea
laboratorului. Generatorul poate furniza semnale de tip
dreptunghiular, triunghiular sau sinusoidal între 0.5 Hz şi 1 MHz.
Pentru realizarea aplicaţiei se conectează ieşirea generatorului de
semnal la bornele 2, 3 ale modulului de intrare 5B41-02 (de bandă
largă) de pe canalul de intrare analogică 0, situat pe rack-ul exterior.
Pentru achiziţia semnalului de la generator va fi folosit VI-ul
Cont Acq&Chart (immediate).vi din biblioteca de exemple Examples\
daq\ anlogin\ anlogin.llb a LabVIEW (diagrama este prezentată în
Fig. 1). Acest VI foloseşte o tehnică fără buffer, cu buclă While, pe
baza instrumentelor intermediare AI Config.vi şi AI Single Scan.vi.
În Fig. 9 este prezentată fereastra panou a aplicaţiei în cazul
achiziţiei unui semnal dreptunghiular, cu frecvenţa de 10 Hz.
Frecvenţa de eşantionare (scan rate – pentru un singur canal) este de
100 de eşantioane pe secundă. Amplitudinea semnalului şi offset-ul
pot fi modificate din butoanele corespunzătoare ale generatorului.
Exemplul prezentat utilizează controlul vitezei de achiziţie
prin software (software timing). Aşa cum s-a specificat în primul
paragraf, în acest caz pot exista întreruperi datorită intervenţiei
utilizatorului. Pentru exemplificare, în Fig. 10 este prezentată achiziţia
unui semnal sinusoidal de 10 Hz, cu acelaşi VI, dar în condiţiile
efectuării în timpul achiziţiei a unor operaţii diverse cum ar fi
mişcarea mouse-lui, închiderea sau deschiderea unor aplicaţii etc. Se
observă cum toate aceste operaţii afectează calitatea operaţiei de
achiziţie a datelor.

37
Fig. 9. Achiziţia multi-punct repetată a unui semnal dreptunghiular

Fig. 10. Achiziţia unui semnal sinusoidal (software timed)

38
Dacă se utilizează un VI cu control hardware al vitezei de
achiziţie (hardware-timed control loops), achiziţia nu mai este
întreruptă de intervenţia utilizatorului – a se vedea Fig. 11, în care
acelaşi semnal este achiziţionat în aceleaşi condiţii, utilizând însă VI-
ul Cont Acq&Chart (hw timed).vi (achiziţie controlată hardware, ne-
bufferată, cu structură repetitivă) din aceeaşi bibliotecă. Pentru detalii
privind modul de achiziţie sub controlul ceasului de pe placă (în alte
aplicaţii poate fi utilizat şi un semnal de ceas extern) se poate parcurge
legenda Show VI Info a instrumentului virtual.

Fig. 11. Achiziţia unui semnal sinusoidal (hardware timed)

3.2. Achiziţia multi-point cu buffer simplu a unui semnal


Pentru achiziţia bufferată a unui semnal sinusoidal de la
generatorul de semnal (conectat ca în paragraful anterior), se poate
utiliza o aplicaţie bazată pe AI Acquire Waveform.vi. Diagrama
aplicaţiei este prezentată în Fig. 12, iar fereastra panou în Fig. 13.
Semnalul sinusoidal achiziţionat are o frecvenţă de 50 Hz, iar
frecvenţa de eşantionare (scan rate) de 1000 de eşantioane/sec.
Bufferul este de 100 de eşantioane, care sunt puse la dispoziţie pentru

39
afişare sau alte prelucrări după încheierea achiziţiei. Pentru afişare
este utilizat un Waveform Graph scalat pe axa timpului în funcţie de
perioada de eşantionare reală.

Fig. 12. Achiziţia cu buffer simplu folosind AI Acquire Waveform.vi

Fig. 13. Achiziţia simplu bufferată cu AI Acquire Waveform.vi

40
Din Fig. 14 se poate observa importanţa alegerii corecte a
frecvenţei de eşantionare – acelaşi semnal sinusoidal de 50 de Hz este
achiziţionat cu 100 de eşantioane pe secundă. Bufferul a fost
dimensionat la 10 eşantioane (pentru a obţine o reprezentare
echivalentă cu exemplul precedent pe axa timpului). Se observă că
semnalul nu mai are alura sinusoidală (de fapt frecvenţa de
eşantionare a fost aleasă la limită din punct de vedere al teoremei
Nyquist, dar insuficient de mare pentru a reda forma în domeniul timp
a semnalului original).

Fig. 14. Achiziţia cu buffer simplu a unui semnal - subeşantionare

3.3. Achiziţia multi-punct cu buffer circular a unui semnal


Acelaşi semnal sinusoidal de 50 Hz din aplicaţia anterioară,
furnizat de generatorul de semnal disponibil în laborator, va fi
achiziţionat prin intermediul unei aplicaţii cu instrumente
intermediare, care utilizează un buffer circular (paragraful 2.2 – Fig.
7). Aplicaţia are diagrama din Fig. 15 şi fereastra panou din Fig. 16.
Bufferul utilizat are dimensiunea de 5000 de eşantioane, iar rata de
scanare este de 500 de eşantioane/sec. Datele achiziţionate în mod

41
continuu sunt puse imediat la dispoziţia utilizatorului. Pentru afişarea
datelor au fost utilizate două indicatoare grafice: un Waveform Chart
şi un Waveform Graph.
Semnalul sinusoidal achiziţionat poate fi prelucrat în funcţie
de necesităţi – de exemplu se poate filtra cu ajutorul unor filtre
numerice FIR sau IIR (pentru detalii vezi lucrarea Ghid de
programare în LabVIEW. Aplicaţii pentru prelucrarea semnalelor –
inclusă în referinţele bibliografice), filtre disponibile în LabVIEW în
cadrul meniului Functions, submeniul Analysis, grupul Filters.

Fig. 15. Achiziţia multi-punct cu buffer circular a unui semnal –


instrumente de nivel intermediar
Acelaşi semnal poate fi achiziţionat şi prelucrat cu diverse
instrumente virtuale din bibliotecile LabVIEW, de exemplu, Spectrum
Analyser din Examples \ Analysis \ measure \ daqmeas.llb – Fig. 17.
Acest VI, pe lângă afişarea formei în domeniul timp a semnalului
achiziţionat, realizează şi o analiză spectrală, care permite vizualizarea
conţinutului în frecvenţă al semnalului (pe scară liniară sau
logaritmică, cu utilizarea ferestrelor temporale etc.). Chestiuni
teoretice şi aplicaţii LabVIEW pentru analiza semnalelor pot fi
consultate în lucrarea Ghid de programare în LabVIEW. Aplicaţii
pentru prelucrarea semnalelor – a se vedea referinţele bibliografice.
Pentru informaţii suplimentare privind funcţionarea VI-ului Spectrum
Analyser se poate parcurge legenda Show VI Info a instrumentului.

42
Fig. 16. Achiziţia multi-punct cu buffer circular a unui semnal

Fig. 17. Achiziţia şi analiza spectrală a unui semnal sinusoidal

43
În Fig. 17 se poate observa evoluţia în domeniul timp a
semnalului sinusoidal achiziţionat şi spectrul semnalului în domeniul
frecvenţă, fiind vizualizată componenta de 50 Hz, precum şi o
componentă de c.c. de amplitudine mică, datorată offset-ului nenul,
setat la generatorul de semnal cuplat la placa de achiziţie AT-MIO-
16H. În fereastra panou a instrumentului sunt disponibile o serie de
setări hardware – cum ar fi limitele semnalului achiziţionat, tipul de
trigger etc., precum şi setări ale frecvenţei de eşantionare, tipuri de
ferestre temporale, setări de display etc.
Observaţie: Pentru clarificarea unor concepte teoretice privind
eşantionarea semnalelor şi alegerea frecvenţei de eşantionare se pot
consulta lucrările [6], [11], [12], [16], [17] din bibliografie.

4. Temă de laborator
4.1. Ce tipuri de achiziţie multi-punct cunoaşteţi şi care sunt
diferenţele dintre ele?
4.2. Implementaţi aplicaţia prezentată în paragraful 3.1, Fig. 9,
10, 11, pentru achiziţia repetată a unor semnale sinusoidale,
dreptunghiulare, triunghiulare, cu diferite amplitudini şi frecvenţe,
utilizând controlul software sau hardware al vitezei de achiziţie.
4.3. Dezvoltaţi o aplicaţie de achiziţie simplu bufferată a 500
de eşantioane ale unui semnal sinusoidal, utilizând un generator de
semnal şi placa AT-MIO-16H (paragraful 3.2). Refaceţi aplicaţia
utilizând instrumente de nivel intermediar (Fig. 5, Fig. 6). Care este
influenţa ratei de scanare asupra achiziţiei?
4.4. Să se realizeze achiziţia cu buffer circular şi vizualizarea
în mod continuu a unor semnale sinusoidale şi dreptunghiulare pe
baza aplicaţiei din Fig. 15, 16. Modificaţi parametrii buffer size,
number of scan to read, scan rate şi explicaţi rezultatele achiziţiei.
4.5. Dezvoltaţi un VI care să realizeze achiziţia multi-punct cu
buffer circular a datelor de la două canale – canalul 0: semnal
sinusoidal de la generatorul de semnal, canalul 1: o tensiune continuă
de la o sursă de semnal.
4.6. Să se refacă aplicaţia de la punctul 4.4. pe baza VI-ului AI
Continuous Scan.vi (Fig. 8), iar semnalul sinusoidal achiziţionat să fie
filtrat cu ajutorul unui filtru numeric FIR sau IIR. Să se vizualizeze
rezultatele prelucrării sinusoidelor de diverse frecvenţe.
4.7. Să se ruleze VI-ul Spectrum Analyser prezentat în Fig. 17,
pentru semnale sinusoidale provenite de la generatorul de semnal
disponibil. Să se realizeze analiza spectrală şi să se urmărească
influenţa frecvenţei de eşantionare asupra spectrului şi formei în
domeniul timp.

44
LUCRAREA NR. 3

Controlul achiziţiilor de date cu semnale de tip trigger

1. Tipuri de triggerare
Aşa cum s-a discutat în lucrările de laborator anterioare – a se
vedea diagrama din Fig. 1, lucrarea de laborator nr. 1 – pentru anumite
aplicaţii achiziţiile de date pot fi declanşate la un anumit moment de
timp, fără o legătură directă cu evoluţia datelor respective (fără
triggerare). Există aplicaţii, pentru care declanşarea achiziţiei de date
analogice trebuie realizată la momente de timp bine precizate (cu
triggerare). De exemplu, dacă se testează răspunsul unei instalaţii la o
intrare tip (treaptă, impuls etc.), intrarea de test respectivă poate fi
utilizată şi pentru startarea achiziţiei de date. În caz contrar este
necesară începerea achiziţiei înainte de aplicarea intrării respective,
ceea ce determină un consum nejustificat de resurse.
Prin urmare achiziţia de date poate fi declanşată în funcţie de
condiţia sau starea unui semnal numeric sau analogic, utilizând o
tehnică numită triggerare (declanşare). Un trigger este un eveniment
care startează achiziţia datelor. Există două tipuri de triggerare:
hardware (care poate fi analogică sau numerică) şi software.
Plăcile de achiziţie pot funcţiona în două moduri principale de
achiziţie, în funcţie de apariţia evenimentului trigger, prin care se
defineşte zona de interes din evoluţiile semnalelor achiziţionate:
modul posttrigger
modul pretrigger
Modul posttrigger realizează achiziţia unui număr specificat
de eşantioane după apariţia unui eveniment trigger, adică după
recepţionarea unui semnal trigger (de declanşare). Achiziţia este
stopată în momentul în care bufferul care stochează datele
achiziţionate (de lungime specificată de utilizator) este plin,.
În cazul modului pretrigger datele sunt achiziţionate continuu,
înainte şi după primirea unui semnal trigger. Datele sunt colectate
într-un buffer precizat de utilizator până când placa recepţionează
semnalul trigger. După aceasta, sistemul de achiziţie va mai colecta
un număr specificat de eşantioane după care achiziţia este stopată.

45
Bufferul este tratat ca un buffer circular, adică după ce întregul buffer
este completat, datele sunt stocate de la începutul bufferului prin
suprascrierea datelor vechi. La încheierea achiziţiei, bufferul conţine
eşantioane atât dinaintea cât şi după apariţia semnalului trigger.
Numărul de eşantioane salvate în buffer depinde de lungimea acestuia
(specificată de utilizator) şi de numărul specificat de eşantioane de
achiziţionat după apariţia semnalului trigger.
După cum se observă din definiţiile anterioare, semnalele de
trigger se utilizează doar în cazul achiziţiilor de date bufferate.

1.1. Triggerarea hardware


Triggerarea hardware permite setarea momentului de start al
achiziţiei şi colectarea datelor de la un anumit moment de timp în
raport cu apariţia unui semnal trigger. Există două tipuri de triggerare
hardware: numerică şi analogică.
Triggerarea numerică
Un trigger numeric este de regulă un semnal de tip TTL cu
două nivele discrete: nivel înalt şi nivel jos. Atunci când semnalul
trece din nivel înalt în nivel jos apare un front coborâtor (descrescător
sau descendent), iar când trecerea este inversă un front crescător
(ascendent). Achiziţia analogică poate fi startată la apariţia unui front
crescător sau descrescător al semnalului trigger. De exemplu, în Fig. 1
achiziţia este startată pe frontul crescător al unui semnal trigger
numeric.
În Fig. 2 este prezentată o diagramă a modului de achiziţie
posttrigger cu utilizarea unui semnal trigger numeric. În acest
exemplu, un dispozitiv extern trimite un trigger hardware-ului de
achiziţie. Imediat după primirea semnalului şi după îndeplinirea
condiţiilor de triggerare (de exemplu apariţia frontului crescător al
semnalului), placa de achiziţie începe colectarea datelor.
Triggerarea analogică
Semnalul analogic de tip trigger se conectează pe unul din
canalele de intrări analogice ale plăcii de achiziţie. Placa
monitorizează canalul semnalului trigger şi aşteaptă îndeplinirea
condiţiilor de triggerare. Placa poate fi configurată să aştepte
îndeplinirea unei condiţii pentru semnalul trigger, cum ar fi, de
exemplu, un anumit nivel al semnalului. După identificarea condiţiei
respective, care trebuie îndeplinită de către triggerul analogic, placa
declanşează achiziţia. Pentru exemplificare, în Fig. 3, un trigger

46
analogic este setat să starteze achiziţia de date pe panta descrescătoare
(negativă) a semnalului, atunci când semnalul atinge valoarea 18
(semnalul trigger analogic poate fi, de exemplu, o temperatură,
convertită într-o tensiune, dar condiţia de triggerare poate fi
exprimată, prin soft, şi în unităţi de temperatură).
Semnal TTL conectat la pini de tip STARTTRIG sau EXTTRIG
ai conectorului I/O al plăcii de achiziţie

Front crescător
Iniţiere achiziţie date

Fig. 1. Semnal trigger de tip numeric

Dispozitiv Semnal trigger Hardware


extern numeric de achiziţie

Hardware-ul de achiziţie aşteaptă până la îndeplinirea condiţiilor de


către semnalul trigger numeric

Date analogice
Dispozitiv Hardware
extern de achiziţie

Fig. 2. Diagrama achiziţiei de date cu trigger numeric

Nivelul şi panta semnalului


declanşează achiziţia datelor
18

0
t
Fig. 3. Semnal trigger de tip analogic

47
În Fig. 4 este prezentată diagrama pentru o achiziţie
posttrigger cu un semnal trigger analogic, similară cu diagrama din
Fig. 2, corespunzătoare triggerului numeric.

Dispozitiv Semnal trigger Hardware


extern analogic de achiziţie

Hardware-ul de achiziţie aşteaptă până la îndeplinirea condiţiilor de


către semnalul trigger analogic

Date analogice
Dispozitiv Hardware
extern de achiziţie

Fig. 4. Diagrama achiziţiei de date cu trigger analogic

1.2. Triggerarea software


Triggerarea software presupune simularea unui trigger
hardware prin utilizarea unei rutine software. Această formă de
declanşare a achiziţiei este folosită în situaţiile în care nu sunt
disponibile semnale trigger hardware (sau placa de achiziţie nu este
prevăzută cu facilitatea de triggerare hardware).
Hardware-ul de achiziţie este setat să colecteze date, dar nu le
returnează decât atunci când datele respective îndeplinesc condiţiile de
recuperare (conditional retrieval - triggerul software). Software-ul de
achiziţie scanează datele şi realizează o comparaţie a acestora cu
condiţiile de triggerare, dar nu stochează datele decât atunci când
acestea îndeplinesc specificaţiile cerute.
În Fig. 5 este prezentată o diagramă a evenimentelor care apar
în cazul unei triggerări software. Pointerul de poziţionare citire/căutare
parcurge bufferul până când găseşte locaţia la care datele îndeplinesc
condiţiile de triggerare. Offset-ul indică locaţia de la care software-ul
începe citirea datelor în raport cu poziţia de citire/căutare. Un offset
negativ indică necesitatea unei achiziţii de tip pretrigger (achiziţie
înainte de îndeplinirea condiţiilor de triggerare); un offset pozitiv
indică o achiziţie de tip posttrigger (achiziţie după îndeplinirea
condiţiilor de triggerare).

48
Fig. 5. Diagrama unei achiziţii de date cu triggerare software

2. Utilizarea LabVIEW pentru achiziţii de date triggerate


Pentru realizarea unei aplicaţii LabVIEW pentru achiziţii de
date triggerate, trebuie utilizate instrumente virtuale intermediare sau
avansate, care au facilităţi pentru semnale trigger. Aşa cum s-a
precizat şi în prima lucrare de laborator, instrumentele virtuale de

49
achiziţie trebuie ordonate într-o secvenţă logică care conţine etape de
configurare a plăcii, de lansare a achiziţiei, de citire a datelor şi de
ştergere a acestora, secvenţă prezentată în Fig. 6. Spre deosebire de
achiziţia fără triggerare, în acest caz se aşteaptă apariţia semnalului
trigger înainte de a citi datele analogice.
Configurare placă
(AI Config.vi)

Lansare achiziţie
(AI Start.vi)

Nu
Trigger?
(hard)

Da

Citire date
(AI Read.vi)

Ştergere date
(AI Clear.vi)

Fig. 6. Secvenţa VI-urilor pentru achiziţia de date cu triggerare

Instrumentul intermediar AI Start.vi, ale cărui terminale sunt


prezentate în Fig. 7, în afara funcţiei de startare a achiziţiei permite şi
configurarea semnalului trigger hardware, iar AI Read.vi (Fig. 8), pe
lângă funcţia de citire a datelor poate seta şi triggerarea software
(conditional retrieval).
Triggerarea hardware
AI Start.vi realizează pe lângă lansarea achiziţiei şi setarea
semnalului trigger hardware. Astfel, VI-ul apelează un instrument
virtual avansat (AI Trigger Config.vi) care, în funcţie de valoarea
terminalului trigger type, setează în mod corespunzător triggerul
hardware. Dacă trigger type este 0, atunci AI Start.vi anulează
triggerarea; în caz contrar setează tipul specificat de trigger: 1 –
trigger analogic, 2 – trigger numeric (A), 3 – trigger numeric (A şi B –
de start şi stop), 4 – scan clock gating – permite ca un semnal de la o
sursă externă să oprească sau să pornească ceasul care furnizează
tactul de scanare şi astfel să stopeze sau să continue achiziţia.

50
Fig. 7. Instrumentul AI Start.vi

Parametrul edge or slope stabileşte dacă achiziţia va fi


declanşată pe frontul coborâtor sau crescător al triggerului numeric
sau pe panta pozitivă sau negativă a triggerului analogic (triggerul
numeric sau analogic este ales prin setarea corespunzătoare a
parametrului trigger type). Astfel, dacă edge or slope este 0, setarea
implicită nu este modificată, dacă este 1 atunci este selectat frontul
crescător pentru trigger numeric, respectiv pantă pozitivă pentru
trigger analogic, iar dacă edge or slope este 2 atunci este selectat front
coborâtor pentru trigger numeric sau pantă negativă pentru trigger
analogic.
Terminalul pretrigger scans reprezintă numărul de scanări
care vor fi salvate în buffer înainte de apariţia semnalului trigger
(implicit 0, ceea ce înseamnă că LabVIEW nu salvează nimic înainte
de apariţia triggerului).
Parametrul analog chan & level determină sursa şi nivelul
semnalului trigger analogic (pentru trigger type = 1). Acest parametru
este un cluster care conţine doi parametri: trigger channel – canalul
analogic de intrare care este sursa triggerului analogic şi level –
valoarea tensiunii (implicit 0 V) pe care trebuie să o atingă semnalul
provenit de la sursa analogică, pentru declanşarea achiziţiei (tipul
pantei este furnizat de parametrul de intrare edge or slope).
Pentru detalii privind toate terminalele de intrare şi de ieşire
ale instrumentului AI Start.vi se poate consulta meniul Online help al
VI-ului.
Triggerarea software
În situaţia în care hardware-ul de achiziţie nu este prevăzut cu
facilitatea de trigger hardware, triggerul se poate simula prin
intermediul unui software corespunzător; mai exact se poate utiliza

51
aşa numitul trigger software sau conditional retrieval, care permite
analiza soft a unui semnal din cadrul datelor ce sunt achiziţionate şi în
funcţie de valoarea acestui semnal se startează citirea datelor. Pentru
triggerarea software este necesar ca în memorie să se implementeze un
buffer circular; fiecare eşantion achiziţionat este verificat pentru a se
vedea dacă îndeplineşte condiţiile de triggerare. Atunci când condiţiile
sunt îndeplinite, LabVIEW începe citirea datelor. AI Read.vi permite
realizarea setărilor necesare pentru triggerarea software.

Fig. 8. Instrumentul AI Read.vi

Terminalul de intrare conditional retrieval permite


specificarea condiţiilor de triggerare, condiţii care vor fi verificate de
către VI în bufferul cu date achiziţionate. De fapt îndeplinirea unei
condiţii de triggerare presupune ca un semnal analogic achiziţionat să
atingă un anumit nivel (pantă pozitivă sau negativă). Căutarea începe
de la locaţia specificată prin parametrul read/search position
(pointerul de citire/căutare). După ce VI-ul găseşte în buffer datele
care atestă îndeplinirea condiţiei de triggerare, acesta va permite
citirea datelor şi furnizarea lor de la locaţia respectivă plus offset-ul.
Terminalul conditional retrieval este un cluster care conţine
mai mulţi parametri: mode – activează sau dezactivează triggerul
software (0 – nu modifică setarea anterioară, 1 – off, 2 – on); channel
index – specifică acele canale pe care VI-ul caută datele care
îndeplinesc condiţia de triggerare (implicit canalul 0); slope –
specifică panta semnalului; level – specifică nivelul semnalului,
exprimat în volţi, căutat de către VI (implicit 0 V); hysteresis –
specifică fereastra de tensiune pe care semnalul trebuie să o parcurgă
la atingerea nivelului cerut de către condiţia de triggerare (acţionează
ca un filtru); skip count – indică numărul de condiţii de triggerare
neluate în considerare înainte de declanşarea citirii datelor; offset –
specifică locaţia de la care VI-ul începe citirea datelor relativ la

52
pointerul care indică îndeplinirea condiţiei de triggerare (offset
negativ înseamnă pretriggerare, iar offset pozitiv posttriggerare).
Detalii privind terminalele de intrare şi de ieşire, precum şi
valorile acestora, pot fi găsite prin consultarea meniului Online help al
instrumentului AI Read.vi.
Observaţie: Achiziţiile de date triggerate pot fi dezvoltate şi
cu alte VI-uri de nivel intermediar sau avansat. Un exemplu în acest
sens îl constituie instrumentul AI Waveform Scan.vi din biblioteca
Analog Input/ Analog Input Utilities. Acesta are avantajul că poate fi
utilizat singur într-o structură de achiziţie. Acest VI de nivel
intermediar permite realizarea de achiziţii cu triggerare hardware, iar
setările de trigger se realizează compact prin parametrul de intrare de
tip cluster trigger and clock.

3. Exemple de achiziţii de date triggerate


3.1. Achiziţii de date cu trigger analogic
Deoarece doar achiziţiile de date bufferate pot fi declanşate
prin utilizarea de semnale trigger, aplicaţiile care pot fi dezvoltate sunt
cele multi-punct, care utilizează buffer simplu sau buffer circular. În
cele ce urmează, va fi reluat exemplul de achiziţie bufferată continuă
multi-punct (cu buffer circular) bazat pe instrumente intermediare,
exemplu dezvoltat în lucrarea de laborator nr. 2 – diagrama din Fig.
15. După cum se va vedea, pentru implementarea unei achiziţii
triggerate trebuie efectuate numai câteva schimbări în setarea
triggerului. În cazul unui semnal trigger hardware, aceste schimbări
vizează instrumentul AI Start.vi, iar în cazul unui trigger software,
instrumentul AI Read.vi.
Pentru a implementa un trigger hardware analogic,
instrumentul AI Start.vi va trebui conectat în mod corespunzător prin
setarea terminalelor trigger type, edge or slope şi analog channel &
level. Pentru a crea cu uşurinţă controalele necesare acestor setări se
poziţionează mouse-ul (instrumentul de cablare) pe terminalele
corespunzătoare din diagramă, se efectuează clic cu butonul din
dreapta al mouse-ului şi din meniul care apare se selectează Create
Control. Această operaţiune conduce la apariţia controalelor implicite
ce trebuie conectate la terminalele respective; ceea ce rămâne de făcut
este înlocuirea valorilor implicite, dacă este cazul, cu cele necesare
aplicaţiei.

53
Parametrul trigger type va fi setat la valoarea 1 (analog dacă
s-au creat controalele după procedura de mai sus); terminalul edge or
slope va fi setat în funcţie de panta triggerului analogic – de exemplu
2 pentru pantă negativă (falling dacă s-au creat controalele după
procedura de mai sus); terminalul analog channel & level este un
cluster care conţine parametrul trigger channel – numărul canalului
utilizat pentru triggerul analogic (un string ce conţine, de exemplu,
caracterul 0 dacă triggerul analogic este furnizat pe canalul 0) şi
parametrul level – nivelul de declanşare a achiziţiei, de exemplu 2 V.
Ferestrele LabVIEW corespunzătoare acestei aplicaţii, cu
setările de trigger efectuate mai sus, sunt prezentate în Fig. 9, 10.
Achiziţia de date pe canalul 1 se va declanşa în momentul în care
semnalul analogic cuplat la intrarea 0 a plăcii va scădea sub 2.0 V.
Datele vor fi achiziţionate în mod continuu (buffer circular). Se
observă că aplicaţia de achiziţie triggerată nu diferă de aplicaţia de
achiziţie din lucrarea 2, Fig. 15, decât prin setările de trigger efectuate
la AI Start.vi. În plus, terminalul channels al instrumentului AI
Config.vi trebuie setat pe ambele canale de achiziţie: 0 şi 1.
Trebuie precizat faptul că utilizarea unui anumit tip de trigger
depinde esenţial de tipul plăcii de achiziţie şi de aceea trebuie
consultat în prealabil manualul de utilizare al plăcii. Pentru placa AT-
MIO-16, nu se permite triggerarea analogică, dar poate fi utilizată
triggerarea numerică sau triggerarea software.

Fig. 9. Achiziţie continuă de date cu triggerare hardware analogică

54
Fig. 10. Fereastra panou a aplicaţiei de achiziţie cu trigger analogic

3.2. Achiziţii de date cu trigger numeric


Pentru a exemplifica acest tip de triggerare va fi folosit
exemplul precedent, de achiziţie continuă bufferată cu instrumente
intermediare. Achiziţia triggerată numeric se activează prin
modificarea corespunzătoare a doi parametri ai instrumentului AI
Start.vi: trigger type şi edge or slope. Trigger type va fi setat pe
digital A (valoarea 2) iar edge or slope pe falling (valoarea 2).
Terminalul analog channel & level, utilizat în paragraful
anterior, nu se va mai seta (va fi lăsat la valoarea implicită). Fereastra
diagramă a acestei aplicaţii este similară cu cea prezentată în Fig. 9, cu
precizarea că terminalul analog channel & level nu mai este conectat.
În fereastra panou (Fig. 11) parametrii de triggerare se setează
conform celor de mai sus.
Pentru rularea aplicaţiei, pe canalul de intrare analogică 0 al
plăcii AT-MIO-16H va fi conectată ieşirea unui generator de semnal
de tip Kabid KZ1404 (sau Versatester E0502).

55
Fig. 11. Exemplu de achiziţie continuă de date cu triggerare numerică

Mai exact, ieşirea generatorului va fi conectată la bornele 2, 3


ale modulului de intrare 5B41-02 (de bandă largă) de pe canalul de
intrare analogică 0, situat pe rack-ul exterior. Generatorul va fi setat pe
semnal sinusoidal, de frecvenţă 10 Hz, amplitudine 2 sau 3 V. Rata de
scanare va fi stabilită la 200 de eşantioane/secundă.
Semnalul de trigger numeric – un semnal de tip TTL – va fi
furnizat pe pinul STARTTRIG* al conectorului I/O (pinul 38 – a se
vedea Anexa 1 – paragraful de Conexiuni pentru semnale de tact şi
sincronizare destinate achiziţiei de date). Semnalul TTL este furnizat
de un generator PULSE GENERATOR TR-0361 aflat în dotarea
laboratorului. La pinul STARTTRIG* se conectează ieşirea OUT a
generatorului, cu comutatorul FREQ pe poziţia EXT. Prin apăsarea
butonului SINGLE PULSE al generatorului va fi furnizat semnalul
TTL necesar.
Pentru vizualizarea în prealabil a semnalului de trigger, acesta
se poate conecta la intrarea analogică 0 şi prin utilizarea unui VI de
achiziţie (de exemplu Cont Acq&Chart (buffered).vi) se pot face
setările de nivel, lăţime a pulsului etc.

56
Observaţie: Dacă nu se dispune de un aparat extern care să
furnizeze semnalul TTL cerut pentru triggerare, acesta se poate
simula. Pentru aceasta se poate dezvolta un VI simplu utilizând, de
exemplu, AO Update Channel.vi, instrument care să furnizeze pe
ieşirea 0 a plăcii AT-MIO-16 o tensiune de 5 V (rulare continuă).
Ieşirea analogică 0 (pinul 20 al conectorului I/O) se conectează direct
la pinul 38 al aceluiaşi conector – pinul STARTRIG*. Prin coborârea
tensiunii furnizate pe ieşirea 0 spre 0 V (cu ajutorul unui control
corespunzător) se va simula astfel semnalul de trigger necesar.
La rularea aplicaţiei, achiziţia de date va fi declanşată numai
la apariţia semnalului de trigger numeric – TTL (pe frontul coborâtor).
Trebuie precizat că această achiziţie este de tip posttrigger.
Pentru achiziţia pretrigger trebuie utilizat un semnal STOPTRIG –
pinul 39 şi o setare corespunzătoare a terminalului pretrigger scans al
instrumentului AI Start.vi (declanşarea achiziţiei este realizată soft sau
hard cu semnalul STARTTRIG*, iar la apariţia semnalului
STOPTRIG – front crescător – se mai achiziţionează numărul de
eşantioane specificat).

3.3. Achiziţii de date cu trigger software


Pentru plăcile de achiziţie fără facilităţi de triggerare
analogică se poate utiliza triggerarea software care simulează într-un
fel semnalul trigger analogic.
Aplicaţia de achiziţie a datelor cu buffer circular utilizată în
paragrafele anterioare va fi acum prelucrată pentru setarea unei
triggerări software. Astfel, instrumentul AI Start.vi nu mai este
conectat la terminalele specifice de trigger hardware (sunt lăsate
configuraţiile implicite), în schimb este realizată setarea
corespunzătoare a terminalului conditional retrieval al instrumentului
AI Read.vi. Acest cluster trebuie completat cu parametrii: mode (2 –
on: activare trigger software); channel index (canalul de căutare: 1);
slope (panta semnalului – de exemplu falling); level (de exemplu 2.0
V); hysteresis (de exemplu 0.2 V); skip count (0); offset (0).
Prin aceste setări a fost simulat triggerul analogic din
paragraful 3.1. Diagrama acestei aplicaţii este prezentată în Fig. 12.
Prin utilizarea triggerării software nu este posibilă achiziţia continuă
de date după ce au fost îndeplinite condiţiile de trigger. Pentru a
acoperi necesităţile aplicaţiei se poate utiliza un buffer cât mai mare.
După cum se observă din Fig. 12, terminalul number of scans to

57
acquire al instrumentului AI Start.vi este setat la 0, ceea ce înseamnă
că se va executa (hardware) o achiziţie continuă de date până când
sunt îndeplinite condiţiile de triggerare (sau până când este atinsă
limita de timp dacă aceste condiţii nu sunt îndeplinite), după care se
returnează spre aplicaţie datele care îndeplinesc condiţiile de
triggerare (în limita bufferului precizat).

Fig. 12. Achiziţie de date cu triggerare software


Pentru rularea aplicaţiei vom conecta o sursă de tensiune
duală de tip IEMI - I4102 M de 2 x 40 V, 1.2 A pe canalul de intrare
analogică 1 şi un generator de semnal Kabid KZ1404 pe canalul de
intrare analogică 0 (prin modulele de condiţionare 5B31-02 respectiv
5B41-02). Generatorul va fi setat pe semnal sinusoidal de 1 Hz,
amplitudine 2 sau 3 V. Sursa de tensiune va fi setată pe 4 V. După ce
aplicaţia va fi pornită, din butonul de nivel al sursei de tensiune se
coboară uşor tensiunea (se poate folosi un voltmetru pentru afişare)
până când valoarea acesteia coboară sub valoarea de 1.8 V. Se va
observa momentul în care achiziţia de date este declanşată. Fereastra
panou corespunzătoare acestei aplicaţii este prezentată în Fig. 13, unde
se pot observa datele achiziţionate pe ambele canale, după declanşarea
achiziţiei: pe canalul 0 - datele de la generator şi pe canalul 1 -
semnalul analogic de la sursă, semnal utilizat pentru verificarea
condiţiilor de triggerare. Trebuie precizat faptul că la instrumentul AI
Config.vi trebuie setat corespunzător parametrul channels – cu ambele
canale de achiziţie: 0, 1 (setare valabilă şi la triggerarea analogică).

58
Fig. 13. Exemplu de achiziţie de date cu triggerare software

Dacă parametrul mode din clusterul conditional retrieval este


setat pe off se pot vizualiza semnalele achiziţionate fără triggerare.
Pentru a înţelege şi a aprofunda achiziţiile de date triggerate
este utilă parcurgerea exemplelor din biblioteca Examples\ daq\
anlogin\ anlogin.llb a LabVIEW. Pentru achiziţii de date triggerate
hardware se pot studia şi rula (în funcţie de placa de achiziţie
disponibilă) VI-urile Acquire N - multi-ATrig.vi, Acquire N - multi-
DTrig.vi, Acquire N Scans - ATrig.vi, Acquire N Scans - DTrig.vi.
Aceste VI-uri sunt realizate în jurul instrumentului virtual de achiziţie
AI Waveform Scan.vi. Pentru achiziţii de date triggerate software se
pot analiza şi rula VI-urile Acquire N Scans SW Trig.vi,
Acquire&Proc N Scans SW Trig.vi, realizate cu instrumente de nivel
intermediar. Informaţii despre realizarea şi setarea tuturor acestor VI-
uri sunt disponibile prin accesarea meniului Windows/ Show VI Info al
fiecărui instrument.

4. Temă de laborator
4.1. Ce înţelegeţi prin semnal de trigger? Ce tipuri de
triggerare există? Cum definiţi modurile posttrigger şi pretrigger?
4.2. Care tipuri de achiziţie de date pot fi triggerate? Care
dintre instrumentele virtuale de achiziţie au facilităţi de triggerare?

59
Analizaţi setările instrumentelor AI Start.vi şi AI Read.vi destinate
triggerării hardware, respectiv software.
4.3. Implementaţi aplicaţia de achiziţie triggerată analogic din
Fig. 9 şi 10 şi realizaţi setările din paragraful 3.1.
4.4. Dezvoltaţi programul LabVIEW de achiziţie continuă cu
triggerare numerică descris în paragraful 3.2 (Fig. 11). Conectaţi
generatorul de semnal şi generatorul impulsului de trigger TTL la
placa AT-MIO-16 conform procedurii prezentate şi observaţi
declanşarea numerică a achiziţiei datelor. Modificaţi tipul semnalului
furnizat de generator şi încercaţi realizarea unei achiziţii cu
pretriggerare. Simulaţi semnalul de trigger numeric cu ajutorul unei
aplicaţii de generare cu AO Update Channel.vi şi prin conectarea
ieşirii analogice 0 (pinul 20) la pinul STARTTRIG* - 38.
4.5. Implementaţi aplicaţia de achiziţie de date cu triggerare
software descrisă în paragraful 3.3 (Fig 12 şi 13). Conectaţi
generatorul de semnal şi sursa de tensiune şi realizaţi achiziţia
triggerată conform procedurii expuse. Modificaţi parametrii de
triggerare (de exemplu alt nivel şi altă pantă pentru tensiune) şi
repetaţi experimentul. Modificaţi parametrii offset şi skip count şi
verificaţi efectul schimbărilor asupra achiziţiei.

60
LUCRAREA NR. 4

Instrumente virtuale pentru generarea datelor.


Ieşiri analogice. Generarea fără buffer a datelor

1. Generarea datelor pe ieşirile analogice


Pe lângă achiziţia datelor, plăcile de achiziţii pot genera
semnale analogice pe canalele de ieşiri analogice. Ca şi în cazul
intrărilor analogice, generarea datelor poate fi mono-canal sau multi-
canal, mono-punct sau multi-punct.
Dacă pentru o anumită aplicaţie este necesară furnizarea unui
semnal constant (c.c.) sau foarte lent variabil în timp pe una sau mai
multe ieşiri analogice ale plăcii, atunci se realizează o generare mono-
punct (single-point generation).
Dacă trebuie generat un semnal variabil în timp, atunci este
vorba de generare multi-punct (multiple-point sau waveform
generation), care poate fi de asemenea mono-canal sau multi-canal.
Spre deosebire de generarea mono-punct, în cazul multi-punct
este important nu numai nivelul semnalului generat pe ieşire, ci şi
viteza de actualizare a datelor furnizate pe acea ieşire analogică. Placa
de achiziţie se comportă ca un generator de semnal. Generarea multi-
punct a datelor se poate realiza fie prin utilizarea unor structuri
repetitive în care sunt implementate aplicaţii de generare mono-punct,
fie prin utilizarea bufferelor. Ca şi în cazul achiziţiilor de date tratate
în Lucrările de laborator 1-3, generarea multi-punct bufferată poate fi
cu buffer simplu (simple-buffer) sau cu buffer circular (circular-
buffer). Generarea multi-punct cu buffer simplu presupune stocarea
datelor ce vor fi generate pe ieşire într-un buffer; placa de achiziţie,
prin intermediul software-ului de achiziţie sau driverului specializat va
trimite la ieşire datele din acest buffer, punct cu punct (eşantion după
eşantion) cu o anumită viteză sau rată de generare (de actualizare).
Generarea multi-punct cu buffer circular – aşa-numita generare
bufferată continuă – se utilizează atunci când datele care trebuie
generate sunt de dimensiune foarte mare (nu pot fi stocate într-un
singur buffer, şi prin urmare bufferul este completat în mod continuu
cu date noi) sau forma de undă se modifică în timpul generării.

61
În diagrama din Fig. 1 sunt prezentate schematic tipurile de
generare a datelor (analogice).

Fără trigger
Generarea -Analogic
Hardware:
datelor -Numeric
Cu trigger
Software

Mono-punct Multi-punct
(single-point) (multiple-point sau
(generarea unui singur eşantion) waveform generation)

Mono-canal Multi-canal Mono-canal Multi-canal


(single-channel) (multiple-channel) (single-channel) (multiple-
channel)

Generare ne-bufferată (non-buffered)


şi fără sincronizare (non-timed)

Generarea cu -Software-timed Generare bufferată


structuri repetitive -Hardware-timed
(control loops) (cu ceas intern sau
(generare extern)
ne-bufferată)
Cu buffer simplu Cu buffer circular
(simple-buffer) (circular-buffer)
(generare continuă)

Generare hardware-timed

Fig. 1. Tipuri de generare a datelor

62
Generarea datelor se poate efectua sub control software
(software-timed), situaţie în care tactul necesar controlului vitezei de
generare este furnizat de către ceasul sistemului de calcul (în acest caz
controlul poate fi afectat de posibile întreruperi) sau, atunci când este
necesară o mai mare precizie, generarea se realizează sub controlul
ceasului de pe hardware-ul de achiziţie sau sub controlul unui ceas
extern (hardware-timed).
Generarea datelor poate fi declanşată ca şi în cazul achiziţiilor
de date printr-un eveniment (semnal) de tip trigger. Există două tipuri
de triggerare: hardware (care poate fi analogică sau numerică) şi
software. În cazul triggerării hardware, generarea datelor nu este
declanşată prin software (de regulă apelul unui instrument de startare)
ci este declanşată de un semnal extern, care în cele mai multe situaţii
este un semnal numeric. Triggerarea se utilizează în cazul generării
bufferate a datelor.

2. Biblioteca de instrumente virtuale pentru ieşiri analogice

Instrumentele utilizate pentru ieşirile analogice sunt grupate în


patru sub-biblioteci ale bibliotecii Analog Output din meniul Data
Acquisition/Functions. Cele patru grupuri de instrumente virtuale sunt
(Fig. 2): Easy Analog Output VIs, Intermediate Analog Output VIs,
Analog Output Utilities VIs şi Advanced Analog Output VIs.

Easy Analog Output VIs

Intermediate Analog
Output VIs

Analog Output Utilities VIs Advanced Analog Output VIs

Fig. 2. Biblioteca Analog Output

63
Instrumentele din Easy Analog Output VIs sunt VI-uri
executabile capabile să realizeze independent operaţiuni de bază
pentru ieşiri analogice, fără a mai fi necesare alte VI-uri. Aceste
instrumente sunt construite din instrumente de nivel intermediar, care
sunt grupate în Intermediate Analog Output VIs, care la rândul lor au
la bază instrumente avansate din biblioteca Advanced Analog Output
VIs. Un instrument de tip Easy Analog Output VIs furnizează o
interfaţă utilizator convenabilă pentru ieşirile analogice uzuale, pentru
aplicaţii complexe fiind necesare instrumentele din celelalte grupuri.
Instrumentele de nivel intermediar din Intermediate Analog
Output VIs sunt construite pe baza instrumentelor avansate şi oferă
facilităţi apropiate de acestea. Instrumentele utilitare din Analog
Output Utilities VIs sunt tot de nivel intermediar şi oferă soluţii pentru
situaţiile obişnuite în care se furnizează date pe ieşirile analogice.
Instrumentele avansate din Advanced Analog Output VIs
constituie interfaţa dintre LabVIEW şi driverele NI-DAQ, fiind la
baza celorlalte instrumente de ieşiri analogice.
Atunci când pentru realizarea unei aplicaţii pentru furnizarea
de date pe ieşirile analogice se folosesc mai multe VI-uri (de exemplu,
cele intermediare), trebuie realizată o secvenţiere a acestora (ca şi în
cazul achiziţiei de date analogice) – Fig. 3. Ca şi în cazul achiziţiei de
date, sunt esenţiale conexiunile de tip task ID şi error.
Configurare placă
(AO Config.vi)

Scriere date analogice


(AO Write.vi)

Lansare generare date


(AO Start.vi)

Aşteptare sfârşit generare date


(AO Wait.vi)

Ştergere resurse
(AO Clear.vi)
Fig. 3. Secvenţierea VI-urilor pentru generarea de date analogice

64
În continuare vor fi descrise câteva VI-uri pentru furnizarea
datelor la ieşirile analogice, şi anume instrumentele de nivel
intermediar din Intermediate Analog Output VIs şi instrumentele din
Analog Output Utilities VIs.
În Fig. 4 – 8 sunt prezentate VI-urile de nivel intermediar.
Semnificaţia terminalelor poate fi analizată prin apelarea meniului
Online help al fiecărui VI. O parte din aceste terminale au aceeaşi
semnificaţie ca şi în cazul instrumentelor virtuale de achiziţie
analogică (a se vedea Tabelul 1 din Lucrarea de laborator nr. 1). Rolul
frecvenţei de achiziţie (de eşantionare) scan rate de la intrările
analogice este jucat aici de update rate, care este frecvenţa de
generare (de ieşire) sau rata de actualizare a datelor analogice.
AO Config.vi realizează configurarea canalelor de ieşire şi a
limitelor ieşirii şi alocă buffer-ul necesar operaţiei de ieşire analogică.
AO Write.vi scrie datele în memoria tampon. AO Start.vi setează rata
de generare a datelor şi lansează operaţia de generare a datelor
analogice. AO Wait.vi aşteaptă până când generarea datelor se termină
apoi apelează AO Clear.vi, care şterge task-ul de ieşire analogică
asociat numărului task ID in.

Fig. 4. Instrumentul AO Config.vi

Fig. 5. Instrumentul AO Write.vi

Fig. 6. Instrumentul AO Start.vi

65
Fig. 7. Instrumentul AO Wait.vi

Fig. 8. Instrumentul AO Clear.vi

În Fig. 9, 10 şi 11 sunt prezentate instrumentele din Analog


Output Utilities VIs. Instrumentul AO Write One Update.vi scrie o
singură valoare (tensiune) la fiecare din canalele analogice de ieşire
specificate. AO Waveform Gen.vi generează un semnal de ieşire (o
formă de undă = un set de date) la canalul de ieşire specificat, cu rata
de actualizare specificată. Acest VI foloseşte fie un singur buffer
(suficient de mare pentru toate datele) – tehnica simple-buffered, fie
un buffer circular – tehnica circular-buffered (dimensiunea datelor
este mai mare decât dimensiunea buffer-ului şi prin urmare datele se
scriu în mod ciclic). Instrumentul AO Continuous Gen.vi generează
continuu un set de date cu frecvenţa specificată, la canalul de ieşire
specificat, folosind un buffer circular.

Fig. 9. Instrumentul AO Write One Update.vi

Fig. 10. Instrumentul AO Waveform Gen.vi

66
Fig. 11. Instrumentul AO Continuous Gen.vi

3. Aplicaţii de generare ne-bufferată a datelor


3.1. Generarea de date mono-punct
Cea mai simplă operaţiune de ieşire analogică este generarea
unui singur punct (semnal de nivel constant) pe un singur canal
(single-point single-channel) sau pe mai multe canale (single-point
multiple-channel).
Pentru implementarea rapidă a unor aplicaţii de generare
mono-punct se pot utiliza instrumentele virtuale din sub-biblioteca
Easy Analog Output VIs. VI-ul utilizat se apelează atunci când se
doreşte schimbarea valorii furnizate pe canalul (canalele) de ieşire
analogică. Rezultă că modificarea valorii de pe ieşire se poate realiza
cu viteza impusă de software, mai precis în funcţie de rapiditatea cu
care LabVIEW apelează VI-ul respectiv (software timing). Din această
cauză, această tehnică se poate folosi atunci când nu este necesară
generarea rapidă a datelor sau o rată precisă de actualizare.
Cea mai simplă aplicaţie de generare mono-punct mono-canal
presupune utilizarea instrumentului virtual AO Update Channel.vi din
sub-biblioteca Easy Analog Output VIs. Acest VI are doar trei
terminale de intrare: device – numărul plăcii, channel – numărul
canalului şi voltage – valoarea tensiunii care trebuie generată pe
canalul specificat.
În Fig. 12 sunt prezentate fereastra panou şi fereastra
diagramă ale unei aplicaţii realizată cu AO Update Channel.vi, care
permite scrierea unei tensiuni de 3 volţi pe canalul 0. Pentru
vizualizarea acestei tensiuni la ieşirea plăcii AT-MIO-16 (configurată
conform celor precizate în Lucrarea de laborator nr. 1), se utilizează
un voltmetru conectat la pinii 20, 23 ai conectorului I/O al plăcii.
Pentru modificarea tensiunii la o altă valoare, se schimbă în mod
corespunzător controlul voltage şi se rulează din nou VI-ul.

67
Fig. 12. Generarea mono-punct mono-canal cu AO Update Channel.vi

Pentru o aplicaţie de generare mono-punct dar multi-canal se


poate utiliza instrumentul virtual AO Update Channels.vi, din
biblioteca Easy, a cărui structură este asemănătoare cu cea a
instrumentului AO Update Channel.vi (trebuie specificată o listă de
canale iar parametrul voltages este un vector care conţine valorile ce
se doresc generate pe canalele de ieşire).
Pentru aplicaţiile în care este necesar controlul asupra setării
limitelor pe fiecare canal de ieşire, trebuie utilizate VI-uri de nivel
intermediar cum ar fi, de exemplu, AO Write One Update.vi (Fig. 9)
aflat în biblioteca Analog Output Utilities VIs.

3.2. Generarea de date multi-punct cu structuri repetitive


Prin utilizarea unor instrumente virtuale de generare mono-
punct în interiorul unor structuri repetitive (control loops) de tip While
se pot obţine VI-uri pentru generare de date multi-punct. Astfel de
structuri sunt lente şi pot fi utilizate în aplicaţii de conducere, atunci
când este necesar calculul sau procesarea datelor de ieşire punct cu
punct (de exemplu, se achiziţionează un eşantion de la un traductor, se
calculează eroarea în funcţie de referinţă, se calculează comanda în
funcţie de eroare şi se generează pe ieşire spre procesul condus
valoarea acestei comenzi).
Un exemplu de astfel de aplicaţie este prezentat în Fig. 13 şi
Fig. 14, în care este utilizat VI-ul de nivel intermediar AO Write One
Update.vi într-o structură de tip While Loop, controlul vitezei de
execuţie fiind realizat prin software (software timed). Trebuie precizat

68
că nu este indicată folosirea în bucle a instrumentelor Easy, care sunt
ineficiente din cauza configurării lor la fiecare execuţie (spre
deosebire de acestea, instrumentul de nivel intermediar AO Write One
Update.vi se configurează doar pentru iteraţia 0 a buclei While).
VI-ul din interiorul buclei While este executat în mod repetat,
până când starea erorii sau controlul boolean de oprire a buclei sunt
adevărate. Datele care sunt generate pe canalul 0 sunt furnizate dintr-
un vector (array), iar ritmul de generare este controlat prin
intermediul ratei de actualizare. Controlul pentru rata de generare şi
controlul pentru voltage sunt plasate în interiorul buclei While pentru a
avea posibilitatea de modificare a acestora în timpul rulării. Deoarece
AO Write One Update.vi acceptă pe intrarea voltage date sub formă de
vector (este prevăzut pentru generarea de date multi-canal), în cazul
generării pe un singur canal trebuie utilizat un vector având doar
primul element activat (aşa cum se observă din Fig. 13). Pentru
vizualizarea datelor generate se poate folosi un voltmetru conectat pe
pinii 20, 23 ai conectorului I/O al plăcii AT-MIO-16.
În cazul aplicaţiilor de conducere, datele generate provin de la
ieşirea unui regulator implementat sub forma unui VI.

Fig. 13. Generarea de date multi-punct cu AO Write One Update.vi

69
Fig. 14. Diagrama aplicaţiei de generare cu AO Write One Update.vi
în buclă While

Pentru realizarea unei generări de date multi-punct


performante în ceea ce priveşte viteza şi precizia ratei de actualizare,
trebuie folosite aplicaţii bufferate hardware-timed (sub controlul
ceasului de pe placa de achiziţie sau sub controlul unui ceas extern).

4. Temă de laborator
4.1. Identificaţi instrumentele virtuale pentru generare de date
din biblioteca Analog Output din meniul Data Acquisition/ Functions.
Ce înţelegeţi prin conexiuni task ID şi error? Parcurgeţi cu atenţie VI-
urile din bibliotecă şi analizaţi semnificaţia acestora şi a terminalelor.
4.2. Implementaţi şi rulaţi aplicaţia de generare mono-punct
mono-canal din Fig. 12, pentru diverse valori ale tensiunii. Vizualizaţi
şi verificaţi cu ajutorul voltmetrului aceste valori.
4.3. Construiţi şi rulaţi o aplicaţie de generare mono-punct
multi-canal (2 canale) cu instrumentul AO Update Channels.vi.
Verificaţi datele generate cu ajutorul a două voltmetre conectate
corespunzător (la pinii 20, 23, respectiv 21, 23 ai conectorului I/O al
plăcii AT-MIO-16).
4.4. Implementaţi şi rulaţi programul din Fig. 13, 14 –
generare multi-punct cu buclă While. Verificaţi datele generate cu
ajutorul unui voltmetru.

70
LUCRAREA NR. 5

Ieşiri analogice. Generarea bufferată a datelor

Aşa cum s-a precizat în lucrarea de laborator precedentă


(Lucrarea nr. 4), generarea multi-punct a datelor, se poate realiza fie
prin utilizarea unor structuri repetitive în care sunt implementate
aplicaţii de generare mono-punct, fie prin utilizarea bufferelor.
Generarea multi-punct bufferată poate fi cu buffer simplu (simple-
buffer) sau cu buffer circular (circular-buffer). Generarea multi-punct
cu buffer simplu presupune stocarea datelor ce vor fi generate pe ieşire
într-un buffer, iar placa de achiziţie, prin intermediul software-ului de
achiziţie sau driverului specializat, va furniza datele din buffer la
ieşire, punct cu punct (eşantion după eşantion) cu o anumită viteză sau
rată de generare (de actualizare). Generarea multi-punct cu buffer
circular – aşa-numita generare bufferată continuă – se utilizează atunci
când datele care trebuie generate sunt de dimensiune foarte mare (nu
pot fi stocate într-un singur buffer, şi prin urmare bufferul este
completat în mod continuu cu date noi) sau forma de undă trebuie
modificată în timpul generării.
Generarea de date multi-punct (de forme de undă) bufferată
face ca placa de achiziţie să joace rolul unui generator de semnal.

1. Generarea de date multi-punct cu buffer simplu


Generarea multi-punct cu buffer simplu presupune stocarea
datelor ce vor fi generate pe ieşire într-un buffer de lungime
specificată. Placa de achiziţie, prin intermediul LabVIEW, va furniza
pe canalul de ieşire specificat (sau pe canalele specificate) datele din
buffer, punct cu punct, în ritmul dat de rata de actualizare (frecvenţa
de generare) specificată.
Pentru implementarea unor aplicaţii de generare de forme de
undă cu buffer simplu se pot folosi diverse VI-uri din bibliotecile Easy
Analog Output VIs, Intermediate Analog Output VIs, Analog Output
Utilities VIs sau Advanced Analog Output VIs.
Dacă aplicaţia nu este pretenţioasă, aceasta se construieşte cel
mai rapid cu instrumente din biblioteca Easy, ca de exemplu

71
instrumentul AO Generate Waveforms.vi, care permite scrierea datelor
furnizate pe canalele de ieşire specificate, în ritmul dat de frecvenţa de
generare (update rate). Datele sunt stocate într-un tablou (matrice), a
cărui dimensiune depinde de numărul de canale şi de lungimea
datelor. Nivelul unui semnal furnizat pe unul din canalele de ieşire
analogică rămâne nemodificat (egal cu ultima valoare generată), până
când următoarea valoare este furnizată pe acea ieşire. Utilizând acest
VI a fost dezvoltată aplicaţia prezentată în Fig. 1, 2. Se observă că
aplicaţia se referă la o generare multi-punct multi-canal.
Pe canalele de ieşire analogică 0 şi 1 se generează, cu o rată
de actualizare de 1 Hz, două semnale foarte simple (pe prima coloană
a matricei waveforms semnalul generat pe ieşirea 0 şi pe cea de-a doua
semnalul generat pe ieşirea 1; liniile matricei furnizează valorile care
sunt actualizate la un anumit moment pe ambele canale). Evoluţia
celor două semnale generate se poate observa cu două voltmetre
conectate pe pinii 20, 23, respectiv 21, 23 ai conectorului I/O al plăcii
AT-MIO-16.
Exemplul anterior este unul foarte simplu, ilustrând modul de
lucru pentru o astfel de generare de date. Semnalul poate fi însă
furnizat de la diverse generatoare de semnal (virtuale) sau de alte
aplicaţii (poate fi, de exemplu, un semnal achiziţionat în prealabil,
prelucrat şi apoi generat pe ieşire).

Fig. 1. Generarea multi-punct multi-canal cu buffer simplu – AO


Generate Waveforms.vi

72
Fig. 2. Fereastra diagramă a aplicaţiei cu AO Generate Waveforms.vi

Atunci când este necesar controlul asupra mai multor


parametri, se pot folosi instrumente din Analog Output Utilities VIs, cum
ar fi de exemplu AO Waveform Gen.vi, care dispune de terminale
suplimentare faţă de instrumentul AO Generate Waveforms.vi (a se
vedea Fig. 10 din lucrarea de laborator nr. 4). De exemplu, prin
setarea corespunzătoare a parametrului generation count există
opţiunea de a genera datele din buffer de mai multe ori. Pentru
optimizarea generării de date acest VI se poate plasa într-o buclă
While şi se leagă terminalul de iteraţie al buclei la terminalul de
iteraţie al VI-ului, astfel încât configurarea generării de date să se
realizeze o singură dată.
Pentru dezvoltarea unor aplicaţii complexe este indicată
utilizarea instrumentelor de nivel intermediar sau a celor avansate.
Conectarea VI-urilor intermediare trebuie să se realizeze prin
legăturile task ID şi error, respectând secvenţierea din Fig. 3 –
lucrarea de laborator precedentă. O aplicaţie principială pentru
generarea bufferată a unui set de date (multi-punct), cu buffer simplu,
pe o ieşire analogică este prezentată în Fig. 3. Au fost utilizate
instrumentele de nivel intermediar din biblioteca Intermediate Analog
Output VIs. În fereastra diagramă a aplicaţiei se pot observa
conexiunile taskID in / taskID out şi error in / error out ca şi în cazul
achiziţiei analogice. Instrumentul General Error Handler.vi
furnizează o descriere a erorilor apărute în procesul de generare a
datelor.

73
Fig. 3. Generarea bufferată cu VI-uri de nivel intermediar

Prin utilizarea VI-urilor de nivel intermediar, se pot seta o


serie de parametri suplimentari, cum ar fi alegerea ceasului (de pe
placă sau extern), returnarea ratei de generare reale etc. Rolul VI-
urilor în această aplicaţie a fost schiţat deja în Fig. 3 – lucrarea de
laborator precedentă: AO Config.vi setează placa şi canalele
specificate de utilizator pentru generare, AO Write.vi plasează datele
în bufferul de lungime specificată, AO Start.vi declanşează generarea
datelor în ritmul dat de frecvenţa de actualizare (update rate), AO
Wait.vi verifică dacă generarea este finalizată după care permite
instrumentului AO Clear.vi să şteargă setările canalelor de ieşire.
În Fig. 4 este prezentată fereastra panou a unei aplicaţii de
generare simplu-bufferată cu VI-uri intermediare, dezvoltată pe baza
diagramei din Fig. 3. Datele generate pe două canale analogice de
ieşire sunt stocate într-o matrice (prima coloană – semnalul ce va fi
generat pe primul canal, iar a doua coloană – semnalul generat pe cel
de-al doilea canal). Datele ce vor fi generate de aplicaţie sunt
vizualizate cu ajutorul unui Graph. La terminarea generării datelor,
AO Clear.vi va şterge task-ul curent şi va trece ambele canale
analogice pe 0 V. Prin conectarea a două voltmetre (sau osciloscoape)
pe pinii 20, 23 respectiv 21, 23 ai conectorului I/O al plăcii AT-MIO-
16 se pot vizualiza şi verifica datele furnizate pe cele două canale de
ieşiri analogice.

74
Fig. 4. Aplicaţie de generare simplu-bufferată cu VI-uri intermediare

Prin modificarea mărimii bufferului şi a vitezei de actualizare


(1 Hz în Fig. 4) pot fi generate date de dimensiuni şi cu rate de
actualizare diferite.
În aplicaţiile de generare de forme de undă trebuie calculată
cu atenţie frecvenţa semnalului generat pe canalele de ieşiri analogice,
pentru ca această frecvenţă să corespundă într-adevăr cu frecvenţa
dorită pentru semnalul generat. Calculul frecvenţei semnalului
depinde esenţial de rata de generare, de numărul de eşantioane din
buffer şi de numărul de perioade (număr de cicluri) ale semnalului
stocat în buffer. De exemplu, dacă în buffer sunt stocate 1000 de
puncte (eşantioane) care reprezintă valorile unui sinus pe o perioadă
( 2π ), iar rata de generare a acestor puncte este de 10000 de
eşantioane pe secundă (10 kHz), atunci semnalul generat va avea
frecvenţa de 10 Hz. Formula generală de calcul este:
f semnal = (n perioade × f generare ) / nesantioane ,

unde f semnal este frecvenţa semnalului, n perioade - numărul de cicluri (de

75
perioade) ale semnalului stocate în buffer, f generare - frecvenţa de
generare (update rate), nesantioane - numărul de puncte stocate în buffer.
Dacă dorim să modificăm frecvenţa semnalului generat,
trebuie fie să mărim update rate fie să mărim numărul de perioade ale
semnalului din buffer. În exemplul de mai sus, dacă dorim să obţinem
o frecvenţă de 20 Hz, fie mărim frecvenţa de generare la 20 kHz, fie
mărim numărul de cicluri ale semnalului la 2 (păstrând numărul de
puncte – 1000, ceea ce duce la scăderea acurateţei semnalului
sinusoidal furnizat) – a se vedea Fig. 5.

Modificare update rate: 20 kHz


⇒ Frecvenţă semnal: 20 Hz
(nr. de puncte/ciclu = 1000)
Buffer: 1000 pct.
Nr. perioade: 1
Update rate: 10 kHz
⇒ Frecvenţă semnal: 10 Hz Modificare nr. perioade: 2
(nr. puncte/ciclu = 1000) ⇒ Frecvenţă semnal: 20 Hz
(nr. de puncte/ciclu = 500)
Fig. 5. Determinarea frecvenţei semnalului generat

Din formula de mai sus rezultă şi limitările în ceea ce priveşte


generarea de semnale, în funcţie de hardware-ul de achiziţie utilizat.
La placa AT-MIO-16 de exemplu, frecvenţa de generare maximă este
de 250000 de eşantioane/sec. (diferită de frecvenţa de eşantionare
maximă de 100000 de eşantioane/sec.). Dacă presupunem un buffer
care stochează 1000 de puncte ale unui ciclu sinusoidal, rezultă că
frecvenţa maximă a semnalului generat pe o ieşire analogică este de
100 Hz. Micşorarea numărului de puncte/perioadă la 10 (ceea ce este
destul de puţin din punct de vedere al acurateţei) conduce la o
frecvenţă de generare maximă de 10kHz.
În continuare, pe baza diagramei din Fig. 3 va fi construit un
program de generare a unor semnale sinusoidale cu tehnica simple-
buffer. Fereastra panou a aplicaţiei este prezentată în Fig. 6, iar
diagrama în Fig. 7. Sunt utilizate instrumente de nivel intermediar
pentru generarea unui semnal de tip sinus pe canalul de ieşire

76
analogică 0 şi a unui semnal de tip cosinus pe canalul 1. Generatoarele
care sintetizează semnalele sunt realizate cu ajutorul unor bucle For,
fiind posibil controlul numărului de puncte pe perioadă (dacă se
doreşte generarea a mai mult - sau mai puţin - de un ciclu, trebuie
modificate corespunzător constantele 2π din bucle). În aplicaţia
prezentată, dacă numărul de puncte din buffer nu corespunde cu
numărul de puncte/ perioadă, de exemplu buffer mai mic, atunci va fi
generat un semnal sinusoidal trunchiat.
Din setările realizate în Fig. 6, pe baza formulei de calcul
anterioare, se deduce că frecvenţa semnalului generat este de (1 ciclu
x 10 eşantioane/sec)/1000 puncte = 0.01 Hz.
Cele două generatoare implementate cu bucla For furnizează
la ieşiri vectori de date; aceştia sunt prelucraţi prin intermediul unor
funcţii Build Array si Transpose 2D Array pentru a furniza o matrice
de date, care se aplică la intrarea voltage data a instrumentului AO
Write.vi. Cele două indicatoare grafice sunt utilizate pentru
reprezentarea funcţiilor sinus şi cosinus obţinute cu buclele For, care
nu constituie însă semnalul generat pe ieşirile analogice. Semnalul
sinusoidal generat pe canalul 0 poate fi vizualizat, de exemplu, prin
folosirea unui voltmetru (cu 0 la mijloc) conectat pe pinii 20, 23 ai
conectorului I/O al plăcii AT-MIO-16. Pentru ambele canale trebuie
utilizate două voltmetre. Este indicată totuşi folosirea unui osciloscop,
indispensabil dacă frecvenţa semnalului este mare.

Fig. 6. Generarea unor semnale sinusoidale prin bufferare simplă

77
Fig. 7. Diagrama aplicaţiei de generare a unor semnale sinusoidale

Fig. 8. Achiziţia cu Cont Acq&Chart.vi a semnalului generat -canal 0

78
O posibilitate de vizualizare a semnalului generat pe ieşirea 0
este de a utiliza aceeaşi placă AT-MIO-16, la care ieşirea analogică 0
se conectează la canalul de intrare analogică 0 (prevăzut la intrare cu
circuitul de condiţionare 5B-41), şi rularea unui VI pentru achiziţia de
date, de exemplu Cont Acq&Chart (buffered).vi (a se vedea Lucrarea
de laborator nr. 2). Rezultatele sunt afişate în Fig. 8. Aceste rezultate
au fost obţinute pentru o rată de generare de 100 eşantioane/sec. (a nu
se confunda cu scan rate) ceea ce înseamnă că semnalul vizualizat are
o frecvenţă de 0.1 Hz.
Pentru implementarea rapidă a unor generatoare de semnal se
pot utiliza funcţiile speciale din biblioteca Functions / Analysis /
Signal Generation. În Fig. 9 este prezentată diagrama pentru cazul în
care generatorul sinusoidal este Sine Pattern.vi, iar acesta generează
un sinus pe două perioade (pot fi setate amplitudinea, faza etc. – a se
vedea Online help). Semnalul generat pe ieşire este redat în Fig. 10,
tot prin utilizarea Cont Acq&Chart.vi. Frecvenţa semnalului este acum
de 0.2 Hz. Pentru o mai mare flexibilitate este indicată folosirea
generatorului Sine Wave.vi din aceeaşi bibliotecă sau utilizarea (după
încapsulare) a unor generatoare construite de utilizator, cum sunt, de
exemplu, cele din lucrarea Ghid de programare în LabVIEW. Aplicaţii
pentru prelucrarea semnalelor (a se vedea referinţele bibliografice).

Fig. 9. Utilizarea Sine Pattern.vi pentru generarea semnalului

79
Fig. 10. Achiziţia şi vizualizarea semnalului generat

2. Generarea de date multi-punct cu buffer circular


Generarea multi-punct cu buffer circular se utilizează atunci
când datele care trebuie generate sunt de dimensiune foarte mare şi nu
pot fi stocate într-un singur buffer sau atunci când aplicaţia respectivă
necesită modificarea formei de undă în timpul generării.
Dintre VI-urile disponibile, pentru generarea de date prin
tehnica circular-buffered se poate utiliza, de exemplu, instrumentul
AO Continuous Gen.vi (a se vedea Fig. 11 din lucrarea de laborator
precedentă) din biblioteca Analog Output Utilities VIs. Acest VI este
eficient prin faptul că realizează configurarea şi alocarea bufferului
atunci când terminalul iteration este 0 şi realizează dezafectarea
bufferului atunci când terminalul boolean clear generation este „true”.
O aplicaţie principială care utilizează instrumentul AO Continuous
Gen.vi este prezentată în Fig. 11.

80
Pe baza acestui nucleu a fost dezvoltat instrumentul
Continuous Generation.vi plasat în biblioteca examples\daq\anlogout\
anlogout.llb a LabVIEW (Fig. 12, Fig. 13). Continuous Generation.vi
realizează o generare hardware timed circular-bufferată.

Fig. 11. Generarea continuă de date cu AI Continuous Gen.vi

Fig. 12. Fereastra Panel a aplicaţiei Continuous Generation.vi

81
Fig. 13. Fereastra Diagram a aplicaţiei Continuous Generation.vi

Datele ce trebuie generate completează în întregime bufferul


(de lungime precizată) la prima iteraţie a buclei While. La următoarele
iteraţii, datele noi sunt (supra)scrise într-o jumătate a bufferului, în
timp ce cealaltă jumătate continuă să transmită date spre ieşirea
(ieşirile) analogică (e). Prin urmare, acest VI scrie date noi în buffer
pe măsură ce generarea datelor este în curs de desfăşurare.
În acest exemplu, datele generate provin de la un generator de
semnal dreptunghiular My Data Generator subVI. Dacă se doreşte
generarea unui alt semnal pe ieşirea analogică, acest subVI poate fi
modificat. Datele trebuie furnizate la intrarea instrumentului AO
Continuous Gen.vi sub forma unui tablou. Informaţii suplimentare
despre această aplicaţie se pot obţine din meniul Windows/ Show VI
Info. Datele generate pot fi vizualizate cu Graph-ul din VI şi prin
conectarea unui voltmetru sau osciloscop pe pinii 20, 23 ai
conectorului I/O al plăcii AT-MIO-16 (pentru un singur canal de ieşire
analogică – 0). Poate fi de asemenea utilizat un VI de achiziţie ca în
exemplele de generare simplu-bufferată anterioare.
Pentru aplicaţiile pretenţioase, în care se urmăreşte realizarea
unui control riguros asupra parametrilor generării de date (cum ar fi
setarea ceasului intern/extern, monitorizarea ratei de actualizare reale
etc.) trebuie utilizate instrumentele de nivel intermediar conectate într-
o structură asemănătoare cu cea din Fig. 3. Spre deosebire de

82
conexiunea din Fig. 3, aşa cum se observă din Fig. 14, terminalul
number of buffer iteration (care are valoarea implicită 1) al
instrumentului AO Start.vi se setează la 0 – generare continuă.
Instrumentul AO Write.vi este folosit de două ori: prima dată
după AO Config.vi pentru plasarea datelor ce vor fi generate în mod
repetat în buffer, iar a doua oară în bucla While. Plasarea
instrumentului AO Write.vi în buclă este necesară doar dacă se doreşte
verificarea erorilor (cu conectarea corespunzătoare la condiţia de
oprire a buclei) sau dacă se doreşte scrierea de noi date (adică
modificarea datelor iniţiale care sunt generate repetat) în bufferul
circular. Instrumentul AO Wait.vi nu se mai utilizează, deoarece rolul
său este de a verifica dacă generarea de date a fost încheiată (la
bufferarea simplă), ori generarea continuă a datelor nu se termină
niciodată – decât la oprirea rulării buclei sau la apariţia unei erori.
Dacă se urmăreşte doar generarea repetată a aceloraşi date din buffer,
atunci nu mai este necesară conectarea unui alt set de date la
instrumentul AO Write.vi din bucla While, şi rolul său rămâne doar de
verificare a erorilor. După oprirea buclei While instrumentul AO
Clear.vi poate trece la ştergerea resurselor folosite.
În Fig. 15 este prezentată fereastra panou pentru diagrama din
Fig. 14, pentru situaţia în care se doreşte generarea pe canalele 0 şi 1 a
tensiunilor din matricele voltage data (primele date generate) şi new
data (datele generate în mod repetat după ce au fost generate iniţial
cele din voltage data).

Fig. 14. Generarea continuă de date cu instrumente intermediare

83
Fig. 15. Generarea continuă a unor tensiuni pe canalele 0, 1

Tensiunile generate pot fi urmărite prin plasarea a două


voltmetre la pinii 20, 23 respectiv 21, 23 ai conectorului I/O al plăcii
AT-MIO-16. Reamintim că datele de pe coloanele matricelor
reprezintă tensiunile ce vor fi generate pe câte un canal, iar liniile
reprezintă tensiunile ce sunt scanate la fiecare interval de scanare. În
situaţia în care se doreşte generarea repetată (continuă) numai a
datelor din voltage data, atunci matricea new data trebuie deconectată
de la instrumentul AO Write.vi din buclă. Dacă datele trebuie
schimbate în timpul generării lor, este indicată plasarea instrumentului
(controlului) care furnizează aceste date în buclă, deoarece acest lucru
permite modificarea “on-the-fly”, lucru util îndeosebi la generarea
continuă a semnalelor (formelor de undă).
În Fig. 16 şi Fig. 17, pe baza structurii cu instrumente
intermediare prezentată în Fig. 14, este realizat un generator continuu
de semnal sinusoidal.
Pentru sinteza valorilor unui ciclu sinusoidal a fost utilizat
Sine Pattern.vi, plasat în interiorul buclei While. Matricea de date
iniţiale plasată, la intrarea instrumentului AO Write.vi din afara buclei,
are rolul iniţierii generării datelor.

84
Fig. 16. Aplicaţie de generare continuă a unui semnal sinusoidal

Fig. 17. Exemplu de generare continuă a unui semnal sinusoidal

85
Graph-ul din buclă serveşte la vizualizarea semnalului
sinusoidal calculat pe o perioadă, semnal ce va fi generat continuu pe
ieşirea analogică 0 (nu reprezintă o afişare în timp real a acestui
semnal). Acest semnal poate fi vizualizat în timp real cu ajutorul
osciloscopului (pinii 20, 23) sau prin intermediul unui VI de achiziţie
(a se vedea Lucrarea de laborator nr. 2) dotat cu indicator grafic
corespunzător.
În exemplul din Fig. 17, frecvenţa semnalului generat va fi de
10 Hz (rezultă din update rate şi din numărul de puncte/perioadă).
Acest semnal poate fi achiziţionat şi vizualizat, de exemplu, cu Cont
Acq&Graph.vi (Fig. 18). În timpul generării continue a semnalului,
amplitudinea şi offsetul acestuia pot fi modificate din controalele
corespunzătoare plasate în fereastra panou din Fig. 17 (care au fost
plasate şi în bucla While - Fig.16).

Fig. 18. Achiziţia şi vizualizarea semnalului generat

86
Pentru implementarea unui generator de funcţii se poate folosi
metoda generării de date cu buffer circular, prin intermediul softului
corespunzător şi a plăcii de achiziţie. Biblioteca Examples\ daq\
anlogout\ anlogout.llb conţine generatorul Function Generator.vi care
este construit în jurul unei structuri cu VI-uri intermediare de tipul
celei din Fig. 16. Acest generator permite schimbarea parametrilor
(amplitudine, offset etc.) şi tipului semnalului (sinusoidal,
dreptunghiular etc.) furnizat pe ieşirea analogică în timpul generării de
date („on-the-fly”). Pentru aprofundarea problemelor legate de
generarea datelor pe ieşirile analogice se pot analiza şi rula alte
diferite exemple din directorul Examples\Daq.
La generarea continuă cu buffer circular poate apare o eroare
de tipul underFlowError (cod –10843), ceea ce înseamnă că
programul nu poate scrie suficient de rapid date în bufferul circular
astfel încât datele să fie generate cu viteza cerută. Pentru rezolvarea
problemei trebuie micşorată frecvenţa de generare sau trebuie mărit
bufferul.
Observaţie: Ca şi în cazul achiziţiilor de date bufferate,
generarea poate fi declanşată la apariţia unor semnale de trigger
(hardware sau software).
Trebuie reamintit faptul că rularea programelor de achiziţie
şi/sau generare de date analogice se poate face doar în prezenţa unei
plăci de achiziţie, cum ar fi de exemplu placa AT-MIO-16H, care
trebuie configurată corespunzător (Anexa 1).

3. Temă de laborator

3.1. Dezvoltaţi aplicaţia multi-punct simplu-bufferată din Fig.


1, 2. Vizualizaţi semnalele generate cu ajutorul unui Graph sau Chart
pentru ambele canale şi verificaţi valorile respective cu două voltmetre
plasate pe cele două ieşiri ale plăcii AT-MIO-16. Care este diferenţa
dintre scan rate şi update rate?
3.2. Implementaţi aceeaşi aplicaţie de la punctul 3.1, dar
folosind un instrument AO Waveform Gen.vi, cu repetarea de 3 ori a
generării de date.
3.3. Dezvoltaţi o aplicaţie multi-punct simplu bufferată cu
instrumente intermediare (Fig. 3, 4). Vizualizaţi cu indicatoare grafice
datele generate şi verificaţi cu voltmetrul aceste date.

87
3.4. Realizaţi o generare cu buffer simplu a semnalelor
sinusoidale cu aplicaţia din Fig. 6 – Fig. 10. Modificaţi frecvenţa
semnalelor generate prin modificarea numărului de perioade, a
dimensiunii bufferului sau a frecvenţei de generare update rate.
Vizualizaţi semnalul generat pe ieşirea 0 cu un voltmetru, un
osciloscop sau cu ajutorul aceleiaşi plăci şi cu un instrument virtual de
achiziţie. Încercaţi utilizarea pentru generarea semnalelor sinus şi
cosinus a instrumentului Sine Wave.vi.
3.5. Rulaţi programul Continuous Generation.vi descris în
Fig. 12, 13 şi dezvoltaţi un VI similar pe baza diagramei din Fig. 11
pentru generare cu buffer circular. Vizualizaţi semnalul generat cu un
voltmetru, un osciloscop sau cu un instrument virtual de achiziţie (cu
aceeaşi placă sau cu o placă AT-MIO-16 plasată în alt calculator).
3.6. Dezvoltaţi pe baza diagramei din Fig. 14 şi a ferestrei
panou din Fig. 15 o aplicaţie de generare continuă cu buffer circular.
Modificaţi datele generate şi frecvenţa de generare şi citiţi tensiunile
furnizate cu două voltmetre conectate la ieşirile analogice 0 şi 1 ale
plăcii AT-MIO-16.
3.7. Generaţi în mod continuu un semnal sinusoidal pe ieşirea
analogică 0 a plăcii, semnal care va fi vizualizat cu un osciloscop sau
cu un VI de achiziţie.
3.8. Generaţi în mod continuu un semnal triunghiular (pentru
sinteza semnalului se poate folosi generatorul din biblioteca Analysis
sau se construieşte un generator propriu), care va fi afişat cu un
osciloscop sau cu un VI de achiziţie.
3.9. Rulaţi generatorul de funcţii Function Generator.vi
pentru diverse tipuri de semnale, parametri şi frecvenţe de generare.
Vizualizaţi semnalele generate cu VI-uri de achiziţie.

88
LUCRAREA NR. 6

Operaţii cu fişiere. Stocarea (data logging) şi citirea datelor

1. Tehnici de stocare şi înregistrare a datelor – data logging


& recording
1.1. Definiţii şi clasificări
Stocarea şi înregistrarea datelor reprezintă aplicaţii de
măsurare denumite în terminologia engleză data logging and
recording sau pe scurt data logging; un sistem de achiziţie care
realizează aceste operaţii se numeşte data logger. Prin data logging se
înţelege măsurarea şi înregistrarea unor mărimi fizice pe un anumit
interval de timp, precum şi realizarea unor operaţii de analiză şi
vizualizare a datelor, însoţite de generarea de rapoarte şi distribuirea
datelor (data sharing).
Operaţiile de data logging acoperă un spectru larg de aplicaţii,
de la energetică la industria chimică şi alimentară, de la construcţii la
industria automobilelor etc. Toate aceste aplicaţii au însă caracteristici
comune în ceea ce priveşte arhitectura sistemelor de tip data logger.
Sistemele data logger au evoluat de la înregistrările şi
graficele trasate manual la înregistratoarele automate cu hârtie şi până
la sistemele moderne de achiziţie şi stocare a datelor bazate pe tehnica
numerică de calcul. Sistemele data logger moderne pot fi clasificate în
două mari categorii: dispozitive speciale de tip stand alone – care sunt
instrumente independente de măsurare, conversie numerică şi stocare
a datelor, respectiv sisteme data logger bazate pe calculator (PC-
based data logging systems), din ce în ce mai răspândite şi mai
folosite datorită multiplelor avantaje legate de facilităţile de viteză,
capacitate de stocare şi cost. În continuare ne vom referi la aceste din
urmă sisteme bazate pe calculator.
Funcţiile de bază care trebuie realizate de un sistem data
logger sunt: achiziţia datelor, stocarea, analiza, vizualizarea, generarea
de rapoarte şi distribuirea datelor. Modul de grupare a acestor funcţii
de bază într-un sistem data logger este prezentat în Fig. 1.
Achiziţia datelor presupune măsurarea datelor prin
intermediul senzorilor, realizarea conectivităţii cu sistemul de achiziţie

89
propriu-zis, condiţionarea semnalelor (prin operaţiile de amplificare,
izolare galvanică, multiplexare, filtrare, liniarizare etc.) şi conversia
analog-numerică.

Analiza Vizualizare
Achiziţia
datelor Generare rapoarte
datelor
(on-line) Distribuire date

Stocarea Prelucrări
datelor off-line

Fig. 1. Funcţiile de bază ale unui sistem data logger

Analiza datelor achiziţionate cuprinde operaţii care se pot


realiza on-line şi operaţii de prelucrare off-line. Analiza on-line
presupune scalarea datelor (exprimarea în unităţi inginereşti), operaţii
de semnalizare/alarmare, prelucrarea semnalelor, elaborarea de
comenzi în cazul sistemelor de conducere etc. Aceste operaţii de
analiză on-line sunt realizate prin software.
Datele achiziţionate sunt stocate (după o eventuală analiză on-
line) prin diferite metode şi pe diverse medii de stocare. Operaţia de
stocare este în mod evident o funcţie esenţială a sistemelor data
logger. După descrierea pe scurt a celorlalte funcţii, vom reveni cu
prezentarea tehnicilor de stocare a datelor, în special a formatelor
(fişierelor) utilizate pentru stocare.
Analiza off-line a datelor presupune realizarea unor prelucrări
matematice, statistice, analiză în domeniul frecvenţă etc.
Vizualizarea datelor se poate realiza în timpul achiziţiei sau
ulterior. Pentru afişarea datelor este necesară o interfaţă grafică cu
facilităţi de scalare, zoom, legendă etc. Generarea de rapoarte a fost
integrată în sistemele data logger pentru creşterea eficienţei şi constă
în emiterea de rapoarte într-un format adecvat pentru prezentarea
datelor stocate şi analizate. Distribuirea datelor (data sharing) constă
în punerea datelor la dispoziţia persoanelor şi instituţiilor cărora le
sunt destinate, prin facilităţi cum ar fi cele de networking.
Alegerea software-ului şi hardware-ului pentru un sistem data
logger depinde de aplicaţia concretă care trebuie implementată. În

90
general, software-ul poate fi de două categorii: soft la cheie (ready-to-
run sau turnkey), cum ar fi, de exemplu, pachetul LabVIEW, respectiv
medii de dezvoltare a aplicaţiilor data logging. În ceea ce priveşte
hardware-ul, sistemele data logger bazate pe calculator pot fi
clasificate în patru categorii: sisteme portabile (tip laptop), sisteme
desktop, sisteme industriale montate pe rack şi sisteme distribuite.

1.2. Tipuri de fişiere utilizate pentru stocarea datelor


Stocarea datelor, ca funcţie esenţială a sistemelor data logger,
se poate realiza prin diferite metode şi medii de stocare, în funcţie de
tipul sistemului. Astfel, înregistratoarele clasice utilizează hârtie,
sistemele stand-alone utilizează memorii interne, floppy-discuri,
cartele PCMCIA (Personal Computer Memory Card International
Association) etc., iar sistemele bazate pe calculator folosesc hard-
discul propriu, hard-discul altor calculatoare la care sunt conectate
printr-o reţea sau diverse tipuri de medii de stocare.
Deoarece în anumite aplicaţii datele ce vor fi stocate sunt
achiziţionate cu o viteză foarte mare, software-ul folosit pentru
stocarea datelor are un rol esenţial, îndeosebi la sistemele bazate pe
calculator. Software-ul determină viteza de stocare pe disc, utilizarea
eficientă a spaţiului disponibil pe disc, formatul datelor stocate etc.
Formatul datelor stocate depinde de tipul aplicaţiei, fiind
răspândite în general trei tipuri de format (de fişiere): fişiere de tip text
(ASCII), fişiere binare şi fişiere utilizate de bazele de date.
• Fişierele text sunt cele mai utilizate şi conţin de regulă un
antet (header) şi coloane de date. Antetul furnizează informaţii cum ar
fi echipamentul utilizat, canalele de achiziţie folosite, unităţile de
măsură etc. Prima coloană de date reprezintă de regulă marca de timp
(aşa numitul timestamp) a fiecărui eşantion achiziţionat, iar coloanele
următoare reprezintă, de exemplu, datele achiziţionate pe fiecare
canal. Fişierele text sunt flexibile, portabile şi pot fi utilizate de multe
pachete software. Dezavantajul lor este legat de faptul că ocupă mult
spaţiu pe disc şi necesită procesări suplimentare pentru scriere şi
citire. Fişierele text sunt utilizate în aplicaţiile data logging lente, cu o
cantitate de date relativ scăzută şi care necesită o mare portabilitate.
• Fişierele binare permit utilizarea eficientă a memoriei. În
acest caz datele brute achiziţionate pot fi scrise direct în fişier, fără
alte prelucrări. În plus, datele binare ocupă mai puţin spaţiu decât
echivalentul lor în ASCII. Pe de altă parte, fişierele binare nu pot fi

91
vizualizate de soft-urile obişnuite de procesare a documentelor cum ar
fi Microsoft Excel sau Word. Datele brute achiziţionate furnizate la
ieşirea hardware-ului de achiziţie reprezintă valori binare – de
exemplu, pentru un hardware de achiziţie pe 16 biţi, fiecare eşantion
achiziţionat este reprezentat ca un număr binar pe 16 biţi. Acest
eşantion ocupă prin urmare 16 biţi de memorie (sau 2 octeţi = 2 byte).
Datele brute pot fi convertite de către software în date reprezentate în
dublă precizie şi în virgulă mobilă, care ocupă de regulă 8 octeţi de
memorie (la un eşantion). Dacă este necesară o viteză de scriere pe
disc foarte mare, atunci datele brute sunt scrise direct în fişiere binare,
aşa cum sunt achiziţionate, şi sunt furnizate informaţii de scalare
pentru reprezentarea ulterioară a datelor în dublă precizie şi cu
scalarea corespunzătoare. Dacă nu este necesară o viteză foarte mare,
atunci datele sunt mai întâi scalate şi apoi scrise în fişiere binare, care
vor conţine datele exprimate în dublă precizie şi în unităţi inginereşti.
În situaţia unor aplicaţii lente şi cu cantitate mică de date, reprezentate
cu precizie redusă, datele scalate se formatează în text ASCII şi astfel
creşte portabilitatea (în detrimentul memoriei ocupate).
• Anumite pachete software permit stocarea datelor
achiziţionate în baze de date. În acest caz fişierele sunt tot binare, dar
datele sunt structurate într-o anumită formă acceptată de baza de date,
formă care permite scrierea şi citirea eficientă a datelor. Bazele de
date asigură manevrarea optimă a unor mari cantităţi de date, precum
şi căutarea eficientă a informaţiilor necesare. De asemenea sunt
asigurate facilităţi de arhivare, de acces pentru utilizatori multipli,
importul şi exportul datelor de la şi către alte aplicaţii.
Modul de conversie a datelor achiziţionate şi posibilităţile de
stocare în diverse tipuri de fişiere sunt prezentate schematic în Fig. 2.
Se observă cum dimensiunea fişierelor obţinute este diferită în funcţie
de opţiunea de stocare. Există posibilitatea de a stoca datele binare
într-o bază de date, fie utilizând datele brute, fie pe cele scalate.
Mediile de stocare actuale permit înmagazinarea unei mari
cantităţi de date în sistemele bazate pe calculator. Astfel, hard-
discurile au în mod curent peste 40 GB, iar accesul este foarte rapid.
În anumite aplicaţii sunt necesare arhivări periodice ale informaţiei şi
stocarea pe discuri de rezervă.
Observaţie: Aplicaţiile de stocare cu viteză mare a datelor pe
hard-disc se mai numesc aplicaţii de scriere secvenţială (în flux) pe
disc – disk streaming. Există echipamente care permit aplicaţii de

92
streaming direct de la hardware-ul de achiziţie la mediul de stocare
prin intermediul magistralei PCI, ceea ce conduce la viteze de stocare
de până la 132 MB/sec pentru calculatoarele actuale.

Hardware de achiziţie

Date
achiziţionate Fişier binar – 2KB

Date brute (binare) Stocare pe hard-disc


1 eşant.→16 biţi = 2 octeţi
Ex.: 1011011010111011 1024 eşantioane

Structurare date şi
Scalare date stocare pe fişier binar
(reprez. dublă precizie, al unei baze de date
unit. inginereşti etc.)

Fişier binar – 8KB

Date scalate (binare) Stocare pe hard-disc


1 eşant.→64 biţi = 8 octeţi
Ex.: +2.0352281014*e01 1024 eşantioane

Structurare date şi
stocare pe fişier binar
Formatare ASCII al unei baze de date

Fişier text (ASCII)


24KB
Date - format text (ASCII)
1 eşant.→12 caractere = Stocare pe hard-disc
= 24 octeţi 1024 eşantioane
Ex.: +20.352 m3/h
Fig. 2. Modalităţi de stocare a datelor în aplicaţiile data logging

93
2. Instrumente virtuale pentru operaţii I/O cu fişiere
În aplicaţiile de stocare de date, pe lângă achiziţia propriu-zisă
a datelor, studiată pe larg în lucrările precedente, sunt esenţiale
operaţiile de scriere/citire (intrare/ieşire – I/O) a fişierelor. LabVIEW
dispune de o serie de instrumente virtuale destinate acestor operaţii,
grupate în meniul Functions, biblioteca File I/O (Fig. 3). Aceste VI-
uri asigură realizarea de operaţii cum ar fi crearea, deschiderea şi
închiderea fişierelor, scrierea şi citirea fişierelor de date, mutarea,
ştergerea şi redenumirea fişierelor şi directoarelor, schimbarea
caracteristicilor fişierelor etc.
Într-un mod asemănător cu gruparea pe niveluri a VI-urilor de
achiziţie şi generare de date, instrumentele din biblioteca File I/O sunt
grupate pe trei niveluri şi anume: instrumente de nivel înalt,
instrumente de nivel scăzut şi instrumente avansate.
Instrumentele de nivel înalt, localizate pe prima linie a paletei
File I/O, realizează operaţii complete (deschidere, scriere sau citire,
închidere de fişiere) şi sunt destinate aplicaţiilor uzuale cu fişiere,
fiind uşor şi rapid de utilizat, dar nu sunt flexibile şi nu sunt destinate
aplicaţiilor de mare viteză. Într-o analogie cu clasificarea limbajelor
de programare de la nivelul cod-maşină până la limbajele de nivel
înalt, VI-urile avansate sunt cel mai aproape de nivelul cod-maşină, iar
instrumentele high-level de limbajele de programare de nivel înalt.

High-level file I/O VIs


(instrumente de nivel înalt)

Low-level file I/O VIs


(instrumente de nivel scăzut)

Advanced file I/O VIs


(instrumente avansate)

Fig. 3. Gruparea instrumentelor în biblioteca File I/O

94
Instrumentele de nivel înalt apelează VI-urile de nivel scăzut
pentru realizarea operaţiilor cu fişiere. Aceste VI-uri low-level, plasate
pe a doua linie a paletei File I/O, sunt destinate realizării unei anumite
operaţii cu fişiere, de exemplu deschiderea unui fişier. Aceste VI-uri
de nivel scăzut sunt recomandate pentru aplicaţii de mare viteză (disk
streaming). VI-urile avansate sunt instrumente de acelaşi nivel cu cele
low-level, dar sunt mai puţin utilizate şi sunt plasate în sub-biblioteca
Advanced.
Operaţiile uzuale cu fişiere includ trei etape: în prima etapă se
deschide sau se creează un fişier, în a doua etapă se scriu sau se citesc
datele din fişier iar în a treia etapă se închide fişierul respectiv. Alte
operaţii auxiliare permit crearea directoarelor, mutarea, copierea sau
ştergerea fişierelor, schimbarea caracteristicilor fişierelor, manipularea
căilor de căutare etc.
1. Deschiderea sau crearea unui fişier. Pentru realizarea
primei etape dintr-o operaţie uzuală cu fişiere, trebuie specificată
locaţia fişierului care va fi deschis sau creat. Pe majoritatea
calculatoarelor este utilizat un sistem ierarhic de specificare a locaţiei
unui fişier, prin urmare pentru specificarea locaţiei trebuie indicată
lista de directoare (plecând de la directorul rădăcină) în care este
plasat fişierul respectiv, printr-o cale (path). Dacă instrumentul virtual
lucrează cu un fişier care a fost deschis deja (de către alt VI), atunci
acest fişier deja deschis este identificat printr-un număr de referinţă
numit refnum. Dacă fişierul este închis, atunci indicatorul refnum va fi
dezactivat.
Dacă nu este specificată o cale (prin conectarea la un terminal
de intrare), există posibilitatea (doar în cazul instrumentelor de nivel
înalt) să fie deschisă o fereastră de dialog prin care trebuie specificate
calea de căutare şi fişierul în care se vor scrie sau din care se vor citi
date.
2. Scrierea sau citirea datelor. A doua etapă a unei operaţii
uzuale de lucru cu fişiere este scrierea sau citirea de date în sau din
fişierul respectiv. Această etapă se realizează în mod diferit în funcţie
de tipul fişierului în care stocăm datele.
Fişierele cu care lucrează LabVIEW pentru stocarea datelor
pot fi de tip text, binare sau de tip datalog. Fişierele de tip text sau
binare cu care lucrează LabVIEW fac parte din clasa fişierelor byte
stream, care înregistrează datele secvenţial şi au ca unitate de bază
octetul. Un fişier byte stream poate conţine date LabVIEW omogene

95
sau colecţii de date LabVIEW de diverse tipuri (caractere, numere,
date booleene, tablouri, clustere).
Un exemplu de fişier byte stream simplu este fişierul text
ASCII, care conţine caractere. Un fişier text uzual cu care lucrează
LabVIEW, şi care face parte tot din clasa byte stream, este fişierul text
de tip foaie de lucru - spreadsheet, care conţine caractere grupate în
linii de numere reprezentate în cod ASCII, numere separate în cadrul
fiecărei linii prin tab-uri, iar liniile separate între ele prin enter.
Un alt exemplu de fişier byte stream este un tablou de numere
binare pe 16 biţi (întregi sau simplă precizie în virgulă mobilă),
numere care reprezintă eşantioane achiziţionate. Un fişier byte stream
mai complicat este unul în care tabloul de numere binare este precedat
de un antet constând în text ASCII care descrie modul şi momentul
achiziţiei datelor. Antetul poate fi un cluster care conţine parametri
legaţi de achiziţie (canale de achiziţie, factori de scală etc.). Prin
urmare, un fişier byte stream poate conţine toate tipurile de date cu
care lucrează LabVIEW. Fişierele de tip byte stream, fie că sunt de tip
text sau binare pot fi create cu instrumente de nivel înalt sau scăzut
din biblioteca File I/O.
Fişierele de tip datalog conţin o secvenţă de înregistrări
structurate identic. O înregistrare poate conţine orice tip de date
LabVIEW, dar toate înregistrările din fişierul datalog trebuie să aibă
aceeaşi structură. Fişierele datalog pot fi create doar cu instrumente de
nivel scăzut.
Un fişier byte stream poate fi scris prin adăugarea de noi
caractere, numere, tablouri. Datele dintr-un fişier pot fi suprascrise.
Un fişier datalog poate fi scris prin adăugarea a câte unei înregistrări
la un moment dat, fără a avea posibilitatea de suprascriere.
În ceea ce priveşte operaţia de citire, un fişier byte stream
poate fi citit prin specificarea unui index (offset) al octetului
(caracterului) de la care se face citirea şi a numărului de octeţi care vor
fi citiţi. Fişierele datalog se citesc prin specificarea unui index (offset)
al înregistrării de la care se face citirea şi a numărului de înregistrări
ce vor fi citite.
Fişierele byte stream se utilizează atunci când dorim stocarea
datelor în format text sau spreadsheet, date care vor fi disponibile
pentru alte aplicaţii (exterioare LabVIEW). Fişierele byte stream
binare se pot folosi pentru înregistrarea şi stocarea continuă a datelor
achiziţionate, care vor fi citite secvenţial sau în mod aleator, în

96
cantităţi arbitrare. Fişierele datalog se utilizează pentru înregistrarea
de rezultate multiple ale unor teste sau a unor semnale care se citesc
apoi câte unul şi se tratează în mod individual. Trebuie să se ţină
seama de faptul că fişierele datalog sunt fişiere interne LabVIEW şi
nu pot fi citite de alte aplicaţii (programe).
3. Închiderea unui fişier se realizează după scrierea sau citirea
datelor, cu ajutorul instrumentelor de nivel înalt sau scăzut.

2.1. Operaţii de scriere/citire cu instrumente de nivel înalt


Instrumentele de nivel înalt plasate pe prima linie a paletei
File I/O permit realizarea rapidă şi fără efort de programare a unor
aplicaţii de scriere/citire simple. Un VI de nivel înalt realizează singur
toate cele trei etape de bază ale unei operaţii I/O tipice: deschidere
fişier, scriere sau citire, închidere fişier. Din acest motiv, programarea
este foarte rapidă. În schimb, aceste VI-uri nu sunt recomandate în
operaţii disk streaming. Operaţiile disk streaming necesită o viteză
mare care presupune deschiderea unui fişier şi păstrarea acestuia
deschis în timp ce instrumente (low-level) plasate, de exemplu, în
bucle realizează scrierea datelor. Plasarea într-o buclă a unui VI de
nivel înalt ar conduce la operaţii multiple, inutile, de
deschidere/închidere a fişierelor.
VI-urile de nivel înalt permit scrierea/citirea următoarelor
tipuri de date: şiruri de caractere în sau de la fişiere text, linii de la
fişiere text, tablouri monodimensionale (1D) sau bidimensionale (2D)
de numere în simplă precizie în sau de la fişiere text spreadsheet,
tablouri 1D sau 2D de numere întregi sau simplă precizie în sau de la
fişiere binare.
Informaţii complete despre VI-urile de nivel înalt se pot
obţine prin apelarea la meniurile de help disponibile în LabVIEW. În
continuare vor fi prezentate câteva exemple de VI-uri de nivel înalt şi
câteva aplicaţii simple realizate cu acestea. Primul VI de nivel înalt
din paleta File I/O este Write To Spreadsheet File.vi (Fig. 4).

Fig. 4. Instrumentul de nivel înalt Write To Spreadsheet File.vi


97
Acest VI converteşte un tablou 1D sau 2D de numere (simplă
precizie – SGL) într-un şir de caractere pe care îl scrie într-un fişier
byte stream nou sau pe care îl adaugă la un fişier existent. Write To
Spreadsheet File.vi deschide fişierul ţintă înainte de scriere, iar după
încheierea operaţiei de scriere îl închide. Fişierul obţinut va fi unul de
tip text spreadsheet, care poate fi citit de multe aplicaţii (de exemplu
Excel). Terminalele VI-ului sunt prezentate în Fig. 4: file path
furnizează calea (dacă nu este precizat se deschide o fereastră de
dialog); la terminalele 2D data sau 1D data se cuplează tabloul care
va fi convertit şi scris în fişier; append to file se utilizează doar dacă se
doreşte adăugarea datelor la un fişier existent; format precizează tipul
de format folosit pentru reprezentarea datelor – de exemplu, formatul
implicit %.3f care determină crearea unui şir de caractere suficient de
lung pentru a reprezenta întregul număr cu trei digiţi în dreapta
punctului zecimal etc. Există un terminal suplimentar – delimiter –
care nu apare în Fig. 4 şi care este un şir de caractere ce permite
setarea tipului de delimitator între date (implicit tab).
În Fig. 5, 6 este prezentată o aplicaţie simplă care converteşte
un vector creat cu o buclă For într-un fişier spreadsheet.

Fig. 5. Diagrama aplicaţiei de scriere a unui fişier spreadsheet

Fig. 6. Fereastra panou a aplicaţiei (indicarea căii şi a fişierului)

98
Controlul pentru setarea căii de căutare este de tip path
(meniul Controls/ Path&Refnum). Aplicaţia creează un fişier
multipli_pi.txt la locaţia precizată prin cale, converteşte vectorul 1D
care conţine multiplii lui pi (10 numere) în şir de caractere
(delimitatorul este tabulator), scrie şirul de caractere în fişier şi apoi îl
închide. Fişierul multipli_pi.txt poate fi citit/importat de diverse
aplicaţii cum ar fi Notepad (Fig. 7) sau Microsoft Excel (prin import
al fişierului .txt sau direct prin precizarea extensiei .xls - Fig. 8).

Fig. 7. Fişierul multipli_pi.txt citit cu Notepad

Fig. 8. Foaie de lucru Excel cu datele din multipli_pi.xls

Instrumentul „dual” pentru Write To Spreadsheet File.vi este


Read From Spreadsheet File.vi , ale cărui terminale sunt prezentate în
Fig. 9. Acest VI deschide un fişier text, citeşte numărul specificat de
linii din fişierul respectiv, începând cu caracterul specificat prin
indicatorul offset şi apoi converteşte şirul de caractere într-un tablou
2D de numere în simplă precizie, iar în final închide fişierul. O
aplicaţie duală cu cea anterioară, bazată pe instrumentul Read From
Spreadsheet File.vi şi care citeşte datele din fişierul multipli_pi.txt este
prezentată în Fig. 10, 11.

Fig. 9. Instrumentul de nivel înalt Read From Spreadsheet File.vi

99
Fig. 10. Diagrama aplicaţiei de citire a fişierului multipli_pi.txt

Fig. 11. Fereastra panou a aplicaţiei (citirea şi vizualizarea datelor)

Pe lângă VI-urile de nivel înalt descrise, paleta File I/O


cuprinde şi alte instrumente de nivel înalt cum ar fi Write Characters
To File.vi şi Read Characters From File.vi, care permit scrierea,
respectiv citirea de şiruri de caractere în fişiere text. Instrumentele de
nivel înalt care operează cu fişiere binare sunt grupate în sub-
biblioteca Binary File VIs, situată tot pe prima linie a paletei File I/O.
Pentru exemplificarea operaţiilor cu fişiere binare vor fi
prezentate două aplicaţii simple, de scriere respectiv de citire a unui
fişier binar, realizate cu instrumentele Write To SGL File.vi şi Read
From SGL File.vi din sub-biblioteca Binary File VIs.
Instrumentul Write To SGL File.vi (terminalele indicate în
Fig. 12) deschide un fişier binar, scrie date de tip tablou 1D sau 2D de
numere în simplă precizie (SGL) în fişierul respectiv, pe care îl
închide la finalul operaţiei de scriere. Instrumentul Read From SGL

100
File.vi (terminalele în Fig. 13) deschide fişierul binar specificat,
citeşte datele din fişier începând cu poziţia octetului specificat prin
indicatorul start of read offset şi în final închide fişierul respectiv.

Fig. 12. Instrumentul de nivel înalt Write To SGL File.vi

Fig. 13. Instrumentul de nivel înalt Read From SGL File.vi

În Fig. 14 şi 15 este prezentată o aplicaţie de scriere a unui


vector de date (1D tip SGL) furnizate de o buclă For (ca şi în aplicaţia
de scriere în fişier text) într-un fişier binar numit date_binare_pi. Se
utilizează instrumentul Write To SGL File.vi. Spre deosebire de
aplicaţia cu fişier text, aici datele binare nu mai sunt convertite în
caractere ci sunt scrise direct în fişierul binar. În mod identic pot fi
scrise datele achiziţionate prin intermediul VI-urilor de achiziţie.
Avantajele faţă de fişierul text sunt: economie de memorie, rapiditate
şi precizie. Dezavantajul: fişierul nu mai poate fi citit de aplicaţii
uzuale cum ar fi Excel sau Notepad.
Pentru citirea datelor dintr-un fişier binar, se poate folosi Read
From SGL File.vi în configuraţia din Fig. 16, 17. Se parcurg etapele
de deschidere a fişierului date_binare_pi, de citire a datelor şi de
închidere a fişierului.

Fig. 14. Scrierea unui fişier binar

101
Fig. 15. Specificarea căii şi fişierului pentru scrierea de date binare

Fig. 16. Citirea datelor dintr-un fişier binar

Fig. 17. Fereastra panou a aplicaţiei de citire a fişierului binar

2.2. Operaţii de scriere/citire cu instrumente low-level


Instrumentele de scriere/citire de nivel scăzut sunt plasate pe
linia a doua din paleta File I/O (Fig. 3), iar instrumentele avansate
(care din punct de vedere al nivelului sunt tot low-level, dar sunt
utilizate pentru anumite operaţii speciale) sunt plasate în sub-
biblioteca Advanced File Functions din a treia linie a paletei. Aceste
VI-uri de nivel scăzut se folosesc pentru realizarea operaţiilor
individuale cu fişiere, cum ar fi, de exemplu, deschiderea unui fişier şi

102
prin urmare nu asigură (ca VI-urile de nivel înalt) realizarea cu un
singur VI a tuturor etapelor necesare pentru scrierea sau citirea datelor
- deschidere, scriere/citire şi închidere. În schimb, prin utilizarea
instrumentelor low-level se asigură flexibilitatea şi viteza aplicaţiilor.
Printre instrumentele low-level există VI-uri principale, care
asigură realizarea etapelor de bază ale operaţiilor cu fişiere:
deschidere, scriere, citire, închidere, şi există VI-uri care asigură
operaţii auxiliare cum ar fi crearea directoarelor, mutarea, ştergerea
sau copierea fişierelor, schimbarea caracteristicilor fişierelor,
manipularea căilor de căutare etc. Toate aceste instrumente pot fi
analizate prin parcurgerea paletei File I/O şi prin apelarea la meniurile
de help.
Pentru exemplificarea utilizării VI-urilor de nivel scăzut,
aplicaţia de scriere a datelor numerice 1D SGL într-un fişier
spreadsheet realizată cu instrumentul de nivel înalt Write To
Spreadsheet File.vi (Fig. 5, 6) este dezvoltată cu instrumentele low-
level: Open/Create/Replace File.vi, Write File.vi, Close File.vi în Fig.
18. Funcţiile realizate de aceste instrumente sunt clar indicate de
numele lor, iar modul de conectare este foarte simplu (detalii despere
terminale se pot obţine apelând meniul Online help al fiecărui VI).
Instrumentul Array To Spreadsheet String.vi din meniul Functions/
String a fost folosit pentru convertirea vectorului de numere 1D în şir
de caractere. Fereastra panou a aplicaţiei este similară cu cea din Fig.
6, iar fişierul poate fi numit multipli_pi.xls şi va putea fi folosit direct
în Excel, exact ca în Fig.8 (dacă fişierul cu acest nume există atunci
conţinutul acestuia va fi înlocuit cu datele noi, dacă nu, atunci va fi
creat în locaţia specificată prin cale).
Instrumentele low-level sunt conectate prin conexiuni de
eroare şi refnum (identifică un fişier după deschidere şi până la
închidere), similare cu conexiunile de eroare şi task ID de la achiziţia
datelor cu instrumente intermediare de achiziţie.
Se observă că sunt necesare mai multe VI-uri faţă de aplicaţia
cu instrumente de nivel înalt – deşi acest lucru pare inutil, este esenţial
pentru dezvoltarea de aplicaţii de stocare de mare viteză necesare în
data logging. În special aplicaţiile de tip disk streaming necesită
deschiderea fişierului şi păstrarea acestuia deschis în timp ce alte
instrumente realizează operaţii multiple de scriere a datelor (de
exemplu prin plasarea instrumentelor într-o buclă While), iar după
terminarea scrierii un alt instrument (din afara buclei) închide fişierul.

103
Fig. 18. Scrierea unui fişier text cu instrumente low-level

Observaţie: Fişierele de tip datalog, care conţin o secvenţă de


înregistrări structurate identic, pot fi create numai cu instrumente de
nivel scăzut (sau avansate). Pentru analiza şi rularea unor aplicaţii care
folosesc fişiere datalog se pot parcurge VI-urile din biblioteca
Examples\File\datalog.llb. O altă posibilitate de lucru cu înregistrări
tip datalog este de a utiliza facilitatea Data Logging din meniul
Operate al LabVIEW, care permite realizarea de înregistrări ale
panoului frontal al unui VI.

3. Exemplu de achiziţie şi stocare de tip disk streaming


Aplicaţiile de tip disk streaming constau în stocarea cu viteză
mare a datelor achiziţionate (de către hardware-ul de achiziţie) pe un
mediu de stocare corespunzător (hard-disc). Dezvoltarea unei astfel de
aplicaţii în LabVIEW necesită utilizarea unor instrumente de achiziţie,
descrise detaliat în lucrările 1 şi 2, precum şi a unor instrumente de
operaţii cu fişiere de tip low-level.
În continuare va fi preluată şi reluată aplicaţia de achiziţie
continuă (cu buffer circular) a unui semnal sinusoidal furnizat de un
generator de semnal, dezvoltată în lucrarea nr. 2, paragraful 3.3
(diagrama din Fig. 15 a lucrării 2). Generatorul este cuplat la intrarea
analogică 0 a plăcii AT-MIO-16 prin intermediul modulului de
condiţionare 5B41 (a se vedea lucrarea 2). Semnalul sinusoidal
provenit de la generator este setat la o frecvenţă de 50 Hz, iar

104
frecvenţa de eşantionare (scan rate) este de 500 de eşantioane/sec.
Bufferul este de 500 de eşantioane, iar datele achiziţionate în mod
continuu sunt puse imediat la dispoziţia utilizatorului. Pentru
realizarea aplicaţiei au fost utilizate instrumente intermediare de
achiziţie.
Pentru stocarea rapidă a datelor achiziţionate într-un fişier, vor
fi utilizate, în afara buclei, instrumentele de deschidere şi închidere a
fişierului, iar în interiorul buclei instrumentul de scriere. Pentru
comoditatea vizualizării şi prelucrării datelor cu alte aplicaţii în acest
exemplu va fi utilizat un fişier text. (Pentru creşterea rapidităţii de
stocare, a preciziei şi a economiei de memorie ar trebui utilizat un
fişier binar, fiind recomandată în plus folosirea instrumentelor de
analiză şi afişare ulterior, după realizarea achiziţiei şi stocării datelor).
Aşa cum se observă în Fig. 19, conexiunile de eroare trec prin
toate instrumentele de achiziţie şi de prelucrare a fişierelor, într-o
secvenţă impusă de ordinea de execuţie a instrumentelor respective.
Conexiunile task ID şi refnum conectează în mod corespunzător
instrumentele de achiziţie, respectiv pe cele de operare cu fişiere
Instrumentele AI Config.vi, AI Start.vi, AI Read.vi, AI Clear.vi
formează lanţul de achiziţie, iar Open/Create/Replace File.vi, Write
File.vi, Close File.vi formează lanţul de operaţii cu fişiere.
Datele achiziţionate sunt stocate continuu în fişierul
semnal_sinus.txt până la oprirea aplicaţiei, iar formatul datelor
(numărul de digiţi la dreapta virgulei etc.) sau delimitatorii folosiţi pot
fi schimbaţi prin modificarea corespunzătoare a terminalelor
instrumentului Array To Spreadsheet String.vi.
Dacă se doreşte înregistrarea unor informaţii privind marca de
timp (timestamp) a datelor sau factori de scală etc., trebuie specificate
aceste informaţii într-un antet (header) al fişierului. Astfel de
informaţii pot fi obţinute de exemplu prin folosirea VI-ului Get Date/
Time String.vi din biblioteca Functions/Time & Dialog.
După cum se observă din Fig. 19, 20, acest VI furnizează data
şi momentul de timp (oră, minut, secundă) la care au fost achiziţionate
datele, într-un format precizat, informaţiile de timestamp fiind astfel
disponibile. Aceste informaţii trebuie scrise în fişier împreună cu
datele achiziţionate propriu-zise (sau într-un fişier separat) utilizând
VI-urile pentru operaţii I/O prezentate (pentru a nu încărca diagrama,
informaţiile timestamp sunt doar vizualizate în aplicaţie). Pentru a
stoca date însoţite de timestamp sunt utile fişierele de tip datalog.

105
Fig. 19. Achiziţia şi stocarea datelor în regim de disk streaming

Fig. 20. Fereastra panou a aplicaţiei de disk streaming

106
Datele stocate pot fi utilizate ulterior pentru vizualizare,
analiză, distribuire etc. De exemplu, prin folosirea unei aplicaţii
simple cu VI-ul de nivel înalt Read From Spreadsheet.vi, similară cu
cea din Fig. 10, fişierul semnal_sinus.txt poate fi citit, iar datele
convertite într-un tablou 2D numeric în simplă precizie pot fi
vizualizate cu un Waveform graph (Fig. 21) sau pot fi analizate
spectral etc.

Fig. 21. Citirea şi vizualizarea datelor achiziţionate şi stocate

După cum s-a precizat, pentru creşterea rapidităţii de stocare,


a preciziei şi a economiei de memorie trebuie utilizate fişiere binare.
În acest sens, aplicaţia din Fig. 19 poate fi transformată uşor prin
înlocuirea în calea de căutare a fişierului semnal_sinus.txt cu un fişier
binar, numit de exemplu semnal_sinus_bin, iar în bucla While ieşirea
voltage data a instrumentului AI Read.vi se leagă direct la intrarea
data a VI-ului Write File.vi. Astfel, datele achiziţionate sunt scrise în
fişierul binar precizat.
Pentru aprofundarea tehnicilor de operaţii cu fişiere se pot
parcurge exemplele de scriere şi citire fişiere din biblioteca
Examples\File a LabVIEW. În majoritatea aplicaţiilor trebuie să se
acorde o atenţie deosebită conversiei în unităţi inginereşti (de exemplu
exprimarea informaţiilor despre temperatură într-un proces de
monitorizare – a se vedea Write Temperature To File.vi din
Examples\File\smplfile.llb).

107
4. Temă de laborator
4.1. Ce înţelegeţi prin operaţii data logging? Să se precizeze
funcţiile de bază ale unui sistem data logger. Ce tipuri de fişiere pot fi
utilizate pentru stocarea datelor şi ce avantaje/dezavantaje au acestea?
4.2. Să se parcurgă biblioteca File I/O a LabVIEW. Ce tipuri
de VI-uri sunt folosite pentru operaţii I/O cu fişiere? Care sunt
operaţiile de bază realizate cu fişiere şi care sunt tipurile de fişiere
utilizate de LabVIEW pentru stocarea datelor?
4.3. Să se implementeze şi să se ruleze aplicaţia de scriere a
unui fişier spreadsheet din Fig. 5, 6. Să se deschidă Notepad şi
Microsoft Excel pentru vizualizarea datelor stocate. Să se ruleze
aplicaţia de citire a fişierului text din Fig. 10, 11 şi să se verifice
corectitudinea datelor. Să se implementeze o altă aplicaţie de stocare,
respectiv de citire a fişierelor text cu instrumente de nivel înalt. Să se
utilizeze diverşi delimitatori şi formate pentru datele stocate.
4.4. Să se implementeze şi să se ruleze aplicaţia de scriere a
unui fişier binar din Fig. 14, 15. Să se ruleze aplicaţia de citire a
fişierului binar din Fig. 16, 17 şi să se verifice corectitudinea datelor.
Să se implementeze o altă aplicaţie de stocare, respectiv de citire a
fişierelor binare cu instrumente de nivel înalt.
4.5. Să se dezvolte aplicaţia de scriere cu instrumente low-
level din Fig. 18. Să se vizualizeze fişierul creat cu ajutorul Excel.
4.6. Implementaţi exemplul de achiziţie şi stocare a datelor de
tip disk streaming din paragraful 3 (Fig. 19, 20). Utilizaţi generatorul
de semnal şi placa AT-MIO-16 din laborator, conform celor
precizate. Vizualizaţi datele stocate (aplicaţia din Fig. 21).
4.7. Refaceţi exemplul de la punctul 4.6, pentru acelaşi semnal
sinusoidal, dar cu frecvenţa de eşantionare de 50 eşantioane/sec. Ce
observaţii puteţi face? Rulaţi aplicaţia şi pentru alte tipuri de semnale
obţinute prin intermediul generatorului de semnal, de frecvenţe şi
amplitudini diverse.
4.8. Implementaţi o aplicaţie similară cu cea de la punctul 4.5,
dar cu stocarea datelor într-un fişier binar. Comparaţi dimensiunea
fişierelor create la punctele 4.6, 4.8 (pentru acelaşi semnal şi acelaşi
interval de timp de achiziţie – de exemplu 1 minut).

108
LUCRAREA NR. 7

Aplicaţie de măsurare şi achiziţie a temperaturii

1. Descrierea aplicaţiei
În prezenta lucrare este dezvoltată o aplicaţie de măsurare şi
achiziţie a valorilor temperaturii unui lichid dintr-un recipient.
Temperatura lichidului din recipient poate fi modificată prin
intermediul unei rezistenţe de încălzire.
Temperatura lichidului este măsurată folosind un termocuplu
fier-constantan de tip J, cu domeniul de măsurare între 0 – 761 oC.
Termocuplul furnizează o tensiune (de ordinul milivolţilor)
proporţională cu temperatura lichidului, tensiune care este aplicată la
intrarea unui amplificator de precizie, ce asigură pe de o parte
amplificarea tensiunii de la intrare şi pe de altă parte compensarea
influenţei temperaturii mediului ambiant. Semnalul de tensiune de la
ieşirea amplificatorului de precizie este în gama 0 – 10 V c.c.
Domeniul de variaţie a temperaturii măsurate este între 20 oC şi 70 oC,
ceea ce corespunde domeniului 2 – 5 V pentru tensiunea de ieşire din
amplificatorul de precizie. Tensiunea de la ieşirea amplificatorului de
precizie este aplicată la intrarea modulului de condiţionare a
semnalului 5B31 (National Instruments). Modulul 5B31 asigură
izolarea galvanică faţă de placa de achiziţie, precum şi filtrarea
semnalului util (are banda de frecvenţă de 4 Hz).
Semnalul condiţionat este aplicat la canalul de intrare
analogică 1 al plăcii de achiziţie AT-MIO-16 (descrierea plăcii şi a
modului de funcţionare a acesteia este prezentată în Anexa 1). Schema
instalaţiei este prezentată în Fig. 1.
Semnalul este achiziţionat şi prelucrat prin intermediul unei
aplicaţii LabVIEW de achiziţie continuă a datelor analogice (a se
vedea Lucrarea nr. 2), realizată cu instrumente intermediare de
achiziţie şi cu buffer circular. Aplicaţia asigură achiziţia datelor,
scalarea acestora, precum şi vizualizarea temperaturii lichidului din
recipient. Pentru prelucrarea ulterioară a datelor se poate realiza
stocarea datelor în regim data logger (Lucrarea nr. 6).

109
220 V u [mV] U [V]
~ AP + CJC Modul 5B31

Semnal US [V]
R TC condiţionat

o Placă achiziţie
θ C Driver NI-DAQ
AT-MIO-16H-9
R – rezistenţă de încălzire
AP – amplificator de
precizie
CJC – compensarea Software de aplicaţie
joncţiunii reci LabVIEW
TC – termocuplu de tip J Calculator

Utilizator

Fig. 1. Schema instalaţiei de măsurare şi achiziţie a temperaturii

2. Măsurarea temperaturii cu termocupluri


Un traductor de temperatură cu termocuplu este alcătuit din
termocuplu (care constituie elementul sensibil sau senzorul), cabluri
de prelungire şi adaptor. Cablurile de prelungire au rolul de conectare
a termocuplului la adaptor şi permit deplasarea joncţiunii de referinţă
de la locul măsurării într-o zonă unde este posibilă menţinerea
constantă a temperaturii. Adaptorul permite obţinerea semnalului
unificat de ieşire.
Termocuplul este un senzor care face conversia din
temperatură într-o tensiune termo-electromotoare. Termocuplul este
format din două conductoare, de natură diferită, numite
termoelectrozi, sudate la unul din capete. Sudura celor doi
termoelectrozi formează joncţiunea caldă sau de măsurare, care este
imersată în mediul cu temperatura θ de măsurat. Capetele libere ale
termoelectrozilor formează joncţiunea rece sau de referinţă, aflată la o

110
temperatură θ0. Tensiunea termo-electromotoare care apare la capetele
libere ale electrozilor ca urmare a diferenţei de temperatură dintre cele
două joncţiuni se mai numeşte şi tensiune Seebeck (după numele celui
care a descoperit acest efect în 1821 – Thomas Seebeck). Tensiunea
termo-electromotoare depinde neliniar de temperatură, însă pentru
variaţii mici ale temperaturii relaţia poate fi considerată liniară:

ETC = K S ⋅ (θ − θ 0 ) (7.1)

unde ETC este tensiunea termo-electromotoare, iar K S [mV / o C ] este


coeficientul Seebeck, care se mai numeşte şi sensibilitate a
termocuplului.
Cabluri de prelungire

JR JR
(+) JC
Adaptor
θ
(-)

Termocuplu
U [V]
JC - Joncţiunea caldă
JR - Joncţiunea rece

Fig. 2. Schema constructivă a unui traductor cu termocuplu

Termoelectrozii unui termocuplu sunt realizaţi din materiale


omogene, pure, care dezvoltă o anumită tensiune termo-
electromotoare în funcţie de temperatură. Dintre materialele utilizate
se pot enumera: cupru, fier, constantan (aliaj dintre cupru şi nichel),
cromel, nichel, platină etc. Termocuplurile sunt codificate cu litere
majuscule, care indică materialele din care sunt construiţi electrozii.
De exemplu, termocuplul de tip J are electrozii din fier şi constantan,
iar termocuplul de tip T din cupru şi constantan etc.
Utilizarea termocuplurilor pentru măsurarea temperaturii
necesită realizarea unor operaţii de condiţionare a semnalului, operaţii
descrise pe scurt în continuare.

111
Filtrarea şi amplificarea semnalului. La ieşirea
termocuplurilor semnalul de tensiune este de nivel foarte mic
(milivolţi) şi din acest motiv este uşor afectat de zgomote (îndeosebi
zgomotele de reţea de 50 – 60 Hz – mai mult, termocuplul acţionează
ca o antenă care culege aceste zgomote). Prin urmare, modulele de
condiţionare şi hardware-ul de achiziţie care preiau acest semnal
trebuie să fie ecranate, iar amplificarea semnalului trebuie să se
realizeze cât mai aproape de termocuplu. Pentru siguranţă, se
realizează filtrarea semnalului. Pentru măsurarea temperaturii cu
termocupluri este indicată utilizarea conexiunii diferenţiale pentru
cuplarea la hardware-ul de achiziţie, deoarece astfel se asigură o bună
rejecţie a zgomotelor.
Compensarea joncţiunii reci (cold junction compensation -
CJC). Termenul de joncţiune rece pentru joncţiunea de referinţă
provine de la practica tradiţională a fabricanţilor de termocupluri de a
etalona această joncţiune în apă cu gheaţă la 0 oC. Pentru o astfel de
etalonare, termocuplul furnizează o tensiune pozitivă atunci când
temperatura măsurată este peste 0 oC şi o tensiune negativă atunci
când temperatura este sub 0 oC. Deşi oarecum precisă, stabilirea
referinţei de temperatură în apă cu gheaţă nu este practică. Abordarea
practică utilizată este aceea de a măsura temperatura joncţiunii de
referinţă (care este temperatura mediului ambiant în care se află
aceasta) cu un senzor de temperatură direct şi de a compensa această
temperatură nenulă prin diverse metode. Această procedură poartă
numele de compensare a joncţiunii reci (CJC).
Pentru implementarea CJC se pot utiliza două tehnici:
compensarea hardware sau compensarea software. Ambele tehnici
necesită măsurarea temperaturii joncţiunii de referinţă cu un senzor
direct, a cărui ieşire depinde numai de temperatura punctului de
măsurare (astfel de senzori sunt termistorii, termorezistenţele, senzorii
cu semiconductoare etc.).
Compensarea hardware presupune introducerea în circuitul
termoelectric a unei surse de tensiune care să anuleze tensiunea
apărută ca urmare a temperaturii parazite a joncţiunii reci. Tensiunea
de compensare furnizată de sursă este variabilă în funcţie de
temperatura mediului ambiant. Dezavantajele acestei soluţii sunt
legate de preţ şi de precizie.
Compensarea software presupune ca după măsurarea
temperaturii joncţiunii reci cu un senzor direct, o rutină software să

112
compenseze tensiunea măsurată prin adăugarea sau scăderea unei
valori corespunzătoare pentru eliminarea efectului temperaturii
joncţiunii reci. Această compensare se efectuează conform unor
formule care depind de tipul termocuplului şi care sunt stocate în
bibliotecile pachetului software utilizat (de exemplu, LabVIEW).
Liniarizarea ieşirii termocuplurilor. Relaţia liniară (7.1) nu
este valabilă decât pentru variaţii mici ale temperaturii, deoarece
coeficientul Seebeck variază foarte mult în funcţie de temperatură.
Din acest motiv, mai ales când domeniul temperaturilor măsurate este
mare, trebuie să se ţină cont de neliniaritatea intrare-ieşire. Pentru
aceasta, se aproximează ieşirea prin funcţii polinomiale de
temperatură sau se utilizează tabele de dependenţă temperatură-
tensiune, în funcţie de tipul termocuplului.
Pe lângă operaţiile de condiţionare a semnalului furnizat de un
termocuplu descrise mai sus, există şi alte facilităţi care sunt asigurate
de modulele de condiţionare, cum ar fi detectarea întreruperii
circuitului termocuplului. Utilizarea unor circuite de condiţionare cum
ar fi cele de tip SCXI, 5B sau SCC ale firmei National Instruments
permite obţinerea unor performanţe foarte bune din punct de vedere al
preciziei măsurătorilor.
Aplicaţia de măsurare şi achiziţie a temperaturii din această
lucrare utilizează un termocuplu de tip J – fier-constantan, cu
domeniul de măsurare între 0 – 761 oC.
Deoarece valoarea tensiunii termo-electromotoare furnizate de
termocuplu este foarte mică este necesară amplificarea acesteia cu un
amplificator cu impedanţă de intrare şi amplificare mari, tensiune de
offset şi derivă termică mici.
Tensiunea de ordinul milivolţilor de la ieşirea termocuplului
este aplicată la intrarea unui amplificator de precizie, realizat cu trei
circuite integrate speciale. Schema amplificatorului de precizie,
precum şi descrierea funcţionării sale sunt prezentate în Anexa 2.
Amplificatorul furnizează o tensiune de ieşire între 0-10 V, realizează
liniarizarea intrare-ieşire şi compensarea hardware a temperaturii
joncţiunii de referinţă. Pentru stabilirea relaţiei temperatură – tensiune
de ieşire din amplificator s-au realizat măsurători cu ajutorul unui
voltmetru şi a unui termometru de precizie. Rezultatele obţinute au
fost prezentate în Anexa 2. Pentru domeniul relativ mic de
temperatură corespunzător procesului studiat şi anume 20 – 70 oC a

113
rezultat o tensiune de ieşire din amplificator cuprinsă între 2 şi 5 V şi
o dependenţă liniară temperatură – tensiune, prezentată în Fig. 3.
U [V]

2 θ [oC]

20 70
Fig. 3. Caracteristica statică temperatură-tensiune

Tensiunea de la ieşirea amplificatorului de precizie este


aplicată la intrarea modulului de condiţionare a semnalului 5B31, care
asigură izolarea galvanică faţă de placa de achiziţie, precum şi filtrarea
semnalului util (banda de frecvenţă este de 4 Hz), care în cazul
achiziţiei temperaturii este un semnal lent variabil în timp.

3. Achiziţia, scalarea şi vizualizarea datelor


Semnalul care conţine informaţia despre temperatură provenit
de la modulul de condiţionare 5B31 este conectat la canalul de intrare
analogică 1 (montaj diferenţial) al plăcii AT-MIO-16. Semnalul este
achiziţionat şi prelucrat prin intermediul unei aplicaţii LabVIEW de
achiziţie continuă (multi-punct) a datelor analogice, realizată cu
instrumente intermediare de achiziţie şi cu buffer circular. Fereastra
diagramă a acestei aplicaţii este prezentată în Fig. 4 (a se vedea
lucrarea nr. 2 pentru detalii referitoare la achiziţia continuă a datelor,
la utilizarea instrumentelor intermediare şi a bufferelor). A fost
utilizată o succesiune de instrumente intermediare de achiziţie: AI
Config.vi, AI Start.vi, AI Read.vi şi AI Clear.vi, conectate prin
conexiuni de tip Task ID şi Error. Bufferul utilizat are dimensiunea
de 500 de eşantioane, iar rata de scanare este de 2 eşantioane/sec.
Datele achiziţionate în mod continuu sunt puse imediat la dispoziţia
utilizatorului. Pentru afişarea datelor achiziţionate în unităţi de
temperatură (grade Celsius) se utilizează relaţia de calcul dedusă din

114
caracteristica statică din Fig. 3. Pentru o eventuală afişare a datelor în
grade Fahrenheit se poate utiliza relaţia de conversie:
9
θ [° F ] = 32 + ⋅ θ [°C ] (7.2)
5

Pentru afişarea datelor au fost utilizate două indicatoare


grafice: un Waveform Chart şi un Waveform Graph. Indicatorul grafic
de tip chart permite vizualizarea datelor despre temperatură pe
intervalul de timp dorit, prin setarea corespunzătoare a parametrului
Chart History Length (din meniul indicatorului grafic). Indicatorul de
tip graph este util pentru analiza dinamicii procesului măsurat, axa x
fiind gradată în unităţi de timp, scalate în funcţie de perioada de
eşantionare stabilită. Pentru indicarea temperaturii curente este utilizat
un indicator grafic de tip Thermometer.
Aplicaţia dezvoltată în diagrama din Fig. 4 a fost rulată în
scopul achiziţiei şi vizualizării informaţiei despre temperatura
lichidului din recipient. Rezultatele obţinute sunt prezentate în
fereastra panou din Fig. 5.

Fig. 4. Achiziţia multi-punct cu buffer circular a temperaturii

115
Fig. 5. Vizualizarea temperaturii măsurate şi achiziţionate (fereastra
panou a aplicaţiei)

Lichidul din recipient a fost încălzit prin intermediul


rezistenţei electrice, după care a fost lăsat să se răcească. Acest ciclu
încălzire – răcire a fost repetat pentru a observa dinamica temperaturii.
Din Fig. 5 se observă faptul că încălzirea lichidului este mai rapidă
decât răcirea. Dinamica generală a procesului este relativ lentă, aşa
cum se poate observa din analiza indicatorului de tip graph.
Temperatura a fost afişată în grade Celsius, existând posibilitatea de
convertire şi afişare în grade Fahrenheit, aşa cum se poate observa din
diagrama prezentată în Fig. 4.
Pentru aprofundarea noţiunilor şi tehnicilor de achiziţie a
temperaturii se pot analiza şi rula diverse exemple din biblioteca
Examples a LabVIEW. Una dintre aplicaţiile referitoare la achiziţia şi
vizualizarea temperaturii este Temperature System Demo.vi din
Examples\ APPS. Panoul frontal al aplicaţiei este prezentat în Fig. 6.
Acest VI simulează achiziţia unei temperaturi, care este vizualizată şi
analizată; sunt setate temperaturile limită şi sunt semnalizate
eventualele depăşiri ale acestor limite etc.

116
Fig. 6. Instrumentul Temperature System Demo.vi

LabVIEW dispune de o serie de VI-uri destinate cuplării


plăcilor de achiziţie la module de condiţionare a semnalelor de tip
SCC şi SCXI, care la rândul lor se cuplează direct la ieşirea unor
senzori de temperatură, în particular termocupluri. Aceste VI-uri pot
realiza software operaţiile de liniarizare, compensare a joncţiunii reci,
scalarea şi reprezentarea datelor în unităţi inginereşti, vizualizarea
datelor achiziţionate etc. Exemple de astfel de instrumente se găsesc în
Examples\ DAQ\ Analogin\ scxi.llb: SCXI-1102 Thermocuple.vi, SCXI
1120/1121 Thermocuple.vi etc., VI-uri care se utilizează pentru
modulele SCXI 1102, 1120, 1121. Aceste module de condiţionare
împreună cu instrumentele virtuale corespunzătoare permit conectarea
directă şi rapidă a plăcii de achiziţie la termocupluri de diferite tipuri
J, K, T etc. Avantajul utilizării modulelor şi instrumentelor virtuale
este legat de existenţa în biblioteca LabVIEW a datelor referitoare la
termocuplurile standardizate şi rezolvarea software a problemelor de
liniarizare şi compensare a joncţiunii reci pentru orice tip de
termocuplu din bibliotecă. Astfel, nu mai este necesară construirea de
adaptoare hardware pentru fiecare termocuplu, iar efortul de
programare este mult diminuat.

117
Observaţie: Pentru aprofundarea noţiunilor teoretice şi
practice referitoare la tehnicile de măsurare, măsurarea temperaturii şi
utilizarea termocuplurilor se pot consulta lucrările [2], [3], [9], [10],
[19], [24], [26] din lista de referinţe bibliografice.

4. Temă de laborator
4.1. Care este structura unui traductor cu termocuplu? Ce
înţelegeţi prin compensarea joncţiunii reci? Care sunt operaţiile de
condiţionare a semnalelor necesare în cazul măsurării temperaturii cu
termocupluri?
4.2. Pe baza schemei din Fig. 1 să se conecteze elementele
necesare măsurării şi achiziţiei temperaturii lichidului (apă) din
recipient. Să se deducă relaţia analitică temperatură-tensiune pe baza
caracteristicii statice din Fig. 3. După implementarea aplicaţiei de
achiziţie în LabVIEW prezentată în paragraful 3, să se ruleze aplicaţia
pentru 5 – 10 minute şi să se observe evoluţia temperaturii după
conectarea la reţea a rezistenţei de încălzire.
4.3. Să se refacă punctul 4.2 pentru cazul în care afişarea
temperaturii este realizată în grade Fahrenheit, iar achiziţia datelor se
efectuează după ce rezistenţa de încălzire este deconectată de la reţea.
4.4. Să se realizeze experimentul de la punctul 4.2 în situaţia
în care achiziţia datelor este declanşată printr-un trigger numeric sau
software (a se consulta lucrarea nr. 3).
4.5. Să se dezvolte o aplicaţie de achiziţie a temperaturii în
regim data logger. Datele vor fi stocate în fişiere binare sau de tip text
prin utilizarea instrumentelor de nivel înalt şi apoi în regim disk
streaming cu instrumente low-level (a se consulta lucrarea nr. 6).
4.6. Parcurgeţi exemplele referitoare la măsurarea şi achiziţia
temperaturii prezentate în Examples\ APPS şi Examples\ DAQ\
Analogin\ scxi.llb.

118
LUCRAREA NR. 8

Aplicaţii de achiziţie/generare a semnalului audio


(controlul intrărilor/ieşirilor plăcilor de sunet)

1. Noţiuni introductive
În varianta LabVIEW 6.1 există posibilitatea de a lucra cu placa
de sunet cu care este prevăzut orice calculator compatibil IBM-PC.
Acest lucru conduce la posibilitatea de achiziţie şi/sau generare de
semnal audio folosind placa de sunet, microfoane şi boxe audio. De
exemplu, utilizând placa de sunet şi boxele audio pot fi testate
generatoare de semnal periodic, în timp real, de tip dreptunghiular,
triunghiular, dinte de ferestrău sau sinusoidal. Aceste generatoare au
fost descrise pe larg în lucrarea Ghid de programare în LabVIEW.
Aplicaţii pentru prelucrarea semnalelor (a se vedea bibliografia).
În general, orice sistem de calcul modern este prevăzut cu o
placă de sunet mai mult sau mai puţin performantă. Se poate profita de
existenţa generală a unei asemenea „plăci de achiziţie” pe orice
calculator şi se pot implementa diferite experimente de timp real.
Semnalul de intrare analogic provine de la intrarea de microfon iar
semnalul analogic de ieşire este generat pe ieşirea către boxe. Având
în vedere acest lucru, se pot implementa experimente de timp real de
achiziţie, prelucrare şi generare de semnal audio. Lucrarea prezentă
abordează în special partea de generare a semnalului audio.
Pentru a obţine generatoare de semnal în timp real trebuie
respectate anumite cerinţe. Utilizarea unui generator de semnal din
biblioteca Signal Generation/Signal Processing/Analyze a meniului
Functions nu permite obţinerea directă de semnal în timp real; aceste
semnale sunt sintetizate şi eventual afişate aşa cum ar arăta în timp
real, dar generarea lor se face în fracţiuni de secundă sau, oricum, într-
un timp mai mare sau mai mic, în funcţie de viteza microprocesorului.
Timpul real are cerinţe mult mai drastice. Spre exemplu, dacă se
doreşte sintetizarea şi generarea unui semnal în timp real audio pe o
durată de 6 secunde, atunci este necesar ca semnalul să fie emis exact
pe o durată de 6 secunde – durată măsurată cu un cronometru de

119
precizie. Un program în timp real trebuie să funcţioneze în strânsă
legătură cu timpul fizic.
Pentru a genera astfel de semnale este necesar să ţinem cont de
faptul că placa de sunet este o placă de achiziţie generală care
funcţionează sub Windows la frecvenţe prestabilite de 8000, 11025,
22050 sau 44100 Hz. Aceasta înseamnă că dacă dorim să emitem un
semnal sonor cu o durată de 2 secunde, generatorul software va trebui
să genereze (2 secunde) * (frecvenţa_ eşantionare_placă) eşantioane.
Spre exemplu, dacă lucrăm pe frecvenţa de 22050 Hz şi
generăm un semnal cu o durată de 3 secunde, aceasta înseamnă că
placa va trebui să primească de la generatorul de semnal software 3 *
22050 = 66150 eşantioane.
Ţinând cont de acest lucru, trebuie făcută o observaţie
importantă: numărul de eşantioane cu care se generează o perioadă a
semnalului va rezulta în funcţie de frecvenţa de lucru a plăcii de sunet
şi de frecvenţa semnalului periodic emis (a se vedea şi considerentele
legate de frecvenţa semnalului generat din lucrarea nr. 5). Astfel, dacă
generăm un semnal periodic cu frecvenţa de 1500 Hz pe o durată de 3
secunde, atunci semnalul pe o perioadă va fi generat într-un număr de
puncte dat de:

(3 secunde) ⋅ 22050 esantioane


nr_esantioane/ perioada = secunda =
perioade
(3 secunde) ⋅ 1500 (8.1)
secunda
22050 esantioane esantioane
= ≅ 14
1500 perioada perioada

Folosind acest lucru, se poate genera semnal periodic în timp


real pe o durată de timp prestabilită.
Schemele principiale ale unor aplicaţii de achiziţie, respectiv
generare de semnal audio cu plăcile de sunet şi cu LabVIEW sunt
prezentate în Fig. 1 şi Fig. 2. Pentru înţelegerea modului în care se
realizează achiziţia şi generarea datelor în timp real sunt deosebit de
importante noţiunile de flux de date de timp real şi flux de date
software. Prin flux de date de timp real se înţelege viteza de prelucrare
(procesare) a datelor de către dispozitivele de timp real (plăci de

120
achiziţii, plăci audio etc.). Prin flux de date software se înţelege viteza
cu care software-ul generează date pentru dispozitivele de timp real de
ieşire sau preia date de la dispozitivele de timp real de intrare. Este
necesar ca fluxul de date software (de intrare sau de ieşire) să fie
compatibil cu cel hardware (de timp real). Dacă există mici diferenţe,
se pot folosi buffere pentru compatibilizare.

Fig. 1. Structura unei aplicaţii de achiziţie (intrare) de sunet

Fig. 2. Structura unei aplicaţii de generare (redare, ieşire) de sunet

121
2. Instrumente LabVIEW pentru controlul
intrărilor/ieşirilor plăcilor de sunet
În LabVIEW 6.1 dispunem de instrumente specializate pentru
controlul intrărilor de sunet (de la microfon) şi al ieşirilor de sunet
(către boxe), plasate în biblioteca Graphics & Sound a meniului
Functions, după cum se vede în Fig. 3.

Fig. 3. Instrumente specializate pentru intrări/ieşiri pe placa de sunet

Între VI-urile de achiziţie/generare a semnalului audio şi VI-


urile de achiziţie/generare de uz general prezentate în lucrările 1-5
există anumite similitudini, cum ar fi, de exemplu, conectarea acestora
prin conexiuni de tip Task ID in/out şi Error in/out. În continuare vor

122
fi prezentate, pe scurt, VI-urile utilizate pentru generarea de semnal
audio. În sub-biblioteca Sound Output există 8 instrumente pentru
controlul ieşirilor plăcii de sunet. Acestea se folosesc pentru a
implementa un flux de operaţii care să conducă la funcţionarea dorită
a plăcii de sunet.
Cele mai importante 5 instrumente de control al ieşirii de
sunet se conectează prin conexiuni de tip Task ID şi Error într-o
succesiune prezentată în Fig. 4.

Fig. 4. Conectarea instrumentelor specializate pentru generarea


ieşirilor pe placa de sunet

Fig. 5. Instrumentul SO Config.vi

Instrumentul SO Config.vi (Sound Output Configuration) este


prezentat în Fig. 5 şi are rolul de a configura dispozitivul de ieşire
pentru sunet. Acest VI creează un identificator al task-ului de ieşire
sunet (sound output task ID). După folosirea acestui instrument virtual
de configurare, acesta va fi trecut în modul pauză. Semnificaţia
terminalelor este următoarea:
device este dispozitivul de ieşire pentru operaţii cu sunet sub
Windows 95/98/NT. (Această valoare este ignorată de către
sistemul de operare de pe Macintosh). Valoarea implicită este 0
şi semnifică placa de sunet în cazul în care nu există şi alte plăci
de intrare-ieşire pe aceeaşi placă de bază. Valorile posibile sunt
în gama 0 ... n-1, unde n este numărul de dispozitive de ieşire
ale calculatorului.
sound format este o structură de tip cluster în care se specifică
setările pentru operaţia de redare a sunetului (Mono sau Stereo),
se setează rata de eşantionare (redare) la valori din setul 8000,
11025, 22050 sau 44100, şi se interpretează eşantioanele
numerice de sunet ca numere întregi pe 8 sau 16 biţi:
- sound quality se setează la valori stereo sau mono

123
- rate setează rata de eşantionare pentru operaţiile de
intrare sau viteza de redare pentru operaţiile de ieşire.
Putem alege între 8000, 11025, 22050, sau 44100
eşantioane/secundă.
- bits per sample setează operaţiile cu sunet la 8 sau
16 biţi/eşantion.
La operaţiile de înregistrare de sunet, folosirea configuraţiei
Stereo dublează spaţiul de stocare a eşantioanelor de sunet iar
folosirea a 16 biţi/eşantion de sunet dublează la rândul ei
necesarul de memorie faţă de opţiunea 8 biţi/eşantion.
task ID out este un identificator de task ce se transmite la
terminalul task ID in al următorului instrument virtual al
fluxului de operaţii cu sunetul.
Instrumentul SO Start.vi (Sound Output Start) – Fig. 6 –
declanşează operaţia de generare a sunetului asociată cu taskul
corespunzător legat la terminalul task ID in. Dacă dispozitivul
funcţionează deja, apelarea acestui instrument nu are nici un efect.
Dacă dispozitivul este în mod pauză, se va relua operaţiunea de redare
(generare) sunet.
Instrumentul SO Write.vi (Sound Output Write) – Fig. 7 –
scrie date către ieşirea de sunet a dispozitivului asociat cu terminalul
task ID in. Dacă dispozitivul este funcţional, se redă sunetul imediat.
Dacă dispozitivul este în mod pauză, sunetul nu va fi redat până nu se
rulează SO Start.vi. La unul dintre cele 4 terminale mono 8 bit, mono
16 bit, stereo 8 bit, stereo 16 bit se conectează datele care reprezintă
semnalul numeric sonor în funcţie de modul în care a fost setat să
funcţioneze dispozitivul prin SO Config.vi.

Fig. 6. Instrumentul SO Start.vi

Fig. 7. Instrumentul SO Write.vi

124
Fig. 8. Instrumentul SO Wait.vi

Instrumentul SO Wait.vi (Sound Output Wait) – Fig. 8 –


aşteaptă până când dispozitivul de ieşire termină de redat toate datele
pe care le-a primit anterior prin operaţia SO Write.vi.
Instrumentul SO Clear.vi (Sound Output Clear), prezentat în
Fig. 9, închide dispozitivul de ieşire a sunetului şi returnează
sistemului toate resursele utilizate de acest dispozitiv.
SO Pause.vi (Sound Output Pause) – Fig. 10 – stopează
ieşirea de sunet a dispozitivului corespunzător cu task ID in. Dacă
acest dispozitiv se află deja în pauză, apelarea acestui instrument nu
are nici un efect. Prin apelarea acestui instrument nu se pierd datele
care trebuie redate sonor şi se salvează poziţia curentă (se poate relua
redarea din momentul întreruperii atunci când se apelează
instrumentul SO Start).
SO Stop.vi (Sound Output Stop), prezentat în Fig. 11, stopează
imediat operaţia de redare a sunetului corespunzătoare dispozitivului
asociat cu task ID in. Toate datele rămase pentru redare se vor pierde.

Fig. 9. Instrumentul SO Clear.vi

Fig. 10. Instrumentul SO Pause.vi

Fig. 11. Instrumentul SO Stop.vi

125
3. Generator virtual de semnal audio
Prin utilizarea unor generatoare de semnal (de formă de undă)
de tipul celor prezentate în lucrarea Ghid de programare în LabVIEW.
Aplicaţii pentru prelucrarea semnalelor (a se vedea bibliografia), se
poate implementa un generator virtual de semnale audio.
Generatorul de semnal audio are ca nucleu un generator de
semnal (de formă de undă) completat cu anumite extensii. Au fost
implementate două variante constructive de generator virtual de
semnal audio.

3.1. Generator complex de semnale audio. Varianta 1


Panoul frontal şi diagrama din Fig. 12 şi 13 reprezintă un
generator complex de semnal audio.
Schema logică utilizată pentru implementarea acestui
generator este prezentată în Fig. 14.
Din Panoul frontal al generatorului se observă o serie de
controale prin care putem modifica atât parametrii plăcii de sunet cât
şi parametrii semnalului generat. Putem alege tipul semnalului - Tip
semnal (de bază sau reprezentat analitic prin formulă). La rândul său
semnalul de bază poate fi sinusoidal, triunghiular, dreptunghiular sau
dinte de ferăstrău. Semnalul analitic se poate reprezenta prin mai
multe formule analitice. Se poate modifica durata semnalului audio
generat şi, de asemenea, avem posibilitatea repetării semnalului
generat (Mod redare continuu).
Generatorul virtual implementează schema logică din Fig. 14.
Această schemă logică se regăseşte în structura diagramei
generatorului din Fig. 13, reluată şi explicată în Fig. 15.
Vor fi explicate în continuare porţiunile funcţionale ale
diagramei cu caracter specific generatorului de semnal audio (pentru
detalii privind sinteza semnalelor se poate consulta lucrarea Ghid de
programare în LabVIEW. Aplicaţii pentru prelucrarea semnalelor - a
se vedea bibliografia).
Setare parametri placă de sunet: se referă la obţinerea
parametrilor după care va funcţiona placa de sunet. Aceşti parametri
se conectează, după cum s-a văzut, la intrarea Sound format a
instrumentului virtual SO Config.vi. Aceşti parametri sunt grupaţi într-
o structură de tip cluster, iar metodologia de grupare va fi prezentată
în etapele următoare.

126
Fig. 12. Generator de semnal audio complex. Panoul frontal

127
Fig. 13. Generator de semnal audio complex. Diagrama

128
START

Setare parametri:
- placa de sunet (stereo/mono, rata esantionare, 8/16 biti/esantion)

Setare parametri:
- forma de unda generată (semnal de baza/formula, amplitudine, frecventa, durata)

Generare undă cu parametrii doriţi ca semnal numeric ∆Τ

Condiţionare semnal numeric audio

Redare semnal audio (trimitere către placa de sunet)

Da
Mod redare continuu ?

STOP

Fig. 14. Schema logică pentru implementarea generatorului de sunet.


Varianta 1

a. Se aduce în Panoul Frontal din Controls/Array&Cluster


instrumentul Cluster care se dimensionează pentru a putea include 3
entităţi de tip enumerare (vezi poziţia 1 – Fig. 16)
b. Se aduce în Panoul Frontal din Controls/Ring&Enum
instrumentul Enum care se etichetează sound quality (vezi poziţia 2)
c. Aşa cum se prezintă în poziţia 3, se apelează un popdown menu
din care selectăm Add Item After, pentru a denumi elementele
componente ale controlului enumerare sound quality. Primul element
din enumerarea sound quality se va numi mono. Controlul enumerare

129
sound quality se poziţionează în aria Cluster ca prim element al
structurii. Se repetă operaţia descrisă mai sus: Add Item After, şi
denumim următorul element al enumerării stereo. În acest moment
structura Cluster va conţine un prim element de tip enumerare, numit
sound quality, care are două elemente: mono şi stereo.
d. Repetăm operaţiile de la punctele b şi c pentru alte două
enumerări pe care le includem în structură: rate (cu 4 elemente: 8000,
11025, 22050 şi 44100) şi bits per sample (cu 2 elemente: 8 şi 16).
În acest mod se creează o interfaţă cu utilizatorul foarte
sugestivă.
Afişare perioadă formă de undă: reprezintă porţiunea de
diagramă folosită pentru a afişa forma unei perioade din semnalul
furnizat. Acest lucru este deosebit de util pentru a putea vedea care
este influenţa creşterii frecvenţei unui semnal periodic asupra formei
de undă. Cu cât frecvenţa creşte, cu atât forma de undă a unei perioade
va fi mai distorsionată deoarece va fi reprezentată printr-un număr mai
mic de puncte.
O undă este de fapt o structură (specifică pentru variantele
mai noi ale pachetului software LabVIEW) care se ataşează unei
secvenţe numerice. Secvenţa numerică poate fi reprezentată simplu
printr-un vector (linie sau coloană), dar se pierde informaţia relativă la
momentele de eşantionare la care au fost obţinute aceste valori
numerice. O undă este o structură compusă din 3 elemente:
- Momentul iniţial t0 .
- Perioada de eşantionare sau pasul de discretizare dt .
- Vectorul de valori numerice
Putem spune că unda conţine informaţii care pot identifica o
secvenţă numerică sub forma:

vector : {y 0 , y1 ,....., y n }

  t0 
   (8.2)
unda : {y (t 0 ), y (t 0 + dt ),...., y (t 0 + (n − 1)dt )} =  dt 
 {y , y ,....., y }
  0 1 n 

Evident, valorile numerice ale unei unde se presupun egal


repartizate în timp, deci cu ajutorul unei unde nu putem reprezenta
decât secvenţe numerice obţinute cu rate de eşantionare constante.

130
Fig. 15. Structura diagramei generatorului complex de sunet

131
Fig. 16. Setarea parametrilor plăcii de sunet

Din structura reprezentată de undă se extrage doar vectorul de


date din care se reţin numai primele k eşantioane, unde k reprezintă
numărul de eşantioane/perioadă. Acest lucru se realizează cu
instrumentele Get Waveform Components.vi şi Array Subset.vi (a se
vedea Fig. 17).

132
Fig. 17. Utilizarea instrumentelor Get Waveform Components.vi şi
Array Subset.vi

Condiţionare numerică sunet: transformă reprezentarea în


virgulă mobilă (reală) a secvenţei numerice generate într-o secvenţă de
numere întregi fără semn, reprezentată pe 8 biţi, care este acceptată de
placa de sunet.

Fig. 18. Prelucrarea undei generate

Unda generată este prelucrată de instrumentul Quik Scale 1D


care normalizează valorile secvenţei numerice, deci y (i ) ∈ [− 1,1] . Prin
multiplicare cu 128, valorile vor fi cuprinse între y (i ) ∈ [− 128,128] .
Aceste valori sunt aduse în gama y (i ) ∈ {0,1,.....,255} de către

instrumentul To Unsigned Byte Integer:


şi apoi sunt trimise către placa de sunet care va reda sunetul
corespunzător secvenţei numerice.
Observaţie: Deseori în practică se doreşte furnizarea unui
semnal pe un inteval nedefinit de timp. Din această cauză generatorul
a fost prevăzut cu un buton prin care se poate alege Mod redare: timp
limitat sau continuu.

133
După cum se observă din schema logică din Fig. 14, dacă este
selectată această opţiune se reia programul de la început, mai puţin
partea de configurare a plăcii de sunet. Într-o asemenea implementare,
semnalul audio generat se va auzi cu intermitenţe. Aceste întreruperi,
notate în Fig. 14 cu ∆T , sunt cauzate de timpul necesar sistemului
pentru a genera semnalul pe încă o perioadă de timp dorită. Aceste
întreruperi sunt chiar mai mari în cazul în care folosim un sunet
generat de o formulă deoarece această funcţie nu este precompilată iar
∆T este variabilă, fiind proporţională cu durata semnalului generat.

3.2. Generator complex de semnale audio. Varianta 2


Pentru a micşora neajunsul mai sus menţionat, se poate
modifica structura generatorului, aşa cum se observă în schema logică
din Fig. 19. Panoul frontal şi diagrama sunt prezentate în Fig. 20 şi 21.

START

Setare parametri:
- placa de sunet (stereo/mono, rata esantionare, 8/16 biti/esantion)
Da

Setare parametri:
- forma de unda generată (semnal de baza/formula, amplitudine, frecventa, durata)

Generare undă cu parametrii doriţi ca semnal numeric

∆Τ

Condiţionare semnal numeric audio

Redare semnal audio (trimitere către placa de sunet) ∆Τ1


Nu

Da
Mod redare continuu ? Refresh parametri ?

STOP

Fig. 19. Schema logică pentru implementarea generatorului de sunet.


Varianta 2

134
Fig. 20. Panoul frontal al generatorului de sunet – varianta 2

135
Fig. 21. Diagrama generatorului de sunet – varianta 2

136
În Fig. 22 se prezintă modificarea făcută în program. Butonul
Refresh parametri se va acţiona atunci când facem o modificare a
parametrilor semnalului, în timp ce generatorul funcţionează. La
reluarea buclei se va vedea o diferenţă între valoarea actuală a
butonului şi cea precedentă, moment în care bucla While este părăsită
şi se trece la execuţia buclei While exterioare, care va prelua noile
valori ale parametrilor şi va genera semnalul corespunzător, după care
se reia procesul de redare pe o perioadă nedeterminată (până la oprire
sau o nouă modificare a parametrilor).

Fig. 22. Modificarea diagramei generatorului faţă de varianta 1

Prin modificarea efectuată întreruperile în redarea sunetului se


vor diminua simţitor. Mai mult, această întârziere nu mai este
variabilă şi proporţională cu durata de generare a semnalului ci va fi o
întrerupere sesizată la reluarea buclei de scriere pe placa de sunet.

4. Temă de laborator
4.1. Care este structura unui aplicaţii de achiziţie / generare a
semnalului audio? Ce înţelegeţi prin flux de date hardware şi
software? Ce considerente trebuie respectate la stabilirea frecvenţei de
generare a semnalului şi a numărului de eşantioane / perioadă?
4.2. Să se parcurgă instrumentele virtuale din biblioteca
Graphics & Sound a meniului Functions. Ce înţelegeţi prin conexiuni
de tip Task ID şi Error? Care este rolul instrumentelor SO Config.vi şi
SO Write.vi într-o aplicaţie de generare a semnalului audio?

137
4.3. Descrieţi funcţionarea generatorului virtual de semnal
audio – varianta 1. Implementaţi generatorul, rulaţi aplicaţia pe un PC
prevăzut cu boxe şi generaţi semnale audio de diferite tipuri
(sinusoidal, triunghiular etc.), de diferite frecvenţe şi pe diverse
intervale de timp. Observaţi rolul alegerii frecvenţei de eşantionare în
raport cu frecvenţa semnalului generat. Verificaţi dacă semnalul
generat este în timp real (prin cronometrare). Rulaţi aplicaţia în mod
de redare continuă. Ce observaţi?
4.4. Refaceţi experimentele de la punctul 4.3 utilizând
varianta 2 de generator de semnal audio. Rulaţi aplicaţia în mod de
redare continuă. Care sunt diferenţele pe care le sesizaţi faţă de
varianta 1?

138
ANEXA 1

Placa de achiziţie AT-MIO-16H National Instruments

(Manual de utilizare - AT-MIO-16 User Manual, National


Instruments, SUA, 1995)

- cuprins -

1. Descrierea generală a plăcii de achiziţie AT-MIO-16 141


2. Arhitectura plăcii AT-MIO-16 146
2.1. Circuitul de interfaţă cu canalul I/O al PC-AT 146
2.2. Circuitul de intrări analogice 148
2.3. Achiziţia de date cu placa AT-MIO-16 151
2.4. Controllerul de achiziţie a datelor şi circuitul de
generare a semnalelor de tact (Timing I/O) 155
2.5. Funcţionarea ca numărător/generator de interval de
timp şi ca generator de frecvenţă 157
2.6. Circuitul de ieşiri analogice 159
2.7. Circuitul pentru intrări/ieşiri numerice 161
2.8. Circuitul de interfaţă cu magistrala RTSI 163
3. Configurarea plăcii AT-MIO-16H 165
3.1. Interfaţa cu magistrala AT 165
3.1.1. Selectarea adresei I/O de bază 167
3.1.2. Selectarea canalelor DMA 168
3.1.3. Selectarea întreruperilor 169
3.2. Configurarea intrărilor şi ieşirilor analogice 170
3.2.1. Configurarea intrărilor analogice 171
3.2.2. Configurarea ieşirilor analogice 174
3.2.3. Circuite de izolare galvanică şi
condiţionare semnal 177
3.2.4. Selectarea ceasului prin magistrala RTSI 178
4. Conexiunile plăcii AT-MIO-16 180
4.1. Conexiuni pentru intrări analogice 180

139
4.2. Tipuri de surse de semnal 183
4.2.1. Surse de semnal flotante (floating signal source) 183
4.2.2. Surse de semnal raportate la masă
(ground-referenced signal source) 183
4.3. Configuraţii de intrare analogică 184
4.3.1. Consideraţii asupra conexiunii diferenţiale 184
4.3.2. Consideraţii asupra conexiunilor single-ended 187
4.3.3. Consideraţii privind rejecţia pe mod comun 189
4.4. Conexiuni pentru ieşiri analogice 189
4.5. Conexiuni pentru intrări/ieşiri numerice 191
4.6. Conexiuni de alimentare 192
4.7. Conexiuni pentru semnale de tact şi de sincronizare 192
4.7.1. Conexiuni pentru semnale de tact şi sincronizare
destinate achiziţiei de date 192
4.7.2. Conexiuni pentru semnale de tact şi sincronizare
de uz general 194

140
1. Descrierea generală a plăcii de achiziţie AT-MIO-16

În Fig. 1 este prezentată structura generală a unei plăci de


achiziţie AT-MIO-16 a firmei National Instruments. Prelucrarea
datelor numerice precum şi gestionarea interfeţelor de intrări/ieşiri
analogice/numerice se face sub controlul pachetelor de programe
LabVIEW ale aceleiaşi firme şi al software-ului (driver) NI-DAQ
(National Instruments – Data Acquisition) pentru DOS/ Windows/
LabWindows. Placa de achiziţii AT-MIO-16 poate fi folosită cu
LabVIEW (sub Windows) sau LabWindows (sub DOS sau sub
Windows), programe inovative ce conţin software pentru dezvoltare
de aplicaţii bazate pe această placă de achiziţii. În timp ce LabVIEW
foloseşte programarea grafică, LabWindows măreşte capacităţile
programelor Microsoft C şi QuickBASIC. Ambele pachete conţin
biblioteci extinse pentru achiziţia datelor, controlul instrumentaţiei,
analiza datelor şi reprezentarea grafică a datelor.

Fig. 1. Structura generală a unei plăci de achiziţie tip AT-MIO-16

În Fig. 1, DI sunt dispozitive de intrare (achiziţie) care


cuprind intrări numerice de la traductoare sau senzori de semnale

141
numerice şi intrări analogice dotate cu convertor analog-numeric
(CAN) de la traductoarele sau senzorii de semnale analogice. DO sunt
dispozitive de ieşire care cuprind ieşiri numerice pentru acţionări
numerice sau semnalizări şi ieşiri analogice dotate cu convertoare
numeric-analogice (CNA) pentru comenzile analogice. PC reprezintă
calculatorul personal în care se introduce placa de achiziţie, calculator
pe care este instalat LabVIEW, iar IU reprezintă interfaţa utilizator.
În afara legăturilor directe cu procesul fizic ce trebuie condus,
este necesară existenţa unor legături numerice cu alte sisteme, fie
sisteme de aceeaşi natură (cum ar fi cazul sistemelor de conducere
distribuite în care se face legătura informaţională între calculatoarele
de proces), fie cu instrumente de măsură (osciloscoape, voltmetre
numerice etc.) sau regulatoare numerice. Placa este prevăzută cu două
tipuri de legături numerice standardizate: legături seriale RS 232C şi
legături paralele IEEE 488.
Placa AT-MIO-16 poate fi conectată la sistemul SCXI (Signal
Conditioning eXtension for Instrumentation), bazat pe module care
permit achiziţia a peste 3000 de tipuri de semnale analogice de la
termocupluri, termorezistenţe, surse de curent, de tensiune etc. precum
şi achiziţia/generarea de semnale numerice de comunicaţie şi control.
Placa AT-MIO-16 asigură tipurile specifice de funcţii ale unei
plăci de achiziţie: intrări analogice, ieşiri analogice, intrări/ieşiri
numerice, temporizare (generare de interval de timp) şi numărare.
Placa de achiziţie AT-MIO-16 se conectează pe placa de bază a unui
calculator personal. În Fig. 2 este prezentată varianta compatibilă PC-
AT (Advanced Technology).
Placa de achiziţie comunică cu placa de bază a calculatorului
prin intermediul Canalului I/O pentru PC/AT. Circuitul de interfaţă
constă dintr-o magistrală de adresă de 24 de biţi, o magistrală de date
de 16 biţi, o magistrală de control (arbitrare) a accesului direct la
memorie (DMA), linii de întrerupere şi câteva semnale de comandă şi
control.
RTSI Bus este magistrala RTSI (Real-Time System
Integration) cu care se pot interfaţa toate plăcile din seria National
Instruments (NI) AT. Interfaţa pentru magistrala RTSI are 7 linii
trigger şi o linie pentru ceasul de sistem şi permite utilizarea mai
multor plăci NI din seria AT în acelaşi PC, plăci care partajează
semnalele de pe această magistrală.

142
Fig. 2. Schema bloc a plăcii de achiziţie AT-MIO-16

Intrările analogice şi circuitele de achiziţie de date conţin


(adresează) până la 16 canale de intrări analogice cu amplificare
programabilă software şi un CAN pe 12 biţi. Suplimentar, AT-MIO-
16 conţine circuite de achiziţie a datelor pentru generarea semnalelor
de timp pentru conversiile analog-numerice multiple şi alte opţiuni
avansate. Circuitul pentru intrări analogice constă dintr-un multiplexor
de intrare, circuit de selecţie a modului de multiplexare (16 intrări
asimetrice – single-ended – sau 8 diferenţiale), un amplificator de
instrumentaţie cu amplificare programabilă, un circuit de eşantionare
şi reţinere pentru implementarea unui CAN pe 12 biţi şi o stivă FIFO
(First In First Out) de 16 cuvinte pe 16 biţi care stochează rezultatele
conversiei. CAN este cu aproximări succesive şi suportă la intrare 3
game de tensiuni: bipolare, cu valori între -10V...10V, -5V...5V şi
unipolară între 0V...+10V. Convertorul analog-numeric este disponibil
în două variante diferite în raport cu timpul maxim de conversie: 25
µ sec sau 9 µ sec. Achiziţia de date se poate face pe un singur canal
sau pe mai multe canale, când avem de-a face cu aşa numita achiziţie
de date scanată. Ratele (frecvenţele) maxime de achiziţie depind de
performanţele CAN şi sunt de 100.000 eşantioane/secundă pentru
CAN cu timp maxim de conversie de 9 µ sec sau de 40.000
eşantioane/secundă pentru CAN de 25 µ sec.

143
Fiecare placă de achiziţie din seria AT-MIO-16 are un nume
diferit care scoate în evidenţă principalele caracteristici constructive.
Astfel, avem 4 variante cu numele de AT-MIO-16L/H-9/25.
Codificarea L/H se referă la amplificările programabile pe partea de
intrări analogice: cele codificate cu H (High) sunt prevăzute cu
amplificare programabilă setată la 1, 2, 4 sau 8 iar cele codificate L
(Low) sunt prevăzute cu amplificări de 1, 10, 100 sau 500 de ori şi pot
fi utilizate la achiziţia de semnal de nivel scăzut. Codificarea 9/25 se
referă la timpul maxim de conversie al CAN şi anume 9 sau 25 µ sec.
În ceea ce priveşte Circuitul ieşirilor analogice, placa este
prevăzută cu două canale de conversie numeric-analogică pe 12 biţi,
fiecare canal fiind prevăzut cu ieşiri unipolare sau bipolare cu selecţie
internă sau externă a tensiunii de referinţă. Pentru fiecare canal de
ieşire analogică, CNA generează un curent proporţional cu tensiunea
de intrare de referinţă, multiplicat cu un cod numeric încărcat în
prealabil într-un buffer propriu. Acest cod este tocmai numărul care va
fi convertit în semnal analogic. Amplificatoarele operaţionale de la
ieşire convertesc acest curent de ieşire al CNA într-un semnal de
tensiune transmis la conectorii de ieşire. Frecvenţa maximă de
generare a datelor este de 250000 de eşantioane/sec.
Circuitul pentru intrări/ieşiri numerice este prevăzut cu 8 linii
de intrare/ieşire numerice divizate în două porturi de câte 4 linii
fiecare. Ieşirile numerice sunt grupate într-un registru de ieşire de 8
biţi, câte 4 pentru fiecare port de ieşire. În mod asemănător, avem un
registru de intrare pe 8 biţi. Ambele registre sunt compatibile TTL şi
acţionează TSR (Three State Logic, HiZ).
Controllerul de achiziţie date gestionează operaţiile de
achiziţie iar Circuitul de generare a semnalelor de tact (Timing I/O)
funcţiile generale de intrare/ieşire. Ambele blocuri funcţionează pe
baza unui circuit de numărare/generare de interval de timp, care
conţine 5 numărătoare programabile pe 16 biţi, compatibile TTL.

Plăcile disponibile în laborator sunt de tip AT-MIO-16H-9:


AT – se referă la compatibilitatea cu placa de bază a
calculatoarelor IBM-PC în tehnologie AT (Advanced Technology).
MIO – abrevierea de la Multifunction Input/Output Board.
16 – se referă la numărul de canale de intrare analogică: 16
canale asimetrice (single-ended) sau 8 canale diferenţiale.

144
H – se referă la High-level analog inputs, adică la semnale
analogice de intrare de nivel mare, care nu necesită amplificări
programabile mari pe placă (amplificările pot fi: 1, 2, 4, 8).
9 – se referă la timpul minim de achiziţie pe un canal, adică 9
µ sec. Frecvenţa (rata) maximă de achiziţie este de 100.000 de
eşantioane pe secundă.
Placa de achiziţie AT-MIO-16H nu dispune de tehnologie
Plug-and-play (specifică îndeosebi plăcilor PCI - Peripheral
Component Interconnect), fiind o placă tip ISA (Industry Standard
Architecture) şi prin urmare este prevăzută cu un comutator DIP (Dual
Inline Pin – permite selectarea adresei de bază a plăcii) şi un set de
jumpere care trebuie setate în funcţie de arhitectura în care este
folosită placa. Pentru setarea şi utilizarea plăcii de achiziţie AT-MIO-
16H sunt necesare: placa de achiziţie, driverul NI-DAQ, software-ul
de aplicaţie LabVIEW (sau LabWindows sau LabWindows/CVI) şi un
calculator.
Observaţie: Pentru programarea plăcii se poate utiliza şi
programarea la nivel de regiştri, care este însă dificilă, fiind
recomandată folosirea NI-DAQ şi a unui soft de aplicaţie.

Placa de achiziţie AT-MIO-16H conţine:


• 16 canale single-ended de intrări analogice în domeniile
0÷5V, 0÷10V sau 8 canale diferenţiale în domeniile -5V ÷5V,
-10÷10V funcţie de configuraţia hardware;
• 2 canale de ieşiri analogice în domeniile 0÷10V, –10 ÷10V;
• 2 porturi numerice I/O pe 4 biţi fiecare;
• 5 numărătoare independente pe 16 biţi;
• un generator de frecvenţă până la 1 MHz;
AT-MIO-16 poate fi instalată în orice slot disponibil de 16 biţi
(AT Style - ISA) din calculator. AT-MIO-16 nu poate lucra dacă este
instalată într-un slot expandat pe 8 biţi (PC Style).

Observaţie: Specificaţiile tehnice complete ale plăcii, precum


şi procedurile de calibrare sunt prezentate în manualul de utilizare în
limba engleză furnizat de National Instruments: AT-MIO-16 User
Manual.

145
2. Arhitectura plăcii AT-MIO-16
Aşa cum se poate observa din Fig. 2 şi din descrierea generală
din paragraful precedent, placa AT-MIO-16 conţine următoarele
blocuri principale:
- circuitul de interfaţă cu canalul I/O al PC-AT;
- circuitul de intrări analogice;
- circuitul de control al achiziţiei datelor;
- circuitul de generare a semnalelor de tact (Timing I/O);
- circuitul de ieşiri analogice;
- circuitul pentru intrări/ieşiri numerice;
- circuitul de interfaţă cu magistrala RTSI.
Magistralele interne de date şi control interconectează
blocurile componente.

2.1. Circuitul de interfaţă cu canalul I/O al PC-AT


Placa AT-MIO-16 dispune de un adaptor de 16 biţi la canalul
I/O al calculatorului PC-AT. Canalul I/O constă într-o magistrală de
adrese de 24 de biţi, o magistrală de date de 16 biţi, un controller
(arbitru) de magistrală DMA, linii de întrerupere şi semnale de
control. Schema bloc cu arhitectura internă este prezentată în Fig. 3.
Circuitul de interfaţă cu canalul I/O este format din regiştri de
adrese, un circuit decodificator de adrese, un buffer de date, un bloc de
control (generează semnale de control şi sincronizare a interfeţei cu
canalul I/O al PC-AT), un circuit de control al întreruperilor şi un
circuit arbitru DMA.
Circuitul de interfaţă cu canalul I/O al PC-AT generează
semnalele necesare controlului şi monitorizării operaţiilor din
circuitele cu funcţii multiple ale AT-MIO-16. Canalul I/O al PC-AT
are 24 linii de adresă; AT-MIO-16 foloseşte 10 din aceste linii pentru
a decodifica adresa de placă. În acest caz, domeniul adreselor de pe
placă este 000H-3FFH. Semnalele SA5…SA9 sunt folosite pentru
generarea semnalului de validare a plăcii. SA0…SA4 sunt folosite
pentru selectarea regiştrilor de pe placă. Aceste linii de adresă sunt
accesate de regiştrii de adresă la începutul transferului I/O. Liniile de
adresă accesate trimit aceste adrese şi spre circuitul de decodificare a
adresei pe timpul întregului ciclu de transfer I/O. Circuitul de
decodificare a adresei generează semnale de selectare a registrului
(care specifică ce registru al AT-MIO-16 va fi accesat). Bufferul de

146
date controlează direcţia transferului de date pe liniile bidirecţionale
de date în funcţie de tipul transferului (scriere sau citire).

Fig. 3. Diagrama circuitului de interfaţă cu canalul I/O al PC-AT

Blocul de control şi sincronizare al interfeţei cu canalul I/O al


PC-AT este folosit pentru generarea semnalelor read-and-write şi
pentru definirea ciclurilor de transfer. Un ciclu de transfer poate fi
orice operaţie de I/O de date pe 8 sau 16 biţi. AT-MIO-16 semnalează
prin canalul I/O al PC-AT momentul în care placa poate fi accesată,
când este gata pentru alt transfer şi mărimea cuvântului de date din
transferul I/O curent.
Circuitul de control al întreruperilor rutează orice cerere de
întrerupere validă prin selectarea liniei de cerere de întrerupere.
Cererile de întrerupere sunt semnale de ieşire three state ce permit
plăcii AT-MIO-16 să împartă linia de întrerupere cu alte dispozitive.
Unsprezece linii de întrerupere sunt disponibile pentru AT-MIO-16:
IRQ3, IRQ4, IRQ5, IRQ6, IRQ7, IRQ9, IRQ10, IRQ11, IRQ12,
IRQ14 şi IRQ15. AT-MIO-16 poate genera cinci tipuri diferite de
întreruperi:

147
- atunci când rezultatul unei conversii analog-numerice este
disponibil pentru a fi citit din memoria FIFO;
- atunci când operaţia de achiziţie a datelor este completă;
- atunci când este recepţionat un semnal (impuls) de terminare a
transferului DMA;
- atunci când este detectat un front crescător al unui semnal la
ieşirea OUT 2 a circuitului de numărare/temporizare Am9513A;
- atunci când apar semnalele de eroare OVERFLOW sau
OVERRUN.
Fiecare dintre aceste întreruperi este individual validată sau
invalidată.
Dacă transferul DMA este validat, circuitul de control DMA
generează cereri DMA de fiecare dată când rezultatul măsurării
analog-numerice este disponibil la bufferul FIFO al plăcii. Circuitul
DMA suportă transferuri DMA pe 16 biţi pe canalul I/O al PC-AT.
Canalele DMA 5, 6 şi 7 ale canalului I/O PC-AT sunt disponibile
pentru astfel de transferuri. În cadrul circuitului DMA, pentru
transferul DMA, poate fi selectat fie modul de transfer mono-canal, fie
modul dublu-canal.
2.2. Circuitul de intrări analogice
Placa este prevăzută cu 16 canale single-ended de intrări
analogice, numerotate de la 0 la 15. Intrările pot fi configurate
folosind jumpere (ştrapuri) şi ca 8 canale diferenţiale de intrări
analogice, numerotate de la 0 la 7. Placa AT-MIO-16 se poate folosi
împreună cu placa multiplexoare de intrări analogice AMUX-64T
pentru extinderea intrărilor la 64 de canale single-ended (32
diferenţiale) sau, prin legarea în cascadă a maximum 4 plăci AMUX-
64T, se pot obţine 256 de canale single-ended (sau 128 canale
diferenţiale). Placa de achiziţie poate fi folosită împreună cu modulul
SCXI pentru condiţionarea semnalelor de intrare.
Circuitul de intrări analogice constă dintr-un multiplexor de
intrare, jumpere de selectare a modului multiplexor, amplificator de
instrumentaţie (AI) cu câştig programabil software (PGA –
Programmable Gain Amplifier), un amplificator sample-and-hold
(circuit de eşantionare/memorare), un convertor analog-numeric pe 12
biţi şi o stivă FIFO cu opţiune de extindere a semnului până la bitul
16. Schema bloc a circuitului de intrări analogice este prezentată în
Fig. 4.

148
Fig. 4. Circuitul de intrări analogice şi controllerul de achiziţie

Multiplexorul de intrare constă din 2 multiplexoare CMOS cu


intrări analogice şi are 16 canale analogice de intrare. Multiplexorul
MUX0 este conectat la canalele de intrări analogice de la 0 la 7, iar
MUX1 la canalele 8…15. Intrările multiplexoarelor sunt prevăzute cu
protecţie la supratensiuni de intrare de ±35V dacă placa este
alimentată şi ±20V dacă placa este nealimentată.
Ştrapurile de selecţie a modului de multiplexare configurează
canalele analogice de intrare ca 16 intrări single-ended sau ca 8 intrări
diferenţiale. Atunci când este selectat modul single-ended, ieşirile
celor două multiplexoare sunt legate împreună şi rutate la intrarea
pozitivă a AI. Intrarea negativă a AI este legată la masa AT-MIO-16
pentru intrare RSE (Referenced Single-Ended input), sau pe calea de
întoarcere a semnalelor analogice de intrare, via AI SENSE din
conectorul I/O pentru intrarea NRSE (NonReferenced Single-Ended
input). Atunci când este selectat modul DIFF, ieşirea MUX0 este
rutată la intrarea pozitivă a AI şi ieşirea MUX1 la cea negativă.
Pe placa AT-MIO-16 amplificatorul de instrumentaţie AI
îndeplineşte două scopuri. AI converteşte un semnal diferenţial de
intrare în semnal single-ended, ţinând cont de masa AT-MIO-16, cu o
rată de rejecţie minimă a intrării de 85 dB. Această conversie permite
extragerea semnalului analogic de intrare prin separarea de tensiunea
de mod comun sau zgomote înainte de începerea eşantionării şi a
conversiei. Un al doilea rol al AI este de a amplifica semnalul

149
analogic de intrare, înainte ca acesta să fie eşantionat şi convertit,
această operaţie crescând rezoluţia şi acurateţea măsurătorii. Câştigul
AI este selectat prin software: la AT-MIO-16L se pot selecta câştiguri
de 1, 10, 100 şi 500, iar la AT-MIO-16H câştiguri de 1, 2, 4 şi 8.
Selecţia canalului analogic de intrare şi a câştigului este
controlată de o memorie Mux-Gain. Aceasta furnizează doi biţi de
control pentru setarea amplificării AI şi patru biţi de adresă pentru
multiplexor şi pentru circuitul de selecţie a modului de multiplexare.
Amplificatorul sample-and-hold (SHA) permite realizarea
conversiei analog-numerice de către convertorul analog-numeric
(ADC – Analog to Digital Converter). La începutul conversiei, SHA
trece în modul hold (păstrează) care menţine la ieşire o tensiune de
valoare staţionară (valoarea care a fost la începutul perioadei de hold)
indiferent de schimbarea tensiunii de intrare. Acest SHA furnizează
CAN o tensiune stabilă atât timp cât este executată conversia analog-
numerică. Fără SHA, semnalul analogic de intrare poate varia pe
durata conversiei, aceasta fiind o cauză a erorilor apărute în timpul
conversiei. Prin izolarea CAN de semnalul analogic de intrare pe
durata conversiei se poate comuta intrarea multiplexorului şi se
permite AI să se stabilizeze la o nouă valoare, în timp ce CAN
converteşte vechea valoare. Această izolare optimizează performanţele
circuitului de intrare în sensul măririi vitezei şi a realizării de
conversii analog-numerice multiple.
Convertorul analog-numeric este un convertor pe 12 biţi cu
aproximaţii succesive. Rezoluţia de 12 biţi permite furnizarea la
ieşirea CAN a unui cuvânt numeric pe 12 biţi care reprezintă valoarea
nivelului de tensiune de la intrare. CAN suportă trei domenii de intrare
selectabile prin jumpere pe placa AT-MIO-16: -10 ÷ +10V, -5 ÷ +5V
şi 0 ÷ 10V. CAN-ul de pe placa AT-MIO-16 este disponibil în două
variante: cu durata maximă de conversie de 9 sau 25 µ sec.
Atunci când conversia analog-numerică este realizată, CAN-ul
transferă rezultatul conversiei în bufferul FIFO al plăcii, care are 12
biţi lăţime şi lungime de 16 cuvinte. La terminarea unei conversii
analog-numerice, valoarea rezultată este salvată în memoria FIFO
pentru a fi citită ulterior, permiţând convertorului să înceapă o nouă
conversie. Bufferul FIFO poate colecta 16 valori ale conversiilor
analog-numerice înainte ca informaţia să fie pierdută, astfel că
software-ul sau DMA are timp suficient pentru sincronizarea cu

150
hardware-ul de achiziţie. Dacă în memoria FIFO sunt stocate mai mult
de 16 cuvinte înainte ca aceasta să fie citită, apare o eroare de tip A/D
FIFO Overflow şi informaţia rezultată în urma conversiilor este
pierdută. Memoria FIFO generează un semnal atunci când conţine
rezultatul unei conversii analog-numeric, semnal care poate fi utilizat
pentru a genera o cerere DMA sau o întrerupere. Un circuit de
extensie pentru semn plasat la ieşirea memoriei FIFO adaugă 4 biţi
(MSB) şi anume biţii 15…12 la ieşirea memoriei FIFO care este pe 12
biţi (biţii de la 11 la 0), astfel că rezultatul final al conversiei este pe
16 biţi. Circuitul de extensie pentru semn este programabil software, şi
poate genera numere în cod binar natural sau în cod complement faţă
de doi. În cod binar natural, biţii 15…12 sunt 0 şi rezultă un domeniu
între 0 şi 4.095. În cod complement faţă de doi, bitul MSB al
rezultatului pe 12 biţi al conversiei (bitul 11) este inversat şi extins la
biţii 15…12, furnizând un domeniu între –2.048 şi 2.047.

2.3. Achiziţia de date cu placa AT-MIO-16

Placa poate realiza achiziţii de date pe un singur canal sau pe


mai multe canale (single-channel data acquisition, respectiv multiple-
channel data acquisition). În cazul achiziţiei mono-canal se selectează
un singur canal de intrare analogică şi se setează o singură amplificare
(care determină, în funcţie de domeniul de intrare, un domeniu efectiv
de intrare – a se vedea subcapitolul de configurare a intrărilor
analogice). La fiecare perioadă de eşantionare este realizată o singură
conversie analog-numerică pe canalul respectiv. Placa AT-MIO-16
permite trei tipuri de achiziţii de date: achiziţie de date mono-canal,
achiziţie de date multi-canal cu scanare continuă tip round-robin şi
achiziţie de date multi-canal cu intervale de scanare.
În cazul achiziţiei multi-canal, placa AT-MIO-16 scanează un
set de canale de intrări analogice, fiecare cu propria sa amplificare
(domeniu efectiv de intrare). În cadrul acestei metode, placa stochează
o listă sub forma unei secvenţe care precizează canalele analogice care
trebuie citite, precum şi amplificările setate pentru canalele respective.
Secvenţa poate conţine de la una până la 16 perechi de tip canal
analogic/amplificare setată. În timpul citirii, circuitul de intrări
analogice realizează câte o conversie analog-numerică pentru fiecare
canal analogic (fiecare pereche canal/amplificare) din secvenţa
respectivă. În timpul realizării conversiei analog-numerice curente,

151
placa comută pe canalul analogic următor din secvenţă, astfel încât
achiziţia să fie cât mai rapidă. Atunci când s-a ajuns la sfârşitul
secvenţei, placa aşteaptă până la terminarea unui interval de scanare
(de citire) înainte de a relua achiziţia canalelor din secvenţă. Canalele
sunt citite în mod repetat la începutul fiecărui interval de citire până
când este achiziţionat numărul de eşantioane precizat de utilizator.
Pentru a exemplifica tehnica de achiziţie multi-canal, să
considerăm că avem o secvenţă de 4 canale analogice, fiecare având
setată o anumită amplificare. Vom presupune că am setat intervalul de
scanare la 10 secunde, iar perioada sau intervalul inter-canal
(intervalul de timp necesar pentru trecerea de la un canal la altul) este
de 25 µ sec. Atunci, secvenţa de 4 canale va fi citită la începutul
intervalului de citire de 10 secunde, în 100 µ sec, cu 25 µ sec perioada
inter-canal. Placa aşteaptă apoi până la terminarea intervalului de
citire de 10 secunde, după care reia automat citirea celor 4 canale, şi
aşa mai departe până când se achiziţionează numărul de eşantioane
cerut. Pentru realizarea unei achiziţii cât mai rapide, se poate seta
intervalul de citire la 0 secunde, placa înţelegând prin aceasta că
reluarea citirii secvenţei se va face imediat după ce este citit ultimul
canal analogic din secvenţă, ceea ce corespunde unei scanări continue,
de tip round-robin.
Rata de scanare, denumită şi frecvenţă sau rată de achiziţie
sau de citire (scan rate), determină de câte ori pe secundă sunt
achiziţionate date de la canalele de intrare. De exemplu, scanarea
canalelor de intrare cu o rată de 10 scanări pe secundă semnifică faptul
că sunt luate 10 eşantioane la fiecare secundă de la toate canalele de
intrare din lista specificată. Inversul acestei rate este chiar intervalul
de scanare sau de citire. Un semnal de tact (intern - de pe placă - sau
extern), numit tact sau ceas de scanare (scan clock) fixează mărimea
ratei de scanare, care controlează intervalul de scanare. Intervalul de
timp între achiziţiile de la două canale consecutive este, după cum s-a
precizat în exemplul anterior, intervalul sau perioada inter-canal
(channel interval sau channel skew), inversa acestui interval fiind rata
inter-canal.
Trecerea de la un canal la altul în cadrul unei scanări se face
prin urmare într-un interval de timp mai mic decât intervalul de
scanare, iar semnalul de ceas care decide trecerea de la un canal la
altul poartă numele de tact de canal (channel clock).

152
Dacă placa realizează o achiziţie multi-canal de tip round-
robin, este utilizat doar semnalul de ceas de canal (Fig. 5), în acest caz
fiind vorba de o scanare repetitivă la intervale egale. Dacă sunt
utilizate ambele semnale de ceas (de scanare şi de canal) atunci
achiziţia multi-canal este cu intervale de scanare (Fig. 6.).
Canal

Interval inter-canal
Fig. 5. Scanarea multi-canal de tip round-robin (cu channel clock)

Canal

Interval inter-canal Interval scanare


Fig. 6. Achiziţia multi-canal cu intervale de scanare (cu scan clock şi
channel clock)

Pe timpul achiziţiei de date mono-canal, memoria mux-gain


este setată să selecteze amplificarea canalului analogic de intrare
înainte de iniţializarea achiziţiei de date. Această amplificare şi setarea
multiplexorului rămân constante pe întreaga perioada a procesului de
achiziţie de date; de aceea, toate datele de conversie analog-numerică
sunt citite de la un singur canal.
Tabelul 1. Rata de scanare în funcţie de tipul achiziţiei
Tip placă/ Amplificare Rata de scanare
Tip achiziţie (Câştig) (scan rate)
Achiziţie de date monocanal:
AT-MIO-16(H/L)-25 orice câştig setat 40 k eşantionări/sec
AT-MIO-16(H/L)-9 orice câştig setat 100 k eşantionări/sec
Achiziţie de date multicanal:
AT-MIO-16(H/L)-25 câştig = 1, 2, 4, 8 40 k eşantionări/sec
câştig = 10, 100 40 k eşantionări/sec
câştig = 500 20 k eşantionări/sec
AT-MIO-16(H/L)-9 câştig = 1, 2, 4, 8 100 k eşantionări/sec
câştig = 10 100 k eşantionări/sec
câştig = 100 70 k eşantionări/sec
câştig = 500 20 k eşantionări/sec

153
Mărimea ratei de scanare depinde de perioada de conversie a
CAN şi de timpul necesar operaţiei sample-and-hold. Atunci când se
citesc mai multe canale (achiziţii multi-canal), rata de achiziţie este
limitată şi de timpul de stabilizare al multiplexoarelor şi AI, datorat
comutării de pe un canal pe altul. După ce are loc comutarea intrării
multiplexoarelor, AI trebuie să permită stabilizarea valorii unui nou
semnal de intrare înaintea realizării conversiei, în caz contrar precizia
dorită nu va fi realizată. Timpul de răspuns depinde de amplificarea
selectată şi de alţi factori cum ar fi: modulul de amplificare SCXI
(dacă este utilizat), setările filtrelor, impedanţa sursei care se măsoară.
Placa AT-MIO-16 poate achiziţiona date mono-canal sau
multi-canal prin utilizarea următoarelor moduri de achiziţie:
modul posttrigger
modul pretrigger
modul dublu bufferat (double-buffered)
modul AMUX-64T
modul SCXI
Modul posttrigger realizează achiziţia unui număr specificat
de eşantioane după recepţionarea unui semnal trigger (de
sincronizare). Achiziţia posttrigger (posttrigger-are) se poate iniţializa
prin software sau prin aplicarea unui impuls pe intrarea
STARTTRIG* a conectorului I/O al plăcii AT-MIO-16 (pentru
identificarea pinilor conectorului I/O a se vedea capitolul 4). După ce
bufferul care stochează datele achiziţionate (de lungime specificată de
utilizator) este plin, achiziţia este stopată.
În cadrul modului pretrigger datele sunt achiziţionate şi
înainte şi după primirea unui semnal trigger. Achiziţia de date poate fi
iniţiată ca şi în modul posttrigger, prin software sau prin aplicarea
unui impuls pe STARTTRIG*. Placa colectează datele într-un buffer
precizat de utilizator (fără a număra eşantioanele şi fără oprire) până
când recepţionează un impuls pe intrarea STOPTRIG a conectorului
I/O. După aceasta, placa va colecta un număr specificat de eşantioane
după care stopează achiziţia. Bufferul este tratat ca un buffer circular,
adică după ce întregul buffer este completat, datele sunt stocate de la
început prin suprascrierea datelor celor mai vechi. La terminarea
achiziţiei, bufferul conţine eşantioane atât de dinaintea cât şi după
apariţia semnalului trigger. Numărul de eşantioane salvate în buffer
depinde de lungimea acestuia (specificată de utilizator) şi de numărul
specificat de eşantioane de achiziţionat după apariţia semnalului de
trigger.

154
Modul de achiziţie de tip double-buffered utilizează o tehnică
asemănătoare cu modul pretrigger, completând bufferul specificat de
utilizator în mod continuu. Spre deosebire de modul pretrigger, aici se
apelează la un al doilea buffer, care preia datele vechi din primul
buffer, înainte ca acestea să fie suprascrise.
Modul AMUX-64T presupune utilizarea uneia sau mai multor
plăci AMUX-64T pentru extinderea numărului de intrări analogice
disponibile. Semnalele analogice se conectează în acest caz la placa
AMUX-64T şi nu la placa AT-MIO-16. Modul SCXI presupune
utilizarea unor plăci (module) de condiţionare a semnalelor SCXI.

2.4. Controllerul de achiziţie a datelor şi circuitul de


generare a semnalelor de tact (Timing I/O)

Placa AT-MIO-16 conţine un circuit de control al achiziţiei de


date, al cărui rol în cadrul circuitului de intrări analogice poate fi
observat în Fig. 4. Acest controller permite generarea de semnale de
tact (cum ar fi scan clock, channel clock etc.) pentru controlul automat
al conversiilor analog-numerice incluzând totodată şi opţiuni avansate
cum ar fi triggerare externă şi generare semnale de ceas.
Controllerul de achiziţie a datelor generează semnale de tact şi
semnale care iniţiază operaţia de achiziţie de date, iniţiază fiecare
conversie analog-numerică, validează operaţiile de achiziţie de date.
Sursele pentru aceste semnale sunt fie numărătoarele circuitului
Am9513A de pe placă, fie surse externe. În acest ultim caz semnalele
provin din exterior prin conectorul I/O al AT-MIO-16 sau de la alte
plăci din seriile AT conectate la magistrala RTSI.
Circuitul Am9513A pe 16 biţi conţine 5 numărătoare (schema
bloc a unui numărător este prezentată în Fig. 7):
• Numărătorul 1 se foloseşte pentru citirea automată multi-
canal cu placa AMUX-64T sau cu module SCXI. Dacă nu se
utilizează nici una dintre acestea, numărătorul 1 este disponibil pentru
realizarea unor funcţii generale de numărare.
• Numărătorul 2 se foloseşte implicit pentru generarea
tactului de citire multi-canal, atunci când intervalul de citire (scan
interval) este diferit de 0. Numărătorul 2 poate fi utilizat pentru
generarea de semnale de tip formă de undă (waveform). Dacă se
citeşte numai un canal sau se opreşte tactul, numărătorul 2 este
disponibil pentru diverse funcţii generale de numărare.

155
SOURCE

Numărător OUT

GATE

Fig. 7. Schema bloc a unui numărător din circuitul Am9513A

• Numărătorul 3 generează tactul pentru controlul perioadei


de eşantionare şi este totdeauna rezervat pentru operaţiile de achiziţie.
• Numărătorul 4 este rezervat pentru numărarea
eşantioanelor în cadrul achiziţiei de date.
• Numărătorul 5 este folosit dacă numărul de eşantioane este
mai mare de 65.535. În caz contrar numărătorul 5 este disponibil
pentru realizarea unor funcţii generale de numărare.
Achiziţia de date presupune utilizarea următoarelor tipuri de
semnale:
- start trigger – este un semnal care iniţializează secvenţa de
achiziţie de date. Acest semnal poate fi furnizat din exterior prin
intrarea STARTRIG* a conectorului I/O sau prin software.
- sample counter – înregistrează numărul conversiilor analog-
numerice (eşantioanelor) şi stopează achiziţia de date atunci când a
fost achiziţionat numărul specificat de eşantioane.
- conversion pulse – este un semnal care generează un impuls
la fiecare perioadă de eşantionare, iniţializând conversia analog-
numerică. Semnalul poate fi generat de către circuitul Am9315 de pe
placă (printr-un tact de ceas programabil) sau poate fi furnizat din
exterior prin intrarea EXTCONV* a conectorului I/O al plăcii.
- stop trigger – este un semnal utilizat în cadrul achiziţiei
pretrigger pentru a informa placa AT-MIO-16 că poate opri achiziţia
de date atunci când a fost colectat numărul specificat de eşantioane.
Până la aplicarea semnalului stop trigger la intrarea STOPTRIG a
conectorului I/O, achiziţia de date se desfăşoară în mod continuu,
scriind şi rescriind date în buffer.
- timebase clock – este un semnal de ceas care constituie baza
de timp pentru controlul perioadei de eşantionare. Acest semnal poate
fi generat intern de către placă, fiind posibile frecvenţe de 1 MHz, 100
KHz, 10 KHz, 1 KHz sau 100 Hz, sau din exterior, prin aplicarea unui
semnal de ceas la intrarea SOURCE5 a conectorului I/O.
156
Circuitul de numărare/sincronizare Am9513A este utilizat şi
de către circuitul de generare a semnalelor de tact pentru generarea
unor semnale de tact şi numărare de uz general (a se vedea Fig. 2
pentru înţelegerea rolului circuitelor de achiziţii de date şi timing I/O
în cadrul arhitecturii generale a plăcii). Schema bloc a circuitului de
generare a semnalelor de tact de uz general este prezentată în Fig. 8.

Fig. 8. Schema circuitului de generare a semnalelor de tact

Circuitul de generare a semnalelor de tact permite


funcţionarea plăcii ca numărător/generator de interval de timp, precum
şi ca generator de frecvenţă, programabil.

2.5. Funcţionarea ca numărător/generator de interval de


timp şi ca generator de frecvenţă
Funcţionarea ca numărător/generator de intervale de timp
După cum s-a văzut în paragraful precedent, placa AT-MIO-
16 conţine circuitul integrat de numărare / sincronizare Am9513A care
are 5 numărătoare/temporizatoare individuale pe 16 biţi şi generator
de frecvenţă, programabil pe 4 biţi.
Pentru operaţiile de numărare, numărătoarele pot utiliza
diverse baze de timp, folosind fie semnalele furnizate la intrările

157
SOURCE sau GATE, fie bazele de timp interne furnizate de circuitul
Am9513A. Sunt disponibile următoarele baze de timp interne:
- ceas de 1 MHz (rezoluţie 1 µs);
- ceas de 100 KHz (rezoluţie 10 µs);
- ceas de 10 KHz (rezoluţie 100 µs);
- ceas de 1 KHz (rezoluţie 1 ms);
- ceas de 100 Hz (rezoluţie 10 ms).
Un numărător poate fi programat să utilizeze ca bază de timp
ieşirea unui numărător de rang imediat inferior, fiind posibilă astfel
concatenarea numărătoarelor (de exemplu, numărătorul 2 poate fi
programat să numere ieşirea numărătorului 3, ceea ce conduce la
crearea unui numărător pe 32 de biţi).
Un numărător poate fi configurat pentru numărare pe front
coborâtor sau crescător al semnalului bază de timp (indiferent dacă
acest semnal este o bază de timp internă, un semnal pe intrarea
SOURCE, pe intrarea GATE sau provine de la un numărător de rang
imediat inferior).
Intrarea GATE poate fi folosită pentru declanşarea sau oprirea
unei operaţiuni de numărare. Circuitul Am9513A are disponibile 8
moduri de declanşare:
- fără declanşare - numărătorul se poate porni/opri prin soft;
- declanşare pe nivel înalt (high-level gating) - numărătorul
este activ când intrarea GATE este în 1 logic; numărătorul este oprit
când intrarea este în 0 logic;
- declanşare pe nivel scăzut (low-level gating) - numărătorul
este activ când intrarea pe poartă (GATE) este în 0 logic; numărătorul
este oprit când intrarea este în 1 logic;
- declanşare pe front crescător - numărătorul este activat pe
frontul crescător al semnalului de la intrarea GATE;
- declanşare pe front coborâtor - numărătorul este activat pe
frontul descrescător al semnalului de la intrarea pe poartă;
- declanşare pe impulsul numărătorului inferior - numărătorul
este activ când numărătorul de rang imediat inferior din listă termină
numărarea şi generează un impuls terminal count;
- declanşare pe nivel 1 logic al numărătorului n+1 -
numărătorul este activ atunci când intrarea GATE a numărătorului de
rang imediat superior din listă este în 1 logic, altfel numărarea este
suspendată;

158
- declanşare pe nivel 1 logic al numărătorului n-1 -
numărătorul este activ atunci când intrarea GATE a numărătorului de
rang imediat inferior din listă este în 1 logic, altfel numărarea este
suspendată.
Un numărător generează două tipuri de semnale la ieşire: un
semnal numit terminal count pulse sau un semnal terminal count
toggle. În modul terminal count pulse, numărătorul generează un
impuls la ieşire atunci când ajunge la sfârşitul numărării (adică la
65535 – 16 biţi – pentru numărare crescătoare sau la 0 pentru
numărare descrescătoare) şi reîncepe numărătoarea. În modul terminal
count toggle, ieşirea numărătorului îşi schimbă starea (din 0 în 1 sau
invers) atunci când ajunge la sfârşitul numărării şi reîncepe
numărătoarea. Dacă numărătorul nu lucrează, ieşirea acestuia se poate
seta în una din cele 3 stări: impedanţă înaltă, 0 logic sau 1 logic.

Funcţionarea ca generator de frecvenţă programabil


Placa AT-MIO-16H poate genera un semnal de ieşire cu
frecvenţa programabilă, pe 4 biţi. Acest semnal de ieşire are frecvenţa
egală cu un divizor al frecvenţei semnalului bază de timp utilizat.
Pentru generarea semnalului de frecvenţă programabilă (disponibil pe
ieşirea FOUT a conectorului I/O) se poate utiliza oricare din bazele de
timp interne (de la 1 MHz la 100 Hz) sau intrările SOURCE sau
GATE ale numărătoarelor de pe placă.

2.6. Circuitul de ieşiri analogice

Placa AT-MIO-16 conţine 2 canale de ieşiri analogice,


numerotate 0 şi 1. Fiecare canal de ieşire conţine un convertor
numeric-analogic (CNA) pe 12 biţi. Fiecare canal de ieşire se poate
configura prin folosirea de jumpere, pentru intervalele -10÷10 V
(bipolar) sau 0÷10 V (unipolar). Pentru canalele de ieşire este
disponibilă o tensiune de referinţă de pe placă, de 10 V. Poate fi
utilizată şi o referinţă externă, caz în care limitele de ieşire sunt între -
Vref şi Vref pentru configuraţia bipolară, sau 0÷Vref pentru configuraţia
unipolară, unde Vref este tensiunea de referinţă externă (Vref este
maximum 10 V). Tensiunile care se obţin la ieşirea convertoarelor
numeric-analogice depind de valorile datelor din buffer, de nivelul
tensiunii de referinţă Vref şi de setarea polarităţii ieşirilor analogice.

159
Observaţie: Funcţiile de generare de forme de undă –
waveform – (de tip Instrument Virtual VI - LabVIEW sau funcţii
specializate din driverele NI-DAQ) pot scrie continuu valori pe unul
sau pe ambele canale de ieşire; pentru aceasta se foloseşte un semnal
de tact de pe placă sau un semnal de tact extern pentru a citi date dintr-
un buffer şi a le trimite la intervale regulate de timp convertoarelor
numeric-analogice.
Circuitul de ieşiri analogice conţine cele două canale de ieşire,
care, pe lângă CNA-uri, sunt prevăzute cu amplificatoare operaţionale
de instrumentaţie (AO), jumpere de selectare a referinţei şi jumpere de
selectare a ieşirii unipolare/bipolare. CNA-ul de pe fiecare canal de
ieşire analogică generează un curent proporţional cu tensiunea de
intrare de referinţă (Vref) multiplicată prin codul numeric încărcat în
CNA. Fiecare CNA poate fi încărcat cu un cod numeric pe 12 biţi.
Amplificatoarele de instrumentaţie de ieşire convertesc curentul de
ieşire al CNA în tensiune de ieşire furnizată la pinii DAC0 OUT şi
DAC1 OUT ai conectorului I/O. Diagrama bloc a circuitului de ieşiri
analogice este prezentată în Fig. 9.

Fig. 9. Schema bloc a circuitului de ieşiri analogice

160
Ieşirea circuitelor CNA+AO poate fi configurată prin jumpere
să furnizeze un domeniu de ieşire unipolară sau bipolară. Pentru
ieşirea unipolară avem un domeniu de tensiune de ieşire de la 0 la
+Vref -1LSB V. Ieşirea bipolară furnizează un domeniu de tensiune de
la -Vref la +Vref -1LSB V. Pentru ieşirea unipolară, 0V la ieşire
corespund la un cuvânt numeric cu codul zero. Pentru ieşirea bipolară,
forma codului numeric de intrare este selectabilă prin jumpere. În cod
binar natural, 0V la ieşire corespund unui cuvânt numeric cu codul
2.048. Dacă este selectată forma în complement faţă de 2, 0V
corespund cuvântului numeric cu codul zero. Pentru ieşire unipolară
1LSB = Vref /4.096. Pentru ieşire bipolară 1LSB = Vref /2.048.
Sursa de tensiune de referinţă pentru fiecare CNA este
selectabilă prin jumpere şi poate să fie internă sau externă, primită pe
intrarea EXTREF. Referinţa externă poate fi orice semnal de c.c. sau
c.a. Dacă este aplicată o referinţă de c.a., canalul de ieşire analogică
acţionează ca un atenuator de semnal, şi semnalul de c.a. apare la
ieşire atenuat cu codul numeric divizat la 4.096 pentru ieşirea
unipolară. Ieşirea bipolară cu referinţă de c.a. furnizează o
multiplicare în 4 cadrane, ceea ce înseamnă că semnalul este inversat
pentru codurile numerice 0÷2.047 şi nu este inversat pentru codurile
2.048 ÷ 4.095. În cod binar natural, cuvântul numeric cu codul 2.048
atenuează semnalul de intrare la 0V. Această atenuare este echivalentă
cu multiplicarea semnalului cu (cuvânt numeric cu cod -2.048)/2.048.
În modul complement faţă de doi, cuvântul numeric cu codul zero
atenuează semnalul de intrare la 0V.
Tensiunea de referinţă internă este o versiune bufferată a
referinţei de 10V furnizate la CAN. Folosind referinţa internă se
obţine un domeniu de tensiuni de ieşire între 0V şi 9,9976V în paşi de
2,44mV pentru ieşire unipolară şi un domeniu de tensiuni de ieşire
între -10V şi 9,9951V în paşi de 4,88mV pentru ieşire bipolară.

2.7. Circuitul pentru intrări/ieşiri numerice

Placa AT-MIO-16 dispune de opt linii numerice de


intrare/ieşire, divizate în două porturi I/O de 4 biţi fiecare notate portul
0 şi portul 1. Cei 4 biţi ai unui port se numesc ADIO şi BDIO (Digital
Input/Output A, respectiv B). Porturile 0 şi 1 pot fi configurate ca
porturi de intrare sau de ieşire. Oricare port configurat ca port de ieşire
are posibilităţi read-back (deşi este port de ieşire, acesta se poate citi

161
şi se pot obţine valorile numerice). Porturile numerice ale plăcii
operează numai în mod non-latched (no-handshaking).
Observaţie: În general, transferul datelor numerice se poate
realiza în două moduri: modul no-handshaking (non-latched) sau
modul handshaking (latched). În primul caz se realizează un transfer
simplu al datelor către un port de ieşire (scriere) sau dinspre un port de
intrare (citire), fără a exista un semnal de tip handshaking („strângere
de mână”). În modul handshaking, un port numeric I/O preia datele de
la intrare atunci când recepţionează un semnal handshake sau
generează un semnal handshake atunci când sunt scrise date la ieşire.
Astfel, se poate citi starea unui port sau unui grup de porturi pentru a
determina dacă un dispozitiv extern a acceptat datele scrise la un port
de ieşire sau dacă a trimis date la un port de intrare. Aplicaţiile de
conducere sau de monitorizare a proceselor utilizează de regulă modul
no-handshaking, în timp ce aplicaţiile de comunicaţii de date (cum ar
fi transferul de date între calculatoare) utilizează modul handshaking.
Cele două porturi ale plăcii, de câte 4 linii fiecare, sunt
localizate la pinii ADIO 3…0 şi BDIO 3…0 ai conectorului I/O al
plăcii. În Fig. 10 este prezentată schema bloc a circuitului pentru
intrări/ieşiri numerice.

Fig. 10. Circuitul de intrări/ieşiri numerice

162
Circuitul de intrări/ieşiri numerice conţine un Registru de
Ieşiri Numerice DOR care controlează ieşirile numerice şi un Registru
de Intrări Numerice DIR care monitorizează intrările numerice.
Registrul DOR (Digital Output Register) este un registru pe 8
biţi care conţine valorile numerice de ieşire atât pentru portul 0 cât şi
pentru portul 1. Atunci când portul 0 este activat, biţii 3…0 din DOR
sunt trimişi către liniile numerice ADIO 3…0. Atunci când portul 1
este activat, biţii 7…4 din DOR sunt transmişi către liniile numerice
BDIO 3…0.
Prin citirea registrului DIR (Digital Input Register) se citeşte
de fapt starea liniilor numerice I/O. Liniile numerice ADIO 3…0
furnizează biţii 3…0 ai DIR, iar liniile numerice BDIO 3…0
furnizează biţii 7…4 ai DIR.
Atunci când un port (A sau B) este activat, DIR serveşte ca un
registru read-back, returnând valoarea numerică a portului respectiv.
Atunci când un port nu este activat, DIR returnează starea liniilor
numerice I/O furnizată de un dispozitiv extern.
Observaţie: Pentru controlul porturilor de pe placă se pot
folosi VI-uri pentru I/O numerice (a se vedea biblioteca LabVIEW
Data Acquisition DAQ). VI-urile numerice accesează portul ADIO ca
port 0 şi portul BDIO ca port 1.

2.8. Circuitul de interfaţă cu magistrala RTSI

RTSI Bus este magistrala RTSI (Real-Time System


Integration) cu care se pot interfaţa toate plăcile din seria National
Instruments AT. Circuitul de interfaţă cu magistrala RTSI are 7 linii
trigger şi o linie pentru ceasul de sistem şi permite utilizarea mai
multor plăci NI din seria AT în acelaşi PC, plăci care partajează
semnalele de pe această magistrală. În Fig. 11 este prezentat circuitul
de interfaţă cu magistrala RTSI.
Comutatorul RTSI (RTSI Switch) din Fig. 11 este un circuit
integrat NI care are pinii B6…0 conectaţi la 7 linii de trigger ale
magistralei RTSI şi pinii A6…0 la şapte semnale ale plăcii AT-MIO-
16. Comutatorul RTSI permite controlul liniilor de trigger prin
semnalele conectate la pinii A6…0 sau viceversa, obţinându-se o
schemă de interconectare flexibilă pentru plăcile de tip AT-MIO care
gestionează magistrala RTSI. Comutatorul RTSI poate fi programat
prin intermediul intrării de selecţie /SEL şi intrării de date DATA.

163
Fig. 11. Circuitul de interfaţă cu magistrala RTSI

164
3. Configurarea plăcii AT-MIO-16H

Placa AT-MIO-16H conţine 13 jumpere (ştrapuri) şi un


comutator DIP pentru configurarea interfeţei cu magistrala AT şi
setarea intrărilor şi ieşirilor analogice (Analog I/O settings).
Comutatorul DIP este folosit pentru setarea adresei I/O de
bază. Două jumpere sunt folosite pentru selectarea canalului de
întrerupere şi pentru accesul direct la memorie (DMA – Direct
Memory Access). Cele 11 jumpere rămase sunt folosite pentru a
schimba configuraţia circuitelor de intrări şi ieşiri analogice.
Jumperele W1, W4, W6 şi W9 configurează circuitul de
intrări analogice. Jumperele W2, W3, W7, W8, W10 şi W11
configurează circuitul de ieşiri analogice. Jumperul W5 selectează
semnalul de ceas utilizat de Am9513 Counter/Timer şi cel de ceas
pe/de pe magistrala RTSI (Real Time System Interface). Jumperele
W12 şi W13 selectează canalul DMA, respectiv, nivelul de
întrerupere. Dispunerea jumperelor pe placă este prezentată în Fig. 12.

3.1. Interfaţa cu magistrala AT

AT-MIO-16H este configurată implicit cu o adresă I/O de


bază egală cu 220H, să folosească canalele DMA 6 şi 7, şi nivelul de
întrerupere 10. Această setare implicită este prezentată în Tabelul 2.
Dacă setările implicite pentru adresa I/O de bază, canalul DMA sau
nivelul de întrerupere determină intrarea în conflict cu un alt
dispozitiv (placă) al sistemului, atunci aceste setări trebuie modificate
fie pentru dispozitivul deja instalat în calculator fie pentru placa AT-
MIO-16, după metodologia descrisă în continuare.

Tabelul 2. Setările implicite ale interfeţei cu magistrala AT


Adresa I/O 220 H Se selectează prin
de bază Domeniu: 220 H – 23F H poziţionarea micro-
comutatoarelor din DIP U61
Canal DMA DMA1 = Canal DMA 6 W12: R6: A-B A6: A-B
DMA2 = Canal DMA 7 W12: R7: B-C A7: B-C
Nivel de Nivel de întrerupere
întrerupere selectat – 10 W13: Rândul 10

165
Fig. 12. Dispunerea jumperelor de configurare pe placa AT-MIO-16

166
3.1.1. Selectarea adresei I/O de bază
Adresa I/O de bază pentru AT-MIO-16 este determinată de
poziţia micro-comutatoarelor din soclul comutatorului DIP U61. Din
fabrică comutatoarele sunt setate pentru o adresă I/O de bază 220 H.
Această setare este folosită ca adresă I/O de bază implicită de către
pachetul software National Instruments ataşat plăcii AT-MIO-16. Cu
setarea iniţială realizată de firma constructoare, spaţiul de adresă I/O
de bază folosit de AT-MIO-16 este cuprins între 220 H şi 23F H.
Trebuie verificat dacă acest spaţiu nu este deja folosit de alt dispozitiv
instalat în calculator. Dacă alt echipament din calculator foloseşte
acest spaţiu de adresă I/O de bază, trebuie schimbată adresa I/O de
bază a plăcii AT-MIO-16 sau a celuilalt dispozitiv. Dacă se schimbă
adresa I/O de bază a AT-MIO-16, trebuie făcută o modificare
corespunzătoare în pachetul NI-DAQ ce va fi folosit cu AT-MIO-16.
Fiecare micro-comutator din U61 corespunde uneia din liniile
de adresă de la A9 la A5. Dacă se apasă partea marcată OFF se
selectează valoarea binară 1 pentru bitul de adresă corespunzător, iar
dacă se apasă partea marcată ON se selectează valoarea binară 0
pentru bitul de adresă corespunzător. Fig. 13 prezintă două posibile
stări ale micro-comutatoarelor. Porţiunea înnegrită indică partea
micro-comutatorului care este apăsată.
Cei mai puţini semnificativi 5 biţi (LSB) ai adresei (A4, A3,
A2, A1, A0) sunt decodificaţi de AT-MIO-16 pentru a selecta registrul
AT-MIO-16 corespunzător.
A9 A8 A7 A6 A5
1 2 3 4 5
O
N
Această parte se apasă pentru 0
U61
O
F
Această parte se apasă pentru 1 F

A. Setarea comutatoarelor pentru o adresă I/O de bază egală cu 000 H

A9 A8 A7 A6 A5
1 2 3 4 5
O
N
Această parte se apasă pentru 0
U61
O
F
Această parte se apasă pentru 1 F

B. Setarea comutatoarelor pentru o adresă I/O de bază egală cu 220 H (setare implicită)

Fig. 13. Exemple de stabilire a adresei I/O de bază


167
3.1.2. Selectarea canalelor DMA
Canalul DMA folosit de AT-MIO-16 este selectat prin
ştrapurile de pe W12. Din fabrică AT-MIO-16 este setată să
folosească canalele DMA 6 şi 7 pentru modul DMA-dual. Acestea
sunt canalele DMA implicite folosite de utilizatorul AT-MIO-16.
Trebuie verificat dacă aceste canale DMA nu sunt deja
folosite de echipamente instalate pe calculator. Dacă un alt dispozitiv
foloseşte canalele DMA 6 şi/sau 7, trebuie schimbat canalul DMA
folosit fie de AT-MIO-16, fie de celalalt dispozitiv. Canalele DMA
recunoscute de hardware-ul AT-MIO-16 sunt 5, 6 şi 7. Trebuie
remarcat faptul că placa nu poate folosi decât canale DMA de 16 biţi.
Pentru a selecta un canal DMA trebuie instalate două jumpere, câte
unul pentru DMA Acknowledge(A) şi DMA Request (R). Când se
folosesc două moduri DMA notate DMA1 şi DMA2, cele două
coloane din stânga ale W12 sunt folosite de DMA1, iar cele două din
dreapta de DMA2. În Fig. 14 este prezentată setarea implicită.
Dacă se doreşte folosirea numai a canalului DMA 6, sau nu se
doreşte utilizarea DMA, atunci se pot face setările din Fig. 15.
W 12

1 DMA 2
Fig. 14. Configurarea DMA implicită

a) b)
Fig. 15. a) Selectarea canalului DMA 6; b) Neutilizare DMA

168
3.1.3. Selectarea întreruperilor
Placa AT-MIO-16H poate fi conectată la oricare din cele 11
linii de întrerupere ale canalului I/O al PC-AT. Pentru a folosi
posibilităţile de întrerupere ale AT-MIO-16 trebuie selectată linia de
întrerupere şi poziţionat un jumper în poziţia corespunzătoare ce
validează această linie de întrerupere. AT-MIO-16 poate împărţi liniile
de întrerupere cu alte dispozitive, prin folosirea unui driver three-state
(TS) pentru a comanda selectarea liniilor de întrerupere.
Liniile de întrerupere suportate de hardware-ul AT-MIO-16
sunt IRQ3, IRQ4, IRQ5, IRQ6, IRQ7, IRQ9, IRQ10, IRQ11, IRQ12,
IRQ14 şi IRQ15. În general, nu se folosesc întreruperile 6 şi 14, care
sunt de regulă folosite de către controllerul de floppy disk şi de către
controllerul de hard disk.
Jumperul pentru setarea întreruperilor este în soclul W13.
Linia de întrerupere implicită este IRQ10 şi ea este selectată prin
plasarea unui ştrap pe pinii din şirul 10 (Fig. 16).

Fig. 16. Setarea de fabrică (IRQ10) şi setarea unei alte întreruperi în


caz de conflict (IRQ5)

În cazul în care nu sunt folosite întreruperile se utilizează


setarea din Fig. 17.

Fig. 17.

169
3.2. Configurarea intrărilor şi ieşirilor analogice
AT-MIO-16 este setată din fabrică în configuraţia: intrare
analogică diferenţială (8 canale); ieşire analogică bipolară; domeniu
de intrare ±10V; domeniu de ieşire ±10V, cu referinţă internă; două
CNA, cod binar bipolar complement faţă de doi; generator de semnal
de ceas AT-MIO-16 setat la 10MHz.
În Tabelul 3 este prezentată configurarea intrărilor şi ieşirilor
analogice ale plăcii prin intermediul jumperelor.
Tabelul 3. Setarea jumperelor pentru configurarea I/O analogice
Configuraţie Setări jumpere
Domeniul de Unipolar 0 ÷ +10 V W1: B-C W4: A-B
intrare în CAN Bipolar –5 ÷ +5 V W1: B-C W4: B-C
Bipolar –10 ÷ +10 V W1: A-B W4: B-C
(setare fabrică)
Tipul intrării Diferenţială (DIFF) W6: A-C, B-D, E-F
analogice (setare fabrică) W9: A-B
Asimetrică fără referinţă W6: A-B, C-E, G-H
Nonreferenced single-ended W9: B-C
(NRSE)
Asimetrică W6: A-B, C-D, G-H
Referenced single-ended (RSE) W9: B-C
Selectare ceas Semnal de ceas AT-MIO-16 = W5: C-D, E-F
Am9513A & = 10 MHz (setare fabrică)
RTSI Bus Semnal de ceas AT-MIO-16 = W5: A-B, E-F
= Semnalul de ceas RTSI
Semnal de ceas AT-MIO-16 & W5: A-B, C-D
Semnal de ceas RTSI = 10 MHz
Referinţa Internă (setare fabrică) W3: B-C
CNA0 Externă W3: A-B
Referinţa Internă (setare fabrică) W2: B-C
CNA1 Externă W2: A-B
Polaritate ieşire Unipolară – cod binar natural W8: B-C W10: B-C
CNA0 Bipolară – cod complement faţă W8: A-B W10: B-C
de 2 (setare fabrică)
Polaritate ieşire Unipolară – cod binar natural W7: B-C W11: B-C
CNA1 Bipolară – cod complement faţă W7: A-B W11: B-C
de 2 (setare fabrică)

170
3.2.1. Configurarea intrărilor analogice
Placa AT-MIO-16 dispune de 16 canale de intrări analogice
cu amplificare programabilă şi conversie analog-numerică pe 12 biţi.
Prin poziţionarea corespunzătoare a jumperelor se pot modifica tipul
intrărilor, polaritatea şi domeniul de intrare.
Tipurile intrărilor analogice
Placa AT-MIO-16 permite trei tipuri diferite de intrări
analogice: intrare asimetrică (single-ended) fără referinţă (NRSE –
NonReferenced Single-Ended input), intrare asimetrică cu referinţă
(RSE – Referenced Single-Ended input), şi intrare diferenţială (DIFF –
Differential input). Pentru intrările tip single-ended sunt disponibile
16 canale iar pentru intrările diferenţiale 8 canale. Descrierea tipurilor
de intrare este prezentată în Tabelul 4, iar modul de poziţionare a
jumperelor în Fig. 18.

Tabelul 4. Tipurile intrărilor analogice pentru AT-MIO-16

Tip intrare Descriere


Configuraţie diferenţială: conţine 8 intrări
diferenţiale cu intrarea negativă (-) a
DIFF amplificatorului de instrumentaţie legată la ieşirea
multiplexorului corespunzătoare canalelor 8÷15
Configuraţie cu referinţă tip single-ended - conţine
16 intrări tip single-ended cu intrarea negativă (-) a
RSE amplificatorului de instrumentaţie legată la
referinţa de masă analogică (referinţă)
Configuraţie fără referinţă single-ended - conţine
16 intrări tip single-ended cu intrarea negativă a
NRSE amplificatorului de instrumentaţie legată la AI
SENSE şi neconectată la referinţă (masa analogică)

1. Intrare diferenţială (DIFF) (opt canale, setare implicită).


Atunci când tipul intrării este DIFF, fiecare semnal de intrare în parte
are propria sa referinţă şi este măsurată diferenţa dintre fiecare semnal
în parte şi propria sa referinţă. Semnalul şi referinţa sa sunt asignate
unui canal de intrare. Cu această configuraţie de intrare, AT-MIO-16
poate monitoriza opt semnale analogice diferite de intrare.

171
Fig. 18. Setarea tipului intrărilor analogice

2. Intrare RSE (16 canale). Dacă tipul intrării este RSE atunci
toate semnalele de intrare sunt raportate la un punct de masă comun şi
acesta este de asemenea legat la masa intrării analogice pe placa AT-
MIO-16. Intrările negative ale amplificatorului diferenţial de intrare
sunt legate la masa analogică (circuitul analogic). Această configuraţie
este utilă atunci când sunt măsurate sursele flotante de semnal. Cu
această configuraţie de intrare, AT-MIO-16 poate monitoriza 16 surse
de semnal analogic.
3. Intrare NRSE (16 canale). În cazul intrării tip NRSE toate
semnalele de intrare sunt raportate la aceeaşi tensiune de mod comun,
dar această tensiune de mod comun este lăsată flotantă faţă de masa
analogică a plăcii AT-MIO-16. Această configuraţie este uzuală atunci
când măsurăm surse de semnal raportate la masă. Cu această
configuraţie de intrare, AT-MIO-16 poate măsura 16 semnale
analogice de intrare, diferite.
Polaritatea şi domeniul de intrare
AT-MIO-16 oferă două posibilităţi pentru polaritatea intrărilor
analogice: intrare unipolară şi intrare bipolară. Intrarea unipolară
presupune un domeniu de intrare între 0 şi Vref, unde Vref este o
tensiune de referinţă pozitivă. Intrarea bipolară presupune că acest
domeniu este între - Vref şi + Vref. Placa AT-MIO-16 are două domenii
de intrare, unul de 10 V şi altul de 20 V.

172
Selectarea polarităţii şi a domeniului de intrare se poate
realiza în trei moduri posibile, după cum se prezintă în Fig. 19.

ADC Range - Analog to Digital Converter Range = Domeniul CAN


U – Unipolar; B - Bipolar
Fig. 19. Setări posibile pentru polaritatea şi domeniul de intrare

Un circuit de extensie pentru semn permite adăugarea a 4 biţi


MSB la ieşirea pe 12 biţi a bufferului FIFO al circuitului de conversie
analog-numerică. Circuitul de extensie pentru semn este programabil
software şi poate genera cod binar natural sau cod complement faţă de
doi. În modul cod binar natural, biţii 15 până la 12 sunt totdeauna zero
(biţii 11 până la 0 reprezintă ieşirea CAN, respectiv a bufferului
FIFO), ceea ce permite obţinerea unui domeniu între 0 şi 4.096. În
modul cod complement faţă de doi, bitul MSB al rezultatului
conversiei analog-numerice (adică bitul 11) este inversat şi extins la
biţii 15 – 12, furnizând un domeniu între –2.048 şi 2.047.
Selectarea polarităţii sau gamei domeniului semnalului de
intrare se face în funcţie de domeniul şi polaritatea semnalului efectiv
care se conectează la intrările analogice ale plăcii. Un domeniu de
intrare mai larg poate face posibilă conectarea la semnale cu variaţie
mai mare dar se sacrifică rezoluţia (precizia). Folosind un domeniu de
intrare mai îngust se creşte precizia conversiei analog-numerice în
schimb semnalul de intrare poate ieşi din domeniu, rezultând măsurări
imprecise.
De exemplu, dacă semnalul de intrare este garantat că nu va fi
negativ (va fi deci peste 0 V), atunci pentru măsurarea acestuia este
mai potrivită o intrare unipolară. Dacă semnalul poate fi şi negativ,

173
atunci citirea va fi eronată şi în acest caz este recomandată intrarea
bipolară.
Pentru a putea creşte flexibilitatea utilizării plăcii de achiziţii
se pot folosi amplificări programabile software. Placa de achiziţii AT-
MIO-16H are amplificări de 1, 2, 4, 8 şi se pretează la semnale de
nivel înalt. Placa AT-MIO-16L are amplificări de 1, 10, 100 şi 500 şi
este proiectată să măsoare semnale de nivel scăzut. Cu amplificarea
setată în mod adecvat, întreaga rezoluţie a CAN poate fi folosită
pentru măsurarea cât mai precisă a semnalului de intrare. Tabelul 5
prezintă domeniile generale de intrare, precizia atinsă şi amplificarea
obţinută pentru placa AT-MIO-16H.

Tabelul 5. Domeniul efectiv de intrare şi precizia de măsurare în


funcţie de domeniul de intrare şi de amplificare
Domeniul de Amplificarea Domeniul efectiv Precizia
intrare de intrare
0...10 V 1 0...10 V 2,44 mV
2 0...5 V 1,22 mV
4 0...2,5 V 610 µ V
8 0...1,25 V 305 µ V
-5...+5 V 1 -5...5 V 2,44 mV
2 -2,5...+2,5 V 1,22 mV
4 -1,25...1,25 V 610 µ V
8 -0,625...+0,625 V 305 µ V
-10...+10 V 1 -10...+10 V 4,88 mV
2 -5...+5 V 2,44 mV
4 -2,5...+2,5 V 1,22 mV
8 -1,25...1,25 V 610 µ V

3.2.2. Configurarea ieşirilor analogice


În mod asemănător cu intrările analogice, se pot selecta
diverse configuraţii pentru ieşirile analogice.

Selectarea semnalului de referinţă pentru CNA


Fiecare dintre cele două CNA (pe 12 biţi) poate fi conectat de
către AT-MIO-16H la referinţa internă de 10V sau la un semnal de
referinţă extern, care trebuie să fie cuprins între -10V...+10V.

174
Conectarea la referinţa externă se realizează prin legarea
acestui semnal de referinţă la pinul EXTREF de pe conectorul I/O.
Semnalul aplicat pe EXTREF trebuie să fie cuprins între -10V şi
+10V. Amândouă canalele trebuie să fie configurate în acelaşi mod
(fie referinţă internă, fie referinţă externă).
Selectarea semnalului de referinţă externă pentru fiecare canal
analogic de ieşire se realizează cu ajutorul jumperelor:
- canal analogic de ieşire 0: W3 A-B - semnalul de referinţă
extern conectat la referinţa CNA0;
- canal analogic de ieşire 1: W2 A-B - semnalul de referinţă
extern conectat la referinţa CNA1.
Setarea referinţei de 10 V de pe placă (setare implicită) pentru
fiecare canal analogic de ieşire se face prin setarea următoarelor
jumpere:
- canal analogic de ieşire 0: W3 B-C - conectarea referinţei de
pe placă la intrarea de referinţă a CNA0;
- canal analogic de ieşire 1: W2 B-C - conectarea referinţei de
pe placă la intrarea de referinţă a CNA1.
Cele două tipuri de configuraţii posibile pentru referinţa CNA
sunt prezentate în Fig. 20.

Fig. 20. Setarea jumperelor pentru configurarea referinţei CNA

Selectarea polarităţii ieşirii analogice


Fiecare canal de ieşire analogică poate fi configurat fie ca
unipolar fie ca bipolar. O configuraţie unipolară are gamă de variaţie
între 0 şi Vref . O configuraţie bipolară are o gamă de variaţie între –
Vref şi +Vref. Vref este tensiunea de referinţă folosită de CNA şi poate fi
fie tensiunea internă de referinţă de +10V a plăcii, fie o referinţă
furnizată extern. Nu este nevoie ca ambele canale să fie configurate

175
identic din punct de vedere al polarităţii; implicit, ambele canale sunt
configurate pentru ieşiri bipolare.
Selectarea ieşirii bipolare (setare implicită). Selectarea
configuraţiei bipolare de ieşire pentru fiecare canal analogic de ieşire
se face prin setarea următoarelor ştrapuri:
- canal analogic de ieşire 0: W8 A-B
- canal analogic de ieşire 1: W7 A-B
Selectarea ieşirii unipolare. Selecţia configuraţiei unipolare
de ieşire pentru fiecare canal analogic de ieşire se face prin realizarea
următoarelor ştrapuri:
- canal analogic de ieşire 0: W8 B-C
- canal analogic de ieşire 1: W7 B-C

Selectarea codificării datelor


Pentru codificarea datelor se poate utiliza fie codul binar
natural (normal), fie codul complement faţă de doi. Pentru codul binar
natural, valoarea datelor scrise la canalul analogic de ieşire este în
domeniul 0 până la 4.095 zecimal (0 - 0FFF H). În cazul utilizării
codului complement faţă de doi, valoarea datelor scrise la canalul
analogic de ieşire este în domeniul -2.048 până la 2.047 zecimal (F800
H - 07FF H). Selectarea codului utilizat se realizează prin intermediul
jumperelor W10 (pentru CNA0) şi W11 (pentru CNA1):
- cod binar natural pentru canalul 0: W10 B-C
- cod binar natural pentru canalul 1: W11 B-C
- cod complement faţă de 2 pentru canalul 0: W10: A-B
- cod complement faţă de 2 pentru canalul 1: W11: A-B

Fig. 21. Setarea ieşirilor – configuraţie unipolară, cod binar natural

176
Codul binar natural este folosit de regulă pentru ieşiri
unipolare, iar codul complement faţă de doi pentru ieşiri bipolare.
Pentru exemplificare, în Fig. 21 este prezentată configurarea
ieşirilor analogice unipolare, cod binar natural.

3.2.3. Circuite de izolare galvanică şi condiţionare semnal


De regulă, semnalele de intrare analogice se aplică pe intrările
plăcii AT-MIO-16 prin intermediul unor circuite exterioare care au
rolul de izolare galvanică pentru protecţia plăcii şi a calculatorului dar
realizează şi anumite funcţiuni de condiţionare de semnal. De
asemenea, semnalele de ieşire analogică care provin de la placa de
achiziţie sunt furnizate către proces prin intermediul unor circuite
exterioare care asigură izolarea galvanică precum şi conversii de tip
tensiune-curent. Astfel de circuite pot fi de tip SCXI sau circuite
modulare din seria 5B, cu cost redus şi de înaltă performanţă.

Fig. 22. Schema de conectare între sistemul de achiziţie şi proces prin


placa cu module de izolare galvanică şi terminale de cuplare

177
Circuitele de condiţionare de semnal modulare din seria 5B,
proiectate pentru aplicaţii industriale, încorporează izolatoare
galvanice şi au dimensiuni şi dispuneri ale terminalelor identice.
Modulele de intrare izolate furnizează ieşiri (către placa de achiziţie
AT-MIO-16 din calculator) între 0...+5V sau între -5...+5V, în funcţie
de tipul constructiv. Modulele de ieşire convertesc tensiuni unipolare
între 0...+5V sau bipolare între -5V...+5V în curenţi pentru procesul
comandat între 4...20 mA sau 0...20 mA, utilizaţi pentru comanda
procesului condus.
Laboratorul dispune de două module de intrări cu izolare
galvanică din seria 5B31-02, şi 5B41-02. Modulele din gama 5B31
acceptă la intrare semnale de tensiune de ordinul volţilor şi oferă la
ieşire tensiune unipolară sau bipolară. Pentru 5B31-02 domeniile de
intrare şi de ieşire sunt identice, adică -5V...+5V. Modulele din gama
5B41 acceptă la intrare semnale de tensiune de bandă largă de ordinul
volţilor şi oferă la ieşire tensiune unipolară sau bipolară. Pentru 5B41-
02 domeniile de intrare şi de ieşire sunt identice, adică -5V...+5V.
În Fig. 22 este prezentată schema de conectare între sistemul
de achiziţie (PC – AT-MIO-16) şi proces prin intermediul unei plăci
externe care conţine module de izolare galvanică şi terminale de
cuplare la proces.

3.2.4. Selectarea ceasului prin magistrala RTSI


Atunci când mai multe plăci de achiziţie AT sunt conectate
via magistrala RTSI, este posibil să se dorească ca toate plăcile să
folosească acelaşi ceas de 10MHz. Acest aranjament este folositor
pentru aplicaţii care cer sincronizarea plăcilor. Fiecare placă de
achiziţie AT cu interfaţă RTSI are implicit un oscilator de 10MHz. În
acest fel, o placă poate conduce prin intermediul semnalului de ceas
din magistrala proprie RTSI, iar celelalte plăci pot recepţiona acest
semnal sau se pot deconecta şi utilizează propriul ceas.
Pentru configurarea semnalului de ceas se utilizează jumperul
W5, care permite setarea în regim de ceas local, ceas slave sau ceas
master (Tabelul 6). Semnalul de ceas, furnizat local sau de magistrala
RTSI este divizat cu 10 şi este utilizat de către circuitul de numărare
Am9513A.

178
Tabelul 6. Selectarea semnalului de ceas
Tip semnal Descriere Setare jumper
de ceas
Ceas local Se foloseşte oscilatorul W5
local de pe placă ca şi RTSI BRD
generator de semnal de BRD
10 MHz
ceas (setare implicită)
NC NC
Ceas slave Se primeşte semnalul de W5
ceas de pe magistrala RTSI BRD
RTSI BRD
10 MHz
NC NC
Ceas master Furnizează semnalul de W5
ceas pentru magistrala RTSI BRD
RTSI şi semnalul de ceas
al plăcii prin folosirea 10 MHz BRD
oscilatorului local de pe NC NC
placă

179
4. Conexiunile plăcii AT-MIO-16

Asignarea pinilor pentru conectorul I/O (intrare/ieşire) al


plăcii AT-MIO-16 este prezentată în Fig. 23. Conectorul I/O este
amplasat pe placă (a se vedea Fig. 12) şi este accesibil la partea din
spate a calculatorului după instalarea corectă a plăcii în acesta.
Semnalele care se conectează la placă prin intermediul
conectorului I/O pot fi clasificate în semnale de intrare analogice,
semnale de ieşire analogice, semnale numerice I/O, surse de
alimentare pe partea numerică (digital power connections) şi semnale
de sincronizare (timing signals).

4.1. Conexiuni pentru intrări analogice


Pinii 1 până la 19 de pe conectorul I/O sunt pinii de intrări
analogice. Pinii 1 şi 2 sunt pini pentru masă notaţi AIGND (masa
semnalului analogic de intrare – analog input ground). Semnalele de
intrare analogică conectate la pinii AIGND sunt legate la masa
analogică a plăcii AT-MIO-16. Pinul 19 este numit AISENSE, care în
modul single-ended este conectat intern (pe placă) la intrarea negativă
a amplificatorului de instrumentaţie al AT-MIO-16, iar în modul DIFF
este conectat la masa de referinţă a amplificatorului de instrumentaţie.
Pinii de la 3 la 18 sunt notaţi ACH 15...0 şi sunt legaţi la cele
16 canale de intrări analogice ale plăcii AT-MIO-16. În modul single-
ended, semnalele conectate la ACH 15...0 sunt direcţionate spre
intrarea pozitivă a amplificatorului de instrumentaţie al AT-MIO-16.
În modul diferenţial DIFF, semnalele conectate la ACH 7…0 sunt
direcţionate spre intrarea pozitivă a amplificatorului de instrumentaţie,
iar semnalele conectate la ACH 15...8 spre intrarea negativă a
amplificatorului de instrumentaţie.
Domeniile de intrare şi valorile maxime care pot fi aplicate la
intrările ACH 15...0 sunt următoarele:
- domeniul diferenţial de intrare ±10 V;
- domeniul de intrare în mod comun ±7V în raport cu AIGND;
- domeniul de intrare ±12 V în raport cu AIGND;
- valori maxime ale tensiunii de intrare:
- ±20 V atunci când placa AT-MIO-16 nu este
alimentată;
- ±35 V atunci când placa este alimentată.

180
Depăşirea domeniilor de intrare pentru modul diferenţial sau
modul comun are ca rezultat distorsionarea semnalelor de intrare.
Depăşirea valorilor tensiunii maxime de intrare poate conduce la
defectarea plăcii AT-MIO-16 şi a calculatorului în care este instalată.

A IG N D 1 2 A IG N D
ACH0 3 4 ACH8
ACH1 5 6 ACH9
ACH2 7 8 A CH 10
ACH3 9 10 A CH 11
ACH4 11 12 A CH 12
ACH5 13 14 A CH 13
ACH6 15 16 A CH 14
ACH7 17 18 A CH 15
A IS E N S E 19 20 D A C0O U T
D A C 1O U T 21 22 EXTREF
AOGND 23 24 D IG G N D
A D IO 0 25 26 B D IO 0
A D IO 1 27 28 B D IO 1
A D IO 2 29 30 B D IO 2
A D IO 3 31 32 B D IO 3
D IG G N D 33 34 +5V
+5V 35 36 SCANCLK
EX TSTROBE* 37 38 S T A R T T R IG *
S T O P T R IG 39 40 EXTCONV*
SOURCE1 41 42 GATE1
OUT1 43 44 SOURCE2
GATE2 45 46 OUT2
SOURCE5 47 48 GATE5
OUT5 49 50 FOUT

Fig. 23. Asignarea pinilor la conectorul I/O al plăcii AT-MIO-16

181
Fig. 24. Schema bloc a amplificatorului de instrumentaţie

Modul de conectare a semnalelor de intrare analogice la placa


AT-MIO-16 depinde de configuraţia circuitului de intrări analogice al
plăcii şi de tipul sursei semnalului de intrare. În funcţie de configuraţia
circuitului de intrări analogice, amplificatorul de instrumentaţie este
utilizat în mai multe moduri. Schema bloc a amplificatorului de
instrumentaţie este prezentată în Fig. 24 (gain = amplificare).
Amplificatorul de instrumentaţie de pe placa AT-MIO-16
permite obţinerea unei amplificări mari, este caracterizat de o rejecţie
pe mod comun foarte bună şi are o impedanţă de intrare foarte mare.
Semnalele de intrare analogică sunt cuplate la intrările pozitivă şi
negativă ale amplificatorului AI prin intermediul circuitelor de
multiplexare ale plăcii. Aşa cum se observă şi din Fig. 24,
amplificatorul de instrumentaţie converteşte cele două semnale de
intrare Vin+ , Vin− în diferenţa dintre ele multiplicată cu amplificarea
(care este programabilă). Ieşirea amplificatorului Vm este măsurată
faţă de masa plăcii. Convertorul analogic-numeric de pe placă
foloseşte această tensiune atunci când realizează conversiile analog-
numerice.
Pentru a realiza o conectare corectă a plăcii la sursa care
furnizează semnalul analogic de intrare, o mare importanţă o
constituie identificarea tipului acestei surse de semnal şi apoi alegerea
corespunzătoare a configuraţiei de intrare analogică a plăcii. Dacă, de
exemplu, avem o sursă flotantă de semnal, trebuie utilizată o
configuraţie de intrare de tip RSE (referenced single-ended), iar dacă
avem o sursă raportată la masă, este recomandată utilizarea
configuraţiei NRSE (non-referenced single-ended).
182
4.2. Tipuri de surse de semnal
4.2.1. Surse de semnal flotante (floating signal source)
O sursă de semnal flotantă este o sursă care nu este conectată
la sistemul de împământare sau de masă al clădirii (sursa flotantă
poate avea însă un punct de masă izolat).
Sursele flotante sunt fie surse de tip autonom, care nu sunt
raportate la masă sau pământ, fie surse cu izolare care sunt
caracterizate de existenţa unei izolări galvanice între punctele de
măsurare şi reţea (deci izolate faţă de împământarea sau masa reţelei).
Exemple reprezentative de surse autonome sunt traductoarele
generatoare (care nu sunt împământate): termocupluri, traductoare
electrochimice, piezoelectrice etc. şi sursele cu alimentare autonomă
(de tip baterie, nealimentate din reţea).
Exemple de surse cu izolare tipice sunt transformatoarele de
tensiune, generatoarele de semnal cu alimentare de la reţea prin
transformator şi sursă de alimentare etc.
Masa de referinţă a unui semnal flotant trebuie să fie legată la
intrarea analogică de masă a plăcii (AIGND) pentru a stabili o
referinţă pe placă pentru semnal. În caz contrar, semnalul de intrare
măsurat apare ca flotant (variază).

4.2.2. Surse de semnal raportate la masă


(ground-referenced signal source)
O sursă de semnal raportată la masă (cu referinţa la masă) este
o sursă conectată într-un fel la sistemul de masă sau împământare al
clădirii şi este prin urmare conectată deja la un punct comun de masă
în raport cu placa AT-MIO-16, presupunând că sistemul de calcul este
alimentat de la acelaşi sistem de alimentare.
Sursele de semnal raportate la masă pot fi clasificate la rândul
lor în surse diferenţiale şi surse asimetrice.
Sursele diferenţiale furnizează un semnal de tip tensiune prin
diferenţa tensiunilor de ieşire ale unor surse echivalente, care,
raportate la masă sau împământare, controlează potenţialele punctelor
de măsurare. Exemple tipice sunt punţile tensometrice şi schemele de
măsurare a curentului unor consumatori alimentaţi în c.c.
Sursele asimetrice (single-ended) au unul din punctele de
măsurare conectat la masă sau la împământare. Surse asimetrice sunt
de exemplu consumatorii industriali pentru care se măsoară tensiunea

183
la borne şi termocuplurile cu împământare (prin obiectul a cărui
temperatură se măsoară).
Prin urmare, în categoria semnalelor provenite de la sursele
raportate la masă intră ieşirile neizolate ale instrumentelor şi
dispozitivelor care sunt alimentate de la reţeaua clădirii, aceeaşi cu cea
care alimentează sistemul calculator-placă.
Diferenţa de potenţial între punctele de masă a două
instrumente conectate la aceeaşi reţea este tipic între 1mV şi 100mV,
dar poate fi mult mai mare dacă circuitele de distribuire a puterii nu
sunt realizate corect. Dacă semnalul provenit de la sursa raportată la
masă este măsurat incorect, această diferenţă între punctele de masă
apare ca o eroare de măsurare. Pentru a evita apariţia erorilor, trebuie
eliminate diferenţele de potenţial de masă, prin respectarea
instrucţiunilor de conectare descrise în paragrafele următoare

4.3. Configuraţii de intrare analogică

Placa AT-MIO-16 poate fi configurată pentru unul din cele


trei tipuri de intrare: NRSE, RSE sau DIFF. În paragrafele următoare
este discutat modul de realizare a măsurătorilor de tip single-ended şi
diferenţial şi sunt făcute consideraţii asupra măsurării surselor de
semnal flotante şi raportate la masă. Tabelul 7 cuprinde recomandările
pentru alegerea configuraţiilor de intrare în funcţie de tipul sursei de
semnal.

Tabelul 7. Configuraţii de intrare recomandate


Tipul semnalului Configuraţie de intrare
(sursei de semnal) recomandată
Raportat la masă (ieşiri neizolate, DIFF
instrumente puse în aceeaşi priză) NRSE
Flotant (baterii, termocupluri, DIFF cu punte de rezistoare
ieşiri izolate) RSE

4.3.1. Consideraţii asupra conexiunii diferenţiale


Conexiunea diferenţială este aceea în care fiecare semnal
analogic de intrare în AT-MIO-16 are propriul semnal de referinţă sau
propria cale de întoarcere a semnalului. Această conexiune este
disponibilă atunci când placa AT-MIO-16 este configurată în modul

184
DIFF. Fiecare semnal de intrare este legat la intrarea pozitivă a
amplificatorului de instrumentaţie de pe placă, iar referinţa (returul)
fiecărui semnal de intrare este legată la intrarea negativă a
amplificatorului de instrumentaţie. Semnalele de intrare sunt legate la
amplificatorul de instrumentaţie prin intermediul multiplexorului de
pe placă. Fiecare semnal de intrare foloseşte două din intrările
multiplexorului - una pentru semnal şi alta pentru referinţa semnalului.
Prin urmare, numai opt canale analogice de intrare vor fi disponibile
atunci când utilizăm configuraţia DIFF.
Se recomandă utilizarea configuraţiei de intrare DIFF atunci
când:
• semnalele de intrare au nivel scăzut (mai mic de 1V);
• cablurile de conectare la AT-MIO-16 sunt mai mari de 5
m;
• oricare din semnalele de intrare necesită puncte de referinţă
de masă separate;
• cablurile prin care se transmite semnalul traversează medii
cu zgomote.
Conexiunile diferenţiale de semnal permit creşterea rejecţiei
semnalului pe mod comun, rejecţia zgomotului şi permit variaţia
semnalelor de intrare între limitele de mod comun ale intrării
amplificatorului de instrumentaţie.

Conexiunea diferenţială pentru surse raportate la masă


În Fig. 25 este prezentat modul de conectare al unei surse de
semnal raportate la masă la placa AT-MIO-16 configurată pentru tip
de intrare DIFF. În cazul utilizării acestei conexiuni, amplificatorul de
instrumentaţie rejectează atât zgomotul de mod comun cât şi diferenţa
de potenţial între punctul de masă al sursei de semnal şi punctul de
masă al plăcii AT-MIO-16 (diferenţă notată Vcm în Fig. 25).

Conexiunea diferenţială pentru surse flotante


În Fig. 26 este prezentat modul de conectare al unei surse
flotante la placa AT-MIO-16 configurată pentru intrare DIFF.
Rezistoarele de 100 kΩ creează o cale de întoarcere spre masă pentru
curenţii de bias ai amplificatorului de instrumentaţie.
Modul de configurare (setare prin jumpere) a plăcii pentru
tipul DIFF este descris în paragraful 3.2.

185
Fig. 25. Conexiunea diferenţială pentru surse raportate la masă

Fig. 26. Conexiunea diferenţială pentru surse flotante

186
4.3.2. Consideraţii asupra conexiunilor single-ended

Conexiunile single-ended sunt acelea în care toate semnalele


analogice de intrare pe placă sunt referite la o masă comună.
Semnalele de intrare sunt legate la intrarea pozitivă a AI, iar punctele
lor de masă comune sunt legate la intrarea negativă a AI.
Atunci când AT-MIO-16 este configurată pentru intrare
single-ended (NRSE sau RSE) sunt disponibile 16 canale analogice.
Se recomandă utilizarea conexiunilor single-ended atunci
când:
• semnalele de intrare au nivel mare (mai mare de 1V);
• cablurile de conectare la AT-MIO-16 sunt mai mici de 5
m;
• toate semnalele de intrare au acelaşi semnal de referinţă.
Dacă oricare din precedentele criterii nu poate fi îndeplinit,
este recomandată folosirea configuraţiei DIFF.
Placa AT-MIO-16 poate fi configurată cu ajutorul jumperelor
(paragraful 3.2) pentru 2 tipuri diferite de conexiuni single-ended:
configuraţie RSE şi configuraţie NRSE. Configuraţia RSE este
folosită pentru surse de semnal flotante; în acest caz AT-MIO-16
furnizează un punct de masă de referinţă pentru semnalul extern.
Configuraţia NRSE este folosită pentru surse de semnal raportate la
masă (grounded-referenced signal sources); în acest caz, semnalul
extern are propriul punct de masă de referinţă.

Conexiunea single-ended pentru surse de semnal flotante


(configuraţie RSE)
În Fig. 27 este reprezentat modul de conectare al unei surse
flotante la placa AT-MIO-16 configurată RSE. Semnalul de intrare
este aplicat la bornele AI, pinul AIGND fiind legat la AISENSE prin
configurarea RSE (prin setarea corespunzătoare a jumperelor).

Conexiunea single-ended pentru surse raportate la masă


(configuraţie NRSE)
Dacă se măsoară un semnal provenit de la o sursă raportată la
masă cu o configuraţie de tip single-ended, atunci trebuie setată placa
pentru tipul de intrare NRSE. Pentru aceasta, se conectează semnalul
la intrarea pozitivă a AI şi masa locală a sursei de semnal la intrarea
negativă a AI prin pinul AISENSE al conectorului I/O. Orice diferenţă
187
de potenţial dintre masa plăcii şi masa semnalului apare ca un semnal
de mod comun la ambele borne ale AI, care va rejecta această
diferenţă. Dacă, în mod greşit, se conectează o sursă de semnal
raportată la masă la placa configurată RSE, atunci diferenţa de
potenţial între punctele de masă va apare ca o eroare de măsurare.
În Fig. 28 este prezentat modul de conectare al unei surse
raportate la masă la placa AT-MIO-16 configurată NRSE.

Fig. 27. Conexiunea single-ended (RSE) pentru surse flotante

Fig. 28. Conexiunea single-ended (NRSE) pentru surse de semnal


raportate la masă

188
4.3.3. Consideraţii privind rejecţia pe mod comun

În Fig. 25 şi 27 sunt prezentate conexiunile plăcii AT-MIO-16


la surse de semnal care sunt deja raportate la un punct de masă. În
aceste situaţii, amplificatorul de instrumentaţie poate rejecta orice
tensiune care apare datorită diferenţelor de potenţial între punctul de
masă al plăcii şi punctul de masă al sursei de semnal. Suplimentar, în
cazul conexiunilor diferenţiale, amplificatorul de instrumentaţie poate
rejecta şi zgomotul de mod comun datorat colectării prin cablurile de
legătură dintre sursa de semnal şi placă.
Domeniul de intrare pe mod comun al amplificatorului de
instrumentaţie de pe placă este definit ca fiind amplitudinea celui mai
mare semnal pe mod comun care poate fi rejectat. Domeniul de intrare
pe mod comun depinde de dimensiunea tensiunii diferenţiale de
intrare şi de amplificarea setată pentru AI, conform formulei:
 Vdiff ⋅ Gain 
Vcm max = ±12V − ,

 2 

unde Vdiff = Vin+ − Vin− şi Gain este amplificarea.


Valoarea curentă a tensiunii de mod comun se poate măsura în
raport cu masa plăcii şi poate fi calculată cu formula:
Vin+ − Vin−
Vcm =
2
unde Vin+ este semnalul de la intrarea pozitivă a AI, iar Vin− este
semnalul de la intrarea negativă a AI.

4.4. Conexiuni pentru ieşiri analogice

Pinii 20, 21, 22 şi 23 ai conectorului I/O (Fig. 23) sunt pini


rezervaţi pentru ieşirile analogice. Dintre aceştia, pinii 20 şi 21 sunt
pinii de semnal DAC0OUT şi DAC1OUT. La pinul DAC0OUT se
conectează tensiunea de ieşire a semnalului pentru canalul de ieşire
analogică 0, iar la pinul DAC1OUT tensiunea de ieşire
corespunzătoare canalului de ieşire analogică 1. La pinul 22, numit
EXTREF, se poate conecta intrarea de referinţă externă pentru ambele

189
canale de ieşiri analogice. Fiecare canal de ieşire analogică trebuie
configurat individual pentru selectarea referinţei externe, caz în care
semnalul aplicat la intrarea de referinţă externă EXTREF va fi folosit
de acest canal.
Instrucţiunile de configurare a ieşirilor analogice (prin setarea
jumperelor) au fost prezentate în paragraful 3.2.
Domeniile şi valorile maxime care se pot aplica la intrarea
EXTREF sunt următoarele:
- domeniul valorilor de intrare este de ±10 V în raport cu
AOGND;
- valorile maxime absolute permise sunt de ±25 V în raport cu
AO GND.
Pinul 23, AOGND, este punctul de referinţă de masă pentru
ambele canale de ieşiri analogice şi pentru semnalul de referinţă
externă. Fig. 29 prezintă modul de conectare a ieşirilor analogice şi a
referinţei externe la placa AT-MIO-16. Dacă nici unul din canalele de
ieşire nu este configurat pentru utilizarea semnalului de referinţă
externă, la pinul EXTREF nu se realizează nici-o conexiune.
Semnalul de referinţă externă poate fi de c.c. sau de c.a. Acest
semnal de referinţă este utilizat de CNA pentru generarea tensiunii de
ieşire.

Fig. 29. Conexiunile pentru ieşiri analogice

190
4.5. Conexiuni pentru intrări/ieşiri numerice

Pinii de la 24 până la 33 ai conectorului I/O (Fig. 23) sunt


rezervaţi pentru intrări/ieşiri numerice. Pinii 25, 27, 29 şi 31 sunt
conectaţi la liniile numerice ADIO 3…0 ale portului numeric A, iar
pinii 26, 28, 30 şi 32 la liniile numerice BDIO 3…0 ale portului B.
Pinii 24 şi 33, numiţi DIGGND, reprezintă pini de masă pentru
ambele porturi numerice I/O. Porturile A şi B pot fi programate
individual ca intrări sau ieşiri numerice.
Câteva din specificaţiile care trebuie respectate de porturile
I/O sunt următoarele:
• Tensiunea de intrare maximă: 6 V în raport cu DIGGND;
• Specificaţiile intrărilor numerice (referite la DIGGND):
- Tensiunea de intrare pentru 1 logic: 2 V minim
- Tensiunea de intrare pentru 0 logic: 0.8 V maxim
• Specificaţiile ieşirilor numerice:
- Tensiunea de ieşire pentru 1 logic: 2.4 V minim
- Tensiunea de ieşire pentru 0 logic: 0.5 V maxim
Fiecare linie numerică de ieşire poate suporta până la 11
sarcini TTL standard.
În Fig. 30 sunt prezentate conexiunile numerice I/O pentru trei
aplicaţii tipice.

Fig. 30. Conexiuni I/O numerice

191
În schema de conectare din Fig. 30, portul A este configurat
ca port de ieşire, iar B ca port de intrare. Aplicaţii tipice de intrări
numerice sunt: recepţionarea de semnale TTL sau detectarea stării
unor dispozitive externe cum ar fi starea contactelor unui releu. Printre
aplicaţiile de ieşiri numerice se pot enumera trimiterea de semnale
TTL sau comanda unor dispozitive externe (ex. LED-ul din Fig. 30).

4.6. Conexiuni de alimentare

Pinii 34 şi 35 ai conectorului I/O sunt conectaţi la sursa de


alimentare de +5 V (0.5 A la +5V ±10%) a calculatorului PC-AT.
Aceşti pini sunt raportaţi la masa DIGGND şi pot fi utilizaţi pentru
alimentarea unor circuite numerice externe.
Observaţie importantă: Pinii de alimentare de +5 V nu trebuie
conectaţi direct la masa analogică sau digitală sau la oricare alta sursă
de alimentare a plăcii AT-MIO-16 sau a oricărui alt dispozitiv (pentru
a evita defectarea plăcii şi/sau a calculatorului).

4.7. Conexiuni pentru semnale de tact şi de sincronizare

Pinii 36 până la 50 ai conectorului I/O al plăcii sunt folosiţi


pentru semnale de tact sau de sincronizare. Pinii de la 36 la 40 sunt
semnale de tact sau de sincronizare destinate achiziţiei de date. Pinii
de la 41 la 50 sunt semnale de tact sau de sincronizare cu scop general
destinate numărătoarelor de pe placa de achiziţie.

4.7.1. Conexiuni pentru semnale de tact şi sincronizare


destinate achiziţiei de date
Semnalele destinate achiziţiei de date sunt SCANCLK,
EXTSTROBE*, STARTTRIG*, STOPTRIG, EXTCONV (pinii 36-
40).
Semnalul SCANCLK este aşa-numitul semnal de tact de
scanare (scan clock). SCANCLK este un semnal TTL de ieşire care
generează un front coborâtor la începerea unei conversii analog-
numerice. În mod normal, semnalul SCANCLK este pe nivel înalt şi
trece pe nivel jos pentru aproximativ 1 µ sec, după începerea
conversiei analog-numerice. Frontul crescător al semnalului indică
faptul că semnalul de intrare a fost achiziţionat.

192
Semnalul de ieşire EXTSROBE* este tot un semnal TTL. La
accesarea registrului External Strobe Register este generat un impuls
de lăţime 100 până la 500 nsec.
Semnalul EXTCONV* este un semnal de intrare TTL
conectat la pinul cu acelaşi nume al conectorului I/O şi este utilizat
pentru triggerarea externă a conversiilor analog-numerice. Aplicarea
unui impuls pe intrarea EXTCONV* (Fig. 31) iniţiază o conversie
analog-numerică (frontul crescător al impulsului aplicat iniţiază
conversia). Lăţimea minimă admisă a impulsului este de 50 nsec, iar
semnalul trebuie să stea pe nivel înalt minim 50 nsec înainte de frontul
coborâtor.
tw
tw – minimum 50 nsec

UH

UL tw
Conversia analog-numerică începe în
maximum 250 nsec din acest punct
Fig. 31. Semnalul EXTCONV*

Un semnal de trigger extern (TTL) aplicat pe pinul


STARTTRIG* poate iniţia o secvenţă de achiziţii analog-numerice
(dacă semnalul EXTCONV* generează conversia, STARTTRIG* nu
influenţează tactul achiziţiei). Operaţiile de achiziţie sunt iniţiate prin
aplicarea unui front coborâtor. Lăţimea minimă a impulsului trebuie să
fie de 50 nsec. Prima conversie analog-numerică din secvenţă începe
pe frontul coborâtor al impulsului, în maximum un interval de scanare
(perioadă de eşantionare).
tw
tw – minimum 50 nsec

UH

UL tw

Prima conversie analog-numerică începe în


maximum un interval de scanare din acest punct
Fig. 32. Semnalul STARTTRIG*

193
Pinul STOPTRIG este utilizat pentru operaţiile de achiziţie de
tip pretrigger ale plăcii AT-MIO-16. Semnalul aplicat pe STOPTRIG
este un semnal de trigger hardware de tip TTL (Fig. 33). În modul
pretrigger, datele sunt achiziţionate, dar numărarea eşantioanelor
achiziţionate începe doar la aplicarea unui front crescător pe
STOPTRIG. Achiziţia de date este completă atunci când numărătorul
de eşantioane este decrementat până la zero. Se observă că în acest
mod de achiziţie se achiziţionează date atât înainte cât şi după
primirea semnalului de trigger hardware.

Numărarea primului eşantion începe în


maximum un interval de scanare din acest punct

UH tw tw – minimum 50 nsec
UL tw

Fig. 33. Semnalul STOPTRIG

4.7.2. Conexiuni pentru semnale de tact şi sincronizare


de uz general
Semnalele de tact şi sincronizare de uz general (pinii 41-50)
sunt GATE, SOURCE şi OUT pentru numărătoarele 1, 2 şi 5 ale
circuitului Am9513A şi semnalul FOUT generat de circuitul
Am9513A. Numărătoarele 1, 2, 5 ale circuitului Am9513A pot fi
folosite în aplicaţii cu scop general, cum ar fi generarea de semnale
dreptunghiulare, numărarea evenimentelor, impulsuri modulate în
durată şi măsurarea frecvenţei. Pentru aceste aplicaţii semnalele
SOURCE şi GATE sunt aplicate direct numărătoarelor prin conectorul
I/O al plăcii şi astfel numărătoarele pot fi programate pentru diferite
operaţii.
Circuitul integrat de numărare/ sincronizare Am9513A are 5
numărătoare/temporizatoare individuale pe 16 biţi şi generator de
frecvenţă programabilă pe 4 biţi.
Schema bloc a circuitului pentru generarea semnalelor de tact
de uz general a fost prezentată în Fig. 8 (paragraful 2.4).

194
ANEXA 2

Amplificatorul de precizie pentru termocuplul de tip J

Amplificatorul de precizie este destinat amplificării


semnalului de nivel mic (milivolţi) provenit de la termocuplul fier-
constantan de tip J (0 – 761 oC). Ieşirea amplificatorului este un
semnal unificat de tensiune în gama 0 – 10 V c.c.
Amplificatorul este realizat cu trei circuite integrate speciale:
- βMTX 121 – preamplificator de precizie la intrarea căruia se
conectează termocuplul;
- βM 108 – amplificator operaţional de precizie care împreună
cu primul circuit formează un amplificator neinversor cu factor de
amplificare de circa 106;
- un al doilea circuit βM 108 montat în configuraţie de
amplificator neinversor care asigură transformarea finală în semnal
unificat 0 – 10 V c.c.
Amplificatorul de precizie are un factor de amplificare de
aproximativ 107. Schema electronică a amplificatorului este prezentată
în Fig. 1. Amplificatorul are şi rolul de circuit de condiţionare a
semnalului. Astfel, compensarea influenţei temperaturii mediului
ambiant (a temperaturii joncţiunii reci) asupra preciziei de măsurare
se face prin intermediul tensiunii stabilizate furnizate de o diodă Zener
care variază în funcţie de temperatură. Această tensiune se aplică la
intrarea inversoare a primului circuit amplificator. La creşterea
temperaturii mediului ambiant, tensiunea la bornele diodei Zener
scade, deci scade tensiunea de pe intrarea inversoare, mărindu-se
astfel tensiunea de ieşire. În situaţia considerată tensiunea furnizată de
către termocuplu este mai mică deoarece tensiunea termo-
electromotoare este direct proporţională cu diferenţa de temperatură
dintre cele două joncţiuni, diferenţă care scade datorită creşterii
temperaturii joncţiunii reci şi prin urmare scade şi tensiunea
electromotoare furnizată de termocuplu. Datorită acestui fenomen,
tensiunea de la ieşirea amplificatorului de precizie ar fi mai mică nu
datorită modificării temperaturii punctului de măsurare ci datorită
creşterii temperaturii joncţiunii reci. Această abatere este compensată

195
prin urmare prin aplicarea pe intrarea inversoare a primului circuit
amplificator a tensiunii de la bornele diodei Zener.

Fig. 1. Schema electronică a amplificatorului de precizie

196
Caracteristica statică temperatură – tensiune a ansamblului
termocuplu de tip J – amplificator de precizie a fost ridicată cu
ajutorul unui voltmetru şi a unui termometru, fiind obţinute datele din
tabelul 1. Domeniul de temperatură luat în considerare pentru
efectuarea măsurătorilor a fost 20 – 140 oC.
Pe baza acestor date a fost obţinută reprezentarea grafică din
Fig. 2, din care se observă caracterul aproape liniar al ansamblului
termocuplu – amplificator de precizie pe domeniul de funcţionare
considerat.

Tabelul 1.

Temperatură Tensiune Temperatură Tensiune


[oC] [V] [oC] [V]

20 2.00 85 6.05
25 2.14 90 6.35
30 2.28 95 6.75
35 2.61 100 7.10
40 2.97 105 7.35
45 3.31 110 7.75
50 3.63 115 8.15
55 3.95 120 8.48
60 4.32 125 8.78
65 4.65 130 9.25
70 5.01 135 9.62
75 5.33 140 10.00
80 5.70

197
11
10
9
8
Tensiune [V]

7
6
5
4
3
2
1
0
0 20 40 60 80 100 120 140 160
Temperatură [grade Celsius]

Fig. 2. Caracteristica statică temperatură – tensiune a ansamblului


termocuplu – amplificator de precizie

198
BIBLIOGRAFIE

[1] Asch, G., Acquisition de données du capteur à l’ordinateur,


Dunod, Paris, 1999.
[2] Asch, G., Les capteurs en instrumentation industrielle, Dunod,
Paris, 1999.
[3] Bentley, J.P., Principles of Measurements Systems, Longman
Scientific & Technical, United Kingdom, 1988.
[4] Cottet, F., Ciobanu, O., Bazele Programării în LabVIEW,
MATRIX ROM, Bucureşti, 1998.
[5] Golovanov, C., Albu, M. (coordonatori), Probleme moderne de
măsurare în electroenergetică, Ed. Tehnică, Bucureşti, 2001.
[6] Iancu, E., Transmisia Datelor, Ed. Reduta, Craiova, 1998.
[7] Ionete, C., Selişteanu, D., Echipamente de Automatizare şi
Protecţie, Reprografia Universităţii din Craiova, 2000.
[8] Jurca, T., Stoiciu, D., Instrumentaţie de măsurare. Structuri şi
circuite, Ed. de Vest, Timişoara, 1996.
[9] Marin, C., Popescu, D., Petre, E., Selişteanu, D., Ionete, C.,
Sisteme de Reglare Automată. Lucrări Practice I, Ed. Sitech,
Craiova, 1997.
[10] Marin, C., Petre, E., Popescu, D., Ionete, C., Selişteanu, D.,
Sisteme de Reglare Automată. Lucrări Practice II, Ed. Sitech,
Craiova, 1998.
[11] Marin, C., Popescu, D., Petre, E., Ionete, C., Selişteanu, D.,
Teoria Sistemelor, Ed. Universitaria, Craiova, 2001.
[12] McGhee, J., Kulesza, W., Henderson, I.A., Korczynski, M.J.,
Measurement Data Handling. Theoretical Technique, Technical
University of Lodz, ACGM. Lodart, Lodz, Polonia, 2001.
[13] McGhee, J., Kulesza, W., Henderson, I.A., Korczynski, M.J.,
Measurement Data Handling. Hardware Technique, Technical
University of Lodz, ACGM. Lodart, Lodz, Polonia, 2001.
[14] Nachtingal, Chester L. (ed.), Instrumentation and Control.
Fundamentals and Applications, John Wiley & Sons, Inc., New
York, 1990.

199
[15] Nussbaumer, H., Informatique industrielle II, Presses
Polytechniques Romandes, Lausanne, 1986.
[16] Oppenheim, A.V., Schafer, R.W., Discrete-Time Signal
Processing, Second Edition, Prentice Hall International, 1999.
[17] Porat, B., A Course in Digital Signal Processings, John Wiley &
Sons, Inc., New York, 1997.
[18] Selişteanu, D., Ionete, C., Petre, E., Popescu, D., Şendrescu, D.,
Ghid de programare în LabVIEW. Aplicaţii pentru prelucrarea
semnalelor, Tipografia Universităţii din Craiova, 2003.
[19] Tompkins, W.J., Webster, J.G.W. (editori), Interfacing Sensors to
the IBM PC, Prentice Hall, SUA, 1988.
[20] Ţăţulescu, M., Instrumentaţie şi tehnici electrice de măsurare,
Reprografia Universităţii din Craiova, 1997.
[21] ***, AT-MIO-16 User Manual, National Instruments, SUA,
1995.
[22] ***, LabVIEW User Guide, National Instruments, SUA, 1996.
[23] ***, LabVIEW Data Acquisition Course Manual, National
Instruments, SUA, 2001.
[24] ***, LabVIEW Measurements Manual, National Instruments,
SUA, 2000.
[25] ***, NI-DAQ User Manual, National Instruments, SUA, 2001.
[26] ***, Product Data: Sensors – Thermocouples, Connectors and
Platinum Resistance Thermometers, Eurotherm Controls Limited,
Marea Britanie, 1994.

200