Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
14 views

Automatic Control - Lab1

Uploaded by

kjst7vsctg
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

Automatic Control - Lab1

Uploaded by

kjst7vsctg
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

UMM AL‐QURA UNIVERSITY

Automatic Control
(804465‐3)
Lab
Manual

Prepared By:

Sufyan Azam Mian M. AZAM

College of Engineering & Islamic Architecture


Mechanical Engineering Department
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department

Course #: 804465–Automatic Control Lab #1


Introduction to MATLAB-SIMULINK
Objective
 To give basic knowledge about MATLAB and SIMULINK
 To obtain transfer function of the systems using MATLAB and SIMULINK
 To draw block diagram of the system in SIMULINK
 To demonstrate how computer solutions (Simulink) are used to build control models.

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).

L1.1 MATLAB OPERATIONS


A variable in MATLAB can be a scalar, a complex number, a vector, or a matrix. A variable name can be up to 31 characters
long and must start with a letter. It can contain letters, numbers, and underscore characters. If a data entry, a statement, or any
command is not terminated by a semicolon, the result of the statement is always displayed.
An integer number can be assigned to a variable name as follows:
>> w = 5;
>> p = -3;
A real number is entered by specifying a decimal point, or the exponent:
>> q = 2.35;
>> a = 5.2e-3;
When entering a complex number, the real part is entered first, followed by the imaginary part:
>> p = 2 + 4*i;
>> q = 12*exp (i*2);
A row vector is entered by optionally separating the elements with commas. For example, the vector
p = [2 4 6]
is entered as
>> p = [2, 4, 6];
or
>> p = [2 4 6];
Similarly, a column vector is entered by separating the elements with semicolons. For example, the vector
3
q= 6
9
is entered as
>> q = [3; 6; 9];
A vector can be transposed by using the character ‘'’. For example, the vector q above can be transposed as

>> a = [3; 6; 9]’;


to give
a = [3 6 9].
Matrices are entered similarly to vectors: the elements of each row can be entered by separating them with commas; the rows are
then separated by the semicolon character.
‐2‐
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department

For example, the


3 × 3 matrix A given by
2 1 3
A= 4 0 6
5 8 7

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

Some examples are given below:


>> A = ones(3,5) gives
A=
11111
11111
11111
>> B = zeros(2,3) gives
B=000
000
and
>> C = eye(3,3)
gives C = 1 0 0
010
001
A particular element of a matrix can be assigned by specifying the row and the column numbers:
>> A(2,3) = 8;
It places the number 8 in the second row, third column.
Matrix elements can be accessed by specifying the row and the column numbers:
>> C = A(2,1);
assigns the value in the second row, first column of A to C.
Vectors can be created by specifying the initial value, final value and increment. For example,
>> T = 0:1:10;
creates a row vector called T with the elements: T = [0 1 2 3 4 5 6 7 8 9 10].

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

Arithmetic operators. MATLAB utilizes the following arithmetic operators:


+ addition
- subtraction
* multiplication
/ division
/\power operator
‐3‐
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department

' 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

[ ]

Two matrices can be multiplied to produce another matrix. For example, if

[ ]

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:

roots(p) find the roots of the polynomial


polyval(p,x) evaluate the polynomial p at the value of x
deconv(p1,p2) compute the quotient of p1 divided by p2
conv(p1,p2) compute the product of polynomials p1 and p2
poly(r) compute the polynomial from the vector of roots
poly2str(p,‘s’) display the polynomial as an equation in s
The roots of P1 = 0 are found as follows:
>> P1 = [6 -2 5 -2 1]’
>> r = roots(P1)
r=
-0.1026 + 0.8355i
-0.1026 - 0.8355i
0.2692 + 0.4034i
0.2692 - 0.4034i
The polynomial has four complex roots.
The value of the polynomial at x = 1.2 is 14.7856 and can be found as follows:
>>polyval(P1, 1.2)
ans =
14.7856
The polynomial P1 can be expressed as an equation in s as:
>> poly2str(P1,‘s’)
ans = 6S/\4 - 2S/\3 + 5S/\2 - 2s + 1 Now consider another polynomial
P2 = 2x4− x3+ 2x2− x + 3.
The product of the polynomials P1 and P2 can be found as follows:
>> P2 = [2 -1 2 -1 3];
>> P3 = conv(P1,P2)
P3 =
12 -10 24 -19 34 -16 19 -7 3
or
>> P3 = poly2str(conv(P1,P2),‘x’)
P3 =
12 x/\8 - 10 x/\7 + 24 x/\6 - 19 x/\5 + 34 x/\4 - 16 x/\3 + 19 x/\2 - 7x + 3
Finally, the polynomial whose roots are 2 and 5 can be found as follows:
>> poly([2 5])
ans =
1 -7 10
or
>> poly2str(poly(*2 5+),‘x’)
ans =
‐5‐
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department

