Vai al contenuto
PLC Forum


Linearità analogiche


Ghisla

Messaggi consigliati

Ciao ragazzi

 

Su una macchina ho montato 16 analogiche della festo in corrente 4-20 mA, rilevano la lettura tramite un magnete che scorre in prossimità del sensore.

Dopo aver eseguito la normalizzazione da valore adc a valore ingegneristico mi trovo che i valori che vado a misurare all'interno del range prestabilito sono sfalsati.

 

Vi spiego meglio come eseguo la taratura.

Mi calcolo il fattore di trasformazione con questa formula (ADC_Zero - ADC_scostamento)/Fisico scostamento

 

ADC_Zero = contiene il valore adc dell'analogica a riposo che per me è il mio zero

ADC_Scostamento = metto un riscontro di X mm e il valore adc che rilevo lo inserisco in ADC_scostamento

Fisico scostamento = è il valore reale del riscontro inserito in mm 

Questo per me è la costante K con cui poi normalizzo la mia lettura (Uso sempre questa ed è sempre andata bene fino ad ora)

Cosa succede, togliendo il riscontro io leggo giustamente 0.00 mm, Inserendo il riscontro che ho usato per fare la taratura mi restituisce la misure giusta in mm

Inserendo però dei riscontri più piccoli la mia misura è fallata. Sembra quasi che i valori adc restituiti dal sensore non siano lineari.

Ho anche provato il tutto utilizzando le funzioni Siemens NORM_X e SCALE_X e il risultato che ottengo è lo stesso.

Sto sbagliando qualcosa o devo usare un altro metodo in questo caso?

PS: ho provato con altre 2/3 analogiche dello stesso tipo e il risultato non cambia.

 

Grazie mille

 

Modificato: da Ghisla
Link al commento
Condividi su altri siti


  • Risposte 61
  • Created
  • Ultima risposta

Top Posters In This Topic

  • Ghisla

    21

  • batta

    16

  • max.riservo

    5

  • ken

    4

Premetto che non conosco le analogiche in questione, ma la faccio semplice: 

se tu non hai una corrispondenza lineare es tabella qui sotto 

 0  mm = 4 mA = 0 numeri sulla EW

10 mm = 5 mA  = 1500 numeri sulla EW

20 mm = 6 mA  = 3000 numeri sulla EW ecc

vuol dire che la misura deve essere linearizzata perché non segue una legge di linearità, e questo lo puoi comodamente fare da codice.

sarebbe poi interessante capire di quale attuatore si tratta per essere più precisi nelle indicazioni. Resta il fatto che il primo step che considero è quello di raccogliere le informazioni tabulandole secondo uno schema sopra citato, quindi si prende la decisione.

Link al commento
Condividi su altri siti

Strano che un sensore del genere non sia lineare, che senso ha? Puoi dare marca e modello?
Anche non fosse lineare dovrebbero scriverlo nel manuale.

 

Modificato: da acquaman
Link al commento
Condividi su altri siti

In questo momento non sono molto lucido, e potrei scrivere cavolate, ma mi pare che ci sia qualcosa di sbagliato nella conversione.
Domani guardo meglio.

Link al commento
Condividi su altri siti

6 ore fa, Ghisla ha scritto:

Mi calcolo il fattore di trasformazione con questa formula (ADC_Zero - ADC_scostamento)/Fisico scostamento

scusami sto cercando di capire ma quello a tu ti riferisci è a potenziometri lineari?

Non è che la formula che hai scritto è al contrario

Link al commento
Condividi su altri siti

Bisogna, secondo me, distinguere i due potenziali problemi.

Canale analogico: il canale analogico deve dare una lettura lineare rispetto all'ingresso in mA. Applicando 4-12-20 mA devo avere sulla PEW delle letture corrispondenti al minimo, metà e fondo scala. Se così non fosse, significa che il canale non ha una lettura lineare.

Trasduttore: mettendo il cursore in posizione minima-media-massima devo avere delle letture di 4-12-20 mA. Se così non fosse vuol dire che è il trasduttore a non essere lineare.

 

Link al commento
Condividi su altri siti

15 ore fa, Ghisla ha scritto:

Mi calcolo il fattore di trasformazione con questa formula (ADC_Zero - ADC_scostamento)/Fisico scostamento

 

ADC_Zero = contiene il valore adc dell'analogica a riposo che per me è il mio zero

ADC_Scostamento = metto un riscontro di X mm e il valore adc che rilevo lo inserisco in ADC_scostamento

Fisico scostamento = è il valore reale del riscontro inserito in mm 

Se interpreto correttamente, questo calcolo va bene solo se ADC_Zero è pari a zero e corrisponde alla distanza minima del trasduttore (segnale 4 mA).
Se vuoi fare una scalatura del segnale tra due posizioni x e y arbitrarie, quel calcolo non va più bene, perché non tieni conto dell'offset.
Il valore K lo devi calcolare come segue:
K = (ADC_Max - ADC_Min) / (Pos_Max - Pos_Min).
Se Pos_Min = 0, si semplifica e corrisponde al tuo calcolo:

