Code only - step disturbance at 40 seconds

2 ビュー (過去 30 日間)
Toby Russell
Toby Russell 2020 年 8 月 23 日
編集済み: Toby Russell 2020 年 8 月 25 日
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 件のコメント
Image Analyst
Image Analyst 2020 年 8 月 24 日
Probably but you forgot to ask a specific question and forgot to attach your data files.
Toby Russell
Toby Russell 2020 年 8 月 25 日
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

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangeApp Building についてさらに検索

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by