Automatic Control - Lab1
Automatic Control - Lab1
Automatic Control
(804465‐3)
Lab
Manual
Prepared By:
The purpose of this lab tutorial is to enable students to learn to use MATLAB and SIMULINK in control engineering
applications. It consists of two parts; First part focuses on MATLAB. MATLAB is an interactive environment for scientific
and engineering calculations, design, simulation and visualization. First part provides a brief introduction to the use of
MATLAB with examples, and then describes the Control System Toolbox with examples. With the aid of this toolbox, for
example, the control student can draw the Bode diagram, root locus or time response of a system in a few seconds and, analyze
and design a control system in a very short time.
The second part of this tutorial focuses on SIMULINK. SIMULINK is an extension to MATLAB, which uses an icon-driven
interface for the construction of a block diagram representation of a process.
A block diagram is simply a graphical representation of a process (which is composed of an input, the system, and an output).
is entered as
>> A = [2, 1, 3; 4, 0, 6; 5, 8, 7];
or
>> A = [2 1 3; 4 0 6; 5 8 7];
Special vectors and matrices. MATLAB allows special vectors and matrices to be declared. Some examples are given below:
A = [] generates a null matrix
A = ones(n,m) generates an n × m matrix of ones A = eye(n) generates an n × n identity matrix
A = zeros(n,m) generates an n × m matrix of zeros
If the increment is 1 it can be omitted. Thus the above vector can also be created with the statement
>> T = 0:10;
The size of a matrix can be found by using the size statement:
>> [m,n] = size(C) m =4
n =3
' transpose
If x is a vector, its multiplication with a scalar multiplies all elements of the vector. For example,
>> x = [1, 3, 5];
>> y = 2*x y =2 6 10
Similarly, if A is a matrix, its multiplication with a scalar multiplies all elements of the matrix:
>> A = [1 3; 5 7];
>> B = 2*A
[ ]
[ ]
And
[ ]
then
>> A = [1 3; 2 4];
>> B = [2 4; 5 2];
>> C = A B
[ ]
Array operations perform arithmetic operations in an element-by-element manner. An array operation is indicated by proceeding the
operator by a period (.). For example,
if a = [1 34] and b = [2 3 5] then
>> a = [1 3 4];
>> b = [2 3 5];
>> c = a.*b
c =[2 9 20]
Predefined functions. There are a number of predefined functions that can be used in statements.
Some commonly used functions are:
abs absolute value
sqrt square root
real real part
imag imaginary part
rem remainder
sin sine
cos cosine
asin arcsine
acos arccosine
tan tangent
atan arctangent
exp exponential base e
log natural logarithm
log10 log base 10
For example,
>> a = sqrt(16)
a=4
‐4‐
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department
>> a = sqrt(-4)
a = 0 + 2.0000i
Polynomials. A polynomial is defined by using a vector containing the coefficients of the polynomial. For example, the
polynomial
F(x) = 3x4− 5x3+ x2− 3x+ 1
is defined as
p = [3 -5 1 -3 1].
It is important that all powers of the polynomial must be specified. The coefficients of the missing powers must be specified as zero.
The following operations can be performed on a polynomial:
x/\2 - 7x + 10
Thus, the equation of the required polynomial is
F(x) = x2 − 7x + 10.
Y(s) 3
=
U(s) 52 + 35 + 9
.
Transfer function. The transfer function of the system can be defined in terms of the numerator and the denominator
polynomial:
>>num = [0 0 3];
>> den = [1 3 9];
‐6‐
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department
>> K = 0:0.5:5;
>> r = rlocus(num,den,K);
>> plot(r,‘x’)
-1.5000 + 2.5981i
-1.5000 - 2.5981i
k=
3
where z is the zeros, p is the poles and k is the gain.
Closed-loop system transfer function. The closed-loop system transfer function can be obtained using the feedback command.
This command assumes by default a system a system with unity gain negative feedback. The closed-loop transfer function of the
above system is thus given by:
>> G = tf(num,den);
>> sys = feedback(G,1)
Transfer function:
3
-----------------
s^2 + 3s + 12
Series and parallel connected transfer functions; consider two serially connected transfer functions
G(s)H(s). The overall transfer function can be obtained as series (G,H)
where G and H are the transfer functions G(s) and H(s), respectively, in MATLAB representation. For example, if
( )
And
‐7‐
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department
( )
Similarly, the parallel statement can be used to reduce the transfer functions connected in parallel. Factored transfer functions. If a
transfer function is in factored form, it can be entered using the conv command. For example, if
( )( )
then it can be entered into MATLAB as
>>num = [1 4];
>> den1 = [1 1];
>> den2 = [1 2];
>> den = conv(den1,den2);
( )
( )( )( )
we can write
>>num = 2;
>> den1 = [1 1];
>> den2 = [1 2];
>> den3 = [1 4];
>> den = conv(den1,conv(den2,den3));
Inverse Laplace transforms. The MATLAB command residue is used to obtain the inverse Laplace transform of a transfer
function by finding the coefficients of the partial fraction expansion. The partial fraction expansion is assumed to be in the
following format:
As an example, suppose that we wish to find the coefficients A, B and C of the partial fraction Expansion
1 A B c
Y(s) = = + +
(5 + 1)(5 + 2)(5 + 3) 5+1 5+2 5+3
p=
3.0000
-2.0000
-1.0000
k=
[]
In Simulink, systems are drawn on screen as block diagrams. Many elements of block diagrams are available, such as transfer
functions, summing junctions, etc., as well as virtual input and output devices such as function generators and
oscilloscopes. Simulink is integrated with MATLAB and data can be easily transferred between the programs.
Simulink is started from the MATLAB command prompt by entering the following command: simulink
Alternatively, you can hit the Simulink button at the top of the MATLAB window as shown here:
When it starts, Simulink brings up a single window, entitled Simulink Library Browser.
In Simulink, a model is a collection of blocks which, in general, represents a system. In addition, to drawing a model into a
blank model window, previously saved model files can be loaded either from the File menu or from the MATLAB command
prompt. (Alternatively, you can load a file using the Open option in the File menu in Simulink, or by hitting Ctrl-O in
Simulink). A new model can be created by selecting New from the File menu in any Simulink window (or by hitting Ctrl-N).
L1.3.2Basic Elements
There are two major classes of items in Simulink: blocks and lines. Blocks are used to generate, modify, combine, output,
and display signals. Lines are used to transfer signals from one block to another.
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department
L1.3.2.1Blocks
There are several general classes of blocks within the Simulink library:
Blocks have zero to several input terminals and zero to several output terminals. Unused input terminals are indicated
by a small open triangle. Unused output terminals are indicated by a small triangular point. The block shown below has
an unused input terminal on the left and an unused output terminal on the right.
L1.3.2.2Lines
Lines transmit signals in the direction indicated by the arrow. Lines must always transmit signals from the output terminal of one
block to the input terminal of another block.
Lines can never inject a signal into another line; lines must be combined through the use of a block such as a summing
junction.
A signal can be either a scalar signal or a vector signal. For Single-Input, Single-Output (SISO) systems, scalar signals
are generally used. For Multi-Input, Multi-Output (MIMO) systems, vector signals are often used, consisting of two or more
scalar signals. The lines used to transmit scalar and vector signals are identical. The type of signal carried by a line is
determined by the blocks on either end of the line.
L1.3.3Simple Example
The simple model consists of three blocks: Step, Transfer Function, and Scope. The Step is a Source block from which
a step input signal originates. This signal is transferred through the line in the direction indicated by the arrow to the Transfer
Function Continuous block. The Transfer Function block modifies its input signal and outputs a new signal on a line to the
Scope. The Scope is a Sink block used to display a signal much like an oscilloscope.
A block can be modified by double-clicking on it. For example, if you double-click on the Transfer Function block in the
Simple model, you will see the following dialog box.
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department
This dialog box contains fields for the numerator and the denominator of the block's transfer function. By entering a vector
containing the coefficients of the desired numerator or denominator polynomial, the desired transfer function can be entered. For
example, to change the denominator to
S 2 + 2S + 4
and hit the close button, the model window will change to the following,
The Step block can also be double-clicked, bringing up the following dialog box.
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department
The default parameters in this dialog box generate a step function occurring at time = 1 sec, from an initial level of zero to a
level of 1 (in other words, a unit step at t = 1). Each of these parameters can be changed. Close this dialog before continuing.
The most complicated of these three blocks in the Scope block. Double-clicking on this brings up a blank oscilloscope screen.
When a simulation is performed, the signal which feeds into the scope will be displayed in this window. Detailed
operation of the scope will not be covered in this tutorial. The only function we will use is the auto scale button, which appears
as a pair of binoculars in the upper portion of the window.
Before running a simulation of this system, first open the scope window by double-clicking on the scope block. Then, to
start the simulation either select Start from the Simulation menu, click the Play button at the top of the screen, or hit Ctrl-
T.
The simulation should run very quickly and the scope window will appear as shown below.
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department
Note that the simulation output (shown in yellow) is at a very low level relative to the axes of the scope. To fix this, hit
the autoscale button (binoculars), which will rescale the axes as shown below.
Note that the step response does not begin until t = 1. This can be changed by double-clicking on the step block. Now, we will
change the parameters of the system and simulate the system again. Double-click on the Transfer Function block in the
model window and change the denominator to:
[1 20 400]
Re-run the simulation (hit Ctrl-T) and you should see what appears as a flat line in the scope window. Hit the auto scale button,
and you should see the following in the scope window.
Notice that the autos cale button only changes the vertical axis. Since the new transfer function has a very fast response, it
compressed into a very narrow part of the scope window. This is not really a problem with the scope, but with the simulation
itself. Simulink simulated the system for a full ten seconds even though the system had reached steady state shortly after one
second.
To correct this, you need to change the parameters of the simulation itself. In the model window, select Configuration
Parameters from the Simulation menu. You will see the following dialog box.
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department
There are many simulation parameter options; we will only be concerned with the start and stop times, which tell
Simulink over what time period to perform the simulation. Change Start time from
1.1 to 0.8 (since the step doesn't occur until t = 1.0). Change Stop time from 10.0 to 2.0, which
should be only shortly after the system settles. Close the dialog box and rerun the simulation. After hitting the auto scale
button, the scope window should provide a much better display of the step response as shown below.
In this section, you will learn how to build systems in Simulink using the building blocks in Simulink's
Block Libraries. You will build the following system.
First, you will gather all of the necessary blocks from the block libraries. Then you will modify the blocks so they
correspond to the blocks in the desired model. Finally, you will connect the blocks with lines to form the complete system.
After this, you will simulate the complete system to verify that it works.
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department
• Create a new model (New from the File menu or hit Ctrl-N). You will get a blank model window.
• Click on the Sources listing in the main Simulink window.
• This will bring up the Sources block library. Sources are used to generate signals.
• Drag the Step block from the Sources window into the left side of your model window.
• Double-click on the Sum block. Since you will want the second input to be subtracted, enter +- into the list of signs
field. Close the dialog box.
• Double-click the Gain block. Change the gain to 2.5 and close the dialog box.
• Double-click the PID Controller block and change the Proportional gain to 1 and the Integral gain to 2. Close the
dialog box.
• Double-click the Transfer Function block. Leave the numerator [1], but change the denominator to [1 2 4].
Close the dialog box. The model should appear as:
• Change the name of the PID Controller block to PI Controller by double-clicking on the word
PID Controller.
• Similarly, change the name of the Transfer Function block to Plant. Now, all the blocks are entered properly. Your
model should appear as:
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department
Now that the blocks are properly laid out, you will now connect them together. Follow these steps.
• Drag the mouse from the output terminal of the Step block to the positive input of the Sum input. Another option
is to click on the Step block and then Ctrl-Click on the Sum block to connect the two together. You should see the
following.
• The resulting line should have a filled arrowhead. If the arrowhead is open and red, as shown below, it means it is not
connected to anything.
• You can continue the partial line you just drew by treating the open arrowhead as an output terminal and drawing
just as before. Alternatively, if you want to redraw the line, or if the line connected to the wrong terminal, you should
delete the line and redraw it. To delete a line (or any other object), simply click on it to select it, and hit the delete key.
• Draw a line connecting the Sum block output to the Gain input. Also draw a line from the Gain to the PI Controller, a
line from the PI Controller to the Plant, and a line from the Plant to the Scope.
• The line remaining to be drawn is the feedback signal connecting the output of the Plant to the negative input of the
Sum block. This line is different in two ways. First, since this line loops around and does not simply follow the
shortest (right-angled) route so it needs to be drawn in several stages. Second, there is no output terminal to start from,
so the line has to tap off of an existing line.
• Drag a line off the negative portion of the Sum block straight down and release the mouse so the line is incomplete.
From the endpoint of this line, click and drag to the line between the Plant and the Scope.
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department
• Finally, labels will be placed in the model to identify the signals. To place a label anywhere in the model, double-click
at the point you want the label to be. Start by double-clicking above the line leading from the Step block. You will get a
blank text box with an editing cursor as shown below.
• Type an r in this box, labeling the reference signal and click outside it to end editing.
• Label the error (e) signal, the control (u) signal, and the output (y) signal in the same manner.
Your final model should appear as:
To save your model, select Save As in the File menu and type in any desired model name. The completed model can be
found here.
In some cases, parameters, such as gain, may be calculated in MATLAB to be used in a Simulink model. If this is the case,
it is not necessary to enter the result of the MATLAB calculation directly into Simulink. For example, suppose we calculated the
gain in MATLAB in the variable K. Emulate this by entering the following command at the MATLAB command prompt.
K = 2.5
This variable can now be used in the Simulink Gain block. In your Simulink model, double-click on the
Gain block and enter the following the Gain field. K
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department
Close this dialog box. Notice now that the Gain block in the Simulink model, shows the variable K rather than a number.
Now, if any calculations are done in MATLAB to change any of the variables used in the Simulink model, the simulation
will use the new values the next time it is run. To try this, in MATLAB, change the gain, K, by entering the following at the
command prompt.
K=5
Start the Simulink simulation again, bring up the Scope window, and hit the auto scale button. You will see the following
output which reflects the new, higher gain.
Besides variables and signals, even entire systems can be exchanged between MATLAB and Simulink.