Solution 8.8.3.mtr2x
The full MATLAB program used to nd the transfer function is:
%
%load the data
%
load mtr2step
t=mtr2step(1:500,1);;
y=mtr2step(1:500,2);;
plot(t,y)
print -deps sr883mtr2xa.eps
y=y(51:500);;
t=t(51:500);;
y=y-y(1);;
y(1) = 0;;
t(1) = 0;;
plot(t,y)
print -deps sr883mtr2xb.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));;
plot(t,y)
print -deps sr883mtr2xc.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.
%
1
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).
%
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
%
2
%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) ) );;
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.
%
3
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([],[-11.5063 -58.1580],Kplant)
T=linspace(0,0.9,402);;
u=ones(402,1);;
[yhat,T] = lsim(g,u,T);;
plot(t,y,'k-',T,yhat,'k--')
load mtr2step
t=mtr2step(1:500,1);;
y=mtr2step(1:500,2);;
y=y(51:500);;
t=t(51:500);;
y=y-y(1);;
y(1) = 0;;
t(1) = 0;;
plot(t,y,'k-',T,yhat,'k--')
print -deps sr883mtr2xd.eps
load mtr2av
topm = size(mtr2av)
top = topm(1,1)
t=mtr2av(1:top,1);;
av = mtr2av(1:top,2);;
plot(t,av)
print -deps 883mtr2xav.eps
The rst step is to get the data into MATLAB. That is done by the MAT-
LAB statements:
load mtr1step
t=mtr2step(1:500,1);;
y=mtr2step(1:500,2);;
plot(t,y)
print -deps sr883mtr2xa.eps
The plot of the raw date is shown in Figure1. As can be seen, the plot
does not start at t =0and the initial voltage is not zero. The MATLAB
4
-0.1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
Figure 1: Rawstep response data
statements
y=y(51:500);;
t=t(51:500);;
%y = y-y(1);;
y(1) = 0;;
t(1) = 0;;
plot(t,y)
print -deps sr883mtr2xb.eps
produce the adjusted step respone shown in Figure 2 The rest of the MAT-
LAB program is designed to do the successiveintegrations necessary to nd
the twopoles. The MATLAB statements
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));;
5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
Figure 2: Adjusted step response data
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));;
plot(t,y)
print -deps sr883mtr2xc.eps
are a crude smoothing program designed to help the algorith converge. The
smoothed response is shown in Figure 3
For this problem the alogrithm gives a good answer, namely
G(s)=
2725:7
(s +11:5063)(s+58:1580)
:
This is unadjusted for the size of the input voltage, about 35 V, a shown inf
Figure 4. So we nally arriveat
G(s)=
77:88
(s +11:5063)(s+58:1508)
:
6
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
Figure 3: Smoth step response data
The step response of the model is compared to the actual recorded step
response in Figure 5
The matchisprettygood.
7
-0.1 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
0
5
10
15
20
25
30
35
40
Figure 4: Armature voltage applied to motor
8
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
Figure 5: Smoth step response data
9