Distributed Nonlinear Model Predictive Control (DNMPC) for Autonomous Droop-Controlled Inverter-Based Microgrids
For my undergraduate capstone, I chose to work on an independent project supervised by Patricia Hidalgo-Gonzalez (PhD Candidate EECS/Energy and Resources Group University of California Berkeley). The result was this project on secondary control of voltage in a microgrid setting. Here I include some of the basics of it.
Abstract:In this paper, a voltage restoration scheme for droop-controlled inverter-based islanded microgrids is proposed. A distributed model predictive control (DMPC) method is designed to be run at each inverter, which only communicates with its immediate neighbors. The DMPC aims to solve a reference tracking problem in order to restore the voltages of all the nodes in the system to the voltage reference. The dynamics for this work are taken to be decoupled from the real power-frequency dynamics in order to focus the work on restoring the location-varying nature of voltage. The scheme is demonstrated to be stable on a Simulink simulator designed for this work.
The methods used in this work:
- Distributed unscented Kalman filter (UKF)
- Distributed nonlinear model predictive control (DNMPC)
- Tracking MPC with analytical solution to integral action for nonlinear dynamics
- Design a distributed controller to restore the voltage in a network to its nominal value in finite-time.
- Restore the local voltage synchronously with its neighbors.
- Track the reference without offset.
- Keep the voltage within the operating bounds.
Two simulators were used to test the distributed nonlinear model predictive control. The first method used just Simulink and used perfect dynamics with Gaussian noise. The second framework was built using PLECS sitting on Simulink. This model lacked fidelity in areas that the first method performed well in but this verified that the voltage restoration could be performed independently of the frequency restoration.
![Simulink plant](/images/simulink_plant.jpg)
![PLECS Model](/images/plecs_model.jpg)
![Integral action](/images/simulink_integral_action.jpg)
![Integral action noisy](/images/simulink_integral_action_noisy.jpg)