Today is...
Thursday, May 23, 2019
Welcome to the Modbus Community, about
the world's leading automation protocol.
Modbus's Registers Real Time Actual Value
Modbus's registers real time actual value problem

Hi All,

I'm new with Modbus communications.

Briefly, I have a compressor which communicates in Modbus RTU. I have the original SW from the manufacturer. I need to read some extra registers than the displayed in the original SW. I'm using Modbus Pool to read the registers. When I compare the values of the registers vs the values displayed on the original SW, I find them are different.
For ex, the value of 40035 register is 3102 (Signed) which is a temperature, while the value in the original SW is 37.1 C.

Any help please?

My email is khaledelrady@yahoo.com for direct reply.

Thanks in advance for the help.

Assuming your (4)0035 register is a signed, single integer and its interpretation is value * 10^-2, then 3102 = 31.02, which is not the same as 37.1

There's frequently an issue with one offset in the register addressing depending on whether registers are zero based or one based addressing.

I'd suggest reading (4)0034 and (4)0036 and comparing those values to the value that is presently 37.1 to see if one of those matches the original software value. If so, then offset your addressing by one.

Thanks David for your reply.

I have added a snapshot of the actual value comparing to the register's value in that link (https://drive.google.com/file/d/11CypG17aZFsfEYskU-SnJyXIHjo6HqVB/view?usp=sharing).

Looking forward for your valuable swift reply.

Regards,

By Fred Loveless on 19 February, 2019 - 10:59 am
1 out of 1 members thought this post was helpful...

Ok, 28.0 C is 301.15 K, so the value that is stored is in Kelvin as an integer. If if you take 3011 and divide by 10 then subtract 273.1, you will get the correct value.

Nice catch, Fred. I work so seldom in K, it never occurred to me.

By Fred Loveless on 19 February, 2019 - 5:07 pm

You are welcome. I wish I could claim genius status with that, but I was playing around with the converters in the Windows 10 calculator and decided to plug in the degrees C that you showed in the screen shot. From there it was easier.

I have worked on quite a few projects that uses Celsius in integer form. I think this is the first time I have seen Kelvin used in a control of any kind. There are merits to using it as the raw value as long as you let people know that is what is being used.

Glad I could help. Have a good day.

Thanks sooooooooooooo much Fred and David for your highly appreciated support.

Best regards :),

I'm sorry for that but I have another enquiry.

In this link (https://drive.google.com/file/d/1gUGh1AAtDzF4bRTB6dOk79ChBtkJWwxH/view?usp=sharing), there is a snapshot from the compressor SW for +ve and -ve values and registers values. (Although it's Force, I don't understand why it's presented as Amps)

Also I found in the manual of the compressor this table (https://drive.google.com/file/d/1_MX8IISYubNxbEm4Kfs4mPrrDJm-ES93/view?usp=sharing).

I succeed to interpret the 1st value (Unsigned).

Any help with the rest of the values? And how to define the sign?

Thanks in advance

By Fred Loveless on 20 February, 2019 - 9:59 am

Well, that is the correct formula for the Axial Force, (-1(Raw Value)5.0)/(2^15). But, It does not work for the other values. I think the document is missing part of the formula for x and y axis force values. Unfortunately, that is as far as my ability goes for that one. Hopefully there is an ME in the forum that can answer that one.

The reading for the Suction Sat temperature at -273.2 is a hint that your temperature range may be in degrees Kelvin and low EU (0%) is -273.2 C.
Looks like the Integer value is also equal to 1/10 C.

In your HMI documentation or config files you should be able to find the EU ranges,

good luck