From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

velocità dell'analog I/O della scheda Speedy-33

Salve a tutti,

il mio problema è questo: sto lavorando con delle schede speedy-33 ed in una parte del mio lavoro/codice ho inserito un elemento di input ed in particolare l'Analog I/O della scheda scegliendo una frequenza di campionamento di 8 KHz ed una framesize di 128 campioni; a quanto avevo capito io questo significava che la scheda aquisiva un campione ogni 125 microsecondi (o 8000 campioni al secondo) ma che l'uscita del terminale di input li restituiva 128 alla volta quando erano disponibili e che quindi ogni cilco di acquisizione durava 1/8000*128=16 millisecondi. Invece, inserendo il codice in un ciclo, sia while che for, la velocità di esecuzione è tutt'altra...mi servono circa 20000 cicli for perchè la procedura duri un secondo e la velocità dipende anche dalle operazioni che devono essere eseguite....

 

In più, se inserisco il terminale di Analog Output tutto invece "gira" con le velocità predette....

 

Se qualcuno può darmi una mano lo ringrazio.

 

Carlo Fortini 

0 Kudos
Messaggio 1 di 6
4.160Visualizzazioni

Ciao Carlo!

Come puoi vedere a questo link, il parametro framesize rappresenta il numero di campioni che vengono acquisiti ogni volta che fai eseguire il ciclo.

In generale, ulteriori dettagli a proposito della programmazione in DSP li puoi trovare qui.

Il calcolo che hai fatto riguardo alla durata di un ciclo, è corretto per quanto riguarda l'acquisizione, ma il tempo reale di esecuzione può dipendere dalle diverse operazioni che vengono svolte all'interno del ciclo stesso. Se il ciclo non è temporizzato la sua durata può inoltre dipendere dalle altre operazioni che stanno impegnando il PC nel frattempo.

Tuttavia queste problematiche implicano che l'esecuzione del ciclo sia rallentata. Se vengono fatti 20000 cicli in un secondo, quanti dati vengono acquisiti in ciascun ciclo?

Stai programmando in LabVIEW? Eventualmente mi potresti mandare uno screen shot del tuo programma?

Grazie

 

Serena

0 Kudos
Messaggio 2 di 6
4.152Visualizzazioni

Innanzitutto grazie per la celere risposta,

 

...ma se ad ogni ciclo io utilizzo il numero di campioni indicati dalla  framesize (128 per esempio) ed i cicli si svolgono ad una velocità che dipende dalle funzioni che devono eseguire ad ogni iterazione e di sicuro si svolgono più velocemente di un periodo di acquisizione dell'ingresso analogico (8KHz) non riesco a capire quali sono i valori che utilizzo. Mi spego: io aquisisco 8000 campioni al secondo con l'ingresso analogico (settato con le caratteristice dell'analog input) MA IN 20000 cicli ne processo 2560000 =20000(#cicli)*128(framesize)?????? non riesco a capire.....

 

ciao

0 Kudos
Messaggio 3 di 6
4.136Visualizzazioni

Dunque, l'acquisizione funziona così:

entri nel ciclo for, acquisisci 128 campioni con una frequenza di 8KHz (e per fare questa operazione impieghi almeno 16 ms), poi il tempo che rimani dentro ad una iterazione del ciclo dipende dalle operazioni che svolgi all'interno (tipo processare i dati, salvarli su file, fare un grafico. Cosa fai in questo ciclo??), poi passi alla iterazione successiva e ricominci tutto da capo. Ogni iterazione durerà quindi circa 20 ms (approssimativamente).

Non riesco a capire bene qual'è il tuo problema: come fai a dire che in un secondo vengono processati 20000 cicli? Se veramente vedi che sono processati 20000 cicli con un contatore, allora quanti dati hai acquisito in totale? (puoi provare a metterli in un array e vedere quanti sono)

 

Serena

0 Kudos
Messaggio 4 di 6
4.132Visualizzazioni

guarda, la tua spiegazione è ottima...e tutto funziona se oltra all'analog input è presente anche l'output (anche non collegato!!!).

 

Pensavo di non aver capito bene ma il problema è proprio che tutto dovrebbe funzionare come dici tu e invece no!!!Smiley Felice

 

io ho 8Khz come frequenza di campionamento, 128 come framesize ed in un secondo mi aquisisce 2.560.000 campioni!!! (128*20.000 (#cicli)). e l'esecuzione dei ventimila cicli dura un secondo!!!

 

se vui ti allego uno screenshot del codice.....

 

secondo me è un  errore....

 

ciao e grazie

 

0 Kudos
Messaggio 5 di 6
4.126Visualizzazioni

Ciao!

2.500.000 campioni al secondo corrispondono ad una frequenza di circa 2.55 MHz che non è fisicamente raggiungibile dalla scheda Speedy-33. Probabilmente si tratta quindi di un problema di software. Come si presenta il segnale acquisito? Ha l'andamento atteso?

Potresti provare ad acquisire con un esempio di LabVIEW per vedere se si verifica lo stesso comportamento (per es. puoi utilizzare Analog Input Synchronization.lvproj che trovi nel NI Example Finder facendo una ricerca per DSP)?

Come hai temporizzato il ciclo di acquisizione? Potresti inserire dei Tick Count nel codice per verificare come è effettivamente temporizzato.

Sarebbe utile se mi mandassi in allegato il tuo codice.

 

Grazie

Serena

0 Kudos
Messaggio 6 di 6
4.102Visualizzazioni