Professional Documents
Culture Documents
College of Engineering
Mechatronics Lab
v1.0
1. Objective
The experiment is aimed to make student acquainted with the preliminary steps to manually
tune a PID controller for a plant model by means of MATLAB.
2. Outcome
Writing mathematical models of plants under investigation in Laplace form using MATLAB.
Developing the mathematical Laplace representation of Ziegler-Nicholas PID controller in
MATLAB.
Finding the critical gain (Kc) and the ultimate period (Pu) to calculate PID gains.
3. Prerequisite
Student should be familiar with the following terms:
Controller Plant
Point
Current
Level
Feedback
For implementation in this experiment, we are given the following plant model W p(s):
1 1
() = 3
=
(10 + 1) 1000 + 300 2 + 30 + 1
3
v1.0
Assuming unity feedback, redrawing the block diagram:
%% Result is
% 1
% sys= ---------------
% S^2+1
%% Function implementation
syms s;
Wp=tf(num,den);
end
Snippet 1 CreatePlant function
v1.0
f. Repeat steps b-e for creating the following snippet for Ziegler-Nicholas generic function:
function Wc = ZieglerNicholasPID( Kc,Ti,Td )
% ZieglerNicholasPID function to generate the PID controller
transfer
%% Parameters
% Kc : Critical gain
% Ti : Reset time (minutes)
% Td : Derivative time (minutes)
%% Function implementation
s=tf('s');
Wc=Kc*(1+(1/(Ti*s))+Td*s);
end
Snippet 2 Ziger-Nicholas PID implementation
g. The final function bonds the two functions (plant and controller) to build the closed loop
system:
function sys = CLS( Wp,Wc )
%CLS Closed loop system function
%% Parameters
% Wp : Plant transfer function
% Wc : Controller transfer function
% sys : Closed Loop transfer function with assuming unity
feedback.
%% Function implementation
CLS=feedback(series(Wp,Wc),1);
end
Snippet 3 Closed loop system bonding
v1.0
6. Open loop system response
Set 1 Y(s)
Point (10 + 1)3
b. From the figure opened, right click on it and select characteristics -> Settling Time, Rise
Time and Steady State. Fill in the table:
v1.0
7. Finding the critical gain (Kc) via Nyquist plot
a. To plot the Nyquist of frequency response of the plant, write down the following code:
Wp=CreatePlant(1,[1000 300 30 1]);
nyquist(Wp);
b. Right click on the plot and select characteristics -> Minimum Stability
Margins as shown in figure
c. Write down the gain margin Gm (in dB) and convert it to magnitude. Write down the
margin frequency Wc .
2 2
d. Calculate = = 8.0011 , and = = 0.173 = 36.32 and consequently
=
v1.0
e. Check that Kc is the critical gain by writing down the following MATLAB code:
t=0:0.01:200;
Wp=CreatePlant(1,[1000 300 30 1]);
%Setting Kc=8, Ki=~0 and Kd=0
Wc=ZieglerNicholasPID(8,100000,0);
sys=CLS(Wp,Wc);
%plotting step response from t0=0 to tf=200 sec
step(sys,t)
Snippet 4 Plotting the system response at critical gain
v1.0
Plot the step response of each controller over the plant by writing the following code:
Wp=CreatePlant(1,[1000 300 30 1]);
Wcp=ZieglerNicholasPID(4,100000,0);
Wcpi=ZieglerNicholasPID(3.6,30.1,0);
Wcpid=ZieglerNicholasPID(4.7,18.2,4.4);
t=0:0.01:500;
sys=CLS(Wp,Wcp);
step(sys,t)
hold on
sys=CLS(Wp,Wcpi);
step(sys,t)
sys=CLS(Wp,Wcpid);
step(sys,t)
legend('P','PI','PID')
v1.0