Vai al contenuto
PLC Forum


Utilizzo di POKE per scrivere in una variabile REAL


Messaggi consigliati

Cesare Nicola
Inserito:

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:

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?

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...