# Can bandwidth of the closed loop be bigger than bandwidth of individual elements in it?

This is a question from control theory but I hope you can help me with it. I was pointed to this community.

So in my control loop I have elements that have cut-off frequency of 3-5kHz and I designed a PID controller for the inner loop and those elements and suddenly I get a closed loop bandwidth of 30-50kHz cut-off frequency.

So the loop is in the figure bellow. So the PID controller, or voltage controller I designed is a PID with a derivative filter. Current sources are modeled as 1st order filters with 3-5kHz cutoff frequency. How is it possible to get such a high bandwidth of the closed loop if the inner elements have a lower cut-off frequency?

Thanks

• How are you measuring the bandwidth? What do you mean by "suddenly"? Are there any non-linear elements? – MBaz Apr 11 '16 at 13:47
• I assume your last question should read How is it possible to get such a high bandwidth of the **CLOSED** loop if the inner elements have a lower cut-off frequency? – Peter K. Apr 11 '16 at 13:55
• @MBaz I plotted the closed loop response in Matlab and I simulated the same thing in Simulink. By "suddenly" I mean that I'm surprised to get such a huge bandwidth. – MarkoP Apr 11 '16 at 14:13
• @PeterK. Yes, that's what I meant. Thank you. – MarkoP Apr 11 '16 at 14:14
• Use MATLAB commands to examine the frequency domain behaviour of the closed loop system. Explain the differences between the theoretical values for Bode diagrams and the simulated results. – user20501 Apr 12 '16 at 0:21

Yes, that's perfectly possible and to be expected.

Below is a toy example that starts with a Butterworth low pass filter and puts it in the forward path of a feedback loop. The feedback path has a gain of two.

This makes the whole loop unstable, but it also makes the bandwidth very high.

The original filter's frequency response is below. And this is the closed loop response.

## R Code Below #30035

library("signal")

bf <- butter(5, 0.1)
freqz(bf)
dev.copy(png, 'Q30035/Q30035-Butterworth.png')
dev.off()

k <- 2
bf2 <- bf
bf2$a <- bf$a + k*bf$b bf2$b <- bf\$a*k
freqz(bf2)
dev.copy(png, 'Q30035/Q30035-Feedback.png')
dev.off()

• Hi, I have one more question. How can I decrease the bandwith? I'd like the cutoff frequency to be at 3kHz for example. – MarkoP Apr 15 '16 at 9:28
• @MarkoP Usually lowering the overall gain of a controller decreases the bandwidth. – fibonatic Apr 29 '16 at 0:42