Main Content

addOpening

Add signal to list of openings for slLinearizer or slTuner interface

Description

addOpening(s,pt) adds the specified point (signal) to the list of permanent openings for the slLinearizer or slTuner interface, s.

Use permanent openings to isolate a specific model component for the purposes of linearization and tuning. Suppose 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.

example

addOpening(s,blk,port_num) adds the signal at the specified output port of the specified block as a permanent opening for s.

example

addOpening(s,blk,port_num,bus_elem_name) adds the specified bus element as a permanent opening.

example

Examples

collapse all

Suppose you want to analyze only the inner-loop dynamics of the scdcascade model. Add the outer-loop feedback signal, y1m, as a permanent opening of an slLinearizer interface.

Open the scdcascade model.

mdl = 'scdcascade';
open_system(mdl)

Create an slLinearizer interface for the model.

sllin = slLinearizer(mdl);

Add the y1m signal as a permanent opening of sllin.

addOpening(sllin,'y1m');

View the currently defined analysis points within sllin.

sllin
 
slLinearizer linearization interface for "scdcascade":

No analysis points. Use the addPoint command to add new points.
1 Permanent openings: 
--------------------------
Opening 1:
- Block: scdcascade/Sum
- Port: 1
- Signal Name: y1m
 
Properties with dot notation get/set access:
      Parameters         : [] 
      OperatingPoints    : [] (model initial condition will be used.)
      BlockSubstitutions : []
      Options            : [1x1 linearize.LinearizeOptions]

Suppose you want to analyze only the inner-loop dynamics of the scdcascade model. Add the outer-loop feedback signal, y1m, as a permanent opening of an slLinearizer interface.

Open the scdcascade model.

mdl = 'scdcascade';
open_system(mdl)

Create an slLinearizer interface for the model.

sllin = slLinearizer(mdl);

Add the y1m signal as a permanent opening of sllin.

addOpening(sllin,'scdcascade/Sum',1);

The y1m signal originates at the first (and only) port of the scdcascade/Sum block.

Open the scdbusselection model.

mdl = 'scdbusselection';
open_system(mdl);

Create an slLinearizer interface for the model.

sllin = slLinearizer(mdl);

The COUNTERBUS signal of scdbusselection contains multiple bus elements. Add the upper_saturation_limit and data bus elements as openings 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'};

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.

Opening to add to the list of permanent openings 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. For example, pt = {'Motor/PID','Engine Model/1'}.

  • 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. However, the software ignores the I/O types and adds them both to the list of permanent openings for s.

Block path identifying the block where the opening originates, specified as a character vector or cell array of character vectors.

Dimensions of blk:

  • For a single opening, specify blk as a character vector or string.

    For example, blk = 'scdcascade/C1'.

  • For multiple openings, specify blk as a cell array of character vectors or string array. blk, port_num, and bus_elem_name (if specified) must have the same size.

    For example, blk = {'scdcascade/C1','scdcascade/Sum'}.

Port where the opening originates, specified as a positive integer or a vector of positive integers.

Dimensions of port_num:

  • For a single opening, specify port_num as a positive integer.

    For example, port_num = 1.

  • For multiple openings, specify port_num as a vector of positive integers. blk, port_num, and bus_elem_name (if specified) must have the same size.

    For example, port_num = [1 1].

Bus element name, specified as a character vector or cell array of character vectors.

Dimensions of bus_elem_name:

  • For a single opening, specify bus_elem_name as a character vector or string.

    For example, bus_elem_name = 'data'.

  • For multiple openings, specify bus_elem_name as a cell array of character vectors or string array. blk, port_num, and bus_elem_name (if specified) must have the same size.

    For example, bus_elem_name = {'limits.upper_saturation_limit','data'}.

More About

collapse all

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