Vai al contenuto
PLC Forum


Ingressi Analogici Cpu 226 Siemens


almerico doria

Messaggi consigliati

Salve a tutti

ho il seguente problema: un trasduttore ottico mi da in uscita una Vmax = 5,55 V ed una Vmin = 1,38 V a fronte di una corsa di un pistone senza stelo di 200mm. questa uscita del sensore la collego ad un ingresso analogico con scheda di conversione a 12 bit (11 e segno). Vorrei sapere che cifra in decimale viene memorizzata nel registroa 16 bit quando entrano 5,55V?

mi serve saperlo perchè lo devo scalare con una div a 5,55 v...

Link al commento
Condividi su altri siti


Come è spiegato benissimo sul manuale, il valore di un ingresso analogico va da 0 a 32000 (±32000 se ingresso bipolare).

Se l'ingresso analogico è 0..10 V, per ricavare il valore che ti interessa, basta una banalissima proporzione:

10 : 32000 = 5,5 : x

da cui:

x = 32000 * 5,5 / 10 = 17600

mi serve saperlo perchè lo devo scalare con una div a 5,55 v...

Ma non era Ungaretti uno dei massimo esponenti dell'ermetismo?

Da qui non si capisce proprio nulla di quello che vuoi fare.

Se, come immagino, hai bisogno di risalire alla posizione reale, non è sufficiente considerare che a 200 mm leggerai 17600 (5,5 V), ma dovrai anche considerare che a 0 mm leggerai 4416 (1,38 V).

Quindi, il calcolo da fare per risalire alla posizione del pistone, partendo dai valori da te forniti, sarà:

Posizione = (ValoreAttualeIngressoAnalogico - 4416) / (17600 - 4416) * 200

Oppure, vai al link http://support.automation.siemens.com/WW/llisapi.dll?query=tip038.mwp&func=cslib.cssearch&content=adsearch%2Fadsearch.aspx&lang=it&siteid=cseus&objaction=cssearch&searchinprim=0&nodeid0=4000024&x=0&y=0

Oltre alle istruzioni per le scalature, c'è anche il file "scale.zip" che contiene una libreria con funzioni di scalatura ed un esempio.

Per finire, vorrei chiederti se sei proprio sicuro dei valori che hai fornito, perché mi sembrano molto strani. Non seguono nessuno standard.

Link al commento
Condividi su altri siti

Per finire, vorrei chiederti se sei proprio sicuro dei valori che hai fornito, perché mi sembrano molto strani. Non seguono nessuno standard.

Anche io trovo strano i (5,55V) In genere ho trovato sensori con uscita a 5 volt, ma 5,55 volt è la prima volta.

Tranne se non hai adattato tu un potenziometro o qualche altra cosa di simile sul tuo dispositivo.

P.S. Per BATTA:

Usi una semplicità nel spiegare le cose che è strabiliante,

Modificato: da baltimora
Link al commento
Condividi su altri siti

P.S. Per BATTA:

Usi una semplicità nel spiegare le cose che è strabiliante,

Dici davvero? Mi fa molto piacere.

Pensa che, spesso, quando rileggo quello che scrivo, ho l'impressione di non essere riuscito ad esprimermi in modo chiaro.

C'è da dire che, fino a 12-13 anni, la mia idea fissa per il futuro era di fare il professore di matematica.

Poi ho scelto un'altra strada, ma l'insegnamento mi affascina.

Link al commento
Condividi su altri siti

ma l'insegnamento mi affascina

Credo che qui sia il posto giusto......per esprimere le tue doti.......di insegnante.

Mi siedo in prima fila. :thumb_yello:

Ha dimenticavo......qui lo stipendio da insegnante te lo devi sudare........noi siamo alunni (esigenti) :superlol:

Link al commento
Condividi su altri siti

Salve,

- il sensore ottico ha uno standard 10 V alla distanza dell'oggetto riflettente 80mm. Ma il pistone non si trova a 80 mm prima della corsa positiva...quindi misurando con un voltmetro leggo 5,55 V prima della corsa e 1,38 a fine corsa positiva. A riposo il pistone si trova a 40mm dal sensore ottico. E' chiaro cosi?

- ma un converitore a 12 bit (11 e segno) dovrebbe convertire, in una word a 16 bit, con il valore decimale 32752 - 10 v, in quanto vengono collocati da 2^14 a 2^4. Perchè i 10 volt li rappresenti, nella codifica, con 32000?

Ciao

Link al commento
Condividi su altri siti

