Discrete-Time Integrator
Discrete integration or accumulation of a signal.
blockType: DiscreteIntegrator
Path in the library:
|
Description
Use the block Discrete-Time Integrator instead of a block Integrator to create a completely discrete model.
Output equations
At the first time step, i.e. at the state of the block , output value .
For a given step over the simulation time output data they are updated depending on the selected method as follows:
-
The direct Euler method:
.
-
The inverse Euler method:
.
-
The trapezoid method:
.
The implementation of these output equations in the state space is automatically selected depending on the block calculation step, which can be explicit or inherited. When using an explicitly specified calculation step reduced to the calculation step for everyone .
Methods of integration and accumulation
This unit can integrate or accumulate a signal using the forward Euler method, the inverse Euler method, or the trapezoid method. Suppose that — this is the entrance, — this is the way out, eh "It’s a condition. For a given step updated and . In the integration mode — this is the block calculation step. In accumulation mode . The block calculation step determines when the output signal is calculated, but not the output value. — gain factor. The values are trimmed according to the upper or lower limit.
The direct Euler method
The direct Euler method (used by default), also known as the straight rectangular or left approximation.
The block approximates how . Expressions for the block output in the step :
,
.
The block uses these steps to calculate the output signal.:
Step 0: |
(limited if necessary)
|
Step 1: |
|
Step n: |
(limited if necessary) |
The inverse Euler method
The inverse Euler method, also known as the inverse rectangular or right-handed approximation.
The block approximates how . Expressions for the block output in the step :
,
.
The block uses these steps to calculate the output signal.:
Step 0: |
(limited if necessary)
|
Step 1: |
|
Step n: |
|
Determination of initial states
You can define the initial states as a parameter in the dialog box of the block or enter them from an external signal.:
-
To define the initial states as a block parameter, specify Initial condition source how
internal
and enter the value in the field Initial condition. -
To get the initial states from an external source, specify Initial condition source how
external
. An additional input port appears under the input port.
When to use the status port
Use the status port instead of the output port in the following cases:
-
When the block output returns to the block through the reset port or the initial state port, causing an algebraic loop.
-
When it is required to transfer state from one conditionally executed subsystem to another, which can cause synchronization problems.
You can work around these issues by passing the state through the status port rather than the output port. Engee generates the state at a slightly different time than at the output, which protects the model from such problems. To display the block status, check the box Show state port. The status port will appear at the top of the block.
Limitation of the integrator
To ensure that the output data does not exceed the specified levels, check the box Limit output and enter the restrictions in the appropriate parameter fields. This action results in the block functioning as a limited integrator. When the output reaches the limit values, the integrator operation ends.
The block defines the output data as follows:
-
When the integral is less than or equal to Lower saturation limit, the output signal is held at Lower saturation limit.
-
When the integral is between Lower saturation limit and Upper saturation limit, the output is an integral.
-
When the integral is greater than or equal to Upper saturation limit, the output signal is held at Upper saturation limit.
To generate a signal indicating when the state is limited, check the box Show saturation port. The saturation port appears under the block output port.
The signal takes one of three values:
-
1
indicates that the upper limit is applied. -
'0` indicates that the integral is not limited.
-
The
-1
indicates that the lower limit is applied.
Reset the status
The block resets its state to the initial state on an external signal. The type of reset trigger is determined by the parameter External reset. When selecting a value other than none
the unit has a reset port, next to which the type of reset trigger is indicated.
Types of reset triggers
Parameter External reset allows you to define the reset signal attribute that is the reset trigger. The following triggers are possible:
-
rising
— resets the state when the reset signal passes the edge, i.e. increases from a negative or zero value to a positive one. For example, the figure below shows the effect of a reset trigger.rising
for integration by the inverse Euler method. -
falling
— resets the state when the reset signal is cut off, i.e. it drops from a positive value to zero or a negative value. For example, the figure below shows the effect of a reset trigger.falling
for integration by the inverse Euler method. -
either
— resets the state when the reset signal rises or falls, i.e. it changes from zero to a non-zero value, from a non-zero value to zero, or changes sign. For example, the following figure shows the effect of a reset triggereither
for integration by the inverse Euler method. -
level
— resets and holds the output in its initial state until the reset signal is zero, i.e. it is different from zero at the current time step or changes from a non-zero value at the previous time step to zero at the current time step. For example, this picture shows the effect of a reset trigger.level
for integration by the inverse Euler method. -
sampled level
— Resets the output signal to its initial state when the reset signal is non-zero. For example, this picture shows the effect of a reset trigger.sampled level
for integration by the inverse Euler method.
Option sampled level
it requires less calculations, which makes it more efficient than the option level
.
For the block Discrete-Time Integrator all triggers are detected by signals with positive values. For example, a signal varying from -1 to 0 is not considered a rising edge, but a signal varying from 0 to `1' is.
|
Ports
Output
#
Port_1
—
integral over discrete time or accumulated value of the input signal
scalar
| vector
| matrix
Details
The integral over discrete time or the accumulated value of an input signal.
Data types |
|
Complex numbers support |
No |
#
Port_2
—
saturation port
scalar
| vector
| matrix
Details
A signal indicating a state constraint is specified as a scalar, vector or matrix. The signal takes one of three values:
-
1
indicates that the upper limit applies. -
0
indicates that the integral is unconstrained. -
-1
indicates that the lower limit applies.
See Integrator Limit.
Dependencies
To use this port, select the check box for the parameters Show saturation port.
Data types |
|
Complex numbers support |
No |
#
Port_3
—
status port
scalar
| vector
| matrix
Details
Block states output as a scalar, vector, or matrix. The state port is output at the top of the block.
Dependencies
To use this port, select the check box for the parameters Show state port.
Data types |
|
Complex numbers support |
No |
Input
#
Port_1
—
input signal
scalar
| vector
| matrix
Details
An input signal specified as a scalar, vector or matrix.
Data types |
|
Complex numbers support |
No |
#
x0
—
initial state
scalar
| vector
| matrix
Details
The initial state of the block set by an external signal.
Refer to Defining initial states.
Dependencies
To use this port, set the Initial condition source parameters to external
.
Data types |
|
Complex numbers support |
No |
#
External Reset
—
reset
scalar
| vector
| matrix
Details
Resets the state of the unit to the preset initial state by an external signal. Refer to Reset Status.
Dependencies
To use this port, set the value for the parameters External reset.
Data types |
|
Complex numbers support |
No |
Parameters
Main
#
Integrator Method —
integration method
Integration: Forward Euler
| Integration: Backward Euler
| Integration: Trapezoidal
| Accumulation: Forward Euler
| Accumulation: Backward Euler
| Accumulation: Trapezoidal
Details
The method of integration or accumulation.
Values |
|
Default value |
|
Program usage name |
|
Tunable |
No |
Evaluatable |
No |
#
Gain Value —
integrator gain
Scalar / array of real numbers
Details
Specifies the scalar, vector or matrix by which the integrator input signal is multiplied. Each element of the gain must be a positive real number.
-
Specifying a value other than
1.0
(value by default) is semantically equivalent to connecting the Gain block to the integrator input.
Valid values: [1.1 2.2 3.3 4.4]
, [1.1 2.2; 3.3 4.4]
.
Usage of this parameter to specify the input gain eliminates the multiplication operation in the generated code. However, this parameter must be non-configurable to realise this benefit. If you want to change the gain, set this parameter to 1.0 and use the external block Gain to specify the gain.
|
Default value |
|
Program usage name |
|
Tunable |
No |
Evaluatable |
Yes |
#
External reset —
reset to initial state
none
| rising
| falling
| either
| level
| sampled level
Details
Specify the type of trigger to be used for the external reset signal.
-
rising
- resets the state when the reset signal passes the edge. -
falling
- resets the state when the reset signal passes the slice. -
either
- resets the state when the reset signal is rising or falling (passing an edge or a slice). -
level
- resets and holds the output in the initial state until the reset signal is zero. -
sampled level
- resets the output to the initial state when the reset signal is different from zero.
For more information, refer to Reset State and Reset Trigger Types.
Values |
|
Default value |
|
Program usage name |
|
Tunable |
No |
Evaluatable |
No |
#
Initial condition source —
selecting the source of the initial state
internal
| external
Details
Initial state source. Defined as:
-
internal
- obtaining initial states from parameters Initial condition. -
external
- receiving initial states from an external source via input port X_0.
Dependencies
Selection internal
enables usage of the parameters Initial condition in the simulation.
Selection external
disables usage of the parameters Initial condition and enables the X_0 input port.
Values |
|
Default value |
|
Program usage name |
|
Tunable |
No |
Evaluatable |
No |
#
Initial condition —
initial state
Scalar / array of real numbers
Details
The initial state of the block.
Dependencies
To use this parameter, set parameter Initial condition source value internal
.
Default value |
|
Program usage name |
|
Tunable |
Yes |
Evaluatable |
Yes |
#
Initial condition setting —
selecting the application of the initial state
Auto
| Output
Details
Select whether to apply the parameter value Initial condition to a block state or to a block output. The initial state is also the reset value.
-
Auto
- block applies the parameter value Initial condition to the block input.Set the initial states:
`x(0) = IC
At reset:
x(n) = IC
-
Output
- the block applies the value of the parameters Initial condition to the block output.Set the initial states:
`y(0) = IC
At reset:
y(n) = IC
Values |
|
Default value |
|
Program usage name |
|
Tunable |
No |
Evaluatable |
No |
#
Sample time —
interval between calculation steps
SampleTime (real number / vector of two real numbers)
Details
Specify the interval between calculation steps as a non-negative number. To inherit a calculation step, set this parameter to -1
.
Do not specify a calculation step equal to 0 . This value specifies a continuous calculation step, which the block Discrete-Time Integrator does not support. Do not specify a calculation step of inf or NaN because these values are not discrete. If you specify -1 to inherit a calculation step from a higher-level block, ensure that the higher-level block uses a discrete calculation step. For example, a block Discrete-Time Integrator cannot inherit a calculation step equal to 0 .
|
Default value |
|
Program usage name |
|
Tunable |
No |
Evaluatable |
Yes |
#
Limit output —
Limiting the output values of the block to the specified range
Logical
Details
Limits the output signal to the parameters Lower saturation limit and Upper saturation limit.
-
Selecting this checkbox limits the output signal to the values of parameters Lower saturation limit and Upper saturation limit.
-
Unchecking this box removes the restrictions on the output signal.
Dependencies
Selecting this option enables usage of the parameters Lower saturation limit and Upper saturation limit.
Default value |
|
Program usage name |
|
Tunable |
No |
Evaluatable |
No |
#
Upper saturation limit —
upper limit for the integral
Scalar / array of real numbers
Details
Sets the upper limit for the output value as a scalar, vector or matrix.
Dependencies
To use this parameter, tick the checkbox of the parameters Limit output.
Default value |
|
Program usage name |
|
Tunable |
No |
Evaluatable |
Yes |
#
Lower saturation limit —
lower bound for the integral
Scalar / array of real numbers
Details
Sets the lower limit for the output value as a scalar, vector or matrix.
Dependencies
To use this parameter, tick the checkbox of the parameters Limit output.
Default value |
|
Program usage name |
|
Tunable |
No |
Evaluatable |
Yes |
#
Show saturation port —
switching on the saturation output port
Logical
Details
Select this check box to add a saturation output port to the block. When you clear this check box, the block does not have a saturation output port.
Dependencies
Selecting this parameter enables the saturation output port.
Default value |
|
Program usage name |
|
Tunable |
No |
Evaluatable |
No |
#
Show state port —
switching on the status output port
Logical
Details
Select this check box to add a status output port to the block. When you clear this check box, the block does not have a status output port.
Dependencies
Selecting this parameter enables the status output port.
Default value |
|
Program usage name |
|
Tunable |
No |
Evaluatable |
No |