Jump to content

Recommended Posts

Posted

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

Area_Federico
Posted

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

 

Operational Amplifier
Posted (edited)

Ciao Acquaman,

 

Potresti valutare la seguente opzione tramite Slice Access:

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

 

Edited by Operational Amplifier
Mattia Spoldi
Posted (edited)

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

 

Edited by Mattia Spoldi
Posted

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...