5. Intrare analogică

Această lecție descrie deciziile pe care trebuie să le luați pentru a eșantiona un semnal analogic de intrare și caracteristicile LabVIEW pe care le utilizați în mod specific cu VI-urile NI-DAQmx.

Cuprins:

5.1 Considerații de intrare analogică

5.2 Filtre anti-aliasing

5.3 Cum se utilizează VI-ul DAQmx Read

5.4 Achiziție cu un singur punct

5.5 Achiziție buffer-ată

5.6 Achiziție declanșată

5.1 INTRARE ANALOGICĂ

Datorită numeroaselor avantaje ale procesării semnalului digital, semnalele analogice sunt, de asemenea, convertite în formă digitală înainte de a fi procesate cu un computer. Un semnal digital este unul care poate presupune doar un set finit de valori atât în variabile dependente cât și independente. Variabila independentă este de obicei timpul sau spațiul, iar variabila dependentă este de obicei amplitudinea.

Semnalele digitale sunt peste tot în lumea din jurul nostru. Companiile de telefonie folosesc semnale digitale pentru a reprezenta vocea umană. Radio, TV și sistemele se sunet hi-fi se convertesc toate treptat în domeniul digital din cauza fidelității superioare a acestuia, reducerii zgomotului și flexibilității de procesare a semnalului. Datele sunt transmise de la sateliți către stațiile terestre în formă digitală. Imaginile de la NASA ale planetelor îndepărtate și ale spațiului cosmic sunt adesea procesate digital pentru a elimina zgomotul și pentru a extrage informații utile. Date economice, rezultatele recensământului și prețurile bursiere sunt toate disponibile în formă digitală.

Eșantionarea semnalului

Pentru a achiziționa un semnal analogic, trebuie mai întâi să convertiți un semnal analogic în reprezentarea sa digitală. În practică, acest lucru este implementat utilizând un convertor analogic-digital (A/D). Considerați un semnal analogic x(t), care este eșantionat la fiecare Δt secunde. Intervalul de timp Δt este cunoscut ca intervalul de eșantionare sau perioada de eșantionare. Inversa lui, 1/Δt, este cunoscută ca frecvență de eșantionare, cu unități de eșantioane/secundă. Fiecare dintre valorile discrete ale lui x(t) la t = 0, Δt, 2Δt, 3Δt etc., este cunoscută ca un eșantion. Astfel, x(0), x(Δt), x (2Δt), ..., sunt toate eșantioane. Semnalul x(t) poate fi reprezentat de setul discret de eșantioane așa cum se arată în următoarea ecuație.

{x(0), x(Δt), x(2Δt), x(3Δt),…, x(kΔt), ...}

Următoarea figură arată un semnal analogic și versiunea eșantiona corespunzătoare a acestuia. Intervalul de eșantionare este Δt. Eșantioanele sunt definite la puncte discrete în timp.

În acest curs, următoarea notație reprezintă eșantioanele individuale:


x[i] = x(iΔt), pentru i = 0, 1, 2, ...

Dacă se obțin N eșantioane de la semnalul x(t), x(t) poate fi reprezentat prin secvenţa:

X = {x[0], x[1], x[2], x[3],…, x[N – 1]}

Aceasta este cunoscută ca reprezentare digitală sau versiunea eșantionată a lui x(t).

Observați că secvența X = {x[i]} este indexată pe variabila întreagă i și nu conține nicio informație despre rata de eșantionare. Cunoscând doar valorile eșantioanelor conținute în X, nu veți ști ce rată de eșantionare este.

Rata de eșantionare

Unul dintre cele mai importante elemente ale unui sistem de măsurare a unei intrări analogice sau a unei ieșiri analogice este rata la care dispozitivul de măsurare eșantionează un semnal de intrare sau generează semnalul de ieșire. Rata de scanare, sau rata de eșantionare în NI-DAQmx, determină cât de des are loc conversia analogic-digitală (A/D) sau digital-analogică (D/A). O rată de eșantionare rapidă la intrare achiziționează mai multe puncte într-un timp dat și poate forma o mai bună reprezentare a semnalul original decât poate o rată de eșantionare lentă. Generarea unui semnal de 1 Hz utilizând 1.000 de puncte pe ciclu la 1.000 S/s produce o reprezentare mult mai fină decât utilizarea a 10 puncte pe ciclu la o rată de eșantionare de 10 S/s.(S =samples - eșantioane)

Aliasing (dedublare)

Eșantionarea prea lentă duce la aliasing, ceea ce reprezintă o denaturare a semnalului analogic. Sub-eșantionarea face ca semnalul să apară ca și cum ar avea un frecvență diferită decât o are de fapt. Pentru a evita aliasing, eșantionați de multe ori mai rapid decât frecvența semnalului.

Următoarea ilustrație arată un semnal eșantionat corespunzător și efectele aliasing ale sub-eșantionării.

1. Eșantionat adecvat 2. Aliasing ca rezultat al sub-eșantionării

Pentru măsurători de frecvență, conform teoremei Nyquist, trebuie eșantion la o rată mai mare de două ori componenta de frecvență maximă în semnalul pe care îl achiziționați pentru a reprezenta cu exactitate semnalul. Frecvența Nyquist este frecvența maximă pe care nu o puteți reprezenta cu acuratețe fără aliasing pentru o rată de eșantionare dată. Frecvența Nyquist este jumătate din frecvența de eșantionare. Semnalele cu componente de frecvență deasupra frecvenței Nyquist apare dedublat între DC și frecvența Nyquist. Frecvența alias este valoarea absolută a diferenței dintre frecvența semnalul de intrare și cel mai apropiat multiplu întreg al ratei de eșantionare.

De exemplu, să presupunem că frecvența de eșantionare, fs, este de 100 Hz. Să presupunem, de asemenea, că semnalul de intrare conține următoarele frecvențe: 25 Hz, 70 Hz, 160 Hz și 510 Hz, așa cum se arată în ilustrația următoare.

Frecvențele sub frecvența Nyquist (fs/2 = 50 Hz) sunt eșantionate corect, așa cum se arată în ilustrația următoare. Frecvențele peste frecvența Nyquist apare ca dedublate. De exemplu, F1 (25 Hz) apare la frecvența corectă, dar F2 (70 Hz), F3 (160 Hz) și F4 (510 Hz) au alias-uri la 30 Hz, 40 Hz și respectiv 10 Hz.

Utilizați următoarea ecuație pentru a calcula frecvența alias:

​​Frecv. alias = ABS (cel mai apropiat multiplu întreg al frecvenței de eșantionare - frecvența de intrare)

unde ABS înseamnă valoarea absolută. De exemplu,

Alias ​​F2 = | 100 - 70 | = 30 Hz

Alias ​​F3 = | (2) 100 - 160 | = 40 Hz

Alias ​​F4 = | (5) 100 - 510 | = 10 Hz

Determinarea cât de repede se eșantionează

S-ar putea să doriți să eșantionați la rata maximă disponibilă pe dispozitivul de măsurare. Dar, dacă eșantionați foarte rapid pe perioade lungi de timp, este posibil să nu aveți suficientă memorie sau spațiu pe hard disk pentru a păstra datele. Următoarea ilustrație arată efectele diferitelor rate de eșantionare.

Exemplul A, eșantionează unda sinusoidală de frecvență f la aceeași frecvență fs. Eșantioanele achiziționate au ca rezultat un alias la DC. Dar, dacă creșteți rata de eșantionare la 2fs, forma de undă digitalizată are frecvența corectă sau același număr de cicluri ca forma de undă originală, dar apare ca o formă de undă triunghi, așa cum se arată în Exemplul B. Prin creșterea ratei de eșantionare bine deasupra fs, puteți reproduce mai exact forma de undă. În exemplul C, rata de eșantionare este de 4 fs/3. Pentru că în acest caz frecvența Nyquist este sub fs, (4fs/3 x 1)/2 = 2fs/3), această rată de eșantionare reproduce o formă de undă alias de frecvență și formă incorecte.

Teorema Nyquist oferă un punct de plecare pentru rata de eșantionare adecvată - mai mare de două ori ca cea mai înaltă componentă de frecvență din semnal. Din păcate, această rată este adesea inadecvată pentru scopuri practice. Semnalele din lumea reală conțin adesea componente de frecvență situate deasupra frecvenței Nyquist și sunt în mod eronat dedublate și adăugate la componentele de semnal care sunt eșantionate cu acuratețe, producând date eșantionate distorsionate.
Prin urmare, pentru scopuri practice, eșantionarea se face de obicei la de mai multe ori frecvența maximă - de 5 până la 10 ori este tipică în industrie.

