-
Notifications
You must be signed in to change notification settings - Fork 10
Description
Just making some notes about my thoughts and welcome any feedback/input others may have.
Currently the application applies export/generation limits by actively controlling the inverter active power output.
The desired inverter active power output (as a % to nameplate capacity) is calculated by
// assume site
// positive = import
// negative = export
targetSolar = -(site) - exportLimit
targetActivePowerOutput = targetSolar / totalNameplateCapacity
The actual values are derived by a time-weighted average of the last 5 seconds (default) of samples from controlled inverters and meter.
The active power output is then applied to all controlled inverters, which would effectively reduce the maximum power output to the target solar value.
The pros of this approach is that it makes it possible to control multiple inverters with different capacities with ease, as it effectively pools all inverters as one resource. It also allows controller inverters which either do not have a meter attached or does not support load following export limits (or a mix of inverters with meters and without).
The cons of this approach is that it requires the software to "take over" any native load following export limit logic in the inverters which is usually more responsive
This approach is also going to be more complex as I need to handle battery control. The intention is that the software would manually control the charge and discharge rate of batteries to take advantage of market pricing.
One challenge is how hybrid inverters handles setting "target inverter output". Does it restrict just the solar power output or does it also affect the battery power output?
Alternatively I'm thinking of allowing some inverters (with meter attached and has export limit capabililty) to be controlled by setting export limits, and other inverters (without meter) to be controlled by active power output.