Precisione e velocità acquisizione modulo I/O analogico
Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Precisione e velocità acquisizione modulo I/O analogico
- Questo topic ha 4 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 9 anni, 2 mesi fa da
Sergio Bertana.
-
AutorePost
-
Marzo 9, 2012 alle 11:26 pm #35180
Anonimo
InattivoMi sto cimentando in un controllo PID per la velocità di un pistone oleodinamico, comandato da una elettrovalvola proporzionale 4-20mA, la lettura della posizione, avviene mediante una trasduttore lineare 4-20mA inserito nel pistone. Il trasduttore lineare ha una risoluzione di 16bit e le velocità di espansione del pistone varia da 4 mm/s a circa 40 mm/s.
Ho notato che su una lunghezza di 2700mm, ottengo una lettura con una precisione di +/-1mm (flottante): già questa è una brutta sorpresa perché mi aspettavo almeno dieci volte meno: il trasduttore ha una precisione del micrometro e una risoluzione da 16bit, quindi l’errore penso dipenda dalla conversione AD (acquisisco il valore in 4-20mA utilizzando un modulo PCB126*170 e una resistenza da 62ohm).
Inoltre non mi è chiaro come avviene la conversione A/D del modulo: il tempo impiegato è di circa 16ms, e l’acquisizione inizia dal momento richiamo la GetAnInp oppure il valore letto viene aggiornato ogni 16ms ?
Come faccio a leggere il valore della posizione a tempi costanti ?
C’è modo di migliorare la lettura ?Marzo 13, 2012 alle 7:26 am #37166Sergio Bertana
Amministratore del forumIl modulo di espansione I/O analogico PCB126*** utilizza un convertitore sigma/delta a 23 bits per le acquisizioni analogiche. Dovendo adattare l’ingresso per i diversi range di acquisizione, non viene sfruttata l’intera risoluzione del convertitore e quindi si ha un deprezzamento sulla precisione, nel caso di acquisizione in 4-20mA la risoluzione reale è di 15 bits.
La risoluzione di acquisizione è di 0.6 uA (20000 uA/2^15), nel tuo caso sulla lunghezza di 2700 mm si avrà una risoluzione di 0.082 mm. Il fatto che oscilli in +/- 1mm sembra denotare un problema di disturbi. Consiglio di collegare i morsetti in modo differenziale ed usare il modo di acquisizione AD_CURR_4_20_DIFFER, in pratica il segnale in corrente và acquisito con un cavo schermato e twistato direttamente ai capi del generatore di corrente.
Per miminizzare le oscillazioni di lettura è anche possibile introdurre un filtro digitale sul valore letto (FB Average presente nella libreria PLCUtyLib).
Marzo 13, 2012 alle 7:50 am #37167Sergio Bertana
Amministratore del forumPer quanto il tempo di conversione del modulo occorre fare riferimento al numero di convertitori A/D presenti nel modulo:
PCB126*110 e PCB126*170: Utilizzano un solo convertitore A/D
PCB126*130: Utilizza due convertitori A/DNel caso di tensioni e correnti il tempo di conversione di un convertitore A/D è di 16 mS per ogni canale, nel caso di acquisizione in temperatura è di 60 mS. Per calcolare il tempo di conversione totale occorre moltiplicare il tempo di conversione di un canale per il numero di canali acquisiti sullo stesso convertitore A/D.
L’acquisizione da parte del convertitore avviene ciclicamente e non dipende dalla chiamata al blocco funzione SysGetAnInp, ad ogni esecuzione del blocco funzione viene ritornato l’ultimo valore acquisisto.
Febbraio 3, 2016 alle 2:14 pm #39336Anonimo
InattivoLeggo nel post precedente “acquisizione in temperatura è di 60 mS“
Se ho 20 sonde di temperatura (Pt100) sono 20*60=1200 mS. C’e un modo di avere un segnale di sincronismo ed avere le 20 letture in blocco alla fine dei 1200 mS? (conto il tempo ?). Oppure tutte le volte che avvio SysGetAnInp debbo aspettare 60 mS e poi passare al canale successivo ?
Febbraio 3, 2016 alle 3:11 pm #39337Sergio Bertana
Amministratore del forumVediamo di fare un pò di chiarezza, il modulo di acquisizione PCB126 è un modulo intelligente dove su di una scheda base un processore gestisce il dialogo con il modulo CPU dello SlimLine. Su questa scheda base si possono alloggiare fino a 2 modulini di I/O analogico che vengono gestiti dal processore della scheda base.
Nel caso di ingressi analogici, il modulino porta fino a 5 ingressi che sono multiplexati su di un unico convertitore A/D, per convertire un segnale da Pt100/Pt1000 il convertitore A/D impiega circa 60mS. Ora avremo nel caso peggiore 5 sonde di temperatura per modulino per un totale di 300mS.
Quindi 5 o 10 sonde hanno comunque un tempo massimo di acquisizione di 300mS, se poi nel tuo caso le sonde sono 20 vorrà dire che avrai due moduli di espansione PCB126 ma il tempo totale sarà sempre di 300mS.
Ora veniamo alla sincronizzazione, l’acquisizione è asincrona rispetto alla lettura da parte della funzione SysGetAnInp, quindi per avere la certezza che vi sia stata una nuova acuisizione su tutti i 20 canali, l’unico modo è basarsi sul tempo. Se metti una temporizzazione superiore ai 300mS (Io userei il tempo di 500mS) sei certo che ad ogni base tempo tutti e 20 i canali hanno acquisisto un nuovo valore di temperatura.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.