Documentation

getLoopTransfer

Open-loop transfer function of control system

Syntax

  • L = getLoopTransfer(T,Locations) example
  • L = getLoopTransfer(T,Locations,sign) example
  • L = getLoopTransfer(T,Locations,sign,openings) example

Description

example

L = getLoopTransfer(T,Locations) returns the point-to-point open-loop transfer function of a control system measured at specified analysis points. The point-to-point open-loop transfer function is the open-loop response obtained by injecting signals at the specified locations and measuring the return signals at the same locations.

example

L = getLoopTransfer(T,Locations,sign) specifies the feedback sign for calculating the open-loop response. The relationship between the closed-loop response T and the open-loop response L is T = feedback(L,1,sign).

example

L = getLoopTransfer(T,Locations,sign,openings) specifies additional loop-opening locations to open for computing the open-loop response at Locations.

Examples

expand all

Open-Loop Transfer Function at Analysis Point

Compute the open-loop response of the following control system model at an analysis point specified by an AnalysisPoint block, X.

Create a model of the system by specifying and connecting a numeric LTI plant model G, a tunable controller C, and the AnalysisPoint block X.

G = tf([1 2],[1 0.2 10]);
C = ltiblock.pid('C','pi');
X = AnalysisPoint('X');  
T = feedback(G*X*C,1);

T is a genss model that represents the closed-loop response of the control system from r to y. The model contains the AnalysisPoint block X that identifies the potential loop-opening location.

Calculate the open-loop point-to-point loop transfer at the location X.

L = getLoopTransfer(T,'X');

This command computes the positive-feedback transfer function you would obtain by opening the loop at X, injecting a signal into G, and measuring the resulting response at the output of C. By default, getLoopTransfer computes the positive feedback transfer function. In this example, the positive feedback transfer function is L(s) = –G(s)C(s)

The output L is a genss model that includes the tunable block C. You can use getValue to obtain the current value of L, in which all the tunable blocks of L are evaluated to their current numeric value.

Negative-Feedback Open-Loop Transfer Function

Compute the negative-feedback open-loop transfer of the following control system model at an analysis point specified by an AnalysisPoint block, X.

Create a model of the system by specifying and connecting a numeric LTI plant model G, a tunable controller C, and the AnalysisPoint block X.

G = tf([1 2],[1 0.2 10]);
C = ltiblock.pid('C','pi');
X = AnalysisPoint('X');  
T = feedback(G*X*C,1);

T is a genss model that represents the closed-loop response of the control system from r to y. The model contains the AnalysisPoint block X that identifies the potential loop-opening location.

Calculate the open-loop point-to-point loop transfer at the location X.

L = getLoopTransfer(T,'X',-1);

This command computes the open-loop transfer function from the input of G to the output of C, assuming that the loop is closed with negative feedback. That is, the relationships between L and T is given by T = feedback(L,1). In this example, the positive feedback transfer function is L(s) = G(s)C(s)

Transfer Function with Additional Loop Openings

Compute the open-loop response of the inner loop of the following cascaded control system, with the outer loop open.

Create a model of the system by specifying and connecting the numeric plant models G1 and G2, the tunable controllers C1, and the AnalysisPoint blocks X1 and X2 that mark potential loop-opening locations.

G1 = tf(10,[1 10]);
G2 = tf([1 2],[1 0.2 10]);
C1 = ltiblock.pid('C','pi');
C2 = ltiblock.gain('G',1);
X1 = AnalysisPoint('X1');
X2 = AnalysisPoint('X2');
T = feedback(G1*feedback(G2*C2,X2)*C1,X1);

Compute the negative-feedback open-loop response of the inner loop, at the location X2, with the outer loop opened at X1.

L = getLoopTransfer(T,'X2',-1,'X1');

By default, the loop is closed at the analysis-point location marked by the AnalysisPoint block X1. Specifying 'X1' for the openings argument causes getLoopTransfer to open the loop at X1 for the purposes of computing the requested loop transfer at X2. In this example, the negative-feedback open-loop response L(s) = G2(s)C2(s).

Input Arguments

expand all

T — Model of control systemgeneralized state-space model

Model of a control system, specified as a Generalized State-Space (genss) Model. Locations at which you can open loops and perform open-loop analysis are marked by AnalysisPoint blocks in T.

Locations — Analysis-point locationsstring | cell array of strings

Analysis-point locations in the control system model at which to compute the open-loop point-to-point response, specified as a string or a cell array of strings that identify analysis-point locations in T.

Analysis-point locations are marked by AnalysisPoint blocks in T. An AnalysisPoint block can have single or multiple channels. The Location property of an AnalysisPoint block gives names to these feedback channels.

The name of any channel in a AnalysisPoint block in T is a valid entry for the Locations argument to getLoopTransfer. Use getPoints(T) to get a full list of available analysis points in T.

getLoopTransfer computes the open-loop response you would obtain by injecting a signal at the implicit input associated with an AnalysisPoint channel, and measuring the response at the implicit output associated with the channel. These implicit inputs and outputs are arranged as follows.

L is the open-loop transfer function from in to out.

sign — Feedback sign+1 (default) | -1

Feedback sign, specified as +1 or -1 The feedback sign determines the sign of the open-loop transfer function.

  • +1 — Compute the positive-feedback loop transfer. In this case, the relationship between the closed-loop response T and the open-loop response L is T = feedback(L,1,+1).

  • -1 — Compute the negative-feedback loop transfer. In this case, the relationship between the closed-loop response T and the open-loop response L is T = feedback(L,1).

Choose a feedback sign that is consistent with the conventions of the analysis you intend to perform with the loop transfer function. For example, consider the following system, where T is the closed-loop transfer function from r to y.

To compute the stability margins of this system with the margin command, which assumes negative feedback, you need to use the negative-feedback open-loop response. Therefore, you can use L = getLoopTransfer(T,'X',-1) to obtain the negative-feedback transfer function L = GC.

openings — Additional locations for opening feedback loopsstring | cell array of strings

Additional locations for opening feedback loops for computation of the open-loop response, specified as string or cell array of strings that identify analysis-point locations in T. Analysis-point locations are marked by AnalysisPoint blocks in T. Any channel name contained in the Location property of an AnalysisPoint block in T is a valid entry for openings.

Use openings when you want to compute the open-loop response at one analysis-point location with other loops also open at other locations. For example, in a cascaded loop configuration, you can calculate the inner loop open-loop response with the outer loop also open. Use getPoints(T) to get a full list of available analysis-point locations in T.

Output Arguments

expand all

L — Point-to-point open-loop responsegeneralized state-space model

Point-to-point open-loop response of the control system T measured at the analysis points specified by Locations, returned as a Generalized State-Space (genss) Model.

  • If Locations is a string specifying a single analysis point, then L is a SISO genss model. In this case, L represents the response obtained by opening the loop at Locations, injecting signals and measuring the return signals at the same location.

  • If Locations is a string specifying a vector signal, or a cell array identifying multiple analysis points, then L is a MIMO genss model. In this case, L represents the open-loop MIMO response obtained by opening loops at all locations listed in Locations, injecting signals and measuring the return signals at those locations.

More About

expand all

Tips

  • You can use getLoopTransfer to extract open-loop responses given a generalized model of the overall control system. This is useful, for example, for validating open-loop responses of a control system that you tune with the Robust Control Toolbox™ tuning command systune.

  • getLoopTransfer is the genss equivalent to the Simulink® Control Design™ command getLoopTransfer, which works with the slTuner and slLinearizer interfaces. Use the Simulink Control Design command when your control system is modeled in Simulink.

Was this topic helpful?