Cesare Nicola Inserito: 24 agosto 2016 Segnala Inserito: 24 agosto 2016 Vorrei scrivere, mediante POKE, una variabile REAL presente in una DB, in questo modo: #Valore_real := 123.456; // Parametro Input di un FB parametrizzato (per le prove sto invece utilizzando una variabile Static, per poterla forzare) POKE(area := 16#84, dbNumber := 1, // DB in cui scrivere byteOffset := 2, // Offset value := #Valore_real); // Valore da scrivere Già in fase di editazione l'editor mi segna in giallo l'ultima riga ed il messaggio è "il segno o la precisione del valore possono andare persi"; simulando, vedo che in effetti in DB1.DBD2 viene scritto 16#0000_007B (123 in HEX). Come posso fare? C'è l'istruzione POKE_BLK ma non mi sembra faccia al caso mio, oltretutto la mia variabile #Valore è un parametro Input di un FB, non arriva da una DB, per cui non saprei come impostare il richiamo di POKE_BLK. Grazie
Cesare Nicola Inserita: 24 agosto 2016 Autore Segnala Inserita: 24 agosto 2016 Una soluzione potrebbe essere questa, sembra funzionare. #Valore_real := -123.456; #Valore_DINT := REAL_TO_DINT(#Valore_real * 1000); // Converto il valore REAL, moltiplicando per 1000 di modo da tenermi tre decimali POKE(area := 16#84, // Specificare il formato 16# dbNumber := 1, byteOffset := 2, value := #Valore_DINT); // Scrivo nella DB in formato DINT "Mio_REAL" := DINT_TO_REAL("DB1"."REAL") / 1000.0; // riconverto in REAL, dividendo per 1000 ed in "DB1"."REAL" ritrovo 123.456 Può andare?
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