Solution 8.8.3mtr4cx
The full MATLAB program used to nd the transfer function is:
%
%load the data
%
load mtr4step
t=mtr4step(1:500,1);;
y=mtr4step(1:500,2);;
plot(t,y)
print -deps sr883mtr4xa.eps
y=y(51:500);;
t=t(51:500);;
y=y-y(1);;
y(1) = 0;;
t(1) = 0;;
plot(t,y)
print -deps sr883mtr4xb.eps
y(180:450) = mean(y(180:450));;
y(175:179) = mean(y(175:179));;
y(170:174) = mean(y(170:174));;
y(165:169) = mean(y(165:169));;
y(160:164) = mean(y(160:164));;
y(155:159) = mean(y(155:159));;
y(150:154) = mean(y(150:154));;
y(145:149) = mean(y(145:149));;
y(140:144) = mean(y(140:144));;
y(135:139) = mean(y(135:139));;
y(130:134) = mean(y(130:134));;
y(125:129) = mean(y(125:129));;
y(120:124) = mean(y(120:124));;
y(115:119) = mean(y(115:119));;
y(110:114) = mean(y(110:114));;
y(105:109) = mean(y(105:109));;
y(105:109) = mean(y(105:109));;
y(100:104) = mean(y(100:104));;
y(95:99) = mean(y(95:99));;
y(90:94) = mean(y(90:94));;
y(85:89) = mean(y(85:89));;
1
y(80:84) = mean(y(80:84));;
y(75:79) = mean(y(75:79));;
y(70:74) = mean(y(70:74));;
y(65:69) = mean(y(65:69));;
y(60:64) = mean(y(60:64));;
plot(t,y)
print -deps sr883mtr4xc.eps
%zero the summer
%
asum = 0.0;;
%
%Find the length of the array y(t) Note:this the step response. It has to be
%pulled into Matlab before this program is run.
%
top = size(y);;
top = top(1,1)
%
%Initialize counter.
%
k=1;;
%
%
%Find maximum value of step response.
%
K0 = max(y)
%
%
%Form function K0 - y(t). Note y(t) is the same as yu(t) in the write up.
%
ftemp = K0 - y;;
%
fsave1 = ftemp;;
%
%Reset counter
%
k=2;;
%
%Integrate K0 - y(t). and form the function y1(t).
%
2
while ( k <= top)
l= k-1;;
asum = asum + ( ( (ftemp(k)+ftemp(l))/2 ) *( t(k) - t(l) ) );;
t1(k) = t(k);;
f1(k) = asum;;
k=k+1;;
end
%
%Save data for plotting.
%
save time.dat t1 -ascii
save f1.dat f1 -ascii
save ftempa.dat ftemp -ascii
%
%SetK1 = to max(y1(t)), that is its final steady state value.
%
K1 = max(f1)
%
%
%form function: K1 - y1(t).
%
ftemp1 = K1 - f1;;
%
%Save function for later plotting
%
save ftempb.data ftemp1 -ascii
%
%reset summer
%
asum = 0.0;;
%
%Reset counter
%
k=2;;
%
%Integrate K1 - y1(t) to get y2(t) (called f2 in program)
%
while ( k <= top)
l= k-1;;
asum = asum + ( ( (ftemp1(k) + ftemp1(l) ) /2 ) *( t(k) - t(l) ) );;
3
f2(k) = asum;;
k=k+1;;
end
%
%SetK2 equal to maximum value of y2(t).
%
K2 = asum
%
%Save function y2(t) for later plotting.
%
save f2.data f2 -ascii
%
%Find poles of transfer function.
%
a1 = K1/K0
a2 = ( a1*K1 - K2 )/K0
cpol = [1, a1/a2 , 1/a2]
roots(cpol)
%
%Find gain of transfer function
%
Kplant = K0/a2
g=zpk([],[-33.6165+j*5.1687 -33.6165-j*5.1687],Kplant)
T=linspace(0,0.5,402);;
u=ones(402,1);;
[yhat,T] = lsim(g,u,T);;
plot(t,y,'k-',T,yhat,'k--')
print -deps sr883mtr4xd.eps
load mtr4av
topm = size(mtr4av)
top = topm(1,1)
t=mtr4av(1:top,1);;
av = mtr4av(1:top,2);;
plot(t,av)
print -deps 883mtr4xav.eps
The MATLAB statements
y(180:450) = mean(y(180:450));;
y(175:179) = mean(y(175:179));;
y(170:174) = mean(y(170:174));;
4
y(165:169) = mean(y(165:169));;
y(160:164) = mean(y(160:164));;
y(155:159) = mean(y(155:159));;
y(150:154) = mean(y(150:154));;
y(145:149) = mean(y(145:149));;
y(140:144) = mean(y(140:144));;
y(135:139) = mean(y(135:139));;
y(130:134) = mean(y(130:134));;
y(125:129) = mean(y(125:129));;
y(120:124) = mean(y(120:124));;
y(115:119) = mean(y(115:119));;
y(110:114) = mean(y(110:114));;
y(105:109) = mean(y(105:109));;
y(105:109) = mean(y(105:109));;
y(100:104) = mean(y(100:104));;
y(95:99) = mean(y(95:99));;
y(90:94) = mean(y(90:94));;
y(85:89) = mean(y(85:89));;
y(80:84) = mean(y(80:84));;
y(75:79) = mean(y(75:79));;
y(70:74) = mean(y(70:74));;
y(65:69) = mean(y(65:69));;
y(60:64) = mean(y(60:64));;
plot(t,y)
print -deps sr883mtr4xc.eps
are a crude smoothing program designed to help the algorith converge. The
smoothed response is shown in Figure 1
For this problem the alogrithm gives the answer
G(s)=
81:2667
(s +2:3507)(s+9:2081)
:
This is unadjusted for the size of the input voltage, about 35 V, as shown
inf Figure 2. So we nally arriveat
G(s)=
2:319
(s +33:6165;j5:1687)(s+33:6165+ j5:1687)
:
The step response of the model is compared to the actual recorded step
response in Figure 3
The matchisprettygood.
5
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
0
0.5
1
1.5
2
2.5
3
3.5
4
Figure 1: Smoth step response data
6
-0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
0
5
10
15
20
25
30
35
40
Figure 2: Armature voltage applied to motor
7
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
0
0.5
1
1.5
2
2.5
3
3.5
4
Figure 3: Smoth step response data
8