MIMO Feedback Loop
This example shows how to obtain the closed-loop response of a MIMO feedback loop in three different ways.
In this example, you obtain the response from Azref
to Az
of the MIMO feedback loop of the following block diagram.
You can compute the closed-loop response using one of the following three approaches:
Name-based interconnection with
connect
Name-based interconnection with
feedback
Index-based interconnection with
feedback
You can use whichever of these approaches is most convenient for your application.
Load the plant Aerodyn
and the controller Autopilot
into the MATLAB® workspace. These models are stored in the datafile MIMOfeedback.mat
.
load('MIMOfeedback.mat')
Aerodyn
is a 4-input, 7-output state-space (ss
) model. Autopilot
is a 5-input, 1-output ss
model. The inputs and outputs of both models names appear as shown in the block diagram.
Compute the closed-loop response from Azref
to Az
using connect
.
T1 = connect(Autopilot,Aerodyn,'Azref','Az');
Warning: The following block inputs are not used: Rho,a,Thrust.
Warning: The following block outputs are not used: Xe,Ze,Altitude.
The connect
function combines the models by joining the inputs and outputs that have matching names. The last two arguments to connect
specify the input and output signals of the resulting model. Therefore, T1
is a state-space model with input Azref
and output Az
. The connect
function ignores the other inputs and outputs in Autopilot
and Aerodyn
.
Compute the closed-loop response from Azref
to Az
using name-based interconnection with the feedback
command. Use the model input and output names to specify the interconnections between Aerodyn
and Autopilot
.
When you use the feedback
function, think of the closed-loop system as a feedback interconnection between an open-loop plant-controller combination L
and a diagonal unity-gain feedback element K
. The following block diagram shows this interconnection.
L = series(Autopilot,Aerodyn,'Fin'); FeedbackChannels = {'Alpha','Mach','Az','q'}; K = ss(eye(4),'InputName',FeedbackChannels,... 'OutputName',FeedbackChannels); T2 = feedback(L,K,'name',+1);
The closed-loop model T2
represents the positive feedback interconnection of L
and K
. The 'name'
option causes feedback
to connect L
and K
by matching their input and output names.
T2
is a 5-input, 7-output state-space model. The closed-loop response from Azref
to Az
is T2('Az','Azref')
.
Compute the closed-loop response from Azref
to Az
using feedback
, using indices to specify the interconnections between Aerodyn
and Autopilot
.
L = series(Autopilot,Aerodyn,1,4); K = ss(eye(4)); T3 = feedback(L,K,[1 2 3 4],[4 3 6 5],+1);
The vectors [1 2 3 4]
and [4 3 6 5]
specify which inputs and outputs, respectively, complete the feedback interconnection. For example, feedback
uses output 4 and input 1 of L
to create the first feedback interconnection. The function uses output 3 and input 2 to create the second interconnection, and so on.
T3
is a 5-input, 7-output state-space model. The closed-loop response from Azref
to Az
is T3(6,5)
.
Compare the step response from Azref
to Az
to confirm that the three approaches yield the same results.
step(T1,T2('Az','Azref'),T3(6,5),2)