Michele La Bianca Inserito: 29 novembre 2019 Segnala Inserito: 29 novembre 2019 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
ken Inserita: 29 novembre 2019 Segnala Inserita: 29 novembre 2019 è 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: 29 novembre 2019 Autore Segnala Inserita: 29 novembre 2019 esatto, però questa proporzione devo implementarla nel programma, è qui che ho difficoltà
STEU Inserita: 29 novembre 2019 Segnala Inserita: 29 novembre 2019 Usi , KOP , SCL oppure AWL? Ad ogni modo c'è un FCstandard che si chiama scale che fa il caso tuo
Michele La Bianca Inserita: 29 novembre 2019 Autore Segnala Inserita: 29 novembre 2019 uso AWL. Dove posso trovare questa FCstandard?
ken Inserita: 29 novembre 2019 Segnala Inserita: 29 novembre 2019 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
batta Inserita: 30 novembre 2019 Segnala Inserita: 30 novembre 2019 (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: 30 novembre 2019 da batta
Michele La Bianca Inserita: 30 novembre 2019 Autore Segnala Inserita: 30 novembre 2019 Grazie siete stati molto d'aiuto. Implementerò il codice sperando che vada tutto bene. Grazie millee
Michele La Bianca Inserita: 4 dicembre 2019 Autore Segnala Inserita: 4 dicembre 2019 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
batta Inserita: 4 dicembre 2019 Segnala Inserita: 4 dicembre 2019 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: 5 dicembre 2019 Autore Segnala Inserita: 5 dicembre 2019 Si ha ragione, grazie mille per l'aiuto
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora