IMPACT OF PLANT COUPLING ON DECENTRALIZED PI CONTROL LAW Date: 8/3/216 1 / 37
Standard Negative Feedback System With Pre-Filter d i input disturbance d o output disturbance r reference command W Pre-Filter e error K Compensator u control u p P Plant y p y actual output ŷ H Sensor Dynamics y + n n sensor noise 2 / 37
With Coupling = : Plant Controller PLANT & CONTROLLER K = 2(s+1) s P = [ ] 1 s+1 [ 1 ] s 1 s 2(s+1) s [ 1 s+1 ] Pre-filter W = [ 1 ] s+1 1 s+1 3 / 37
With Coupling = 5: Plant Controller PLANT & CONTROLLER K = 2(s+1) s [ 1 ] P = s 5 s [ ] 1 s+1 1 s 2(s+1) s [ 1 s+1 ] Pre-filter W = [ 1 ] s+1 1 s+1 4 / 37
6 PLANT 4 2 db -2-4 -6-8 1-2 1-1 1 1 1 1 2 1 3 Frequency (rad/sec) 5 / 37
5 COMPENSATOR 4 3 2 db 1-1 -2 1-2 1-1 1 1 1 1 2 1 3 Frequency (rad/sec) 6 / 37
15 LOOP - PK 1 5 db -5-1 1-2 1-1 1 1 1 1 2 1 3 Frequency (rad/sec) 7 / 37
15 LOOP - KP 1 5 db -5-1 1-2 1-1 1 1 1 1 2 1 3 Frequency (rad/sec) 8 / 37
Break the loop at e 1 L = P 1 K 1 e 2 L = P 2 K 2 u 1 L = K 1 P 1 u 2 L = K 2 P 2 in all cases L = 2(s + 1) s 2 [ 1 ] s + 1 GM = GM = PM = 64.27 DM =.51 seconds ω g = 2.2 rad/sec 9 / 37
2 SENSITIVITY AT OUTPUT - S o = ( I + L o ) -1-2 -4 db -6-8 -1-12 1-2 1-1 1 1 1 1 2 1 3 Frequency (rad/sec) 1 / 37
2 SENSITIVITY AT INPUT - S i = ( I + L i ) -1-2 -4 db -6-8 -1-12 1-2 1-1 1 1 1 1 2 1 3 Frequency (rad/sec) 11 / 37
COMPLEMENTARY SENSITIVITY AT OUTPUT - T o = L o ( I + L o ) -1 2-2 db -4-6 -8-1 1-2 1-1 1 1 1 1 2 1 3 Frequency (rad/sec) 12 / 37
COMPLEMENTARY SENSITIVITY AT INPUT - T i = L i ( I + L i ) -1 2-2 -4 db -6-8 -1-12 1-2 1-1 1 1 1 1 2 1 3 Frequency (rad/sec) 13 / 37
1 INPUT DISTURBANCE TO OUTPUT - S o P = P S i -1-2 db -3-4 -5-6 -7-8 1-2 1-1 1 1 1 1 2 1 3 Frequency (rad/sec) 14 / 37
3 REFERENCE TO CONTROL (UNFILTERED) - K S o = S i K 2 1 db -1-2 -3-4 -5-6 1-2 1-1 1 1 1 1 2 1 3 Frequency (rad/sec) 15 / 37
2 REFERENCE TO CONTROL (FILTERED) - K S o W = S i K W 1-1 -2 db -3-4 -5-6 -7-8 1-2 1-1 1 1 1 1 2 1 3 Frequency (rad/sec) 16 / 37
2 REFERENCE TO OUTPUT (FILTERED) - T o W -2-4 db -6-8 -1-12 -14-16 1-2 1-1 1 1 1 1 2 1 3 Frequency (rad/sec) 17 / 37
OUPUT RESPONSE TO STEP REFERENCE COMMANDS (FILTERED) 1.5 From: In(1) From: In(2) 1 To: Out(1).5 Amplitude -.5-1 1.5 1 To: Out(2).5 -.5-1 1 2 3 4 1 2 3 4 Time (seconds) 18 / 37
CONTROL RESPONSE TO STEP REFERENCE COMMANDS (FILTERED) From: In(1) From: In(2) 1.5 To: Out(1) -.5 Amplitude -1 1 To: Out(2) -1-2 -3-4 1 2 3 4 1 2 3 4 Time (seconds) 19 / 37
MATLAB CODE for coup = [ 5 ]; % ADJUST PLANT COUPLING AT INPUT ap = *ones(2,2) b21 = coup; % COUPLING FROM 1st to 2nd INPUT CHANNEL b12 = *coup; % COUPLING FROM 2nd to 1st INPUT CHANNEL bp = [ 1 b12; b21 1 ]; cp = eye(2,2); dp = *ones(2,2); % ZERO D MATRIX disp( plant ); plant = ss(ap,bp,cp,dp) zpk(plant) tzero(plant) 2 / 37
winit = -2; wfin = 3; nfpoints = 2; % Vector of frequency points w = logspace(winit,wfin, nfpoints); plantsv = sigma(plant, w); figure(1) if (coup == ) semilogx(w, 2*log1(plantsv), black, linewidth,2); title( PLANT ) ylabel( db ) xlabel( Frequency (rad/sec) ) grid on hold on else semilogx(w, 2*log1(plantsv), LineWidth,.5); end 21 / 37
% % DECENTRALIZED (DIAGONAL) PI CONTROLLER (COMPENSATOR) % % K = diag(k1, k2) % % ki = [ g1 (s + zi) / s ] [ hfp / ( s + hfp ) ] % - PI with HIGH FREQUENCY ROLL OFF % % Nominal Loop = L = 2 (s + 1) / s^2 % Yields Nominal Closed Loop Poles at -1 \pm j 1 % g1 = 2; z1 = 1; g2 = 2; z2 = 1 hfp = 1; 22 / 37
ak = [ ; hfp*g1*z1 -hfp ; ; hfp*g2*z2 -hfp]; bk = [ 1 ; hfp*g1 ; 1; hfp*g2]; ck = [ 1 ; 1]; dk = *ones(2,2); % ZERO D MATRIX disp( compensator ); comp = ss(ak,bk,ck,dk); zpk(comp) % COMPENSATOR tzero(comp) % COMPENSATOR TRANSMISSION ZEROS % DET [ K(s) ] = compsv = sigma(comp, w); % COMPENSATOR SINGULAR VALUES 23 / 37
figure(2) if (coup == ) semilogx(w, 2*log1(compsv), black, linewidth,2) title( COMPENSATOR ) ylabel( db ) xlabel( Frequency (rad/sec) ) grid on hold on else semilogx(w, 2*log1(compsv), linewidth,.5) end % LOOP disp( loopout ); loopout = series(comp, plant); [ao,bo,co,do] = ssdata(loopout) % FORMS PK 24 / 37
zpk(loopout) tzero(loopout) loopoutsv = sigma(loopout, w); % LOOPOUT SINGULAR VALUES % BREAK AT e_1 bo1 = bo(:,1) bo2 = bo(:,2) co1 = co(1,:) co2 = co(2,:) ao1 = ao - bo2*co2 Lo1 = ss(ao1,bo1,co1,) zpk(lo1) disp( all margin e_1 ) allmargin(lo1) 25 / 37
figure(3) if (coup == ) semilogx(w, 2*log1(loopoutsv), black, linewidth,2) title( LOOP - PK ) ylabel( db ) xlabel( Frequency (rad/sec) ) grid on hold on else semilogx(w, 2*log1(loopoutsv), linewidth,.5) end disp( loopin ); loopin = series(plant, comp) zpk(loopin) tzero(loopin) loopinsv = sigma(loopin, w); % FORMS KP % LOOPIN SINGULAR VALUES 26 / 37
figure(4) if(coup == ) semilogx(w, 2*log1(loopinsv), black, linewidth,2) title( LOOP - KP ) ylabel( db ) xlabel( Frequency (rad/sec) ) grid on hold on else semilogx(w, 2*log1(loopinsv), linewidth,.5) end % SENSITIVITY disp( senout ); senout = feedback(eye(2,2), loopout) damp(eig(senout)) tzero(senout) senoutsv = sigma(senout, w); % SENOUT SINGULAR VALUES 27 / 37
figure(5) if(coup==) semilogx(w, 2*log1(senoutsv), black, linewidth,2) title( SENSITIVITY AT OUTPUT - S_o ylabel( db ) xlabel( Frequency (rad/sec) ) grid on hold on else semilogx(w, 2*log1(senoutsv), linewidth,.5) end disp( senin ); senin = feedback(eye(2,2), loopin) damp(eig(senin)) tzero(senin) seninsv = sigma(senin, w); = ( I + L_o )^{-1} ) % SENIN SINGULAR VALUES 28 / 37
figure(6) if(coup==) semilogx(w, 2*log1(seninsv), black, linewidth,2) title( SENSITIVITY AT INPUT - S_i = ( I + L_i )^{-1} ) ylabel( db ) xlabel( Frequency (rad/sec) ) grid on hold on else semilogx(w, 2*log1(seninsv), linewidth,.5) end % COMPLEMENTARY SENSITIVITY disp( compsenout ) compsenout = feedback(loopout, eye(2,2)) damp(eig(compsenout)) tzero(compsenout) compsenoutsv = sigma(compsenout, w); % COMP SEN AT OUTPUT SINGULAR VALUE 29 / 37
figure(7) if(coup==) semilogx(w, 2*log1(compsenoutsv), black, linewidth,2) title( COMP SENSITIVITY AT OUTPUT-To=Lo(I + Lo)^{-1} ) ylabel( db ) xlabel( Frequency (rad/sec) ) grid on hold on else semilogx(w, 2*log1(compsenoutsv), linewidth,.5) end disp( compsenin ); compsenin = feedback(loopin, eye(2,2)) damp(eig(compsenin)) tzero(compsenin) compseninsv = sigma(compsenin, w); % COMP SEN AT INPUT SINGULAR VALUES 3 / 37
figure(8) if(coup==) semilogx(w, 2*log1(seninsv), black, linewidth,2) title( COMP SENSITIVITY AT INPUT-Ti = Li (I + Li)^{-1} ) ylabel( db ) xlabel( Frequency (rad/sec) ) grid on hold on else semilogx(w, 2*log1(seninsv), linewidth,.5) end % INPUT DISTURBANCE TO OUTPUT - S_o P = P S_i disp( S_o P = P S_i ) senp = feedback(plant, comp); damp(eig(senp)) tzero(senp) senpsv = sigma(senp, w); % S_o P = P S_i SINGULAR VALUES 31 / 37
figure(9) if(coup==) semilogx(w, 2*log1(senpsv), black, linewidth,2) title( INPUT DISTURBANCE TO OUTPUT - S_o P = P S_i ) ylabel( db ) xlabel( Frequency (rad/sec) ) grid on hold on else semilogx(w, 2*log1(senpsv), linewidth,.5) end % REFERENCE TO CONTROL (UNFILTERED) - K S_o = S_i K disp( K S_o = S_i K ) ksen = feedback(comp, plant); damp(eig(ksen)) tzero(ksen) ksensv = sigma(ksen, w); % K S_o = S_i K SINGULAR VALUES 32 / 37
figure(1) if(coup==) semilogx(w, 2*log1(ksensv), black, linewidth,2) title( REFERENCE TO CONTROL (UNFILTERED)-K So = Si K ) ylabel( db ) xlabel( Frequency (rad/sec) ) grid on hold on else semilogx(w, 2*log1(ksensv), linewidth,.5) end 33 / 37
% REFERENCE COMMAND FILTER - TO LESSEN OVERSHOOT TO STEP REFERENCE COMMANDS disp( Pre-Filter ) aw = [ -z1 ; -z2]; bw = [ z1 ; z1]; cw = eye(2,2); dw = *ones(2,2); filter = ss(aw,bw,cw,dw); zpk(filter) % REFERENCE TO CONTROL (FILTERED) - K S_o W = S_i K W disp( K S_o W = S_i K W ) filtksen = series(filter, ksen); damp(eig(filtksen)) tzero(filtksen) filtksensv = sigma(filtksen, w); %KSo=Si K SINGULAR VALUES 34 / 37
figure(11) if(coup==) semilogx(w, 2*log1(filtksensv), black, linewidth,2) title( REFERENCE TO CONTROL (FILTERED)-K So W=Si K W ) ylabel( db ) xlabel( Frequency (rad/sec) ) grid on hold on else semilogx(w, 2*log1(filtksensv), linewidth,.5) end % REFERENCE TO OUTPUT (FILTERED) - T_o W disp( T_o W ) filtcompsenout = series(filter, compsenout); damp(eig(filtcompsenout)) tzero(filtcompsenout ) filtcompsenoutsv = sigma(filtcompsenout, w); 35 / 37
figure(12) if(coup==) semilogx(w,2*log1(filtcompsenoutsv) black, linewidth,2) title( REFERENCE TO OUTPUT (FILTERED) - T_o W ) ylabel( db ) xlabel( Frequency (rad/sec) ) grid on hold on else semilogx(w, 2*log1(filtcompsenoutsv), linewidth,.5) end % STEP REFERENCE COMMAND FOLLOWING tinit = ; tinc =.1; tfinal = 4; t = tinit:tinc:tfinal; % Vector of simulation times 36 / 37
figure(13) step(filtcompsenout,t); title( OUPUT RESPONSE TO STEP REFERENCE COMMANDS(FILTERED) ) grid on hold on figure(14) step(filtksen,t); title( CONTROL RESPONSE TO STEP REFERENCE COMMANDS(FILTERED) ) grid on hold on end 37 / 37