fiorezzz Inserito: 2 aprile 2020 Segnala Inserito: 2 aprile 2020 Salve a tutti Premetto che sono in simulazione sul PC Perchè se faccio la diff (-R) tra 2 numeri reali 100,2 -100,4 Ottengo 0,2000046 che se poi lo confronto con 0,20 non lo trovo ==
batta Inserita: 2 aprile 2020 Segnala Inserita: 2 aprile 2020 (modificato) Ma i valori 100.2 e 100.4 li scrivi tu, o sono il risultato di altri calcoli? Nel primo caso, mi pare un po' strano; nel secondo caso, significa semplicemente che i valori sono approssimati (come è normalmente con le variabili REAL), e non vedi le ultime cifre. Fai una prova: converti le variabili da Real a LReal, e guarda il risultato del calcolo fatto con le LReal. Comunque, con variabili Real, o anche LReal, se non si ha l'assoluta certezza che il risultato di calcoli non contenga approssimazioni, mai fare comparazioni per valori uguali. Modificato: 2 aprile 2020 da batta
fiorezzz Inserita: 3 aprile 2020 Autore Segnala Inserita: 3 aprile 2020 Sono in simulazione al PC ..ora provo le LReal e anche in Step7 ..non mi ricordo di questo comportamento
fiorezzz Inserita: 3 aprile 2020 Autore Segnala Inserita: 3 aprile 2020 (modificato) Ops... Comunque è simile anche in STEP7 ..sinceramente facendo pochi conti non me lo ricordavo Chiaramente poi se faccio un compare a 0,20 mi da FALSE ..quando mi a spetto TRUE ..questo in entrambi i sistemi Chiaramente poi se faccio un compare a 0,21 mi da TRUE Modificato: 3 aprile 2020 da fiorezzz
fiorezzz Inserita: 3 aprile 2020 Autore Segnala Inserita: 3 aprile 2020 E scusando la mia beata ignoranza ma come si opera con i LReal ..ci sono funzioni apposite ?
ken Inserita: 3 aprile 2020 Segnala Inserita: 3 aprile 2020 sono variabili. ti basta dichiararle Lreal invece che Real. nel tuo esempio non è possibile, usi numeri veri, non variabili ho fatto una prova effettivamente con variabili real succede quanto dici. con lreal no. col simulatore, non con una cpu vera
fiorezzz Inserita: 3 aprile 2020 Autore Segnala Inserita: 3 aprile 2020 Ho provato a usare variabili LReal mai poi come le uso visto che L #v1 .il TIA dice che non è un operazione ammessa (dipende forse dal tipo CPU ..sto usando 1510 F) Per la matematica è un problema di simulazione o si ha anche su CPU fisica
fiorezzz Inserita: 3 aprile 2020 Autore Segnala Inserita: 3 aprile 2020 Ho fatto verifica su CPU Fisica (potenza del smart working) e il risultato della differenza è lo stesso Mi rimane da capire come operare con i LReal
ken Inserita: 3 aprile 2020 Segnala Inserita: 3 aprile 2020 scrivilo in kop oppure scl. in awl non ho mai provato ad utilizzare variabili L
elettrix01 Inserita: 3 aprile 2020 Segnala Inserita: 3 aprile 2020 Non so la classe di precisione che vuoi avere, ma se moltiplichi entrambi per mille, li tronchi e fai una differenza tra due DINT?
batta Inserita: 3 aprile 2020 Segnala Inserita: 3 aprile 2020 Il formato Real è, per sua natura, un formato che fornisce valori approssimati. Lo stesso vale per il formato LReal, solo che ha una precisione maggiore. Non dobbiamo MAI fare confronti di uguaglianza con il formato Real.
STEU Inserita: 6 aprile 2020 Segnala Inserita: 6 aprile 2020 Normalmente ,non solo sui plc ma anche i PC, se devi confrontare 2 numeri in virgola mobile, ti conviene fare la differenza, trovarti il valore assoluto , e verificare che sia inferiore ad un valore prossimo allo 0 (es 0.0001) , e se inferiore puoi considerare il confronto valido
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