Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Bit Di Risoluzione Ingressi Analogici


Messaggi consigliati

Inserito:

Esaminando le schede analogiche della famiglia S7-300 sono arrivato alla conclusione che non ho capito con che risoluzione di ADC lavorano...

Quindi prima di stressare il fornitore con domande varie, che magari dipendono anche dalla mia incompetenza, vorrei esporvi i miei dubbi e vedere se li risco a chiarire col vostro supporto.

Poniamo di avere necessità di avere un ingresso in tensione. Supponiamo inoltre che questa tensione sia tutta nel campo positivo, ma il range sia da definirsi. Per semplicità consideriamo solo un intervallo: da 0 a 10V.

Ho visto che essenzialmente ci sono schede a 12 bit ed a 16 bit (6ES7331-7NF00-0AB0), quindi dovrei scegliere a seconda della minima risoluzione che riescono a quantificare...

Il calcolo teorico del gradino di quantizzazione per me sarebbe (caso 12 bit): 10V / (2^12-1) = 2,44 mV .

Ovvero con tensione in ingresso x, tale che 0<x<2,44 mV conversione digitale al livello 0; con 2,44<x<4,88 => livello 1... e così via...

Fin quì la teoria (almeno secondo me...)

La pratica (dai documenti Siemens per la scheda a 12 bit):

Intervallo 0 - 10 V si espande in realtà a 0 - 11,851 V (vabbè cambia poco: 2,894 mV ) eppure... mi scrivono che a rappresentazione analogica 1 corrisponde 361,7 uV (microVolt) e a 32767 corrispondono 11,851V....

Con rapido calcolo deriva che:

11851/0,3617 = 32765 
(ok torna con quanto dichiarato), ma
ln(32765)/ln(2)=15

che vuol dire che la conversione della scheda a 12 bit viene fatta a 15 bit ??? E allora la conversione della scheda a 16 bit che cosa mi tira fuori come minimo intervallo di tensione rilevato??

La cosa mi confonde, qualcuno me lo spiega ...

Now, explain it to me like I'm a four-year-old. (Joe Miller, impersonato da Denzel Washington in "Philadelfia")

Inserita:

E' problema ffrontato molte volte.

Batta lo analizzato e spiegato in modo eccellente in una recente discussione.

Ti invito vivamente a ricercare la discussione ed a leggerla; probabilmente troverai lì tutte le risposte.

Inserita:

Ho visto che tu Livio in una discussione sulle analogiche rimandavi ad un'altra discussione (http://plc.plcforum....dpost__p__92131) dove però io non trovo la risposta alla mia domanda...

Forse non ho posto bene il problema quindi ripongo lo stesso riducendolo ai minimi termini:

- in una scheda analogica a 12bit settata per leggere valori da 0 a 10 V, qual'è il minimo incremento di tensione (teorico) che mi si traduce con un incremento di rapprsentazione digitale?

1) 361,7 uV (come mi scrivono in maniera sibillina sul manualetto siemens, cosa che mi pare incongruente... però lo scrivono...);

2) 2,44 mV (dato dalla divisione ultra-teorica di 10/(2^12) );

3) 2,894 mV (usando il famoso nasometro... ).

Può darsi che la risposta 1) valga invece per la scheda a 16 bit (cioè 15bit più segno, da cui: 11,851V/2^15 = 361,7 uV) ?

Perché insisto? Perchè ho la testa dura... sorry!

Inserita:

Prima cosa: se guardi sotto l'ultimo messaggio c'è un elenco delle ultime discussioni che trattano un argomento simile, potresti farle scorrere per capire si c'è qualche cosa che ti torna utile.

La risoluzione di convertitore A/D da 12 bits è pari a 4096 gradini se non si considera il segno o se la conversione è pari a 12 bits più segno.

Con 10 V di fondo scala il valore del gradino minimo è pari a 2.44 mV se non si considera il segno, oppure a 4.88 bit se si considera il segno comprso nei 12 bits.

La quantizzazione data da Siemens corrisponderebbe ad una quantizzazione esadecimale par a 6C00, ovvero 0110 1100 0000 0000 che mi sembra assai strana. Anche considerando che Siemens, correttamente, giustifica a sinistra, ovvero il 12 bits è traslato di 3 posti a sx, non ha corrispendenze plausibili.

