问题
I have seen example of controlling output dc voltage of DC to DC buck converter using PID controller.
I want to implement DC to AC converter.
I tried using PID controller.
Since i am comparing output AC signal(continuously varying) with reference sinusoidal signal, PID controller is not providing expected output.
In case of DC to DC, both reference signal was constant.
In my case, it is continuously varying sine wave.
Can anyone suggest any way to get accurate DC to AC conversion?
P.S. Can PID controller work with continuously varying reference signal with high frequency(100Hz)?
回答1:
If you want to have zero error for a sine wave reference you have two alternatives:
DQ0 Controller
You need to transform (using the dq0 transform also known as Park transform) your reference signal and controlled (measured) values to a rotating frame with the same frequency of your sine wave (in this case 100Hz).
When doing that, your reference signal and measured values will become constant values at 100 Hz and you can use a regular PID controller (actually you will need two - one for the d frame and other for the q frame).
Then you use the inverse transform of the PID controller output that will drive the duty cycle of your converter modulator.
Just notice that if your system is single-phase, there will be 2nd order harmonics in the result of the dq0 transform that have to be filtered out.
Resonant Controller
In the PID controller, the integral action is responsible for zero error constant reference tracking, because it is effectively a infinite gain at zero frequency (i.e. constant). In the transfer function using Laplace form the integral part corresponds to 1/s
in the controller function.
To track sine waves, you need a controller in the form of (1/w²+s²)
, that will guarantee a infinite gain at the frequency of the reference sine wave, where w=2*pi*f
.
In fact, we can proof mathematically that a DQ0 PID Controller is equivalent to the Resonant Controller.
来源:https://stackoverflow.com/questions/31048052/pid-working-with-sine-wave-as-reference-in-simulink