acquaman Inserito: 18 gennaio 2023 Segnala Share Inserito: 18 gennaio 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 Link al commento Condividi su altri siti More sharing options...
Area_Federico Inserita: 18 gennaio 2023 Segnala Share Inserita: 18 gennaio 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 Link al commento Condividi su altri siti More sharing options...
Operational Amplifier Inserita: 18 gennaio 2023 Segnala Share Inserita: 18 gennaio 2023 (modificato) Ciao Acquaman, Potresti valutare la seguente opzione tramite Slice Access: "MyDWord" := REAL_TO_DWORD("MyReal"); "MyWord1" := "MyDWord".%W0; "MyWord2" := "MyDWord".%W1; Modificato: 18 gennaio 2023 da Operational Amplifier Link al commento Condividi su altri siti More sharing options...
Mattia Spoldi Inserita: 18 gennaio 2023 Segnala Share Inserita: 18 gennaio 2023 (modificato) 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: 18 gennaio 2023 da Mattia Spoldi Link al commento Condividi su altri siti More sharing options...
acquaman Inserita: 18 gennaio 2023 Autore Segnala Share Inserita: 18 gennaio 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. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora