Please let me know how the PM5000 response will be.
The maximum energy value of PM5000 is 9,223,372,036,854,775,807.
The energy value is stored in a signed 64 bit integer register (INT64).
Please let me know the response of the communication to the above.
(1) For the Float32 type of Modbus register 2700, the maximum value is 2^24=16,777,215.
What response is returned when this value is exceeded?
(ex. 16,777,215→0→1→2, or N/A or ???)
(2) For the INT64 type of Modbus register 3204, the maximum value is 9,223,372,036,854,775,807. Is the response in this case 16,777,215→16,777,216→….→9,223,372,036,854,775,807→0?
The PM5000 series meter energy value will get reset to 0 when it reached to the max value 9,223,372,036,854,775,807 ( max value of INT64).
The max value of FLOAT32 format is higher than the INT64 max value ( 3.4028235 × 1038 ). It is not direct like INT32 or INT64.
So we have limited the max energy value in PM5000 series to the max value of INT64.
I thought the maximum value of Float32 was 16,777,215 (=2^24-1). based on the following URL.
Is this understanding wrong?
This FAQ is not applicable for PM5000 series meter.
The maximum value of FLOAT32 is 3.4028235 × 1038
Hello @Miyai ,
I key phrase in the KB you linked is " without loss of resolution on the stored number."
In float 32, a number is represented as (sign)*(2^exp)*(precision) encoded into 32 bits. 1 bit is used for sign, either 1 or -1, exp is 8 bits and precision is 24 bits. The exp can range from −126 to 127. The precision I think is where you are getting the number 16,777,215 from. This is the largest number that you can get before every whole number is not possible to represent using this format (loss of resolution). This is why many meters recommend using 10,000,000 as the roll over value, it is an easy number for humans to understand and below the ~16.777 million.
While the exp is still small (~24) the most difference you would see is 1 between the desired number and what is represented in the float output, however when the exp gets larger, the gaps between each possible number gets bigger and bigger.
A tool that could possibly help you visualize this is https://www.h-schmidt.net/FloatConverter/IEEE754.html
The important context with precision is that with the float32 numeric format (see https://en.wikipedia.org/wiki/Single-precision_floating-point_format) there are always (at least) 7 digits of decimal precision for all working values.
For example, a kWh output register, output values will appear to increment by 0.001 at 16,778kWh, 0.1 at 1,677,722kWh, and 100 at 1677,721,500kWh.
Discuss challenges in energy and automation with 30,000+ experts and peers.
Find answers in 10,000+ support articles to help solve your product and business challenges.
Find peer based solutions to your questions. Provide answers for fellow community members!