Integrate a signal
The Integrator block outputs the integral of its input at the current time step. The following equation represents the output of the block y as a function of its input
u and an initial condition
u are vector functions of the current simulation time
Simulink can use a number of different numerical integration methods to compute the Integrator block's output, each with advantages in particular applications. The Solver pane of the Simulation parameters dialog box (see The Solver Pane) allows you to select the technique best suited to your application.
Simulink treats the Integrator block as a dynamic system with one state, its output. The Integrator block's input is the state's time derivative.
The currently selected solver computes the output of the Integrator block at the current time step, using the current input value and the value of the state at the previous time step. To support this computational model, the Integrator block saves its output at the current time step for use by the solver to compute its output at the next time step. The block also provides the solver with an initial condition for use in computing the block's initial state at the beginning of a simulation run. The default value of the initial condition is 0. The block's parameter dialog box allows you to specify another value for the initial condition or create an initial value input port on the block.
The parameter dialog box also allows you to
Use the Discrete-Time Integrator block to create a purely discrete system.
Defining Initial Conditions
You can define the initial conditions as a parameter on the block dialog box or input them from an external signal:
internaland enter the value in the Initial condition parameter field.
external. An additional input port appears under the block input, as shown in this figure.
|Note If the integrator limits its output (see Limiting the Integral), the initial condition must fall inside the integrator's saturation limits. If the initial condition is outside the block's saturation limits, the block displays an error message.|
Limiting the Integral
To prevent the output from exceeding specifiable levels, select the Limit output check box and enter the limits in the appropriate parameter fields. Doing so causes the block to function as a limited integrator. When the output reaches the limits, the integral action is turned off to prevent integral wind up. During a simulation, you can change the limits but you cannot change whether the output is limited. The output is determined as follows:
To generate a signal that indicates when the state is being limited, select the Show saturation port check box. A saturation port appears below the block output port, as shown on this figure.
The signal has one of three values:
When this option is selected, the block has three zero crossings: one to detect when it enters the upper saturation limit, one to detect when it enters the lower saturation limit, and one to detect when it leaves saturation.
Resetting the State
The block can reset its state to the specified initial condition based on an external signal. To cause the block to reset its state, select one of the External reset choices. A trigger port appears below the block's input port and indicates the trigger type, as shown in this figure.
risingto trigger the state reset when the reset signal has a rising edge.
fallingto trigger the state reset when the reset signal has a falling edge.
eitherto trigger the reset when either a rising or falling signal occurs.
levelto trigger the reset and hold the output to the initial condition while the reset signal is nonzero.
The reset port has direct feedthrough. If the block output is fed back into this port, either directly or through a series of blocks with direct feedthrough, an algebraic loop results (see Algebraic Loops). The Integrator block's state port allows you to feed back the block's output without creating an algebraic loop.
About the State Port
Selecting the Show state port option on the Integrator block's parameter dialog box causes an additional output port, the state port, to appear atop the Integrator block.
The output of the state port is the same as the output of the block's standard output port except for the following case. If the block is reset in the current time step, the output of the state port is the value that would have appeared at the block's standard output if the block had not been reset. The state port's output appears earlier in the time step than the output of the Integrator block's output port. This allows you to avoid creating algebraic loops in the following modeling scenarios:
|Note The state port is intended to be used specifically in these two scenarios. When updating a model, Simulink checks to ensure that the state port is being used in one of these two scenarios. If not, Simulink signals an error.|
Creating Self-Resetting Integrators
The Integrator block's state port allows you to avoid creating algebraic loops when creating an integrator that resets itself based on the value of its output. Consider, for example, the following model.
This model tries to create a self-resetting integrator by feeding the integrator's output, subtracted from 1, back into the integrator's reset port. In so doing, however, the model creates an algebraic loop. To compute the integrator block's output, Simulink needs to know the value of the block's reset signal, and vice versa. Because the two values are mutually dependent, Simulink cannot determine either. It therefore signals an error if you try to simulate or update this model.
The following model uses the integrator's state port to avoid the algebraic loop.
In this version, the value of the reset signal depends on the value of the state port. The value of the state port is available earlier in the current time step than the value of the integrator block's output port. Thus, Simulink can determine whether the block needs to be reset before computing the block's output, thereby avoiding the algebraic loop.
Handing Off States Between Enabled Subsystems
The state port allows you to avoid an algebraic loop when passing a state between two enabled subsystems. Consider, for example, the following model.
In this model, a constant input signal drives two enabled subsystems that integrate the signal. A pulse generator generates an enabling signal that causes execution to alternate between the two subsystems. The enable port of each subsystem is set to reset. This causes the subsystem to reset its integrator when it becomes active. Resetting the integrator causes the integrator to read the value of its initial condition port. The initial condition port of the integrator in each subsystem is connected to the output port of the integrator in the other subsystem.
This connection is intended to enable continuous integration of the input signal as execution alternates between the two subsystems. However, the connection creates an algebraic loop. To compute the output of A, Simulink needs to know the output of B, and vice versa. Because the outputs are mutually dependent, Simulink cannot compute them. It therefore generates an error if you attempt to update or simulate this model.
The following version of the same model uses the integrator state port to avoid creating an algebraic loop when handing off the state.
In this model, the initial condition of the integrator in A depends on the value of the state port of the integrator in B, and vice versa. The values of the state ports are updated earlier in the simulation time step than the values of the integrator output ports. Thus, Simulink can compute the initial condition of either integrator without knowing the final output value of the other integrator. For another example of using the state port to hand off states between conditionally executed subsystems, see the
|Note Simulink does not permit three or more enabled subsystems to hand off a model state. If Simulink detects that a model is handing off a state among more than two enabled subsystems, it generates an error.|
Specifying the Absolute Tolerance for the Block's Outputs
By default Simulink uses the absolute tolerance value specified in the Simulation Parameters dialog box (see Error Tolerances) to compute the output of the Integrator block. If this value does not provide sufficient error control, specify a more appropriate value in the Absolute tolerance field of the Integrator block's dialog box. The value that you specify is used to compute all of the block's outputs.
Choosing All Options
When all options are selected, the icon looks like this.
Data Type Support
An Integrator block accepts and outputs signals of type
double on its data ports. Its external reset port accepts signals of type
Parameters and Dialog Box
level) occurs in the reset signal.
internal) or from an external block (if set to
autoor a numeric value. If you enter
auto, Simulink determines the absolute tolerance (see Error Tolerances). If you enter a numeric value, Simulink uses the specified value to compute the block's outputs. Note that a numeric value overrides the setting for the absolute tolerance in the Simulation Parameters dialog box.
||Yes, of the reset and external initial condition source ports
||Inherited from driving block or parameter
||If the Limit output option is selected, one for detecting reset, one each to detect upper and lower saturation limits, one when leaving saturation
|Inport||Interpolation (n-D) Using PreLook-Up|