fiorezzz Inserito: 2 aprile 2020 Segnala Share 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 == Link al commento Condividi su altri siti More sharing options...
batta Inserita: 2 aprile 2020 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
fiorezzz Inserita: 3 aprile 2020 Autore Segnala Share Inserita: 3 aprile 2020 Sono in simulazione al PC ..ora provo le LReal e anche in Step7 ..non mi ricordo di questo comportamento Link al commento Condividi su altri siti More sharing options...
fiorezzz Inserita: 3 aprile 2020 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
fiorezzz Inserita: 3 aprile 2020 Autore Segnala Share Inserita: 3 aprile 2020 E scusando la mia beata ignoranza ma come si opera con i LReal ..ci sono funzioni apposite ? Link al commento Condividi su altri siti More sharing options...
ken Inserita: 3 aprile 2020 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
fiorezzz Inserita: 3 aprile 2020 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
fiorezzz Inserita: 3 aprile 2020 Autore Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
ken Inserita: 3 aprile 2020 Segnala Share Inserita: 3 aprile 2020 scrivilo in kop oppure scl. in awl non ho mai provato ad utilizzare variabili L Link al commento Condividi su altri siti More sharing options...
elettrix01 Inserita: 3 aprile 2020 Segnala Share 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? Link al commento Condividi su altri siti More sharing options...
batta Inserita: 3 aprile 2020 Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 6 aprile 2020 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
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