How to Prevent PID Overshoot in a System with Variable Solar Power Input?

50 views Asked by At

I am using a Proportional-Integral-Derivative (PID) controller to manage power flow in a system with fluctuating solar power input. The system is primarily based on the 'active_load_kw' variable, which represents the load on the battery bank. The PID controller's aim is to maintain this load as close as possible to a defined setpoint.

The PID controller performs satisfactorily when the solar power input, represented by 'solar_kw', remains constant or changes gradually. However, the issue surfaces during fluctuations in solar power, such as on a partly cloudy day. In these conditions, the PID controller, striving to meet the setpoint, can cause an overshoot when the solar power restores after being temporarily obscured. This overshoot may exceed the battery bank's maximum capacity.

Here's a brief overview of the variables:

  • 'solar_kw': A measurement of solar power production. (0 = no sun, up to the limit of the inverter or solar panels)
  • 'active_load_kw': Measurement of the load on the battery bank (0 = idle, -10 = discharging, 10 = charging)

The setpoint for the 'active_load_kw' is 15 kW. The output of the PID controller, which is the control error, is then sent to the solar inverter to adjust its production. This way, the solar inverter, controlling solar power production on a scale of 0% to 100%, affects the 'active_load_kw' and hence, maintains the setpoint in the PID controller.

The battery bank has a maximum capacity of 30 kW, while the solar power input can reach over 60 kW on a sunny day.

In observing other systems, I've noticed that some appear to implement a dynamic setpoint, potentially circumventing the overshoot issue. However, I am unclear on how to incorporate this logic into my existing PID setup.

One potential solution could be a cascade control, a common PID system configuration. Here, a master PID controller determines a dynamic setpoint, and a slave PID controller ensures the 'active_load_kw' stays close to this setpoint. However, I'm unsure of how to effectively apply this approach in my situation.

In essence, I am seeking advice on how to best prevent overshoots in this fluctuating power environment without exceeding the battery bank's maximum capacity. I am particularly interested in understanding if a dynamic setpoint or a cascade control approach would be most effective, or if there are other solutions that could better suit my needs.

0

There are 0 answers