Documente Academic
Documente Profesional
Documente Cultură
Editura SITECH
Craiova 2004
PREFAŢĂ
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
6
LUCRAREA NR. 1
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)
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.
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.
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
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.
14
Fig. 7. Achiziţia mono-punct mono-canal cu AI Sample Channel.vi
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
17
Fig. 11. Instrumentul AI Config.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
19
un buffer circular şi returnează un număr specificat de date măsurate
la fiecare apelare a VI-ului.
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.
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).
22
Fig. 21. Configurarea ieşirilor analogice
23
Fig. 23. Teste pentru intrarea analogică 0 şi pentru ieşirea analogică 0
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
27
Fig. 1. Aplicaţia Cont Acq&Chart (immediate).vi
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.
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.
30
Fig. 3. Achiziţia multi-punct mono-canal cu AI Acquire Waveform.vi
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.
32
Fig. 6. Achiziţia simple-buffer multi-punct cu AI Waveform Scan.vi
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
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).
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.
37
Fig. 9. Achiziţia multi-punct repetată a unui semnal dreptunghiular
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.
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ă.
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).
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.
42
Fig. 16. Achiziţia multi-punct cu buffer circular a unui semnal
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
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.
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
Date analogice
Dispozitiv Hardware
extern de achiziţie
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.
Date analogice
Dispozitiv Hardware
extern de achiziţie
48
Fig. 5. Diagrama unei achiziţii de date cu triggerare software
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)
50
Fig. 7. Instrumentul AI Start.vi
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.
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.
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.
54
Fig. 10. Fereastra panou a aplicaţiei de achiziţie cu trigger analogic
55
Fig. 11. Exemplu de achiziţie continuă de date cu triggerare numerică
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).
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).
58
Fig. 13. Exemplu de achiziţie de date cu triggerare software
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
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)
Generare hardware-timed
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.
Intermediate Analog
Output VIs
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)
Ş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.
65
Fig. 7. Instrumentul AO Wait.vi
66
Fig. 11. Instrumentul AO Continuous Gen.vi
67
Fig. 12. Generarea mono-punct mono-canal cu AO Update Channel.vi
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.
69
Fig. 14. Diagrama aplicaţiei de generare cu AO Write One Update.vi
în buclă While
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
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).
72
Fig. 2. Fereastra diagramă a aplicaţiei cu AO Generate Waveforms.vi
73
Fig. 3. Generarea bufferată cu VI-uri de nivel intermediar
74
Fig. 4. Aplicaţie de generare simplu-bufferată cu VI-uri intermediare
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.
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.
77
Fig. 7. Diagrama aplicaţiei de generare a unor semnale sinusoidale
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).
79
Fig. 10. Achiziţia şi vizualizarea semnalului generat
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ă.
81
Fig. 13. Fereastra Diagram a aplicaţiei Continuous Generation.vi
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).
83
Fig. 15. Generarea continuă a unor tensiuni pe canalele 0, 1
84
Fig. 16. Aplicaţie 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).
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
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
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
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.
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
Structurare date şi
Scalare date stocare pe fişier binar
(reprez. dublă precizie, al unei baze de date
unit. inginereşti etc.)
Structurare date şi
stocare pe fişier binar
Formatare ASCII al unei baze de date
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.
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.
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).
99
Fig. 10. Diagrama aplicaţiei de citire a fişierului multipli_pi.txt
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.
101
Fig. 15. Specificarea căii şi fişierului pentru scrierea de date binare
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
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
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.
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
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
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)
JR JR
(+) JC
Adaptor
θ
(-)
Termocuplu
U [V]
JC - Joncţiunea caldă
JR - Joncţiunea rece
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
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
115
Fig. 5. Vizualizarea temperaturii măsurate şi achiziţionate (fereastra
panou a aplicaţiei)
116
Fig. 6. Instrumentul Temperature System Demo.vi
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
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:
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.
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.
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.
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.
124
Fig. 8. Instrumentul SO Wait.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.
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)
Da
Mod redare continuu ?
STOP
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
130
Fig. 15. Structura diagramei generatorului complex de sunet
131
Fig. 16. Setarea parametrilor plăcii de sunet
132
Fig. 17. Utilizarea instrumentelor Get Waveform Components.vi şi
Array Subset.vi
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.
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)
∆Τ
Da
Mod redare continuu ? Refresh parametri ?
STOP
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).
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
- cuprins -
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
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
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.
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.
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.
146
date controlează direcţia transferului de date pe liniile bidirecţionale
de date în funcţie de tipul transferului (scriere sau citire).
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
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.
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
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.
155
SOURCE
Numărător OUT
GATE
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.
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.
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ă.
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.
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.
163
Fig. 11. Circuitul de interfaţă cu magistrala RTSI
164
3. Configurarea plăcii AT-MIO-16H
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
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ă)
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. 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.
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.
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.
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.
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
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.
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.
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
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
181
Fig. 24. Schema bloc a amplificatorului de instrumentaţie
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
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.
185
Fig. 25. Conexiunea diferenţială pentru surse raportate la masă
186
4.3.2. Consideraţii asupra conexiunilor single-ended
188
4.3.3. Consideraţii privind rejecţia pe mod comun
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.
190
4.5. Conexiuni pentru intrări/ieşiri 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).
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*
UH
UL tw
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.
UH tw tw – minimum 50 nsec
UL tw
194
ANEXA 2
195
prin urmare prin aplicarea pe intrarea inversoare a primului circuit
amplificator a tensiunii de la bornele diodei Zener.
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.
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]
198
BIBLIOGRAFIE
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