Vai al contenuto
PLC Forum


Utilizzo di POKE per scrivere in una variabile REAL


Cesare Nicola

Messaggi consigliati

Cesare Nicola

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

Link al commento
Condividi su altri siti


Cesare Nicola

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?

Link al commento
Condividi su altri siti

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