zRzE z 1 lim −

advertisement
Assignment 6
Design a state feedback control system that makes the following 3rd order underdamped system to be
critically damped by the pole assignment method. (this system is similar to Figure 9-1 in page 338 in
textbook, but 3rd order instead of 2nd order)
--> sampler --> ZOH --> 1/(s(s^2+s+1)) --> sampler -->
First convert this given transfer function to a state equation by tf2ss in analog domain, then use c2d to
convert the obtained continuous time state equation into a discrete time state equation. Then, apply
Ackermann's design formula. Use T=0.05 second. MATLAB program for this problem is provided in
MATLAB directory: PoleAssignment2004.m
The specific assignment is, therefore, to run this program and interpret the results.
Solution,
This system presents a response which depends on the time duration of the pulse applied. To calculate this
relationship, the final value theorem can be used,
lim( z − 1)E ( z )R( z )
z →1
Where,
E(z) = Transfer Function of System
R(z) = Input Signal
The transfer function of the uncompensated system can be obtained after running the program
PoleAssignment2004.m provided, in matlab,
>> numA
numA =
1
>> denA
denA =
1
1
1
>> stf=tf(numA,denA)
0
% System Transfer Function
Transfer function:
1
------------s^3 + s^2 + s
>> dtf=c2d(stf,0.05,'zoh')
% Convert to discrete domain
Transfer function:
2.057e-005 z^2 + 8.126e-005 z + 2.006e-005
-----------------------------------------z^3 - 2.949 z^2 + 2.9 z - 0.9512
Sampling time: 0.05
The input signal applied R(z) is an impulse of 25 samples of duration. This final value can be calculated as
25 times the result of a unit impulse, i.e. one sample impulse. The physical explanation for this is that the
final value depends on the application of the impulse at some point in the past regardless of when; therefore
applying 25 consecutive impulses will produce 25 times the final change. The z-transform of a unit impulse
response is the number 1.0.
The transfer function contains a pole at z=1, which will be eliminated in the calculation of the limit.
In matlab,
>> [zz,pp,kk,tt]=zpkdata(dtf,'v')
% zz=zeros, pp=poles, kk=gain
zz =
-3.68535660297599
-0.26464444424815
pp =
1.00000000000022
% this pole will cancel
0.97439570184443 + 0.04221896170684i
0.97439570184443 - 0.04221896170684i
kk =
2.057293821305011e-005
tt =
0.05000000000000
>> sum(poly(zz))/sum(poly(pp(2:3)))*kk
% calculating the limit
ans =
% the final value is
0.04999999999981
>> sum(poly(zz))/sum(poly(pp(2:3)))*kk*25
% 25 impulses will give
ans =
1.24999999999525
This result is the same as shown in the simulation plot,
The response has some overshoot, which is explained because the poles of the uncompensated system have
some imaginary component.
To obtain critical damping the poles of the compensated system should be equal and real. In the
PoleAssignment2004 program, options 3 and 4 provide that, see the following lines of matlab code,
case '3'
newpoles=[1, 0.97, 0.97]
case '4'
newpoles=[1, 0.95, 0.95]
This response (case ‘3’) has no overshoot, as expected, although the response time was affected.
The Ackermann’s method moves the poles of the system to the desired locations, which is confirmed
finding the roots of the characteristic equation of the compensated system. Notice that the eigenvalue
calculation function in matlab eig() is an equivalent way of obtaining the poles of the system, see the
following lines of matlab code,
% find poles of this system
disp('Poles of the discrete time model');
poles=eig(P)
The result of running the program provided is listed below, with added comments in the appropriate lines,
>> PoleAssignment2004
numA =
% Original System Transfer Function
1
denA =
1
1
1
0
A =
% State space matrices in Laplace domain
-1
-1
0
1
0
0
0
1
0
b =
1
0
0
c =
0
0
1
d =
0
P =
% State space matrices in z domain
0.95002057293821 -0.04875025781265
0
0.04875025781265
0.99877083075087
0
0.00122916924913
0.04997942706179
1.00000000000000
q =
0.04875025781265
0.00122916924913
0.00002057293821
Poles of the discrete time model
poles =
1.00000000000000
0.97439570184454 + 0.04221896170680i
0.97439570184454 - 0.04221896170680i
Enter case number 1 or 2 or 3 or 4 =3
newpoles =
% desired new poles
1.00000000000000
0.97000000000000
0.97000000000000
alphac =
% characteristic equation for Ackermann
1.00000000000000 -2.94000000000000
2.88090000000000 -0.94090000000000
K =
% feedback matrix
0.19624148078823 -0.63084810609270 -0.00000000000273
Pc =
% compensated state matrix
0.94045375015625 -0.01799625000001
0.00000000000013
0.04850904381906
0.99954624984375
0.00000000000000
0.00122513198527
0.04999240546090
1.00000000000000
new poles by state feed back K
newpoles =
% double check of new poles
0.96999999999981 + 0.00000010395850i
0.96999999999981 - 0.00000010395850i
1.00000000000037
num1 =
1.0e-004 *
0
0.20572938213448
0.81263127485354
0.20064974882938
den1 =
1.00000000000000 -2.94000000000000
2.88090000000000 -0.94090000000000
DCgain1 =
% for a unit step being applied
-3.659956539600000e+011
check if poles of the transfer ftn are the same
check_poles =
% double check on transfer function poles
1.00000000000139
0.96999999999931 + 0.00000019927220i
0.96999999999931 - 0.00000019927220i
2. Do Problem 9-11 in page 378. Try both manual calculations and MATLAB solution.
A satellite control system is modeled as shown in Figure P9-11. This system is described in Problem 1.12.
For this problem, let D(z) = 1. In addition, K = 1, T = 1 s, J = 4 and Hk = 1. From the z-transform tables,
z − 1 ⎡ 1 ⎤ 0.125( z + 1)
Ζ⎢ 3 ⎥ =
z
(z − 1)2
⎣ 4s ⎦
A state model is given by
⎡1 1⎤
⎡0.125⎤
(
)
x(k + 1) = ⎢
x
k
+
⎥
⎢ 0.25 ⎥u (k )
⎦
⎣0 1⎦
⎣
y (k ) = [1 0]x(k )
Where x1(k) is angular position and x2(k) is angular velocity.
(a) Show that the closed-loop system is unstable
(b) Using pole-placement design, find the gain matrix K that yields the closed-loop damping ratio ζ =
0.707 and the time constant τ = 4 s.
(c) Show that the gain matrix K in part (b) yields the desired closed-loop characteristic equation, using (915)
(d) Verify all calculations by computer.
Solution,
(a) To verify the stability, the roots of the closed loop characteristic equation are required,
0.125( z + 1) ( z − 1) + 0.125( z + 1)
=0
1+
=
(z − 1)2
(z − 1)2
2
1 + GH = 0
The roots of the numerator will be enough to satisfy the equation,
In matlab,
>> num = 1*[1,-2,1]+0.125*[0,1,1];
>> abs(roots(num))
% ans =
%
%
1.06066017177982
1.06066017177982
The roots are located outside the unit circle, therefore the closed-loop system is unstable (see p.236 of text
book for further explanation).
(b) The first step is to assemble the characteristic equation; in order to do this the specifications need to be
translated to roots in the z-plane,
r=e
−T
τ
=e
−1
θ = − ln (r )
4
(see p.216 of text; or see p.20 or Part1 and p.215 of text)
1−ζ 2
ζ2
1 1 − 0.707 2
=
4 0.707 2
In matlab,
>> T = 1;
>> tau = 4;
>> r = exp(-T/tau)
% r =
%
0.77880078307140
>> zeta = 0.707;
>> theta = -log(r)*sqrt(1-zeta^2)/zeta
% theta =
%
0.25007551140394
The characteristic equation is then,
In matlab,
% characteristic equation : expanding (z-z1)*(z-z2)
% (z-z1)(z-z2)
->
z1,2 = r @ (+/- theta)
>> alphaz = conv([1,-r*exp(i*theta)],[1,-r*exp(-i*theta)])
% alphaz =
%
1.00000000000000
-1.50915040237654
0.60653065971263
α c ( z ) = z 2 − 1.50915040237654 z + 0.60653065971263
The Ackermann method can be applied now,
In matlab,
% state matrices
>> A = [1,1;0,1];
>> B = [0.125;0.25];
% Ackerman's method : finding K
>> alphaA = A^2 + A*alphaz(2) + eye(2)*alphaz(3)
>> BABi = inv([B A*B])
>> K = [0 1]*BABi*alphaA
% alphaA =
%
0.09738025733610
%
0
% BABi =
%
-4
6
%
4
-2
% K =
%
0.38952102934439
0.49084959762346
0.09738025733610
1.76863787582166
(c) The characteristic equation can be obtained from the state and feedback matrices using (9-15)
α c ( z ) = zI − A + BK
The result should match the characteristic equation used in (b) with the Ackermann’s method.
In matlab,
% Eq.(9-15):
% det(zI - A + B*K) = (z-z1)(z-z2)
>>
>>
>>
>>
>>
ABK = A - B*K
a11=ABK(1,1);
a12=ABK(1,2);
a21=ABK(2,1);
a22=ABK(2,2);
% the desired determinant is
%
|z-a11
-a12|
%
|-a21
z-a22|
>> conv([1,-a11],[1,-a22])-[0,0,(-a12)*(-a21)]
% ABK =
%
0.95130987133195
%
-0.09738025733610
% ans =
%
1.00000000000000
This matches with (b)
(d) Done.
0.77892026552229
0.55784053104458
-1.50915040237654
0.60653065971263
Download