[Xpost] Consiglio su acquisizione ed elaborazione dati digitali

Ciao a tutti, ho un grosso problema che non so bene come risolvere. Ho un sistema di rilevamento della posizione che mi fornisce in uscita la posizione di una slitta (Ho 32 bit di posizione, un'alimentazione a 5 V ed un clock a 2 MHz (tramite un cavo fornito di un connettore a 68 poli)! Devo confrontare la posizione di questa slitta in modo asincrono con dei dati che mi calcolo al pc!Per spiegare meglio: Genero

31 bit per ogni posizione della mia slitta pi=F9 1 bit che asserisce se in quella posizione devo accendere uno strumento oppure no...quindi genero un file contenente tutte le possibili posizioni della slitta:l'MSB di ogni pacchetto da 32 bit =E8 il bit che mi dice se accendere o no il mio strumento..Da notare che il rilevamento della posizione lo faccio con la precisione di un paio di nanometri e i dati invece sono calcolati ogni 500 nm e voglio un a precisione di qualche decina di nanometri.Ora, se io ho disponibili i bit da confrontare la comparazione e il segnale analogico da inviare al laser non sono un problema, ma non avendo mai lavorato con un sistema che deve mettere in comunicazione il pc con la mia scheda elettronica mi trovo un po' in difficolt=E0 a gestire l'invio e la ricezione dei dati.Qualcuno a qualche idea su come richiamare i dati dal pc, se ci vuole qualche scheda particolare (DAQ,FPGA) oppuresia possibile gestirlo anche senza schede??

Grazie anticipatamente a tutti

Ciao ciao=20

DAVIDE

Reply to
Davide
Loading thread data ...

"Davide" ha scritto nel messaggio news: snipped-for-privacy@o13g2000cwo.googlegroups.com...

1) posta in ascii puro

2) Ho letto 3 volte il tuo msg e non ho ancora capito come è strutturato il tuo sistema.

Il sistema di rilevazione acquisisce e spedisce i dati al PC, giusto? Un software sul PC elabora tali dati, giusto ? Una certa scheda di interfaccia abilita un laser... giusto ? E' distinta dalla prima scheda ? E' da sviluppare da zero ? La vuoi comprare già fatta ? Le interfacce di comunicazione sono fissate ? Per quale specifica funzione sarebbe usata questa scheda DACo FPGA che ipotizzi ?

--
simone.bern
Mr. Heisemberg is not the only one who can affect a measurement by looking at it
(Robert A. Pease)

zsimonez.zbernz@zliberoz.it (Rimuovere i caratteri di zorro per rispondere via
mail)
Reply to
simone.bern

Un bel giorno Davide digitò:

[...]
[...]

Rileggi il tuo messaggio e chiediti cosa può capire chiunque non sia un tuo collega di lavoro. :) Secondo me dovresti limitarti a descrivere quello che devi fare senza scendere nei dettagli della tua applicazione. Quello che ho capito io è che devi confrontare un segnale digitale a 32 bit generato da un sensore con una enorme look-up table che hai sul PC (2^31 parole da 32 bit occupano 8 GB!), ma ti devi spiegare un po' meglio.

--
asd
Reply to
dalai lamah

In effetti l'ho riletto anch'io e non =E8 che sia molto chiaro:-))) Scusate...ci riprovo! Cerco di semplificare un po'!!!

Ho un sensore di posizione che invia (direttamente tramite un cavo tutto suo...non =E8 collegato al pc) 32 bit in real-time a una frequenza di 2 MHz.(il cavo ha 32 poli...uno per ogni bit pi=F9 un polo che porta il clock a 2 MHz ed uno che mi porta 5V di alimentazone continua)

Ci=F2 che voglio fare =E8 confrontare questo segnale a 32 bit con il segnale a 32 bit che genero col PC.Ad ogni posizione creata dal pc =E8 associato un'ulteriore bit che mi dice se a quella posizione devo accendere o no uno strumento esterno.

Quindi avr=F2 una scheda elettronica esterna al pc a cui saranno connessi il cavo che arriva dal sensore e il cavo che arriva dal pc...essa far=E0 il confronto fra le due posizioni e se sono uguali andr=E0 a vedere il bit in pi=F9 creato da pc. Se =E8 0 la scheda non far=E0 niente se =E8 1 andr=E0 ad accendere il mio strumento esterno.

Ora , il mio problema non =E8 la progettazione della scheda elettronica quella me la faccio io: non so bene come richiamare i dati dal pc quando mi servono. Per essere pi=F9 terra terra la mia scheda confronter=E0 i dati e poi dir=E0 al pc:"Bene ho finito di confrontarli...mandami la posizione successiva" Come si fa questa cosa?

Questo =E8 il mio grosso problema...non so come gestire il passaggio di dati fra pc e scheda!!!

Devo comprare una DAQ?, posso passare i dati via seriale o parallela o USB o in altro modo?(FPGA CPLD o altre cose che non conosco bene)

Da tenere presente che il rate a cui confronto i dati non =E8 a 2 MHz ma una decina di volte pi=F9 lento.

Spero che la cosa sia pi=F9 chiara, io ce l'ho messa tutta...purtroppo non sono riuscito ad astrarre pi=F9 di tanto

Vi ringrazio tantissimo per la pazienza

DAVIDE

Reply to
Davide

Dimenticavo, la scheda va fatta da zero quindi la posso modificare come voglio...la DAQ servirebbe appunto per inviare i dati dal pc alla scheda. Le interfacce di comunicazione non so se sono fissate o meglio...mi sa che =E8 questo problema che devo risolvere...ossia capire cos'=E8 l'interfaccia di comunicazione e saperla gestire!!!

Ciao ciao=20

DAVIDE

Reply to
Davide

Un bel giorno Davide digitò:

Ora sei stato molto più chiaro; in sostanza il PC genera un valore a 32 bit a 200 kHz, per una bit rate complessiva di 6.4 Mbps. Secondo me le problematiche sono due:

1) La latenza che vuoi ottenere. Anche se il tuo PC ha la potenza di calcolo necessaria per generare il throughput medio di 200k campioni al secondo, se usi un OS non realtime (come Windows o le "normali" versioni di Linux) non ti puoi aspettare che la cadenza dei risultati sia costante. Devi considerare una latenza di almeno qualche ms, che nel tuo caso è un'enormità (a 200 kHz i campioni sono intervallati mediamente da 5 us, un ordine di grandezza in meno). 2) Il metodo di comunicazione che usi. 6.4 Mbps non sono tantissimi, li puoi ottenere con Ethernet, USB2.0, una scheda PCI ecc... ma non è un compito banale, e anche in questo caso ogni media introduce una sua latenza.

Se occorre anche la comunicazione bidirezionale, le cose si complicano ulteriormente!

In effetti ti potrebbe semplificare alcune cose; se non sbaglio diverse schede DAQ hanno la possibilità di bufferizzare delle uscite digitali "sincronizzandole" con un clock a qualche MHz. Però il problema della latenza rimarrebbe comunque anche in quel caso.

La soluzione ideale probabilmente sarebbe quella di progettare un sistema embedded che si occupi di tutto (fare i calcoli e confrontare i risultati col valore a 32 bit restituito dal sensore). Di che genere di calcoli si tratta? Devi per forza passare per il PC?

--
asd
Reply to
dalai lamah

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.