How can I specify less oschillatory behaviour for PID

1 Ansicht (letzte 30 Tage)
JAMES KEEN
JAMES KEEN am 2 Mär. 2021
Kommentiert: JAMES KEEN am 8 Mär. 2021
How can I speicfy that I do not want a heavily underdamped response as seen in the image attached? The addition of the derivative term makes it difficult to implement in simulink enviroment.
--------------------------------------------------------------First script------------------------------------------------------------
clear all, close all, clc
dt = 0.000005; % this is 10^-6 0.000001
PopSize = 40;
MaxGenerations = 25;
s = tf('s');
G =(1.44e09)/((s*s)+5333*s+9.6e07)
options = optimoptions(@ga,'PopulationSize',PopSize,'MaxGenerations',MaxGenerations,'OutputFcn',@myfun);
[x,fval] = ga(@(K)pidtest(G,dt,K),2,-eye(2),zeros(2,1),[],[],[],[],[],options);
--------------------------------------------------------------Second script--------------------------------------------------------
function J = pidtest(G,dt,parms)
s = tf('s');
K = parms(1)+ parms(2)/s
Loop = series(K,G);
ClosedLoop = feedback(Loop,1);
t = 0:dt:0.005; % this indicates length of time to show
e = 1 - step(ClosedLoop,t);
J = sum(t'.*abs(e)*dt);
step(1*ClosedLoop,t)
h = findobj(gcf,'type','line');
set(h,'linewidth',1);
drawnow
---------------------------------------------------------------end of script------------------------------------------------------
  13 Kommentare
Mathieu NOE
Mathieu NOE am 8 Mär. 2021
OK - did you get similar values ?
I believe I saw also some submissions of PID tuning using GA in the FEX section - did you check that ?
JAMES KEEN
JAMES KEEN am 8 Mär. 2021
Hi I get the following PID values when using my LQR cost function.
P= 7.23803323894401
I= 0.617502138949610
D= 0.000315064097110046
filter coefficent = 1e06
I have not checked that submission as I have not seen it

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Tesfaye Girma
Tesfaye Girma am 5 Mär. 2021
figure(3),plot(yt)
title('PID control result. V-Tiger is better than Ziegler-Nichols rule')
xlabel('sample number k (0.01k [sec])')
ylabel('step response')
gv
gi

Produkte


Version

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by