40 views (last 30 days)

Show older comments

I want to plot graphs for multiple Kp values for a proportional controller. I tried using for loop to perform this. But I didn't get the output.Below, I attach the code which I have written for your reference. Please guide me on this. If you can tell me if there's any other way to do it, then that would be great.

Kindly reply asap.

Thank you.

Star Strider
on 15 Mar 2020

Try this:

J=20.48*10e-6;

b=0.702;

kt=14.70;

kb=0.48;

R=1.6;

L=0.02*0.001;

num=kt;

den=[(J*L) ((J*R)+(L*b)) ((b*R)+(kb*kt))];

kp=0:50:300; %plotting graph for P controller with Kp values in steps of 50

for k = 1:numel(kp)

ki=0;

kd=0;

numc=[kd,kp(k),ki];

denc=[0 1];

numa=conv(num,numc);

dena=conv(den,denc);

[numac,denac]=cloop(numa,dena);

sys = tf(numac,denac)

[y{k},t{k}] = step(sys);

% QL(k,:) = [min(y{k}), max(y{k})] % Information

end

figure

hold on

for k = 2:numel(y)

plot(t{k}, y{k})

end

hold off

xlabel('time(sec)'), ylabel('velocity(rad/sec)')

title ('pid control');

grid

It is necessary to create a system object to use the step funciton. The first step output is uniformly zero, and that causes problems with the plot. Start with the second one instead.

Also, use feedback rather than cloop (that has been deprecated).

Star Strider
on 16 Mar 2020

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!