Sensitivity functions of plant-controller feedback loop
loops = loopsens(P,C)
loops = loopsens(P,C)
fields contain the multivariable sensitivity, complementary and open-loop
transfer functions. The closed-loop system consists of the controller
negative feedback with the plant
only be the compensator in the feedback path, not any reference channels,
if it is a 2-Dof controller as seen in the figure below. The plant
be constant matrices,
double, lti objects,
or uncertain objects
loops returned variable is a structure
1 if nominal closed loop is stable, 0 otherwise.
Input-to-plant sensitivity function
Input-to-plant complementary sensitivity function
Input-to-plant loop transfer function
Output-to-plant sensitivity function
Output-to-plant complementary sensitivity function
Output-to-plant loop transfer function
Plant times input-to-plant sensitivity function
Compensator times output-to-plant sensitivity function
The multivariable closed-loop interconnection structure, shown below, defines the input/output sensitivity, complementary sensitivity, and loop transfer functions.
The following table gives the values of the input and output sensitivity functions for this control structure.
Input sensitivity Si (closed-loop transfer function from d1 to e1)
|Si = (I + CP)–1|
Input complementary sensitivity Ti (closed-loop transfer function from d1 to e2)
|Ti = CP(I + CP)–1|
Output sensitivity So (closed-loop transfer function from d2 to e2)
|So = (I + PC)–1|
Output complementary sensitivity To (closed-loop transfer function from d2 to e4)
|To = PC(I + PC)–1|
Input loop transfer function Li
|Li = CP|
Output loop transfer function Lo
|Lo = PC|
Consider PI controller for a dominantly 1st-order plant, with the closed-loop bandwidth of 2.5 rads/sec. Since the problem is SISO, all gains are the same at input and output.
gamma = 2; tau = 1.5; taufast = 0.1; P = tf(gamma,[tau 1])*tf(1,[taufast 1]); tauclp = 0.4; xiclp = 0.8; wnclp = 1/(tauclp*xiclp); KP = (2*xiclp*wnclp*tau - 1)/gamma; KI = wnclp^2*tau/gamma; C = tf([KP KI],[1 0]);
Form the closed-loop (and open-loop) systems with
loopsens, and plot Bode plots using the gains at the plant input.
loops = loopsens(P,C); bode(loops.Si,'r',loops.Ti,'b',loops.Li,'g')
Finally, compare the open-loop plant gain to the closed-loop value of
Consider an integral controller for a constant-gain, 2-input, 2-output plant. For purposes of illustration, the controller is designed via inversion, with different bandwidths in each rotated channel.
P = ss([2 3;-1 1]); BW = diag([2 5]); [U,S,V] = svd(P.d); % get SVD of Plant Gain Csvd = V*inv(S)*BW*tf(1,[1 0])*U'; % inversion based on SVD loops = loopsens(P,Csvd); bode(loops.So,'g',loops.To,'r.',logspace(-1,3,120)) title('Output Sensitivity (green), Output Complementary Sensitivity (red)');