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.

Solaredge Control of inverter power output
#1
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
Reply
#2
https://forum.logicmachine.net/showthrea...7#pid16657
------------------------------
Ctrl+F5
Reply
#3
(27.03.2024, 16:08)Daniel Wrote: https://forum.logicmachine.net/showthrea...7#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()
Reply
#4
Try writing 1 to F142, log errors and then try sending a 50 to F001.
------------------------------
Ctrl+F5
Reply
#5
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
Reply
#6
(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
Reply
#7
Thanks it works great!

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


Forum Jump: