Professional Documents
Culture Documents
Process Control Module Pid Tuning and Stability (MATLAB Simulation)
Process Control Module Pid Tuning and Stability (MATLAB Simulation)
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