Vai al contenuto
PLC Forum


VISUALIZZAZIONE DI UN VALORE ANALOGICO


Michele La Bianca

Messaggi consigliati

Michele La Bianca

Salve a tutti, ho un plc s7-300 con un modulo ingressi e uscite miste analogiche. Connettendo un alimentatore variabile in un ingresso analogico dallo step 7 riesco a visualizzare il valore decimale. Ho letto nel manuale che 0 corrisponde a 0 V e 27648 corrisponde a 10 V . Volevo aiuto riguardo quali operazioni devo fare affinché la visualizzazione dell'ingresso mi dia 10 V anziché 27648.

Spero possiate aiutarmi. Grazie in anticipo

Link al commento
Condividi su altri siti


è una proporzione, una semplice operazione matematica.

10V:27648=xV:valore attuale

dove xV è la tensione che vuoi visualizzare

dove valore attuale è il valore che leggi dall'ingresso analogico

quindi:

xV = valore attuale * 10/27648

Link al commento
Condividi su altri siti

L Valore letto //Valore letto da scheda

itd

L 10 //10V

itd

*D

L L#27648

/D

= Valore convertito

 

Leggi questa discussione in merito al blocco che hanno giustamente suggerito

 

Link al commento
Condividi su altri siti

Ken, corretto, ma meglio fare i calcoli in Real. Così avresti gradini di 1 V. Oppure, moltiplicare per 1000, ed avere il risultato in mV.

In Real:

L ValoreGrezzo	// Valore letto dal canale analogico
ITD
DTR
L 10.0
*R
L 27648.0
/R
T ValoreScalato	// Valore convertito in Volt in formato REAL

in INT con risultato in mV:

L ValoreGrezzo	// Valore letto dal canale analogico
ITD
L L#10000
*D
L L#27648
/D
T Valorescalato	// Valore convertito in mV su variabile di tipo INT o DINT

 

Comunque, anche se per alcuni compiti l'AWL è ancora il linguaggio migliore, sta per essere messo in disparte anche dalla stessa Siemens.

Per questi calcoli l'ideale è usare SCL:

ValoreScalato := INT_TO_REAL(ValoreGrezzo) * 10.0 / 27648.0;

 

Modificato: da batta
Link al commento
Condividi su altri siti

Michele La Bianca

Buongiorno signori, io ho in ingresso un valore di 8 bit quindi il comando ITD ( che converte da 16 a 32 bit ) non va bene. Sapete quale comando si usa per convertire un numero da 8 bit a 32 bit in AWL ?? ho cercato nel manuale ma non ho trovato nessun comando.

Grazie in anticipo

 

Link al commento
Condividi su altri siti

Se leggi da un canale analogico, leggi un valore a 16 bit, indipendentemente dalla risoluzione dell'ingresso analogico. Del resto, come faresti, con un  byte, a leggere 27648?

In ogni caso, ITD va bene anche per valori a 8 bit.

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