Documentation |
Feedback connection of two models
sys = feedback(sys1,sys2)
sys = feedback(sys1,sys2) returns a model object sys for the negative feedback interconnection of model objects sys1 and sys2.
The closed-loop model sys has u as input vector and y as output vector. The models sys1 and sys2 must be both continuous or both discrete with identical sample times. Precedence rules are used to determine the resulting model type (see Rules That Determine Model Type).
To apply positive feedback, use the syntax
sys = feedback(sys1,sys2,+1)
By default, feedback(sys1,sys2) assumes negative feedback and is equivalent to feedback(sys1,sys2,-1).
Finally,
sys = feedback(sys1,sys2,feedin,feedout)
computes a closed-loop model sys for the more general feedback loop.
The vector feedin contains indices into the input vector of sys1 and specifies which inputs u are involved in the feedback loop. Similarly, feedout specifies which outputs y of sys1 are used for feedback. The resulting model sys has the same inputs and outputs as sys1 (with their order preserved). As before, negative feedback is applied by default and you must use
sys = feedback(sys1,sys2,feedin,feedout,+1)
to apply positive feedback.
For more complicated feedback structures, use append and connect.
To connect the plant
$$G(s)=\frac{2{s}^{2}+5s+1}{{s}^{2}+2s+3}$$
with the controller
$$H(s)=\frac{5(s+2)}{s+10}$$
using negative feedback, type
G = tf([2 5 1],[1 2 3],'inputname','torque',... 'outputname','velocity'); H = zpk(-2,-10,5) Cloop = feedback(G,H)
These commands produce the following result.
Zero/pole/gain from input "torque" to output "velocity": 0.18182 (s+10) (s+2.281) (s+0.2192) ----------------------------------- (s+3.419) (s^2 + 1.763s + 1.064)
The result is a zero-pole-gain model as expected from the precedence rules. Note that Cloop inherited the input and output names from G.
Consider a state-space plant P with five inputs and four outputs and a state-space feedback controller K with three inputs and two outputs. To connect outputs 1, 3, and 4 of the plant to the controller inputs, and the controller outputs to inputs 4 and 2 of the plant, use
feedin = [4 2]; feedout = [1 3 4]; Cloop = feedback(P,K,feedin,feedout)
You can form the following negative-feedback loops
by
Cloop = feedback(G,1) % left diagram Cloop = feedback(1,G) % right diagram