Documentation Center

  • Trial Software
  • Product Updates

Contents

Handling Blocks with Internal State Representation

Operating Point Object Excludes Blocks with Internal States

The operating point object used for linearization and control design does not include these Simulink® blocks with internal state representation:

For example, if you compute a steady-state operating point for this Simulink model, the resulting operating point object does not include the Backlash block states because these states have an internal representation. If you use this operating point object to initialize a Simulink model, the initial conditions of the Backlash blocks might be incompatible with the operating point.

Identifying Blocks with Internal States in Your Model

Generate a list of blocks that have internal state representations.

sldiagnostics(sys,'CountBlocks')

where sys is your model, specified as a string. This command also returns the number of occurrences of each block.

Configuring Blocks with Internal States for Steady-State Operating Point Search

Blocks with internal states can cause problems for steady-state operating point search (trimming). Where there is no direct feedthrough, the input to the block at the current time does not determine the output of the block at the current time.

To fix this issues for Memory blocks, Transport Delay, or Variable Transport Delay blocks, select the Direct feedthrough of input during linearization option in the Block Parameters dialog box before searching for an operating point or linearizing a model at a steady state. This setting makes such blocks behave as if they have a gain of 1 during operating point search.

For example, the next model includes a Transport Delay block. In this case, you cannot find a steady state operating point using optimization because the output of the Transport Delay is always zero. Because the reference signal is 1, the input to the Plant block must be nonzero to get the plant block to have an output of 1 and be at steady state.

To fix this issue, select the Direct feedthrough of input during linearization option in the Block Parameters dialog box before searching for an operating point. This setting lets the PID Controller block push a nonzero value to the Plant block.

For other blocks with internal states, determine whether the output of the block impacts the state derivatives or desired output levels before computing operating points. If the block impacts these derivatives or output levels, consider replacing it using a configurable subsystem.

You can also set direct feedthrough options at the command-line instead of using the block parameter dialog box.

BlockCommand to specify direct feedthrough
Memory
set_param(blockname,'LinearizeMemory','on')
Transport Delay or Variable Transport Delay
set_param(blockname,'TransDelayFeedthrough','on')

Was this topic helpful?