This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Fronius Modbus Profiles
#1
Hi all,

I have a Fronius Symo 10kW inverter and Smart Meter installed.

I have built profiles for them both but for the life of me I can't seem to get them to behave.

I have the Fronius Modbus set to Float Mapping.
I connect to the unit via TCP/IP

I can successfully read all registers I want from the Inverter (Device ID 1) as float32 values mapped to float32 objects.

I cannot however read the float values from the Smart Meter (Device ID 240).

I have modbus simulation software that we use for all kinds of modbus testing and it can very easily read the correct float value from the correct register in the smart meter.

Its doing my head in but it seems to be an issue with LM not an issue with the modbus registers or mapping in the smart meter.

Code:
{
            "name": "AC_V_line_average",
            "bus_datatype": "14",
            "units": "V",
            "type": "register",
            "address": 40078
}

The documented address is 40080 but the data actually appears in register 40078 (see screen shot attached)

[Image: modbus-scan-40078-10.png]

That is a screenshot showing the registers 40078 containing the average voltage I want to read as a float type with no scaling or multiplication required.

For some reason when I map this to a float32 object the value is all over the shot and not the value retrieved by trusted modbus software.

Hopefully someone can help.
Reply
#2
You are missing "datatype": "float32" in profile entry. By default it will read a single register (uint16).
Reply
#3
(07.09.2021, 11:18)admin Wrote: You are missing "datatype": "float32" in profile entry. By default it will read a single register (uint16).

I have actually tried that already it made no difference.

I will try again now incase I did it wrong the first time but I have not needed to specify this in the other 30+ values I am reading from the Inverter without issue.

It is my understanding that because I am connecting via TCP the modbus datatype is irrelevant as the bus_datatype automatically reads the correct amount of registers.

Have I got that wrong?
Reply
#4
You can use "Read test" to check the values before creating the profile. You might need to apply a read swap because float32 is two registers.

bus_datatype is only relevant to the object that you are mapping it to. The register will be read using the datatype field value and if you don't specify it then only a single register will be read which is not correct for float32.

bus_datatype and datatype can be different. For example if the register contains value x 100 and the object is a floating point type that displays the actual value.
Reply
#5
(07.09.2021, 11:32)admin Wrote: You can use "Read test" to check the values before creating the profile. You might need to apply a read swap because float32 is two registers.

bus_datatype is only relevant to the object that you are mapping it to. The register will be read using the datatype field value and if you don't specify it then only a single register will be read which is not correct for float32.

bus_datatype and datatype can be different. For example if the register contains value x 100 and the object is a floating point type that displays the actual value.

Appreciate the clarification.

I just rebooted the unit and its working perfectly now.

I think it may have been the fact I uploaded and deleted the profile so many times it just needed the reboot to work.

Thanks for a speedy response mate.
Reply
#6
hello, do you have an json file for the Fronius inverter?
Reply


Forum Jump: