Vai al contenuto
PLC Forum


VISUALIZZAZIONE DI UN VALORE ANALOGICO


Messaggi consigliati

Michele La Bianca
Inserito:

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


Inserita:

è 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

Michele La Bianca
Inserita:

esatto, però questa proporzione devo implementarla nel programma, è qui che ho difficoltà

Inserita:

Usi , KOP , SCL oppure AWL?

Ad ogni modo c'è un FCstandard che si chiama scale che fa il caso tuo

Michele La Bianca
Inserita:

uso AWL. Dove posso trovare questa FCstandard?

Inserita:

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

 

Inserita: (modificato)

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
Michele La Bianca
Inserita:

Grazie siete stati molto d'aiuto. Implementerò il codice sperando che vada tutto bene. Grazie millee

Michele La Bianca
Inserita:

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

 

Inserita:

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.

Michele La Bianca
Inserita:

Si ha ragione, grazie mille per l'aiuto

 

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