Code only - step disturbance at 40 seconds

2 visualizaciones (últimos 30 días)
Toby Russell
Toby Russell el 23 de Ag. de 2020
Editada: Toby Russell el 25 de Ag. de 2020
Hi All,
Can anyone help me with pure code for a step disturbace at 40 seconds? I dont want to use symulink for this project and i am interested in the fundamentals.
I need to test the tuning by applying a step disturbance at 40 seconds to see how the controller responds in each case.
Help very much appreiciated!!
Question:
what is the code to implement a step disturbance in the system at 40 seconds that would test the disturbance rejection of the controller and allow the system to return to 1?
Disturbance is defined as G_Disturbance in the below code.
matlab version R2018b
load time.dat
load response.dat
plot (time,response,'g');
title ('Actual response')
xlabel ('Time')
ylabel ('Amplitude')
hold on
s=tf('s')
K = 2;
tau = 3;
sysmod = exp(-s)*(K/(tau*s+1))
plot (time,response,'g');
hold on
step (sysmod,'k')
title ('System Model Step Response')
hold off
Applying the Hagglund-Astrom Tuning
theta = 0.1; % Defines the dead time in the process
kp = (0.14/K)+((0.28*tau)/(theta*K)) % Defines the Proportional element CORRECT
ki = ((0.33*theta) + ((6.8*theta*tau)/(10*theta+tau))) % Defines the Integral element CORRECT
G_disturbance = (exp(-40*s)*(1)) % Function for the disturbance
%haggast1 = feedback ((kp + (ki/s)) * sysmod,1); % Applying the Hagglund-Astrom tuning
haggast1 = feedback ((K*(1+(ki/kp)/s)) * sysmod,1);
step (haggast1,'g')
hold on
step (sysmod,'k')
title ('Haggland-Astrom Tuning')
%step (G_disturbance + haggast1,'r',60) % Applying Disturbance
legend ('haggast1','sysmod','disturbance')
hold off
Applying the Cohen and coon PI Tuning
theta1 = 0.1;
kp1 = (1/K)*(tau/theta1)*(0.9+(theta1/(12*tau))) % Defines the Proportional element CORRECT
ki1 = (theta1*(30+(3*(theta1/tau))) / (9+(20*(theta1/tau)))) % Defines the Integral element CORRECT
%CC = feedback ((kp1 + ki1/s) * sysmod,1); % Applying the Cohen Coon tuning
CC = feedback ((K*(1+(ki1/kp1)/s)) * sysmod,1);
step (CC,'g',100)
hold on
step (sysmod,'k')
title ('Cohen Coon Tuning')
legend ('CC','sysmod')
hold off
Ziegler-Nichols Reaction curve PID settings
RN = 13;
L = 0.1;
Kp_P = 1/(RN*L);
Kp_PI = 0.9/(RN*L);
Kp_PID = 1.2/(RN*L);
Ki_PI = 3*L;
Ki_PID = 2*L;
Kd_PID = 0.5*L;
ZN_P = feedback ((Kp_P)*sysmod,1);
ZN_PI = feedback ((Kp_PI + Ki_PI/s) * sysmod,1);
ZN_PID = feedback ((Kp_PID + Ki_PID/s + s*Kd_PID) * sysmod,1);
step (ZN_PID,'b')
hold on
step (ZN_PI,'y')
step (ZN_P,'g')
title ('Ziegler Nichols')
legend ('PID','PI','P')
hold off
  2 comentarios
Image Analyst
Image Analyst el 24 de Ag. de 2020
Probably but you forgot to ask a specific question and forgot to attach your data files.
Toby Russell
Toby Russell el 25 de Ag. de 2020
Good Morning,
Thank you for your reply.
OK, sorry for the lacking info.
the data files are attached, not possible to load .dat here so they are in excel format.
below is a copy of latest code, I am running a live script for this.
Question:
  1. is it possible to code a step disturbance to occur at 40 seconds that would test the conntrollers disturbance rejection and allow the controler to return the output to 1?
  2. how would this be achieved in code?
MATLAB version - R2018b
I will edit the code in my origninal question to show the lastest verion of where I am. Iam using G_Disturbance to define the disturbance.
best regards
Toby

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre App Building en Help Center y File Exchange.

Productos


Versión

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by