Solution 8.8.3.mtr1cx The full MATLAB program used to nd the transfer function is: % %load the data % load mtr1stepc t=mtr1stepc(1:500,1);; y=mtr1stepc(1:500,2);; plot(t,y) print -deps sr883mtr1cxa.eps y=y(51:500);; t=t(51:500);; y=y-y(1);; y(1) = 0;; t(1) = 0;; plot(t,y) print -deps sr883mtr1cxb.eps y(180:450) = mean(y(180:450));; y(170:179) = mean(y(170:179));; y(160:169) = mean(y(160:169));; y(150:159) = mean(y(150:159));; y(140:149) = mean(y(140:149));; y(130:139) = mean(y(130:139));; y(120:129) = mean(y(120:129));; y(110:119) = mean(y(110:119));; y(100:109) = mean(y(100:109));; %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));; %y(55:59) = mean(y(55:59));; %y(50:54) = mean(y(50:54));; plot(t,y) print -deps sr883mtr1cxc.eps %zero the summer % asum = 0.0;; % 1 %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). % 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 2 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) ) );; 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 3 % %Find coefficients and then 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([],[-1.6764 -2.3235],Kplant) T=linspace(0,9.01,402);; u=ones(402,1);; [yhat,T] = lsim(g,u,T);; load mtr1stepc t=mtr1stepc(1:500,1);; y=mtr1stepc(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 sr883mtr1cxd.eps The rst step is to get the data into MATLAB. That is done by the MAT- LAB statements: load mtr1step t=mtr1stepc(1:500,1);; y=mtr1stepc(1:500,2);; plot(t,y) print -deps sr883mtr1cxa.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 statements y=y(51:500);; t=t(51:500);; 4 -1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 Figure 1: Rawstep response data 5 0 1 2 3 4 5 6 7 8 9 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Figure 2: Adjusted step response data %y = y-y(1);; y(1) = 0;; t(1) = 0;; plot(t,y) print -deps sr883mtr1xb.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 print -deps sr883mtr1cxb.eps y(180:450) = mean(y(180:450));; y(170:179) = mean(y(170:179));; y(160:169) = mean(y(160:169));; y(150:159) = mean(y(150:159));; y(140:149) = mean(y(140:149));; y(130:139) = mean(y(130:139));; y(120:129) = mean(y(120:129));; y(110:119) = mean(y(110:119));; 6 0 1 2 3 4 5 6 7 8 9 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Figure 3: Smoth step response data y(100:109) = mean(y(100:109));; %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));; %y(55:59) = mean(y(55:59));; %y(50:54) = mean(y(50:54));; plot(t,y) print -deps sr883mtr1cxc.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)= 18:5683 (s +1:676)(s+2:324) : This is unadjusted for the size of the input voltage, about 24 V, a shown inf Figure 4. So we nally arriveat G(s)= 0:7737 (s +1:676)(s+2:324) : 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 Figure 4: Armature voltage applied to motor The step response of the model is compared to the actual recorded step response in Figure 5 The matchisprettygood. 8 0 1 2 3 4 5 6 7 8 9 10 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 Figure 5: Smoth step response data 9