Ask our Experts
Didn't find what you are looking for? Ask our experts!
New Community Ranking System
Our Community ranking system has recently been updated. You may notice changes in user rankings and receive system messages or notifications. If you have questions about how the new ranking works, please refer to the announcement post for more details (click here).
A forum for topics related to the scope of Modicon PAC offers and ecosystem along the whole lifecycle: Modicon M580 and 340, EcoStruxure Control Expert, EcoStruxure Process Expert (Unity Pro) and more.
Search in
Please select a country to continue with beta search.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2022-12-10 06:34 AM
How to read 64-bit Modbus register (4xIntegers) and convert it to understandable value in Control Expert?
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2022-12-12 07:06 AM
I did something like this:
1st is to read the data in words, or you can use byte as word instruction
2nd to split the sign, exponent, and mantissa from 64 bit format
3rd to rearrange the sign, exponent, and mantissa to 32 bit format
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2022-12-10 09:19 AM
Assuming you know how to receive the information using the DTM browser (if not let me know). Use a move command to move the modbus information received to any free %MW location. Make a new variable (LREAL) starting at that same %MW. You can then use that variable and view the value. [I'm on mobile, so let me know if that is enough to help, if not I can provide full details Monday].
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2022-12-10 04:49 PM
Problem is Control Expert/Unity Pro doesn't support 64 byte float or double float. We need to translate 64 byte float to 32 byte float manually (create logic) to workout the exponent and mantissa, and lose some precision.
These websites helps you breakdown the 2:
https://www.binaryconvert.com/convert_double.html
https://www.binaryconvert.com/convert_float.html
https://ryanstutorials.net/binary-tutorial/binary-floating-point.php
Essentially you need to remap the exponent from 11 bit to 8 bit and mantissa from 52 bits to 23 bits
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2022-12-12 04:57 AM
I wrote 4 INTEGERS by bits to 1 STRING. By using LEFT_INT, MID_INT and RIGHT_INT function blocks received sign, exponent and mantissa. How to convert them from STRING to numbers (int, dint, real)?
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2022-12-12 07:06 AM
I did something like this:
1st is to read the data in words, or you can use byte as word instruction
2nd to split the sign, exponent, and mantissa from 64 bit format
3rd to rearrange the sign, exponent, and mantissa to 32 bit format
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2024-08-09 05:20 AM
Hello,
I'm wondering about something. There should be 4 words in total for 64 bits, but you did it with "Double2_I, Double3_I, Double4_I". Where did you use "Double1_I"? I couldn't see it in the photo.
I'm trying to read a "wh" value from the energy analyzer from the modbus map in order;
801
802
803
804
with a total of 4 INT/Holding Registers.
Does it have to be used as;
Double1_I : 801
Double2_I : 802
Double3_I : 803
Double4_I : 804
?
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2025-06-13 05:46 AM
If you're looking for a simple, elegant solution, it is there. At output, you connect WORD_AS_REAL.
(*Converting block - word of 64bit REAL to word of 32bit REAL*)
(*left are outputs word, right are inputs word*)
(*MW64 = most word of 64bit real*)
(*UW64 = upper word of 64bit real*)
(*BW64 = bottom word of 64bit real*)
(*LW64 = least word of 64bit real, not used by converting*)
(*HW32 = high word of 32bit real*)
(*LW32 = low word of 32bit real*)
HW32.15:=MW64.15;(*sign*)
HW32.14:=MW64.14;(*highest exponent*)
HW32.13:=MW64.10;(*copying of exponent*)
HW32.12:=MW64.9;
HW32.11:=MW64.8;
HW32.10:=MW64.7;
HW32.9:=MW64.6;
HW32.8:=MW64.5;
HW32.7:=MW64.4;
HW32.6:=MW64.3;(*copying mantissa*)
HW32.5:=MW64.2;
HW32.4:=MW64.1;
HW32.3:=MW64.0;
HW32.2:=UW64.15;
HW32.1:=UW64.14;
HW32.0:=UW64.13;
LW32.15:=UW64.12;(*copying mantissa*)
LW32.14:=UW64.11;
LW32.13:=UW64.10;
LW32.12:=UW64.9;
LW32.11:=UW64.8;
LW32.10:=UW64.7;
LW32.9:=UW64.6;
LW32.8:=UW64.5;
LW32.7:=UW64.4;
LW32.6:=UW64.3;
LW32.5:=UW64.2;
LW32.4:=UW64.1;
LW32.3:=UW64.0;
LW32.2:=BW64.15;
LW32.1:=BW64.14;
LW32.0:=BW64.13;
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2025-06-17 08:50 AM
Hello alekseib, use attached DFB to convert the two most significant registers of a long real into 32 bit real.
The reduced precision of the result will be Negligible in most cases.
Link copied. Please paste this link to share this article on your social media post.
Link copied. Please paste this link to share this article on your social media post.
Posted: 2025-10-30 05:04 AM
Good morning, everyone. I'm not sure if this is the right place to ask my question, but I'm having a problem with a totalizer read via Modbus TCP. I'm using the DINT_TO_REAL block, which allows me to read the data up to a certain digit. After that, the data is read as a negative value, and I've already identified the error: the data should be read as DINT_TO_LINT, since it's a full 64-bit value. My question is, how can I read these registers and transfer them to four 16-bit memories or two 32-bit memories so I can combine them and read the final total? I'm using an M340 CPU and the EcoStruxure Control Expert 14 software. Please excuse my English, as I'm using a translator.
Link copied. Please paste this link to share this article on your social media post.
You’ve reached the end of your document
Create your free account or log in to subscribe to the board - and gain access to more than 10,000+ support articles along with insights from experts and peers.