5.2 FILTRE ANTI-ALIASING

Ați văzut că rata de eșantionare ar trebui să fie de cel puțin două ori frecvența maximă a semnalului pe care îl eșantionați. Cu alte cuvinte, frecvența maximă a semnalului de intrare trebuie să fie mai mică sau egală cu jumătate din rata de eșantionare. Dar cum vă asigurați că acest lucru este cu siguranță cazul în practică? Chiar dacă sunteți sigur că semnalul de măsurat are o limită superioară a frecvenței sale, preluarea de la semnale rătăcite (cum ar fi frecvența liniei de alimentare sau de la posturile de radio locale) ar putea conține frecvențe mai înalte decât frecvența Nyquist. Aceste frecvențe pot fi apoi dedublate în gama de frecvență dorită și astfel vă oferă rezultate eronate.

Pentru a fi complet sigur că conținutul de frecvență al semnalului de intrare este limitat, un filtru lowpass (un filtru care trece frecvențele joase, dar atenuează frecvențele înalte) se adaugă înainte de ADC. Acest filtru se numește filtru anti-alias deoarece împiedică componentele de aliasing să fie eșantionate prin atenuarea frecvențelor mai înalte (mai mari decât Nyquist). Filtrele antialiasing sunt filtre analogice. Următoarea ilustrație arată un filtru anti-alias ideal.

Un filtru anti-aliasing ideal trece toate frecvențele de intrare dorite (sub f1) și taie toate frecvențele nedorite (peste f1). Dar, un filtrul anti-aliasing ideal nu este posibil din punct de vedere fizic. În practică, filtrele arată ca în ilustrația (b) de mai sus. Filtrele anti-aliasing practice trec toate frecvențele < f1 și taie toate frecvențele > f2. Regiunea dintre f1 și f2 este cunoscută sub numele de banda de tranziție, care conține o atenuare treptată a frecvențelor de intrare. Deși doriți să transmiteți numai semnale cu frecvențe < f1, semnalele din banda de tranziție ar putea provoca în continuare aliasing.
Prin urmare, în practică, ar trebui să utilizați o frecvență de eșantionare mai mare decât de două ori cea mai mare frecvență din banda de tranziție. Pentru că această frecvență de eșantionare se dovedește a fi de peste două ori mai mare decât frecvența de intrare maximă (f1), s-ar putea să vedeți că rata de eșantionare este de peste două ori frecvența maximă de intrare.

Exercițiul 4-1 Rata de eșantionare și Aliasing

Obiectiv: Să se demonstreze aliasing și efectele ratei de eșantionare asupra unui semnal de intrare.

1. Conectați analog out 0 la analog in 1 pe DAQ Signal Accessory.

2. Deschideți Sampling Rate Example VI situat în directorul C:\Exercises\LabVIEW DAQ. Apare următorul panou frontal.

Acest VI achiziționează o undă sinusoidală generată de circuitele de ieșire analogică de pe dispozitivul DAQ. VI-ul trasează atât domeniul timp cât și domeniul frecvență ale semnalului achiziționat.

3. Setați comenzile panoului frontal cu următoarele valori:

Device: Selectați numărul corect pentru dispozitivul dvs. DAQ.
Analog Output Frequency: 500
Analog Input Frequency: 1500

4. Rulați VI-ul. Coordonata x a vârfului pe care îl vedeți pe graficul Frequency reprezintă frecvența undei sinusoidale generate de dispozitivul DAQ.

Amintiți-vă că Frecvența Nyquist (fn) este fn = ½ fs.

Cu o rată de eșantionare de 1.500 Hz, frecvența Nyquist este de 750 Hz. Aceasta implică faptul că rata de eșantionare este suficientă pentru a măsura o undă sinusoidală de până la 750 Hz. Când rulați VI-ul, vedeți un vârf la 500 Hz, care este frecvența de ieșire analogică generată de dispozitivul DAQ.

5. Opriți VI-ul. Faceți clic pe butonul Zoom din graficul de date în domeniul- timp și măriți pe axa-x.

Datele arată ca o undă triunghiulară. Pentru că eșantionați de trei ori mai rapid decât frecvența de ieșire analogică, satisfaceți Teorema lui Nyquist, dar nu surprindeți forma semnalului. Observați pe graficul de date din domeniul-frecvență pe care l-ați captat frecvența corectă a semnalului.

6. Rulați VI. Măriți frecvența de intrare analogică la 5.000 Hz. Forma semnalului din domeniul-timp arată ca o undă sinusoidală netedă. Creșterea ratei de eșantionare de 10 ori mai rapidă decât semnalul pe care încercați să-l achiziționați mai exact reprezintă forma semnalului. În general, încercați să achiziționați un semnal de 5 până la 10 ori mai rapid decât cea mai înaltă frecvență din semnalul pe care încercați să îl captați.

7. Setați frecvența de intrare analogică egală cu 1.000 Hz. Eșantionați acum la 2fn. Când eșantionați la 2fn, semnalul din domeniul-timp arată ca o undă triunghiulară. Reprezentați cu exactitate frecvența semnalul pe care îl achiziționați, dar nu forma. Dacă măriți frecvența de intrare analogică chiar peste 1.000 Hz, frecvența semnalului este, de asemenea reprezentată în graficul domeniului-frecvență. Pe măsură ce creșteți încet Butonul frecvenței de intrare analogică, puteți vedea frecvența semnalului achiziționat. Acest lucru implică faptul că trebuie să eșantionați la mai mult de 2fn pentru a reprezenta cu exactitate domeniul- frecvență al unui semnal achiziționat.

8. Reduceți frecvența de intrare analogică la 750 Hz. fn este egal cu 375 Hz, care este mai joasă decât frecvența semnalului achiziționat. Deși forma de undă a datelor din domeniul-timp apare de natură sinusoidală, semnalul este dedublat, care este indicat de frecvența incorectă afișată pe graficul din domeniu-frecvență. Frecvența alias pe care o vedeți este determinată de următoarea formulă:

Frecvență alias = |(cel mai apropiat multiplu întreg al frecvenței de eșantionare - frecvența semnalului)|

Prin urmare, |750 - 500| = 250 Hz, ceea ce vedeți pe graficul din domeniu- frecvență.

Graficul domeniului-frecvență afișează frecvența incorectă deoarece frecvența a fost dedublată între 0 și 375 Hz. Semnalul de 500 Hz a fost dedublat la 250 Hz.

9. Închideți VI-ul. Nu salvați modificările.

Sfat Când selectați o rată de eșantionare pentru a obține informații din domeniul-timp, cum ar fi forma undei, trebuie să supra-eșantionați la o rată de cel puțin cinci ori mai mare decât cea mai înaltă componentă de frecvență din forma de undă. Dacă doriți să obțineți numai informații despre frecvență, supra-eșantionați de cel puțin două ori mai mare decât cea mai înaltă componentă de frecvență din forma de undă, conform teoremei Nyquist.

Sfârșitul exercițiului 4-1

5.3 UTILIZAREA VI-ului DAQmx Read

DAQmx Read VI situat în DAQmx - Data Acquisition citește eșantioane de la sarcina sau canalele pe care le specificați. Exemplele acestui VI polimorf specifică ce format de eșantioane să returneze, dacă să citească un singur eșantion sau mai multe eșantioane simultan și dacă trebuie citit de la unul sau mai multe canale. Utilizați meniul vertical (pull-down) pentru a selecta un exemplu de VI, așa cum se arată în figura următoare.

În primul meniu de selecție puteți alege dintre următoarele tipuri de intrare:

• Analogic
• Digital
Contor
• Mai multe (date brute)

Utilizați al doilea meniu de selecție pentru a determina numărul de canale de la care citiți sau dacă datele sunt nescalate. Utilizați al treilea meniu de selecție pentru a alege să citiți un singur eșantion sau mai multe eșantioane. Dacă selectați un singur eșantion, utilizați al patrulea meniu de selectare pentru a selecta dacă se returnează datele ca formă de undă sau o valoare cu dublă precizie, în virgulă mobilă. Dacă selectați mai multe eșantioane, utilizați al patrulea meniu de selecție pentru a selecta dacă se returnează datele ca formă de undă sau o serie de valori cu dublă precizie, în virgulă mobilă.

Când abordați canale de intrare analogică sau de ieșire analogică, este posibil să doriți să adresați mai multe canale odată. Dacă aceste canale au același tip de sincronizare și declanșare, grupați canalele într-o sarcină (task). În caz contrar, utilizați instrumentul I/O Name Filtering din meniul de comenzi rapide al sarcinii NI-DAQmx sau controlul/constanta canalului și selectați Allow Multiple Names (selectare implicită). Separați numele canalelor cu o virgulă. Nu puteți aborda mai multe sarcini simultan.

Tip de date formă de undă

Tipul de date al formei de undă este un cluster (grup) care constă din următoarele elemente:

YUn șir 1D de puncte de date numerice, care poate fi un singur punct sau o formă de undă în funcție de operație. Reprezentarea șirului 1D este DBL.

t0 — O valoare scalară care reprezintă timpul, în funcție de ceasul sistemului, când a fost achiziționat primul punct din șirul Y. Acest element este numit și timpul inițială sau marca de timp.

Δt —O valoare scalară care reprezintă timpul dintre punctele de date din șirul Y.

Attributes — Un șir care vă permite să grupați alte informații cu forma de undă, cum ar fi numărul dispozitivului sau numărul canalului.

Tipul de date formă de undă are multe avantaje față de șirul scalat convențional.

Prezența lui t0 — Înainte de a exista tipul de date formă de undă, nu ați fi putut determinați când au fost achiziționate datele. Tipul de date formă de undă returnează automat ora și data în elementul t0, ceea ce vă oferă un timp real de achiziție pentru date.

Trasare mai ușoară - Tipul de date formă de undă simplifică trasarea de date. Versiunile anterioare ale LabVIEW necesitau să grupați valoarea punctul inițial (x0) și timpul dintre puncte (Δx) cu datele (Șirul Y). Tipul de date formă de undă conține aceste elemente, deci tot ce trebuie să faceți este să conectați tipul de date formă de undă la grafic.

Trasarea curbelor multiple mai ușoară - Tipul de date formă de undă simplifică trasarea mai multor grafice. Versiunile anterioare ale LabVIEW vă cereau să grupați x0, Δx și șirul Y pentru fiecare diagramă, apoi construiați o matrice pentru a crea un grafic multiplu. Folosind un tip de date formă de undă, conectați un șir 1D al formelor de undă la grafic pentru un grafic multiplu. Dacă achiziționați date de la mai multe canale cu un VI de intrare analogică, VI-ul returnează un șir 1D, pe care îl puteți conecta direct la grafic.

Exercițiul 4-2 VI-ul Voltmetru

Obiectiv: Achiziționarea unui semnal analogic folosind un dispozitiv DAQ.

Finalizați pașii următori pentru a construi un VI care măsoară tensiunea pe care o transmite senzorul de temperatură de pe DAQ Signal Accessory. Senzorul de temperatură generează o tensiune proporțională cu temperatura. Senzorul este conectat la canalul 0 al dispozitivului DAQ.

Panoul frontal

1. Deschideți un VI gol și construiți următorul panou frontal.

Configurați scala aparatului de la 0,0 la 0,4. Utilizați instrumentul Labeling pentru a face dublu clic pe 10.0 și tastați 0.4. S-ar putea să fie nevoie să măriți aparatul pentru a afișa scala.

Diagrama bloc

2. Construiți următoarea diagramă bloc.

Plasați DAQmx Create Virtual Channel VI, situat în paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI creează un canal virtual de tipul specificat în meniul derulant al exemplului. Selectați instanța AI Voltage din meniul derulant.

b. Plasați DAQmx Start Task VI, situat în paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc.. Acest VI pornește sarcina de măsurare.

c. Plasați o Buclă While, aflată în paleta Functions»All Functions» Structures, pe diagrama bloc. While Loop repetă subdiagrama din interiorul său până când terminalul condițional primește o anumită valoare booleană.

d. Plasați DAQmx Read VI, situat pe paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI efectuează citirea măsurătorii pe care o specificați în meniul derulant al exemplului. Selectați Analog»Single Channel»Single Sample»DBL. Această instanță returnează un singur eșantion analogic de date numerice în virgulă mobilă, cu dublă precizie de la un singur canal.

e. Plasați funcția Wait Until Next ms Multiple function, aflată în paleta Functions»All Functions»Time & Dialog, pe diagrama bloc. Această funcție face ca bucla să se execute la fiecare 100 ms.

f. Plasați DAQmx Stop Task VI, aflat în paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI oprește sarcina de măsurare.

g. Plasați VI-ul Simple Error Handler, situat în paleta Functions»All Functions»Time & Dialog, pe diagrama bloc. În cazul unei erori, acest VI afișează o casetă de dialog cu informații despre eroare și unde a apărut.

3. Salvați VI ca Voltmeter.vi în directorul C:\Exercises\LabVIEW DAQ.

4. Afișați panoul frontal și setați canalul fizic ca DevX/ai0, unde X este numărul de dispozitiv al dispozitivului dvs. DAQ, așa cum este setat în MAX.

5. Rulați VI-ul. Aparatul afișează tensiunea ieșirii senzorului de temperatură. Așezați degetul pe senzorul de temperatură și observați creșterea tensiunii.

6. Opriți VI-ul.

7. Plasați un control DAQmx Global Channel, situat pe paleta Controls» All Controls»I/O»DAQmx Name Controls, de pe panoul frontal.

8. Reveniți la diagrama bloc și ștergeți DAQmx Create Virtual Channel VI și controlul physical channels.

9. Conectați controlul DAQmx Global Channel la sarcina/canalele din intrarea DAQmx Start Task VI.

10. Reveniți la panoul frontal și selectați canalul Temperature Sensor. Rulați VI-ul. Temperatura se afișează pe aparat. Valorile temperaturii sunt de 100 de ori mai mari decât valorile tensiunii deoarece canalul NI-DAQmx folosește o scală personalizată pentru a multiplica tensiunea cu o sută. Schimbați scala aparatului pentru a vedea valorile corecte.

11. Salvați și închideți VI-ul.

Sfârșitul exercițiului 4-2

5.4 ARHITECTURI DE DISPOZITIVE DAQ

Numărul și dispunerea componentelor pe dispozitiv depind de dispozitivul DAQ pe care îl utilizați. Arhitectura dispozitivului afectează modul cum eșantionați un semnal. Dispozitivele DAQ de la National Instruments care efectuează intrare analogică pot avea una din cele două arhitecturi principale, așa cum se arată în tabelul ce urmează.

Arhitectura de eșantionare pe interval și round-robin constă dintr-un multiplexor, un amplificator de instrumentație și un ADC. În acest aspect, toate canalele de intrare trebuie să partajeze un ADC. Utilizarea unui singur ADC face arhitectura foarte rentabilă, deci este utilizată pe majoritatea dispozitivelor din seria E. Arhitectura de eșantionare simultană constă dintr-un amplificator de instrumentație și un ADC pentru fiecare canal. Această arhitectură este utilizată pe familia de dispozitive PCI-611X. Deși această arhitectură este mai scumpă decât utilizarea unui ADC pentru toate canalele, vă permite să efectuați eșantionare simultană.

Terminologia eșantionării

Samples per Channel per Second - numărul de eșantioane de achiziționat pe fiecare secundă.

Sample Clock — Un tren de impulsuri utilizat pentru a începe achiziționarea eșantionului. De fiecare dată când sample clock produce un impuls, se achiziționează un eșantion pe canal.

AI Convert Clock — Un tren de impulsuri utilizat pentru a declanșa o conversie A/D.

Sample Duration - timpul necesar pentru completarea unui set de eșantioane. Utilizați următoarea formulă pentru a calcula durata eșantionului:

Sample Duration = (# of channels – 1) × AI Convert Clock

Eșantionarea pe intervale

În eșantionarea unui semnal, puteți alege dintre eșantionarea pe intervale, eșantionare round-robin sau eșantionare simultană. Următoarea ilustrație arată un exemplu de eșantionare pe intervale.

Cea mai comună metodă, eșantionarea pe intervale, partajează un ADC între toate canalele de pe dispozitiv. Această arhitectură se găsește pe majoritatea dispozitivelor din seria E. Eșantionarea pe intervale utilizează un sample clock și AI Convert Clock pentru a controla multiplexorul (MUX). Pentru a înțelege modul în care aceste două ceasuri interacționează, presupuneți că achiziționați date de pe două canale. Când sample clock semnalează începutul unei achiziții, MUX conectează primul canal la ADC, iar AI Convert Clock pulsează o dată. Când AI Convert Clock pulsează, ADC achiziționează un punct de la primul canal. Inainte ca AI Convert Clock să pulseze din nou, MUX conectează al doilea canal la ADC. Când AI Convert Clock pulsează din nou, ADC ia un punct de la al doilea canal. Când sample duration a trecut, sample clock pulsează din nou și ciclul se repetă. Sample clock determină cât de des preia dispozitivul un eșantion de la toate canalele. AI Convert Clock ia de fapt eșantioanele. Deoarece eșantionarea pe intervale utilizează un sample clock și AI Convert Clock, dispozitivul este capabil să eșantioneze canalele într-o perioadă scurtă de timp.

În ilustrația anterioară, dispozitivul preia un eșantion de la fiecare canal în fiecare secundă, dar decalajul dintre eșantioane este de numai 5 μs, așa cum este determinat de perioada lui AI Convert Clock. Pentru rentabilitatea de a avea numai un ADC, puteți obține eșantionare aproape-simultană.

Eșantionare round-robin

Eșantionarea round-robin utilizează, de asemenea, un ADC pentru toate canalele. Diferența între această metodă și eșantionarea pe intervale este eșantionarea round-robin nu folosește un ceas de scanare. Ceasul canalului pornește scanarea și determină timpul dintre eșantioane. Următoarea ilustrație arată un exemplu de eșantionare round-robin.

În exemplul de eșantionare pe intervale, dispozitivul a pornit un eșantion pe fiecare canal în fiecare secundă și a prelevat eșantioane pe două canale diferite. Exemplul de eșantionare round-robin din ilustrația anterioară folosește aceleași condiții. Dar, are un singur ceas, deci toate punctele trebuie să fie egal distanțate. Singura modalitate de a spația în mod egal punctele și de a îndeplini criteriile de un singur eșantion pe secundă și două eșantioane pe canal pe secundă criteriul este de a utiliza rata AI Convert Clock de două eșantioane pe secundă. Diferența dintre acest exemplu și exemplul de eșantionare pe intervale este că sample duration este acum 0,5 secunde în loc de 5 μs.

Cu eșantionarea pe intervale, punctele de pe canale separate nu sunt îndepărtate în timp. Cu eșantionarea round-robin, eșantioanele sunt mai îndepărtate în timp. Deși eșantionarea round-robin este mai simplă, deoarece folosește un singur ceas, o puteți folosi numai atunci când relația de timp dintre semnale nu este importantă. Eșantionarea round-robin se găsește pe dispozitivele vechi.

Eșantionare simultană

Dacă relația de timp dintre semnale este importantă, puteți utiliza eșantionarea pe intervale, dar uneori scanarea pe intervale nu păstrează relația de timp între semnale la o toleranță suficient de îngustă. În acest caz, ar trebui să utilizați eșantionarea simultană, așa cum se arată în cele ce urmează.

Eșantionarea simultană utilizează câte un ADC pentru fiecare canal, astfel încât să puteți eșantiona toate canalele în același timp. În timp ce acest lucru necesită o arhitectură mai scumpă decât scanarea pe intervale, elimină decalajul dintre canale cauzată de nevoia de a partaja ADC între toate canalele. Deoarece eșantionarea simultană eșantionează fiecare canal în același timp, aveți nevoie doar de un sample clock pentru a determina rata de eșantionare.

Comparați toate cele trei tipuri de eșantionare determinând defazarea care apare atunci când eșantionați patru semnale de 50 kHz la o rată de 200 kHz. Cu eșantionarea round-robin, toate eșantioanele trebuie să fie distanțate uniform, ceea ce cauzează o întârziere de 15 μs între timpul eșantionului de pe canalul 0 până la timpul eșantionului pe canalul 3. Aceasta corespunde unei defazări de 270 de grade. Cu scanarea pe intervale, presupunem că aveți o întârziere intercanal de 5 μs. Din nou, experimentați o întârziere de 15 μs între canalul 0 și canalul 3. Cu eșantionare simultană, experimentați doar o întârziere de trei nanosecunde între canalul 0 și canalul 3. Această întârziere corespunde unei defazări de 0,054 grade. Eșantionarea simultană oferă un mare avantaj în conservarea relației de timp dintre semnale, deși la un cost mai mare. Familia PCI-611X poate efectua eșantionare simultană.

Exercițiul 4-3 Eșantionarea pe intervale vs. eșantionarea round-robin (opțional)

Obiectiv: să observe diferențele dintre eșantionarea round-robin și eșantionarea pe intervale.

1. Efectuați următoarele conexiuni și reglaje pe semnalul DAQ Signal Accessory:

a. Conectați unda sinusoidală de la generatorul de funcții la ambele analog in 1 și analog in 2 pe DAQ Signal Accessory.

b. Rotiți butonul Frequency Adjust de pe DAQ Signal Accessory cât mai jos posibil. Asigurați-vă că Frequency Range este setată pe 100 Hz - 10 kHz.

2. Deschideți VI-ul Interval vs. Round-Robin Sampling Example situat pe directorul C:\Exercises\LabVIEW DAQ. Panoul frontal este afișat în următoarea figură.

Acest VI achiziționează forme de undă de la două canale de intrare analogică și le trasează pe un grafic.

3. Setați comenzile cu următoarele valori:

DAQmx Physical Channel: DevX/ai1, DevX/ai2
unde X este numărul dispozitivului DAQ, așa cum este setat în MAX.
Rate: 5000
Sampling Mode: Round-Robin

4. Rulați VI-ul. Observați că formele de undă sunt decalate chiar dacă cele două canalele eșantionează același semnal. Amintiți-vă două fapte despre eșantionarea round-robin:

• Mai multe canale nu pot fi eșantionate simultan. Alimentarea MUX către ADC comută între canalele de intrare analogică. Deoarece ceasul canalului controlează când mux-ul este comutat, apare un time skew între oricare două eșantioane de canale succesive. Prin urmare, eșantionarea round-robin este adecvată pentru aplicațiile în care relația de timp între fiecare canal eșantionat nu este importantă.

• Rata maximă de eșantionare pe canal este invers proporțională cu numărul de canale eșantionate. De exemplu, un dispozitiv DAQ care eșantionează la 700 kHz pe 10 canale eșantionează efectiv fiecare canal doar la 70 kHz.

5. Schimbați Sampling Mode la Interval Sampling și rulați VI-ul din nou. Observați că semnalele apar unul peste altul, ca și cum cele două canalele au fost eșantionate simultan. Eșantionarea round-robin are doar ceasul canalului, care este responsabil pentru rata de eșantionare și timpul dintre canale. Cu eșantionarea pe intervale, sample clock este responsabil numai pentru rata de eșantioane pe canal pe secundă. Un alt ceas, AI convert clock, controlează timpul dintre eșantioane. Având două ceasuri, vă permiteți să setați AI convert clock cât mai rapid posibil, ceea ce creează efectul de eșantionare simultană.

6. Închideți VI-ul. Nu salvați modificările.

Sfârșitul exercițiului 4-3

5.5 INTRARE ANALOGICĂ CU PUNCTE MULTIPLE (BUFFER-ATĂ)

Pentru a achiziționa mai multe puncte în același timp, selectați un exemplu de DAQmx Read VI care citește mai multe eșantioane. Utilizați DAQmx Read VI în combinație cu DAQmx Timing VI, DAQmx Start Task VI, și DAQmx Stop Task VI pentru a crea un VI de achiziție buffer-ată, sincronizat-hardware.

Hardware-Timed Acquisition - Un semnal hardware, cum ar fi un sample clock sau AI Convert Clock controlează rata de achiziție. Un ceas hardware este mult mai rapid decât o buclă software, deci puteți să eșantionați o gamă mai mare de frecvențe fără dedublarea semnalului (aliasing). Un ceas hardware este mai exact decât o buclă software. O rată de buclă software poate fi afectată de o varietate de acțiuni, cum ar fi deschiderea unui alt program pe computer, dar un ceas hardware rămâne constant.

Buffered Acquisition - Achiziționează mai multe puncte cu un singur apel către dispozitiv. Punctele sunt transferate de la dispozitiv la un buffer (tampon) intermediar de memorie înainte ca LabVIEW să le citească.

VI-ul DAQmx Timing

DAQmx Timing VI configurează rata de eșantionare, numărul de eșantioane de achiziționat sau generează și crează un buffer atunci când este necesar. Exemplele acestui VI polimorf corespunde tipului de sincronizare de utilizat pe sarcină. Opțiunile de sincronizare disponibile sunt Sample Clock, Handshaking, Implicit și Use Waveform.

Pentru intrarea analogică, selectați exemplul Sample Clock din meniul vertical al DAQmx Timing VI. Acest exemplu de VI include următorii parametri:

sample mode - Specifică dacă sarcina se execută continuu sau pentru o durată finită.

samples per channel — Specifică numărul de eșantioane la intrare sau ieșire dacă sample mode este Finite Samples. Această valoare specifică dimensiunea bufferului de memorie intermediară care stochează datele pe măsură ce sunt transferate de la dispozitivul DAQ la LabVIEW.

rate - Specifică rata de eșantionare în eșantioane pe canal pe secundă. Dacă utilizați o sursă externă pentru Sample Clock, setați această intrare la rata maximă așteptată a acelui ceas.

source - Specifică terminalul sursă al Sample Clock. Lăsați această intrare neconectată pentru a utiliza ceasul implicit de la bord al dispozitivului.

active edge - Specifică pe care front al ceasului se măsoare sau se generează eșantioane. Selectați frontul ascendent sau descendent al sample clock.

task/channels in - Specifică numele sarcinii sau o listă de canale virtuale pentru care se aplică operațiunea. Dacă furnizați o listă de canale, NI-DAQmx creează automat o sarcină.

Exemplul Handshaking a DAQmx Timing VI determină numărul de eșantioane digitale de achiziționat sau generat folosind handshaking digital între dispozitiv și un dispozitiv periferic. Consultați Lecția I/O digitale, din acest manual, pentru mai multe informații despre Handshaking a DAQmx Timing VI.

Exemplul implicit al VI-ului DAQmx Timing setează doar numărul de eșantioane de achiziționat sau generat fără a specifica timing-ul. De obicei, ar trebui să folosiți acest exemplu atunci când sarcina nu necesită sincronizarea eșantionului, de exemplu ca sarcini care utilizează contoare pentru măsurarea frecvenței tamponate, măsurarea perioadei tamponate sau generarea trenului de impulsuri.

Exemplul Use Waveform al VI-ului DAQmx Timing folosește componenta dt a intrării formă de undă pentru a determina rata sample clock. dt este timpul în secunde între eșantioane. Dacă sample mode este Finite Samples, NI-DAQmx generează numărul de eșantioane în forma de undă. Acest VI nu scoate de fapt niciun eșantion. Trebuie să conectați aceeași formă de undă la DAQmx Write VI pentru a produce eșantioanele. Consultați Lecția Ieșirea analogică a acestui manual pentru mai multe informații despre Use Waveform a lui DAQmx Timing VI.

Diagrama flux a achiziției tamponate

Următoarea diagramă flux arată o achiziție tamponată de bază. O achiziție tamponată achiziționează un număr stabilit de puncte la o rată specificată. Folosește DAQmx Timing VI pentru a configura sincronizarea și tamponul pentru dispozitiv. Utilizează DAQmx Start Task VI pentru a începe achiziția. DAQmx Read VI așteaptă până când toate probele de pe fiecare canal sunt disponibile înainte de a returna date și a trece mai departe. DAQmx Stop Task VI oprește sarcina și eliberează resursele alocate dispozitivului. VI-ul Error Handler afișează orice erori care au apărut în timpul procesului.

Exemplu de achiziție tamponată

Următorul exemplu arată cum să creați un VI de achiziție tamponată.
DAQmx Timing VI configurează sarcina/canalul, timing-ul și eșantioanele per canal (dimensiunea bufferului). Apoi, DAQmx Start Task VI începe achiziția. Programul așteaptă apoi la DAQmx Read VI până când bufferul este plin. Când bufferul este plin, DAQmx Read VI returnează datele din tampon, DAQmx Stop Task VI oprește achiziția și Simple Error Handler VI afișează orice erori.

Deoarece intrarea number of samples per channel pentru DAQmx Read VI nu este conectată, NI-DAQmx determină automat câte eșantioane se citesc pe baza configurației setate în DAQmx Timing VI. NI-DAQmx determină automat această valoare și intrarea number of samples per channel este setată la –1. DAQmx Read VI returnează o matrice 2D care poate fi conectată direct la un waveform graph. Matricea nu include informații de sincronizare, spre deosebire de tipul de date formă de undă.

Conectați întotdeauna clusterele error de la un VI la altul. Dacă error in detectează o eroare în DAQmx Start Task VI, DAQmx Read VI sau DAQmx Stop Task VI, VI-ul returnează informațiile de eroare în error out și nu continuă să ruleze. De exemplu, presupuneți că apare o eroare în DAQmx Start Timing VI. DAQmx Start Timing VI oprește executarea și trece informația despre eroare către DAQmx Start Task VI. DAQmx Start Task VI nu execută - trece eroarea la următorul VI. Informația despre eroare trece prin fiecare VI la Error Handler VI pentru afișare.

Ce se întâmplă cu adevărat?

Pentru a înțelege ce se întâmplă atunci când efectuați o achiziție tamponată, examinați o achiziție tamponată la un nivel inferior, așa cum se arată în cele ce urmează.

Știți deja că atunci când achiziționați un semnal analog, acesta trece prin amplificatorul de instrumentație la ADC. Dar, s-ar putea să nu știți ce se întâmplă cu semnalul după aceea. Semnalul trece la un buffer First In First Out (FIFO) încorporat, care stochează datele până când acestea pot fi transferate de la dispozitiv la computer. Datele sunt apoi transferate de pe dispozitiv la un buffer pentru computer prin Acces Direct la Memorie (DMA) sau Cerere de Întrerupere (IRQ).

Tamponul PC este o locație de memorie care stochează datele după ce au părăsit dispozitivul. Intrarea number of samples per channel a lui DAQmx Timing VI (sau intrarea buffer size a lui DAQmx Configure Input Buffer VI) configurează buffer-ul PC-ului, care stochează datele până ce DAQmx Read VI este gata să le recupereze. DAQmx Read VI transferă apoi datele la un buffer LabVIEW, care pot fi apoi afișate pe panoul frontal. Tamponul LabVIEW poate plasa datele într-un waveform graph, o matrice sau un tip de date formă de undă, în funcție de exemplul DAQmx Read VI și cum conectați ieșirea lui DAQmx Read VI.

Transfer tampon

Transferul de date între buffer-ul PC-ului și buffer-ul LabVIEW este important în operațiile de intrare analogică. Intrarea number of samples per channel a lui DAQmx Timing VI alocă bufferul PC-ului. Când efectuați o achiziție tamponată, achiziția începe când apelați DAQmx Start Task VI. După începerea achiziției, bufferul PC începe să se umple cu date. O achiziție tamponată umple bufferul PC până când este plin. Rata la care bufferul se umple este determinată de rata pe care ați setat-o ​​în DAQmx Timing VI. Când bufferul este plin, DAQmx Read VI transferă datele de la buffer-ul PC-ului la buffer-ul LabVIEW. DAQmx Read VI elimină toate datele la un moment dat într-o achiziție tamponată.

Exercițiul 4-4 Achiziție tamponată finită

Obiectiv: Achiziția unui șir de date folosind o configurație tamponată finită.

Cu o achiziție tamponată finită, LabVIEW specifică câte puncte trebuie achiziționate și cu ce rată le achiziționați. Timing-ul devine apoi responsabilitatea dispozitivului DAQ. Într-o achiziție tamponată, dispozitivul DAQ controlează toate aspectele achiziției. În contrast, cu o achiziție sincronizată-software, computerul este singurul responsabil pentru gestionarea achiziției, ceea ce poate fi problematic dacă computerul nu poate acorda prioritate procesul de achiziție a datelor.

Panoul frontal

1. Deschideți un VI gol și construiți următorul panou frontal.

Puteți crea majoritatea comenzilor de pe panoul frontal afișat mai sus din diagrama bloc, făcând clic dreapta pe terminalele corespunzătoare ale VI-urilor DAQ și selectând Create»Control.

În acest exercițiu, achiziționați date de la un canal de pe DAQ Signal Accessory și afișați datele pe grafic. Setați samples per channel (dimensiunea bufferului) la 1000, iar rate la 10000. Setați comanda DAQmx Global Channel to Sine Wave.

2. Conectați ieșirea sine wave la intrarea analogică CH1 de pe DAQ Signal Accessory

Diagramă bloc

3. Construiți următoarea diagramă bloc.

a. Plasați DAQmx Timing VI, aflat în paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI configurează timing-rul eșantionului și dimensiunea bufferului (eșantioane pe canal) ale sarcinii. Selectați Sample Clock din meniul vertical pentru a utiliza ceasul intern de pe dispozitivul DAQ.

b. Plasați DAQmx Start Task VI, aflat în paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI pornește sarcina de măsurare.

c. Plasați DAQmx Read VI, aflat în paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI efectuează tipul de citire a măsurătorilor pe care îl specificați în meniul vertical al instanței. Selectați Analog»Single Channel»Multiple Samples»1D DBL pentru a returna un șir 1D de date numerice cu dublă precizie, în virgulă mobilă de la un singur canal.

d. Plasați DAQmx Stop Task VI, aflat în paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI oprește sarcina de măsurare.

4. Salvați VI-ul ca Buffered Acquisition.vi directorul C:\Exercises\LabVIEW DAQ.

5. Reveniți la panoul frontal și rulați VI-ul. O undă sinusoidală ar trebui să traseze pe waveform graph.

6. Închideți VI.

Sfârșitul exercițiului 4-4

Exercițiul 4-5 Achiziție tamponată cu analiza formelor de undă

Obiectiv: să achiziționeze forme de undă utilizând o configurație tamponată și să analizeze aceste date pentru valorile maxime și minime.

Waveform Min Max VI vă permite să vedeți valorile minimă și maximă ale undei sinusoidale. Aceste valori vă ajută să determinați dacă generatorul funcționează în conformitate cu specificațiile sale.

1. Deschideți Buffered Acquisition VI situat în Directorul C:\Exercises\ LabVIEW DAQ pe care l-ați completat în Exercițiul 4-4.

2. Selectați File»Save As și salvați VI-ul ca Buffered Acquisition (min max).vi în directorul C:\Exercises\LabVIEW DAQ.

3. Pe panoul frontal, înlocuiți controlul DAQmx Global Channel cu un control DAQmx Task Name făcând clic dreapta pe controlul canalului și selectând Replace»I/O»DAQmx Name Controls»DAQmx Task Name din meniul de comenzi rapide.

4. Modificați diagrama bloc așa cum se arată în figura următoare.

a. Plasați funcția Index Waveform Array, situată pe paleta Functions»All Functions»Waveform»Waveform Operations, pe diagrama bloc. Această funcție selectează o formă de undă dintr-o serie de forme de undă.

b. Plasați Amplitude and Level Measurements Express VI, situat în paleta Functions»Signal Analysis, pe diagrama bloc. În acest exercițiu, VI-ul determină valorile maximă și minimă într-un semnal.

- În caseta de dialog Configure Amplitude and Level Measurements care apare, plasați bifele în Căsuțele de bifare Maximum peak și Minimum peak.

- Faceți clic pe butonul OK pentru a aplica modificările și a închide caseta de dialog.

5. Pentru a crea indicatoarele panoului frontal Negative Peak și Positive Peak, faceți clic dreapta pe ieșirile corespunzătoare de pe Amplitude and Level Measurements Express VI și selectați Create»Numeric Indicator din meniul de comenzi rapide.

6. Setați comenzile panoului frontal cu următoarele valori:

DAQmx Channel Name: My Voltage Task
Samples per Channel: 1000
Rate: 10000

7. Conectați ieșirea sine wave la intrarea analogică CH1 și ieșirea square wave la intrarea analogică CH2 pe DAQ Signal Accessory.

8. Rulați VI-ul. Determinați valorile maximă și minimă ale undei pătrate schimbând Waveform to Index la 2.

Notă Deoarece formele de undă sunt indexate începând cu zero, indicii formelor de undă sunt 0, 1 și 2.

9. Faceți dublu clic pe Amplitude and Level Measurements Express VI și selectați valori de amplitudine diferită pentru a le determina. Creați indicatoare pentru aceste valori și rulați VI-ul.

10. Salvați și închideți VI-ul.

Sfârșitul exercițiului 4-5

5.6 DIAGRAMA FLUX PENTRU ACHIZIȚIA CONTINUĂ

Principala diferență între o achiziție tamponată finită și achiziția tamponată continuă este numărul de puncte pe care le achiziționați. Cu o achiziție tamponată finită, achiziționați un număr stabilit de puncte. Cu o achiziție tamponată continuă, puteți achiziționa date la infinit. Următoarele diagramă de flux arată o achiziție tamponată continuă.

Primii trei pași ai acestei diagrame sunt identici cu primii trei pași ai diagramei de achiziție tamponată. Configurați un dispozitiv cu DAQmx Timing VI, porniți achiziția cu DAQmx Start Task VI și pregătiți citirea datelor cu DAQmx Read VI. Pentru că achiziționați date continuu, trebuie să citiți datele în mod continuu. Plasați DAQmx Read VI într-o buclă. Bucla se finalizează când apare o eroare sau când se oprește bucla de pe panoul frontal. De fiecare dată când rulează bucla, DAQmx Read VI returnează date. Când bucla se termină, DAQmx Stop Task VI oprește sarcinile și anulează resursele. VI-ul Simple Error Handler afișează orice erori care au apărut în timpul procesului.

Achiziție tamponată continuă

Următoarea diagramă bloc a unui VI de achiziție tamponată continuă este similară cu o achiziție tamponată cu următoarele modificări:

DAQmx Read VI se află într-un buclă While.
• Intrarea number of samples per channel este specificată de utilizator. Cu achiziție finită, NI-DAQmx determină automat câte eșantioane se citesc. Dacă lăsați intrarea number of samples per channel neconectată sau setată la –1, NI-DAQmx citește numărul total de eșantioane disponibil în buffer.
• Eșantioanele disponibile pe canal (backlog-restante) sunt monitorizate.

Porniți o achiziție tamponată continuă configurând timing, sample mode, samples per channel to read (buffer), și rate cu DAQmx Timing VI. DAQmx Start VI pornește achiziția. DAQmx Read VI, care se află într-o buclă While, citește datele din achiziţia buffer-ată .

Pentru a preveni depășirea bufferului, numărul de eșantioane pe canal de citit nu mai poate fi egal cu dimensiunea bufferului. Este o bună practică să setați numărul de eșantioane pe canal de citit la o pătrime sau la jumătate din dimensiunea bufferului pentru o achiziție buffer-ată continuă. Pentru că LabVIEW trimite în mod continuu date în buffer, este important să monitorizați numărul de eșantioane disponibile pe canal în buffer pentru a vă asigura că bufferul este golit suficient de repede.

Dacă numărul de eșantioane disponibile pe canal (backlog) crește constant, buffer-ul ar putea fi depășit și ar genera o eroare. Bucla While care conține DAQmx Read VI poate fi oprită atunci când utilizatorul face clic pe un buton de pe panoul frontal sau când apare o eroare în DAQmx Read VI, cum ar fi un buffer depășit. După ce Bucla While se oprește, DAQmx Stop Task VI oprește sarcina și șterge toate resursele iar VI-ul Simple Error Handler afișează orice erori.

Buffer circular

O operație tamponată continuă este dificilă, deoarece computerul folosește un singur buffer, dar achiziționați mai multe date decât poate păstra bufferul. Pentru a obține mai multe date decât poate păstra bufferul, utilizați un buffer circular. Următoarea ilustrație arată cum lucrează un buffer circular.

Un buffer circular este similar cu un buffer obișnuit, dar când ajungeți la capătul unui buffer circular, în loc să vă opriți, începeți iar de la început. Porniți cu bufferul PC care a fost alocat de intrarea samples per channel a lui DAQmx Timing VI. Când DAQmx Start Task VI pornește achiziția, bufferul PC începe să se umple cu date. Achiziția are loc în interiorul buclei While.

Să presupunem că ați setat number of samples per channel to read între o pătrime și jumătate din dimensiunea bufferului PC-ului. Când numărul de eșantioane pe canal în bufferul PC este egal cu number of samples per channel to read, DAQmx Read VI transferă acel număr de eșantioane pe canal din buffer-ul PC-ului în buffer-ul LabVIEW. DAQmx Read VI setează un steag denumit poziția eșantionului curent, astfel încât să poată continua citirea de unde a rămas.

Între timp, buffer-ul PC continuă să se umple cu date. DAQmx Read VI continuă transferul de date din buffer-ul PC-ului în buffer-ul LabVIEW în timp ce buffer-ul PC-ului se umple. Când sfârșitul marcajului de date ajunge la sfârșitul buffer-ului din computer, noile date sunt scrise la începutul buffer-ului. Diferența între sfârșitul marcajului eșantioanelor și poziția eșantionului curent este egală cu numărul de eșantioane disponibile pe canal (backlog). LabVIEW trebuie să citească datele din buffer suficient de repede pentru a preveni ca sfârșitul marcajului eșantioanelor să ajungă la poziția eșantionului curent, altfel noile date suprascrie datele vechi, iar LabVIEW generează o eroare.

Eroare de suprascriere (Overwrite Error)

Cea mai frecventă eroare pe care o puteți întâlni atunci când efectuați o achiziția tamponată circulară este eroarea de suprascriere. Eroarea de suprascriere apare atunci când sfârșitul marcajului eșantioanelor ajunge la poziția eșantionului curent și suprascrieți datele. Problema apare atunci când LabVIEW nu citește suficient de repede date din buffer-ul PC-ului. Există mai multe opțiuni pentru a evita eroarea, dar nu toate opțiunile s-ar putea aplica situației, iar unele funcționează mai bine decât altele.

Creșteți numărul de eșantioane pe canal (dimensiunea buffer-ului) cu DAQmx Timing VI. Creșterea dimensiunii buffer-ului nu rezolvă problema dacă nu goliți buffer-ul suficient de repede. Amintiți-vă ghidul pentru setarea eșantioanelor pe canal de citit de la o pătrime la jumătate din dimensiunea buffer-ului. Creșterea dimensiunii buffer-ului funcționează numai dacă se face acest ghid adevărat.

• Goliți buffer-ul mai repede prin creșterea numărului de eșantioane pe canal de citit. Nu setați numărul de eșantioane pe canal de citit prea mare, deoarece veți aștepta în DAQmx Read VI pentru ca numărul de eșantioane pe canal în buffer egaleze numărul de eșantioane pe canal de citit. Timpul petrecut așteptând eșantioanele pentru a umple buffer-ul ar putea fi cheltuit golind buffer-ul.

• Reduceți rata eșantioanelor per canal cu DAQmx Timing VI. Această setare încetinește viteza de trimitere a datelor către buffer, dar s-ar putea să nu fie o opțiune dacă doriți o anumită rată de eșantionare.

• Evitați încetinirea buclei cu analiză inutilă.

Eroare de depășire

O altă eroare pe care o puteți întâlni cu o achiziție tamponată continuă implică depășirea buffer-ului FIFO pe dispozitiv. Eroarea de depășire nu este la fel de obișnuită ca suprascrierea buffer-ului PC-ului și nu este la fel de ușor de corectat. Problema apare atunci când buffer-ul FIFO nu se golește suficient de repede. Bufferul FIFO se bazează fie pe DMA, fie pe IRQ pentru a transfera datele din buffer-ul FIFO la buffer-ul PC. Când buffer-ul FIFO nu se golește suficient de repede, aveți doar câteva opțiuni pentru a preveni eroarea.

• Asigurați-vă că utilizați DMA pentru a transfera datele, dacă DMA este disponibil. DMA este mai rapid decât IRQ și poate îmbunătăți semnificativ performanța. Pentru mai multe informații despre utilizarea DMA, consultați NI-DAQmx Help și DAQmx Channel Property Node, proprietatea Data Transfer Mechanism.

• Reduceți rata eșantioanelor pe canal în DAQmx Timing VI.

• Cumpărați un dispozitiv cu un buffer FIFO mai mare. Dar, această opțiune ar putea întârzia problema în loc să o rezolve.

Cumpărați un computer cu o magistrală mai rapidă pentru a accelera transferul de date de la buffer-ul FIFO către bufferul PC-ului. Depășirea este cauzată de faptul că sistemul nu transferă datele la dispozitiv suficient de repede. Un computer cu o magistrală mai rapidă poate transfera datele din buffer-ul FIFO mai repede.

Exercițiul 4-6 VI-ul de achiziție tamponată continuă

Obiectiv: Achiziționarea continuă de date de la un dispozitiv DAQ și înregistrarea datelor într-un fișier.

Parcurgeți pașii următori pentru a construi un VI care efectuează o operațiune de achiziție continuă și trasează cele mai recente date achiziționate pe un chart.

Panoul frontal

1. Deschideți un VI gol și construiți următorul panou frontal.

a. Puteți crea majoritatea comenzilor panoului frontal pe diagrama bloc făcând clic dreapta pe terminalele corespunzătoare ale VI-urilor DAQmx și selectând Create »Control din meniul de comenzi rapide.

b. Faceți clic dreapta pe waveform chart și selectați Properties. Click pe tab-ul Format and Precision. Formatați axa-x la valori în virgulă mobilă cu 3 cifre de precizie.

c. Faceți clic pe tab-ul Scale. Pentru axa-y, deselectați Autoscale Y și introduceți valorile minimă și maximă –2 și respectiv 2. Repetați acest pas pentru axa-x, dar setați valorile minimă și maximă la 0,00 și respectiv 0,05.

2. Setați comenzile panoului frontal cu următoarele valori:

DAQmx Channel Name: Sine Wave
Rate: 10000
Samples per Channel: 3000

3. Conectați ieșirea sine wave la intrarea analogică ch1 de pe DAQ Signal Accessory.

Diagrama bloc

4. Construiți următoarea diagramă bloc.

a. Plasați DAQmx Read Property Node, situat în paleta Functions» All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Utilizați Property Node pentru a obține informații suplimentare despre starea buffer-ului. Faceți clic dreapta pe nod și selectați Properties»Status»Available Samples per Channel din meniul de comenzi rapide. Această proprietate monitorizează cantitatea de backlog a eșantioanelor pe canal în buffer.

b. Plasați funcția Unbundle by Name, aflată în paleta Functions» All Functions»Cluster, pe diagrama bloc. Această funcție acceptă valoarea de stare booleană din clusterul error.

c. Amplasați VI-ul Simple Error Handler, situat în paleta Functions»All Functions»Time & Dialog, pe diagrama bloc. În cazul unei erori, acest VI afișează o casetă de dialog cu informații privind eroarea și localizarea acesteia.

5. Salvați VI-ul ca Continuous Acquire.vi în directorul C:\Exercises\ LabVIEW DAQ.

6. Afișați panoul frontal. Rulați VI-ul și monitorizați datele trasate pe grafic pe măsură ce schimbați butonul de frecvență de pe DAQ Signal Accessory. Datele umplu un buffer de dimensiune fixă ​​în memorie, apoi suprascrie valorile de la începutul buffer-ului.

7. Monitorizați Available Samples per Channel pe măsură ce reduceți rata sau eșantioanele pe canal. Eșantioanele disponibile pe canal sunt definite ca numărul de eșantioane pe canal achiziționat în buffer-ul achiziției, dar necitit. Este o măsură a cât de bine țineți pasul cu o achiziție continuă. Dacă backlog crește constant, nu citiți datele suficient de rapid din buffer și în cele din urmă veți pierde date. Dacă se întâmplă acest lucru, DAQmx Read VI returnează o eroare.

Streaming pe disc

Modificați VI-ul pentru a transmite datele achiziționate pe disc.

8. Selectați File»Save As și salvați VI-ul ca Continuous Acquire with File IO.vi în directorul C:\Exercises\LabVIEW DAQ.

9. Modificați diagrama bloc așa cum se arată în figura următoare.

a. Plasați VI-ul Merge Errors, situat în paleta Functions»All Functions» Time & Dialog, pe diagrama bloc. Acest Express VI combină clusterele de erori de la diferite funcții într-un singur cluster error.

b. Plasați Write LabVIEW Measurement File Express VI, situat pe paleta Functions»Output, pe diagrama bloc. Acest Express VI scrie datele de măsurare LabVIEW într-un fișier.

- În caseta de dialog Configure Write LabVIEW Measurement File care apare, selectați următoarele setări:

10. Faceți clic pe butonul OK pentru a ieși din Caseta de dialog Configure Write LabVIEW Measurements File.

11. Salvați și rulați VI-ul.

12. Deschideți un VI gol și creați următoarea diagramă bloc pentru a construi un VI care citește LabVIEW Measurement File.

A. Plasați Read LabVIEW Measurement File VI, situat pe Paleta Functions»Input, pe diagrama bloc. Acest Express VI citește datele de măsurare LabVIEW dintr-un fișier.

- În caseta de dialog Configure Read LabVIEW Measurement File care apare, selectați următoarele setări:

13. Faceți clic pe butonul OK pentru a aplica modificările și închideți Caseta de dialog Configure Read LabVIEW Measurements File.

14. Pe diagrama bloc, redimensionați Read LabVIEW Measurement File Express VI pentru a afișa mai multe terminale de ieșire.

15. Faceți clic dreapta pe ieșirile File Name și Description și selectați Create»Indicator din meniul de comenzi rapide. Faceți clic dreapta pe ieșirea Signals și selectați Create»Graph Indicator din meniul de comenzi rapide.

16. Rulați VI-ul. Semnalul pe care l-ați achiziționat în VI-ul anterior apare acum în waveform graph.

17. Salvați VI-ul ca Read Data File.vi în directorul C:\Exerciții\LabVIEW DAQ.

18. Închideți toate VI-urile.

Sfârșitul exercițiului 4-6

Exercițiul 4-7 Streaming date la mai multe fișiere

Obiectiv: se utilizează Write LabVIEW Measurement File Express VI pentru a transmite date la mai multe fișiere.

Pentru cantități mari de date, ar putea fi mai convenabil să scrieți datele în mai multe fișiere, astfel încât să puteți organiza și gestiona fișierele de date. Puteți configura Write LabVIEW Measurement File Express VI pentru a scrie în mai multe fișiere. Scrierea în mai multe fișiere poate preveni pierderea datelor în cazul unui accident de program sau a unui eșec.

1. Deschideți Continuous Acquire with File IO.vi aflat în directorul C:\ Exerciții\LabVIEW DAQ.

2. Faceți dublu clic pe Write LabVIEW Measurement File Express VI pentru a deschide caseta de dialog Configure Write LabVIEW Measurement File.

a. În secțiunea Action a casetei de dialog, selectați opțiunea Save to series of files (multiple files).

b. Faceți clic pe butonul Settings pentru a deschide caseta de dialog Configure Multi-file Settings.

c. Configurați caseta de dialog Configure Multi-file Settings așa cum se arată în următoarea figură.

d. Faceți clic pe butonul OK pentru a părăsi caseta de dialog Configure Multi-file settings.

e. Faceți clic pe butonul OK pentru a ieși din caseta de dialog Configure Write LabVIEW Measurement File.

3. Rulați VI-ul timp de câteva secunde.

4. Deschideți Read Data File VI aflat în directorul C:\Exercises\LabVIEW DAQ și comutați la diagrama bloc.

5. Faceți dublu clic pe Read LabVIEW Measurement File Express VI pentru a deschide caseta de dialog Configure Read LabVIEW Measurement File.

a. În secțiunea Action, plasați o bifă în caseta Ask User to choose file.

b. Faceți clic pe butonul OK pentru a închide caseta de dialog.

6. Rulați VI-ul. Ar trebui să vi se solicite să selectați un fișier de citit. Navigați la directorul C: \ și observați fișierele de date care au fost create.

7. Selectați unul dintre fișierele de citit și faceți clic pe butonul OK.

8. Rulați din nou VI-ul și selectați un alt fișier de citit.

9. Salvați și închideți toate VI-urile.

Sfârșitul exercițiului 4-7

Exercițiul 4-8 Declanșarea intrării analogice pe front digital

Obiectiv: Utilizarea unui declanșator digital pentru a porni o operațiune de achiziție de date continuă .

Parcurgeți pașii următori pentru a crea un VI care utilizează un declanșator digital pentru a porni o operațiune de achiziție de date continuă.

1. Deschideți Continuous Acquire VI situat în directorul C:\Exercises\ LabVIEW DAQ.

2. Selectați File»Save As și salvați VI ca Trigger Continuous Acquire.vi în directorul C:\Exercises\LabVIEW DAQ.

3. Conectați ieșirea sine wave la intrarea analogică CH1 de pe DAQ Signal Accessory.

Diagrama bloc

4. Deschideți diagrama bloc și plasați DAQmx Trigger VI, situat în paleta Functions»All Functions»NI Measurements»DAQmx - Data Acquisition, pe diagrama bloc. Acest VI configurează setările declanșatorului. Faceți clic dreapta pe intrările edge și source și selectați Create »Control din meniul de comenzi rapide, așa cum se arată în figura următoare.

5. Deschideți panoul frontal și introduceți următoarele setări:

DAQmx Channel Name: Sine Wave
Samples per channel: 1000
Rate: 5000
Source: /DevX/PFI0, unde X corespunde numărului dispozitivului DAQ, așa cum este setat în MAX.
Edge: Rising

6. Salvați VI-ul.

7. Rulați VI-ul. VI-ul nu achiziționează date până când nu apare declanșatorul. Apăsați butonul de declanșare digital de pe DAQ Signal Accessory pentru a începe achiziționarea continuă de date.

8. Opriți și închideți VI-ul când terminați.

Sfârșitul exercițiului 4-8

Exercițiul 4-9 Generarea codului NI-DAQmx

Obiectiv: Utilizarea caracteristicii NI-DAQmx de generare a codului pentru o operațiune de intrare analogică.

Caracteristica de generare cod a NI-DAQmx vă permite să efectuați rapid prototipare și dezvoltare. Pentru aplicații mai avansate, implementați tehnicile de programare învățate în acest curs pentru programe de achiziția datelor.

Panoul frontal

1. Plasați un control DAQmx Task Name, aflat pe paleta Controls»All Controls»I/O»DAQmx Name Controls, pe panoul frontal.

2. Selectați My Voltage Task din meniul derulant.

3. Utilizați DAQ Assistant pentru a configura setările, sincronizarea și declanșarea pentru sarcină. În tab-ul Task Timing, selectați Acquire Continuously.

Lăsați toate celelalte setări la valorile lor implicite.

4. Faceți clic pe butonul OK pentru a ieși din Asistentul DAQ.

5. Faceți clic dreapta pe sarcină și selectați Generate Code»Configuration and Example din meniul de comenzi rapide.

Puteți selecta dintre următoarele opțiuni pentru generarea codului:

Example — Generează un exemplu de cod pentru a efectua măsurarea ce ați configurat în DAQ Assistant.
Configuration — Generează cod pentru a configura programatic sarcina utilizând DAQmx Create Virtual Channel VI.
Configuration and Example - generează cod pentru a configura programatic sarcina și a demonstra un exemplu de măsurare sau generare.

6. Diagrama bloc apare automat cu codul generat.

Observați că controlul DAQmx Task Name a fost convertit într-un subVI.

7. Faceți dublu clic pe subVI și vizualizați diagrama bloc. Deschideți fereastra Context Help apăsând tastele <Ctrl-H> sau selectând Help»Show Context Help. Plasați mouse-ul peste fiecare funcție pentru a afișa mai multe informații despre funcție în fereastra Context Help.

8. Închideți toate VI-urile. Nu salvați modificările.

Sfârșitul exercițiului 4-9

Rezumat

• Folosiți teorema Nyquist pentru a determina cât de repede trebuie să eșantionați.

• Numele canalelor DAQ și tipul de date formă de undă fac programarea DAQ ușoară și flexibilă.

• Achiziția cu un singur punct este sincronizată-software, ne-tamponată și utilă pentru schimbarea lentă a semnalelor.

• Eșantionarea round-robin, pe intervale și simultană afectează relațiile de fază ale semnalelor diferit.

• Achiziția tamponată este sincronizată-hardware cu un buffer obișnuit.

• Achiziția continuă este sincronizată-hardware cu un buffer circular.

• Achiziția tamponată sau continuă poate fi declanșată cu un semnal digital sau analogic. Dacă dispozitivul DAQ nu acceptă declanșarea analogică, folosiți regăsirea condiționată (conditional retrieval).

• Puteți transmite în flux date pe disc pentru analize și prezentări ulterioare.

• Utilizați caracteristica NI-DAQmx de generare a codului pentru prototipare rapidă.