x/\2 - 7x + 10
Thus, the equation of the required polynomial is
F(x) = x2 − 7x + 10.

L1.2.1 Continuous-Time Systems


Consider a single-input, single-output continuous-time system with the open-loop transfer function

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];

The transfer function is given by:


>> G = tf(num,den)
Transfer function:
3
------------
s/\2 + 3s + 9

Step response. The step response is given by


>> step(num,den)
which produces the plot shown in Figure A.1.

‐6‐
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department

The steady-state value of the step response is obtained as follows:


>>ys = decgain(num,den)
ys =
0.3333
Impulse response. The impulse response is given by
>> impulse(num,den)

Bode diagram. The Bode diagram can be obtained by writing:


>> impulse(num,den);
>> bode(num,den);
>> grid
Notice that the grid command produces a grid in the display.

Nyquist diagram. The Nyquist diagram can be obtained from


>>nyquist(num,den)

Root locus. The root locus diagram of the system is given by


>>rlocus(num,den)
To customize the plot for a specific range of K, say for K ranging from 0 to 5 in steps of0.5, we can write

>> K = 0:0.5:5;
>> r = rlocus(num,den,K);
>> plot(r,‘x’)

where the character x is plotted at the roots of the system as K is varied.


Zeros and poles. The zero and pole locations can be found from
>> [z,p,k] = tf2zp
(num,den) z =
Empty matrix: 0-by-1 p =

-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

( )

then G(s)H(s) can be obtained from


>> G = tf(1,[1 3 4]);
>> H = tf(2,[1 5]);
>> GH = series(G,H)
Transfer function:

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);

Similarly, for the transfer function

( )
( )( )( )

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:

R (1) R (2) R (3) R (n)


Y(s) = + + + + K(s)
5 - P(1) 5 - P(2) 5 - P(3) 5 - P(n)

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

The required MATLAB commands are


>>num = [1];
>> den = conv([1 1],conv([1 2],[1 3]));
>> [r,p,k] = residue(num,den)
r= ‐8‐
0.5000
-1.0000
0.5000
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department

p=
3.0000
-2.0000
-1.0000
k=
[]

The required partial fraction expansion is then

L1.3 STARTING SIMULINK

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.

L1.3.1 Model Files

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:

• Sources: used to generate various signals


• Sinks: used to output or display signals
• Continuous: continuous-time system elements (transfer functions, state-space models, PID controllers, etc.)
• Discrete: linear, discrete-time system elements (discrete transfer functions, discrete state- space models, etc.)
• Math Operations: contains many common math operations (gain, sum, product, absolute value, etc.)
• Ports & Subsystems: contains useful blocks to build a system

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.

L1.3.4 Modifying Blocks

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

enter the following into the denominator field [1 2 4]

and hit the close button, the model window will change to the following,

which reflects the change in the denominator of the transfer function.

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.

L1.3.5 Running Simulations

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.

L1.3.6 Building Systems

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

L1.3.6.1 Gathering Blocks

Follow the steps below to collect the necessary blocks:

• 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.

• Click on the Math Operations listing in the main Simulink window.


• From this library, drag a Sum and Gain block into the model window and place them to the right of the Step block
in that order.
• Click on the Continuous listing in the main Simulink window.
• First, from this library, drag a PID Controller block into the model window and place it to the right of the Gain
block.
• From the same library, drag a Transfer Function block into the model window and place it to the right of the PID
Controller block.

• Click on the Sinks listing in the main Simulink window.


• Drag the Scope block into the right side of the model window.
Umm Al-Qura University
College of Engineering & Islamic Architecture
Mechanical Engineering Department

L1.3.6.2 Modify Blocks

Follow these steps to properly modify the blocks in your model.

• 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

L1.3.6.3 Connecting Blocks with Lines

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.

L1.3.7 Taking Variables from MATLAB

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.

You might also like