- il sensore ottico ha uno standard 10 V alla distanza dell'oggetto riflettente 80mm. Ma il pistone non si trova a 80 mm prima della corsa positiva...quindi misurando con un voltmetro leggo 5,55 V prima della corsa e 1,38 a fine corsa positiva. A riposo il pistone si trova a 40mm dal sensore ottico.

Io preferirei impostare la scalatura per tutta la corsa del pistone.

Quindi:

posizione 0 mm --> 0 V --> valore ingresso analogico = 0

posizione 80 mm --> 10 V--> valore ingresso analogico = 32000

Se poi vuoi far corrispondere la tua posizione di zero ad un punto qualsiasi della corsa, ti basta sommare una costante (offset).

Però ci sono ancora cose che non mi sono chiare.

Nel primo post parli di una corsa di 200 mm, alla quale corrisponde una differenza di tensione (tra inizio e fine corsa) di 5,55 - 1,38 = 4,17 V.

Poi dici che il segnale varia da 0 a 10 V con 80 mm di corsa.

Anche ipotizzando che manchi uno zero, e gli 80 mm siano in realtà 800 mm (oppure che i 200 mm siano in realtà 20 mm), i conti non tornano.

In questo caso infatti, alla corsa di 200 mm dovrebbe corrispondere una differenza di segnale tra inizio e fine corsa di 10 / 800 * 200 = 2,5 V.

Quindi...

E' chiaro cosi?

No, non è chiaro.

- ma un converitore a 12 bit (11 e segno) dovrebbe convertire, in una word a 16 bit, con il valore decimale 32752 - 10 v, in quanto vengono collocati da 2^14 a 2^4. Perchè i 10 volt li rappresenti, nella codifica, con 32000?

Con 16 bit si definiscono valori da -32768 a +32767 (32752 non so da dove salti fuori) se con segno, o da 0 a 65535 se senza segno.

Nei PLC S7-200 però al valore massimo di segnale si legge 32000 (±32000 se bipolare).

Questo, oltre a semplificare i calcoli, permette di usare quello che manca ad arrivare a 32767 per gestire overflow e diagnostica.

Tutte informazioni che si trovano sui manuali.

Link al commento
Condividi su altri siti

ciao,

perchè 32752?

- in un registro a 16 bit (0 -15) se si utilizza una scheda di conversione a 11bit questi vengono collocati dal 14_esimo al 4°. Quindi per rappresentare il valore massimo 10 V scriverò 111111111110000 se lo converti in decimale avrai proprio 32752.

il sensore ottico si trova in un pannello didattico coordinato con un cilindro senza stelo con a bordo una superficie riflettente adatta allo scopo. questa superficie riflettente dista dal ricevitore ottico 40 cm nella sua posizione di riposo e 20 cm quando la superficie riflettente compie la sua corsa positiva. Quindi la corsa del pistone risulta essere di 40 - 20 =20 cm. Con un tester ho misurato tali posizioni ottenendo 5,55 V e 1,38 rispettivamente. Consultando il data sheet del sensore, noto che esso trasduce 80 cm con 10 V e (0-2) cm con 0 V.

Spero che questa volta sia stato meno "ermetico"

Link al commento
Condividi su altri siti

- in un registro a 16 bit (0 -15) se si utilizza una scheda di conversione a 11bit questi vengono collocati dal 14_esimo al 4°. Quindi per rappresentare il valore massimo 10 V scriverò 111111111110000 se lo converti in decimale avrai proprio 32752.

Se dovessimo considerare come valore massimo per una scheda a 10 bit il valore 32736, per una a 11 bit 32752, per una a 12 bit 32760, per una a 13 bit 32764, per una a 14 bit 32766 e per una a 15 bit 32767, ci sarebbe da impazzire.

Lo spostamento dei bit a sinistra serve proprio per svincolare i valori letti dalla reale risoluzione del modulo.

Poi, per praticità e per diagnostica, nei PLC S7-200 il valore corrispondente al valore massimo di segnale è 32000. E non dipende dalla risoluzione della scheda analogica.

Per quanto riguarda invece i valori per la scalatura, i conti non tornano.

Intanto non so cosa significhi quel "(0-2) cm con 0 V"

Se significa che il segnale rimane 0 V da 0 a 20 mm, questo implica che la misura utile è da 20 a 800 mm.

Bastava allora indicare 800 mm = 10 V e 20 mm = 0 V. Quel "(0-2)" mette solo confusione.

