Logic Machine Forum
Solaredge Control of inverter power output - Printable Version

+- Logic Machine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: Solaredge Control of inverter power output (/showthread.php?tid=5326)



Solaredge Control of inverter power output - gjniewenhuijse - 27.03.2024

Is there a way to control the Solaredge inverter power output from the LM?

I like to limiting or completely shutting down the power output. For example in case of a dynamic energy contract in periods with a negative energy price.

See: home-assistant-solaredge-modbus/README.md at master · binsentsu/home-assistant-solaredge-modbus · GitHub


RE: Solaredge Control of inverter power output - Daniel - 27.03.2024

https://forum.logicmachine.net/showthread.php?tid=2462&pid=16657#pid16657


RE: Solaredge Control of inverter power output - gjniewenhuijse - 28.03.2024

(27.03.2024, 16:08)Daniel Wrote: https://forum.logicmachine.net/showthread.php?tid=2462&pid=16657#pid16657

Thanks, that works great for me. But now i have all readable values from the inverter. I like to control the output from the inverter as described in:
photovoltaikforum.com/core/attachment/88445-power-control-open-protocol-for-solaredge-inverters-pdf/

Question 1: On Page 3 i see some info, but don't know how to start.
Register  61442,  61443,  61762 and 61700 doesn't return any value.

Question 2: Is there an easy way to display the returned values as readable text?

Code:
require('luamodbus')
mb = luamodbus.tcp()
mb:open('x.x.x.x', 1502)
res, err = mb:connect()
if res then
  log("connected!")
  mb:setslave(1)
  r0 = mb:readregisters(40069) -- 101 = single phase, 102 = split phase, 103 = three phase
  r1 = mb:readregisters(61440) -- RRCR State 
  r2 = mb:readregisters(61441) -- Active Power Limit
  r3a = mb:readregisters(61442) -- CosPhi 1/2
  r3b = mb:readregisters(61443) -- CosPhi 2/2
  log(r1, r2, r3a, r3b)
 
  --To enable the dynamic power control mode, set the following:
  -- AdvancedPwrControlEn on address 0xF142 to 1 (enable). It is disabled (0) by default. -1.0 - 1.0 (61762)
  -- ReactivePwrConfig on address 0xF104 to 4 (RRCR mode). It is set by default to 0 (Fixed CosPhi mode). (61700)
  -- Issue a Commit Power Control Settings command on address 0xF100 in order to make this setting effective. (61696)
  r4 = mb:readregisters(61762) -- AdvancedPwrControlEn 
  r5 = mb:readregisters(61700) -- ReactivePwrConfig
  r6 = mb:readregisters(61696) -- Commit Power
  log(r4, r5, r6)
 
 
else
  log('connect failed', err)
end
mb:close()



RE: Solaredge Control of inverter power output - Daniel - 28.03.2024

Try writing 1 to F142, log errors and then try sending a 50 to F001.


RE: Solaredge Control of inverter power output - admin - 28.03.2024

For Float32 values use:
Code:
cosphi = mb:readregistervalue(61442, 'float32', 'w')
log(cosphi)

If the returned value is incorrect change the third parameter from w to n
Similarly for Int32 and UInt32 values change the second parameter to either int32 or uint32


RE: Solaredge Control of inverter power output - gjniewenhuijse - 28.03.2024

(28.03.2024, 09:14)Daniel Wrote: Try writing 1 to F142, log errors and then try sending a 50 to F001.

Code:
log( mb:writeregisters(61762,1) )
log( mb:writeregisters(61696,50) )

twice times in the log:
* arg: 1
  * nil
* arg: 2
  * string: Operation timed out


RE: Solaredge Control of inverter power output - gjniewenhuijse - 28.03.2024

Thanks it works great!

log( mb:writeregisters(61441,100) ) --F001 0-100