Hi,
before I comment on your Modbus value let me just comment on th e wiring I can see on your picture. Please invest a littel time to rework that for the final version_
I can't see that you have connected the protective earth to anything else but the energy meter. You also have not connected the functional earth of the RevPi to anything.
That is all togehter not a wise idea. Without connecting the functional earth of the RevPi there is just a very poor protection against any EMV pulses injected from your line power.
You should always connect ether the central earth of your cabinet or the protective earth of your line power cord (green/yellow) to your DIN rail using an earth clamp. Then connect the protective earth terminal of your power supply and the meter also to an earth clamp on the DIN rail. And please connect the functional earth to the DIN rail using a clamp too. Any high energy pulses can then (and only then) be directed to this earth path by the internal protection circuit.
Okay, but now to your Modbus current value. Your manual says it should be in the format "float32". So it consist of 4 bytes (2 Modbus registers).
You now have got 2 problems:
1) the process variable you named "Corrente" does only deliver 2 byte of this value (1 Modbus register). But you also need the following 2 bytes to calculate the actual value. So call it "Corrente_a" and the next input "Corrente_b". read both values and do a calculation with them to get the floating point value.
2) you need to know the type of coding floating point into 2 Modbus registers. Sad enough there is no common norm for it. Manufacturers can do it anyway they like... but they should document it. So may be there is some chapter in your manual describing how they have implemented the floating point for 2 regsisters.
As this is a very complex topic I would like to refer to some internet pages which have really good explanations. Basically I would say most implementations use high first and then low, just like the bytes in a modbus register. So in your case the hex 404c would show the highest byte to be 40, the second highest byte 4c, then in the next register (with register address being 3001) the second lowest byte comes first and then the lowest byte. If A is highest value byte and D lowest value byte this could be written as AB CD. But this is just the most common way. It could also well be any other combination like CD AB or DC BA or BA DC etc.
At the end of the day you need to pack these 4 bytes in the order ABCD into a 32 bit float variable in your application software. In Python you would write the 4 bytes into a byte array and then use "struct" to convert them as an IEEE754 32 bit floating value formatted number. If the order in your energy meter is ABCD, then you get the bytes in correct order when do a "piTest -r x,4" (x being the address offset of the first input word in your process image).
If you have read the bytes A, B, C and D from the process image in python 3 you would pack them into a byte array and then do a struct.unpack with format parameter "f" to convert them into a 32 bit single precision floating point:
bytearray = bytes([A, B, C, D])
current = struct.unpack('f', bytearray)
To check this first you use the piTest -r x,4 (use the actual first address for 'x'). You then could take the 4 hex numbers you get form the output and enter it into a float converter like this one here:
https://www.scadacore.com/tools/program ... converter/
On this page you also have possibilities for other byte sequences than ABCD.
It's a hardcore topic but you will make it! Just read and try!