Main Content

addPoint

Add signal to list of analysis points for slLinearizer or slTuner interface

Description

addPoint(s,pt) adds the specified point to the list of analysis points for the slLinearizer or slTuner interface, s.

Analysis points are model signals that can be used as input, output, or loop-opening locations for analysis and tuning purposes. You use analysis points as inputs to the linearization commands of s: getIOTransfer, getLoopTransfer, getSensitivity, and getCompSensitivity. As inputs to the linearization commands, analysis points can specify any open- or closed-loop transfer function in a model. You can also use analysis points to specify tuning goals for systune.

example

addPoint(s,blk,port_num) adds the point that originates at the specified output port of the specified block as an analysis point for s.

example

addPoint(s,blk,port_num,bus_elem_name) adds the specified bus element as an analysis point.

example

Examples

collapse all

Open the scdcascade model.

mdl = 'scdcascade';
open_system(mdl);

Create an slLinearizer interface for the model.

sllin = slLinearizer(mdl);

Add u1 and y1 as analysis points for sllin.

addPoint(sllin,{'u1','y1'});

View the currently defined analysis points within sllin.

sllin
 
slLinearizer linearization interface for "scdcascade":

2 Analysis points: 
--------------------------
Point 1:
- Block: scdcascade/C1
- Port: 1
- Signal Name: u1
Point 2:
- Block: scdcascade/G1
- Port: 1
- Signal Name: y1
 
No permanent openings. Use the addOpening command to add new permanent openings.
Properties with dot notation get/set access:
      Parameters         : [] 
      OperatingPoints    : [] (model initial condition will be used.)
      BlockSubstitutions : []
      Options            : [1x1 linearize.LinearizeOptions]

Suppose you want to linearize the magball model and obtain a transfer function from the reference input to the plant output. Add the signals originating at the Desired Height and Magnetic Ball Plant blocks as analysis points to an slLinearizer interface.

Open the magball model.

mdl = 'magball';
open_system(mdl);

Create an slLinearizer interface for the model.

sllin = slLinearizer(mdl);

Add the signals originating at the Design Height and Magnetic Ball Plant blocks as analysis points of sllin. Both signals originate at the first (and only) port of the respective blocks.

blk = {'magball/Desired Height','magball/Magnetic Ball Plant'};
port_num = [1 1];
addPoint(sllin,blk,port_num);

Open the scdbusselection model.

mdl = 'scdbusselection';
open_system(mdl);

Create an slLinearizer interface model.

sllin = slLinearizer(mdl);

The COUNTERBUS signal of scdbusselection contains multiple bus elements. Add the upper_saturation_limit and data bus elements as analysis points to sllin. When adding elements within a nested bus structure, use dot notation to access the elements of the nested bus, for example limits.upper_saturation_limit.

blk = {'scdbusselection/COUNTERBUSCreator','scdbusselection/COUNTERBUSCreator'};
port_num = [1 1];
bus_elem_name = {'limits.upper_saturation_limit','data'};
addPoint(sllin,blk,port_num,bus_elem_name);

Both bus elements originate at the first (and only) port of the scdbusselection/COUNTERBUSCreator block. Therefore, blk and port_num repeat the same element twice.

Input Arguments

collapse all

Interface to a Simulink model, specified as either an slLinearizer interface or an slTuner interface.

Analysis point to add to the list of analysis points for s, specified as:

  • Character vector or string — Signal identifier that can be any of the following:

    • Signal name, for example 'torque'

    • Block path for a block with a single output port, for example 'Motor/PID'

    • Path to block and port originating the signal, for example 'Engine Model/1' or 'Engine Model/torque'

  • Cell array of character vectors or string array — Specifies multiple signal identifiers.

  • Vector of linearization I/O objects — Use linio to create pt. For example:

    pt(1) = linio('scdcascade/setpoint',1)
    pt(2) = linio('scdcascade/Sum',1,'output')

    Here, pt(1) specifies an input, and pt(2) specifies an output. The interface adds all the signals specified by pt and ignores the I/O types. The interface also adds all 'loopbreak' type signals as permanent openings.

Block path identifying the block where the analysis point originates, specified as a:

  • Character vector or string to specify a single point, for example blk = 'scdcascade/C1'.

  • Cell array of character vectors or string array to specify multiple points, for example blk = {'scdcascade/C1','scdcascade/Sum'}.

blk, port_num, and bus_elem_name (if specified) must have the same size.

Port where the analysis point originates, specified as a:

  • Positive integer to specify a single point, for example port_num = 1.

  • Vector of positive integers to specify multiple points, for example port_num = [1 1].

blk, port_num, and bus_elem_name (if specified) must have the same size.

Bus element name, specified as a:

  • Character vector or string to specify a single point, for example bus_elem_name = 'data'.

  • Cell array of character vectors or string array to specify multiple points, for example bus_elem_name = {'limits.upper_saturation_limit','data'}.

blk, port_num, and bus_elem_name (if specified) must have the same size.

More About

collapse all

Analysis Points

Analysis points, used by the slLinearizer and slTuner interfaces, identify locations within a model that are relevant for linear analysis and control system tuning. You use analysis points as inputs to the linearization commands, such as getIOTransfer, getLoopTransfer, getSensitivity, and getCompSensitivity. As inputs to the linearization commands, analysis points can specify any open-loop or closed-loop transfer function in a model. You can also use analysis points to specify design requirements when tuning control systems using commands such as systune.

Location refers to a specific block output port within a model or to a bus element in such an output port. For convenience, you can use the name of the signal that originates from this port to refer to an analysis point.

You can add analysis points to an slLinearizer or slTuner interface, s, when you create the interface. For example:

s = slLinearizer('scdcascade',{'u1','y1'});

Alternatively, you can use the addPoint command.

To view all the analysis points of s, type s at the command prompt to display the interface contents. For each analysis point of s, the display includes the block name and port number and the name of the signal that originates at this point. You can also programmatically obtain a list of all the analysis points using getPoints.

For more information about how you can use analysis points, see Mark Signals of Interest for Control System Analysis and Design and Mark Signals of Interest for Batch Linearization.

Permanent Openings

Permanent openings, used by the slLinearizer and slTuner interfaces, identify locations within a model where the software breaks the signal flow. The software enforces these openings for linearization and tuning. Use permanent openings to isolate a specific model component. Suppose that you have a large-scale model capturing aircraft dynamics and you want to perform linear analysis on the airframe only. You can use permanent openings to exclude all other components of the model. Another example is when you have cascaded loops within your model and you want to analyze a specific loop.

Location refers to a specific block output port within a model. For convenience, you can use the name of the signal that originates from this port to refer to an opening.

You can add permanent openings to an slLinearizer or slTuner interface, s, when you create the interface or by using the addOpening command. To remove a location from the list of permanent openings, use the removeOpening command.

To view all the openings of s, type s at the command prompt to display the interface contents. For each permanent opening of s, the display includes the block name and port number and the name of the signal that originates at this location. You can also programmatically obtain a list of all the permanent loop openings using getOpenings.

Version History

Introduced in R2013b