Vai al contenuto
PLC Forum


Dividere un reale su 2 registri modbus


acquaman

Messaggi consigliati

Buongiorno a tutti, ho la necessità di dividere una tag reale (2 word) per caricarle su 2 registri modbus quindi 2 interi, in testo strutturato o in ladder.

Grazie

Link al commento
Condividi su altri siti


Ciao,
in ST ho avuto la necessità di splittare una word in 2 byte e ho fatto nel seguente modo.


Byte1 := WORD_TO_BYTE(miaword)
Byte2 := WORD_TO_BYTE(SHR(miaword,8))

Probabilmente adattando il tipo di dato e il numero di bit da shiftare, potrebbe funzionare anche nel tuo caso

 

Link al commento
Condividi su altri siti

Operational Amplifier

Ciao Acquaman,

 

Potresti valutare la seguente opzione tramite Slice Access:

"MyDWord" := REAL_TO_DWORD("MyReal");
"MyWord1" := "MyDWord".%W0;
"MyWord2" := "MyDWord".%W1;

 

Modificato: da Operational Amplifier
Link al commento
Condividi su altri siti

Dubito posano funzionare i metodi sopra, nel momento in cui si usa una funzione REAL_TO_XXX(), viene troncata la parte decimale.

Se stai usando un plc relativamente nuovo, il mio consiglio è di dichiarare un array di 2 word, poi usi la funzione COP(), come sorgente dai il tuo float, come destinazione l'array appena creato, da qui poi ti basta assegnare ad i registri MB le 2 word dell'array.

 

Ho trovato anche un esempio

https://www.prosoft-technology.com/knowledge-base/Rockwell-In-chassis/CompactLogix/How-do-I-convert-an-integer-to-floating-point-and-vice-versa-in-a-Rockwell-Controller

 

Modificato: da Mattia Spoldi
Link al commento
Condividi su altri siti

@Area_Federicocon i dati tipo reale non è possibile usare quel metodo.

@Operational Amplifier il client modbus leggerà i miei dati in reale, convertendo i dati in doppia word cambi la formattazione e il client dovrà leggere un intero a 32 bit non un reale perdendo la precisione dei decimali.

@Mattia Spoldi Grazie, è proprio quello di cui avevo bisogno, funziona egregiamente, conoscendo poco Rockwell non avevo trovato questa istruzione.

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