Vai al contenuto

Valore variabili REAL IEEE754

Home Forum Programmazione IEC 61131 (LogicLab) Valore variabili REAL IEEE754

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #71965
    Anonimo
    Inattivo

    Una 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?

    #71969
    Sergio Bertana
    Amministratore del forum

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

    #71981
    Roberto
    Partecipante

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

    #71984
    Sergio Bertana
    Amministratore del forum

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

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Devi essere connesso per rispondere a questo topic.