Home › Forum › Programmazione IEC 61131 (LogicLab) › Valore variabili REAL IEEE754
- Questo topic ha 3 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 3 anni, 4 mesi fa da
Sergio Bertana.
-
AutorePost
-
Maggio 15, 2023 alle 2:21 pm #71965
Anonimo
InattivoUna volta, calcoli errati potevano restituire NaN, condizione da cui non uscivo essendo la variabile anche a destra dell’uguale, tipo il seguente esempio:
@anCh.anVal := @anCh.anVal * (1.0 - @anCh.kNuovo) + @anCh.valEng * @anCh.kNuovo;
Per risolvere, la strategia era usare
IF @anCh.anVal <> @anCh.anVal THEN @anCh.anVal := 0; END_IF;Secondo quanto trovai da qualche parte riferito alla codifica IEEE754. Non so se sia cambiato qualcosa, ma ora invece di NaN mi restituisce +Inf (o -Inf) e pare che la toppa non funzioni più.
Ti risulta qualche cambiamento in tal senso o è una nuova condizione che son riuscito a combinare?
Maggio 15, 2023 alle 2:30 pm #71969Sergio Bertana
Amministratore del forumNaN acronimo di Not a Number, è un simbolo di avvertimento indicante che il risultato di un’operazione (numerica) è stata ottenuto eseguendola su operandi non validi (specialmente in calcoli in virgola mobile). Ma esiste anche la definizione INF per indicare un valore infinito.
Il FB SysGetAnInp ritorna NaN in caso di problemi sulla acquisizione del valore analogico.
Proprio per risolvere questi problemi di interpretazione dei numeri è stata aggiunta la funzione VarVCheck.
Maggio 15, 2023 alle 6:06 pm #71981Roberto
PartecipanteGrazie della gentile e sollecita risposta. Ritengo però opportuno segnalare un problema in cui sono incorso.
Introducendo la chiamata ottenevo un errore di “funzione non definita”, pur avendo la libreria linkata. Ho verificato di essere indietro di una versione. Ho quindi scaricato ed installato la 9.1.30. Malgrado ciò non ho risolto l’errore.
Dopo aver fatto un po’ di prove e verifiche, ho scoperto che la nuova installazione mette le librerie aggiornate in una sottocartella (Pck055a000). Rimosse le vecchie e linkato esplicitamente queste ho finalmente trovato VarVCheck nel Library tree, nella cartella “Data Manipulation” di eLLabCommonLib.
Quanto sopra nel caso qualcuno incorresse nella mia medesima situazione.
Maggio 16, 2023 alle 8:54 am #71984Sergio Bertana
Amministratore del forumDalla versione 5.22.x.xx di LogicLab è stata introdotta la possibilità di definire la cartella del repository delle librerie.
Questa soluzione permette di semplificare la gestione delle librerie, ora viene rilasciata una raccolta di librerie (Codice Pck055xxxx) che contiene tutte le librerie in questo modo basta inserire l’oggetto desiderato nel progetto che LogicLab provvederà autonomamente a cercarlo nella cartella delle librerie senza dover più andarlo ad includere manualmente nel progetto, per la gestione delle librerie rimando a questo articolo.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.