Comunque, anche se facciamo i conti con segnale 0..10 V tra 20 e 800 mm, le misure che hai fatto non quadrano.

Per uno spostamento di 200 mm dovrei misurare una differenza di tensione di 10 / 780 * 200 = 2,564 V.

Valore lontanissimo da quello della tua misura, pari a 5,55 - 1,38 = 4,17 V.

Quindi, o hai sbagliato la misura, o hai collegato il trasduttore in modo errato, o il datasheet non è di quel trasduttore.

A quei 4,17 V per uno spostamento di 200 mm, corrisponderebbe una corsa da 0 a 10 V pari a 10 / 4,17 * 200 = 479,6 mm.

Se partiamo sempre da una quota di 20 mm per rispettare (se l'interpretazione è corretta) quel "(0-2) cm = 0 V", mi viene da pensare che il trasduttore possa misurare distanze da 20 a 500 mm, e non da 20 a 800.

Link al commento
Condividi su altri siti

Nel datasheet si legge:

Nominal sensing distance: 20..80 cm.

E il dato risulta anche guardando il grafico.

20..80 è un po' diverso da 2..80, non ti pare?

In questo caso, la misura utile è di 600 mm, e non di 780.

Però ancora non ci siamo.

4,17 V dovrebbero indicare uno spostamento di 600 * 4,17 / 10 = 250,2 mm.

Sei proprio sicuro di aver fatto le misure su una corsa di 200 mm?

Hai la possibilità di rifare queste misure?

Non ti arrabbiare ma, vista la facilità con cui ti dimentichi gli zeri, un errore di misura non mi sembra da escludere.

Link al commento
Condividi su altri siti

Ciao

la mia distrazione è imperdonabile!!

ma la misura in tensione che ho effettuato purtroppo è esatta. Ripeto, la superficie riflettente ad inizio corsa dista dal sensore 40 cm e a fine corsa dista 20 cm. Quindi la superficie riflettente si sposta di 20 cm. Ora tutto questo non quadra consultando il grafico D/V del trasduttore...

comunque sia, ti ringrazio del link dove ho scaricato i blocchi funzione che mi permattono la scalatura del sistema di processo posto a controllo.

Quindi, secondo te, prendendo come dato di fatto che devo lavorare tra 5,55 V e 1,38 V e che la corsa della sup riflettente è di 20 cm quali valori di Osh, Osl, Isl e Ish devo inserire?

Io ho provato i seguenti:

Ish = 32000

Isl = 4416

Osh = 200

Osl = 0

scusa ancora...

Link al commento
Condividi su altri siti

A 5,55 V dovrebbe corrispondere una lettura di 32000 * 5,55 / 10 = 17760

A 1,38 V dovrebbe corrispondere una lettura di 32000 * 1,38 / 10 = 4416

Se vuoi scalare quindi la tua posizione basandoti sulle misure effettuate, i valori che devi inserire nella scalatura "S_ITR", sono:

ISH = 17760 (e non 32000, che è il valore che corrisponde ad un segnale di 10 V)

ISL = 4416

OSH = 200.0 (richiede un dato in formato REAL, quindi devi scrivere anche il punto decimale)

OSL = 0.0 (vale quanto sopra)

Il dubbio però è: se trovo valori che non corrispondono a quanto indicato dal costruttore, come posso essere sicuro che il valore, all'interno del campo che vado a scalare, sia lineare?

Link al commento
Condividi su altri siti

Il grafico indica che D e V sono lineari da 20 a 40 cm. secondo me il sensore non è tarato bene, infatti c'è una vite a 20 giri che modula la sensibilità D/V.

Quando devo usare il blocco S_RTR ?

mi fai un esempio pratico, sempre riferendoti al sensore ottico?

Link al commento
Condividi su altri siti

Io ho usato poco il 200 in passato, e sono anni che proprio non lo uso più.

Quello che scrivo di seguito lo scrivo senza consultare il manuale, ma i nomi delle funzioni sono abbastanza intuitivi e non credo quindi di sbagliare.

S_ITR = Scale Integer To Real

S_RTR = Scale Real To Real

S_RTI = Scale Real To Integer

Tutto dipende quindi dal formato delle variabili che stai usando.

In linea generale:

S_ITR va bene per fare la scalatura di un ingresso analogico (Integer) e mettere il risultato della scalatura in una variabile REAL

S_RTR va bene per scalature tra valori REAL

S_RTI va bene per convertire il valore ingegneristico in REAL, ottenendo un valore in formato INT pronto da trasferire ad una uscita analogica.

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