K = (ADC_Max - ADC_Min) / Pos_Max

Questo K, nella rappresentazione di una retta in un sistema cartesiano, indica l'inclinazione della retta (è la tangente dell'angolo che la retta forma con l'asse delle ascisse), ma non ti dice se la retta passa dall'origine. Passerebbe dall'origine se avessimo ADC_Min = 0 e Pos_Min = 0 (o in altri casi che non serve analizzare).
Per ricavare la posizione partendo dal valore letto dall'ingresso analogico, devi tenerne conto.

Il calcolo per risalire alla posizione attuale dal valore analogico letto:

(Pos - Pos_Min) = (ADC - ADC_Min) / K
Una volta noto il valore di (Pos - Pos_Min), ed essendo noto anche POS_Min, calcolare la posizione attuale diventa banale:
Pos = (Pos - Pos_Min) + Pos_Min

 

Se Pos_Min = 0, si semplifica e diventa:
Pos =  (ADC - ADC_Min) / K

 

Per farla breve, una scalatura lineare la potresti fare così:

Pos = Pos_Min + (ADC - ADC_Min) * (PosMax - PosMin) / (ADC_Max - ADC_Min)

 

In testo strutturato, la scrivi in una riga.

Link al commento
Condividi su altri siti

Ciao Batta

In realtà la formula che usi tu è la stessa che uso io solo con nomenclature differenti (fisico scostamento in realtà è la pos max, ADC_ZERO = adc min, ADC_SCOSTAMENTO = ADC max)

Quello che ho notato dai valori adc che arrivano direttamente nella scheda:

Se faccio scorrere il magnete sul sensore il valore cresce. quando arrivo a circa 3 mm ho dei valori adc, quando salgo ancora di circa 5 mm i valori adc rimangono uguali a quando ero a 3 mm.

Già qui c'è qualcosa che non quadra a livello di valori adc in arrivo o sbaglio?

Modificato: da Ghisla
Link al commento
Condividi su altri siti

Roberto Gioachin
1 ora fa, Ghisla ha scritto:

Già qui c'è qualcosa che non quadra a livello di valori adc in arrivo o sbaglio?

Non sbagli, infatti il tuo problema non è relativo al calcolo da fare per ottenere una scalatura, ma il calcolo da fare per linearizzare il tuo sensore (che non è un potenziometro).

Devi quindi, come ti è stato suggerito da pigroplc, crearti la tua tabella di valori analogici in base alla posizione del magnete, con quella tabella esegui la linearizzazione.

In pratica si tratta di realizzare una scalatura per ogni segmento della tua tabella. 

Certo che se io avessi un sensore così lo avrei già buttato.

Modificato: da Roberto Gioachin
Link al commento
Condividi su altri siti

5 minuti fa, Roberto Gioachin ha scritto:

Non sbagli, infatti il tuo problema non è relativo al calcolo da fare per ottenere una scalatura, ma il calcolo da fare per linearizzare il tuo sensore

Mi pare strano che un sensore che deve dare una posizione non fornisca un segnale lineare.
Perché non fornisci le caratteristiche di questo sensore?

 

1 ora fa, Ghisla ha scritto:

In realtà la formula che usi tu è la stessa che uso io solo con nomenclature differenti (fisico scostamento in realtà è la pos max, ADC_ZERO = adc min, ADC_SCOSTAMENTO = ADC max)

Questo è vero solo per il calcolo di K, ma poi non dici come risali alla posizione partendo dal valore analogico.
PosizioneAttuale = (ADC_Attuale - ADC_ZERO) / K.

 

Comunque, prima di tutto devi verificare il segnale dal trasduttore misurandolo con un tester. Anzi, per la misura, non collegare nemmeno l'ingresso analogico, elimina tutti i collegamenti non indispensabili per il funzionamento.
Se il segnale è lineare, alla posizione minima dovrai leggere 4 mA, a metà corsa 12 mA, a fine corsa 20 mA.
Se così non è, ritorniamo a considerare le caratteristiche del trasduttore (ma ti costa proprio tanto fornirci le caratteristiche di questi trasduttori?). Se non è lineare (ma mi pare alquanto strano) nella documentazione deve esserci anche la curva.

Link al commento
Condividi su altri siti

Il sensore di per sé è lineare, come era ragionevole supporre.

Prima di passare alla scheda del PLC misura i mA a 0% a 50% e a 100% (devi basarti sui mm del campo di misura). Effettua le misure prima scollegando il PLC e poi in serie al PLC.

Se, come penso, il problema non è il sensore, la possibile causa potrebbe essere la configurazione dell'ingresso del PLC (attivo/passivo) che contrasta con il collegamento elettrico.

Il sensore va alimentato a 24 Vdc tramite i pin 1 e 3 e tramite i pin 2 e 3 hai l'uscita analogica 4-20 mA ATTIVA.

La scheda del PLC deve essere configurata (se disponibile come opzione) come PASSIVA, se non è possibile configurarla come PASSIVA devi cambiare scheda.

Link al commento
Condividi su altri siti

Io ho alimentato il sensore con una alimentazione esterna e ho collegato il pin 2 alla scheda del plc. è giusto?

La modalità passiva non la trovo nelle impostazioni

Modificato: da Ghisla
Link al commento
Condividi su altri siti

ripeto (come poi ha già fatto Batta) che il test vero lo fai con un semplice tester o se vuoi far qualcosa in più con un oscilloscopio (lo si usa poco ormai ma in borsa ce l'ho sempre e mi è servito spesso). con quello vedi nel tempo come si comporta il segnale e se c'è linearità. un segnale con una riga retta vuol dire lineare, un segnale con una curva non lineare.

 

giusto ni. il 3 alla scheda non lo colleghi?

Link al commento
Condividi su altri siti

il numero 3 è stato collegato direttamente allo 0V della macchina, idem il 24V.

All'inizio il - e il + erano collegati alla scheda e il sensore non funzionava

ma ho letto male o il sensore è 4-20mA?

perchè qui dice il contrario

image.png.db8b1fc6c3826579bb303f277a70d16a.png

 

L'analogica è stata collegata cosi:

- L'uscita 2 dell'analogica è stata portata al canale Io+ della scheda

- Al canale M0 della scheda è stata portato lo 0V della macchina ponticellato con il Io-

Modificato: da Ghisla
Link al commento
Condividi su altri siti

47 minuti fa, Ghisla ha scritto:

Io ho alimentato il sensore con una alimentazione esterna e ho collegato il pin 2 alla scheda del plc

O me lo sono perso o non hai detto che scheda del plc usi, ne come è configurata, difficile dirti se è giusto il collegamento al pin 2.
Il sensore è 4..20mA.

Comunque la scheda del plc deve essere configurata come passiva, per sensori a 4 fili.

Modificato: da acquaman
Link al commento
Condividi su altri siti

Scusa hai ragione

La scheda è: 6es7134 6hb01 0da1

è configurata come 4-20 mA convertitore a 4 fili

 

Non ho capito se l'alimentazione del sensore la devo prendere dalla scheda o dalla macchina

Modificato: da Ghisla
Link al commento
Condividi su altri siti

24 minuti fa, Ghisla ha scritto:

....

ma ho letto male o il sensore è 4-20mA?

perchè qui dice il contrario

image.png.db8b1fc6c3826579bb303f277a70d16a.png

...

I manuali sono fatti per essere letti (e si spera capiti) per intero :)

L'uscita è 4..20 mA, se utilizzi l'IOLink allora l'uscita analogica assume il valore di 0 mA.

Non conosco Siemens (uso altri PLC) quindi non ti so indicare se i collegamenti alla scheda sono corretti (a sensazione mi sembra che lo siano) come non so dirti se la scheda si a attiva/passiva e/o configurabile.

Dopo che avrai stabilito che il sensore è linerare (senza collegarlo al PLC e poi collegandolo al PLC) allora, ma solo allora potrai spostare la tua attenzione alla scheda del PLC e/o alla sua scalatura.

Link al commento
Condividi su altri siti

Dato che questo problema lo ho su tutti i sensori vorrei prima essere sicuro che il collegamento sia corretto.

Mi sembra strano che tutti i sensori montati non siano lineari

Link al commento
Condividi su altri siti

Devi collegare il tuo sensore sui pin Ix+ (il 2 del sensore) e Ix- (il 3 del sensore).

I pin xUV0 e xM0 non li devi collegare in quanto il sensore riceve alimentazione esternamente.

 

Nota : x rappresenta il n° di canale che vuoi utilizzare).

Link al commento
Condividi su altri siti

10 ore fa, Ghisla ha scritto:

Dato che questo problema lo ho su tutti i sensori vorrei prima essere sicuro che il collegamento sia corretto.

Mi sembra strano che tutti i sensori montati non siano lineari

 

10 ore fa, ken ha scritto:

ripeto (come poi ha già fatto Batta) che il test vero lo fai con un semplice tester o se vuoi far qualcosa in più con un oscilloscopio (lo si usa poco ormai ma in borsa ce l'ho sempre e mi è servito spesso). con quello vedi nel tempo come si comporta il segnale e se c'è linearità. un segnale con una riga retta vuol dire lineare, un segnale con una curva non lineare.

Fai questa prova, non ti porta via molto tempo ma ti farà capire come è il sensore.

Modificato: da ken
Link al commento
Condividi su altri siti

Roberto Gioachin
12 ore fa, Ghisla ha scritto:

Il magnete è stato creato dall'azienda che ha costruito la macchina, quindi non è un magnete festo, non so se potrebbe incidere

Hai provato a vedere come si comporta il sensore con il magnete originale festo?

Nel manuale trovo: Impiegare SDAT-MHS solo per gli attuatori appositamente rilasciati da Festo

ed anche: Sono adatti gli attuatori Festo con scanalatura a T (scanalatura profilata 8  ) nonché cilindri tondi e cilindri a tirante con kit di fissaggio.

 

Modificato: da Roberto Gioachin
Link al commento
Condividi su altri siti

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...