12.02.2020, 12:55
(11.02.2020, 15:47)Daniel. Wrote: Yes you can start just with one register and this is the correct way of doing it
So I started with this simple profile:
Code:
{
"manufacturer": "SolarEdge",
"description": "SE6000 inverter",
"mapping": [
{ "name": "I_AC_VoltageAN", "bus_datatype": "uint16", "type": "register", "address": 40079},
{ "name": "I_AC_VoltageSF", "bus_datatype": "int16", "type": "register", "address": 40082},
{ "name": "I_AC_Power", "bus_datatype": "int16", "type": "register", "address": 40083},
{ "name": "I_AC_Power_SF", "bus_datatype": "int16", "type": "register", "address": 40084}
]
}
This works fine apart from one thing: the scaling factors ( I_AC_Voltage_SF and I_AC_Power_SF).
According the manual, to get the scaled values, the returned value should be mulitplied with 10^Scaling_Factor
The returned value for the voltage is 32767.
Now the values returned for the voltage are 10 times too high eg; 2378, so they should be mulitplied by 0.1, so I would expect the SF values to be -2 and not 32767
The SF for the Power switches between 32767 and 0 according to the amount of power generated (0 being correct).
Another problem is the following: there is one register (actually the most important one as it is the generated energy) that has datatype acc32. I understand that this means that the value is spread over 2 registers.
I did the test with the simple program and indeed I get the values of both registers and can then calculate the real value.
How do I implement this in the profile?