acquaman Posted January 18, 2023 Report Posted January 18, 2023 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 January 18, 2023 Report Posted January 18, 2023 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 January 18, 2023 Report Posted January 18, 2023 (edited) Ciao Acquaman, Potresti valutare la seguente opzione tramite Slice Access: "MyDWord" := REAL_TO_DWORD("MyReal"); "MyWord1" := "MyDWord".%W0; "MyWord2" := "MyDWord".%W1; Edited January 18, 2023 by Operational Amplifier
Mattia Spoldi Posted January 18, 2023 Report Posted January 18, 2023 (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 January 18, 2023 by Mattia Spoldi
acquaman Posted January 18, 2023 Author Report Posted January 18, 2023 @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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now