In che lingua è il manuale che hai letto?

Inserita:

Grazie Livio, dalla tua risposta capisco che non sono solo io a rimanere perplesso...

Dunque, coi manuali della Siemens, io faccio sempre molta fatica a trovare quello che mi serve, e non si esclude che quello che ho citato non sia l'ultimo aggiornato, comunque mi pare di averlo trovato linkato quì nel forum da qualcuno, proprio mentre cercavo soluzione al mio problema...

Effettivamente 10V sono codificati come hex 6C00h... e questo è scritto nel manuale dal titolo "Getting Started SM331 AI 8x12bit Parte 2: Tensione e PT100" a pag.57.

Inserita:
Effettivamente 10V sono codificati come hex 6C00h

Ho dato una scorsa al manuale che hai indicato e mi pare che il valore dell'unità analogica passi attraverso una FC ceh "normalizza" il valore analogico per essere poi utilizzato nelle tue applicazioni. In questo modo hai una banda di valori nominali che ti serve per gestire il processo, una banda di "quasi overflow" e "quasi underflow" che puoi utilizzare ad esempio per warning o cose del genere e una banda di overflow e underflow che ti può dare un'allarme o quello che vuoi. Se invece vuoi gestire le parole PEW così come sono allora vale il ragionamento dei 12 bit ecc ecc.

Inserita:

Si ora ricordo la prassi Siemens che lascia uno spazio sopra per segnalare overflow

Inserita:
1) 361,7 uV (come mi scrivono in maniera sibillina sul manualetto siemens, cosa che mi pare incongruente... però lo scrivono...);

2) 2,44 mV (dato dalla divisione ultra-teorica di 10/(2^12) );

3) 2,894 mV (usando il famoso nasometro... ).

Rispondo punto per punto:

1) nel manuale viene semplicemente indicato che ad una variazione di una unità del valore letto dal canale analogico, corrisponde una variazione di tensione di 361,7 uV (11,851 V su 32767 divisioni). Ma con un modulo con risoluzione 12 bit, non potrai mai leggere variazioni di una unità. Per comodità, la parola letta viene sempre giustificata a sinistra. Nel caso dei 12 bit + segno quindi si sposta tutto a sx di 3 bit, e leggerai valori a gradini di 2^3 = 8. Quindi, la quantizzazione sarebbe di 0,3617 mV * 8 divisioni = 2,8936 mV.

2) il ragionamento è corretto, con l'unica differenza che il valore massimo non è di 10 V ma di 11,851 V (valore che, come indicato sul manuale, corrisponde a 32767). Il calcolo da fare quindi è 11,851 / 2^12 = 2,8933 mV. Come vedi, salvo un piccolo errore dovuto alle approssimazioni, corrisponde a quanto calcolato al punto 1.

Ad essere precisi poi, il valore massimo di tensione che si può misurare è di 11,759 V, corrispondenti ad una lettura di 32511. Valori superiori indicano overflow o errore.

3) Non si tratta di usare il "nasometro", ma solo di applicare nel modo corretto quanto scritto, secondo me in modo molto chiaro, nei manuali.

Sulla scelta di Siemens di far corrispondere al valore nominale di fondo scala quel 6C00 Hex (27648) piuttosto che un 32767 (o, come per esempio nell'S7-200 o nei Simatic-TI, 32000), si può discutere.

Come contro, c'è che si aumenta la quantizzazione. Nel caso di un modulo a 12 bit si passa da 2,441 mV a 2,893 mV.

Come vantaggio, c'è un over range maggiore.

Per esempio, se prendiamo un S7-200 che converte un segnale di 10 V in 32000, la misura sarebbe corretta solo fino a 10,24 V.

Io credo che pro e contro si equivalgano.

Se un gradino di 2,893 mV è troppo grande, passo ad un modulo con una risoluzione più elevata. Con un modulo da 16 bit (15 bit + segno), si passa a 0,3617 mV.

Inserita:

Grazie Batta per la risposta puntuale e chiara ai miei dubbi.

E grazie anche a tutti coloro che hanno perso un po' del loro tempo ad assistermi.

Buon inizio (e proseguimento) di settimana.

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...