# Low-Pass Filter (Discrete or Continuous)

Discrete-time or continuous-time low-pass filter

• Library:
• Simscape / Electrical / Control / General Control

## Description

The Low-Pass Filter (Discrete or Continuous) block implements a low-pass filter in conformance with IEEE 421.5-2016[1]. In the standard, the filter is referred to as a Simple Time Constant.

You can switch between continuous and discrete implementations of the integrator using the Sample time parameter.

### Equations

Continuous

To configure the filter for continuous time, set the Sample time property to `0`. This representation is equivalent to the continuous transfer function:

`$G\left(s\right)=\frac{K}{Ts+1},$`

where:

• K is the filter gain.

• T is the filter time constant.

From the preceeding transfer function, the filter defining equations are:

`$\left\{\begin{array}{c}\stackrel{˙}{x}\left(t\right)=\frac{1}{T}\left(Ku\left(t\right)-x\left(t\right)\right)\\ y\left(t\right)=x\left(t\right)\end{array}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}y\left(0\right)=x\left(0\right)=K{u}_{0},$`

where:

• u is filter input.

• x is filter state.

• y is filter output.

• t is simulation time.

• u0 is the initial input to the block.

Discrete

To configure the filter for discrete time, set the Sample time property to a positive, nonzero value, or to `-1` to inherit the sample time from an upstream block. The discrete representation is equivalent to the transfer function:

`$G\left(z\right)=K\frac{\left({T}_{s}/T\right){z}^{-1}}{1+\left({T}_{s}/T-1\right){z}^{-1}},$`

where:

• K is the filter gain.

• T is the filter time constant.

• Ts is the filter sample time.

From the discrete transfer function, the filter equations are defined using the forward Euler method:

`$\left\{\begin{array}{c}x\left(n+1\right)=\left(1-\frac{{T}_{s}}{T}\right)x\left(n\right)+K\left(\frac{{T}_{s}}{T}\right)u\left(n\right)\\ y\left(n\right)=x\left(n\right)\end{array}\text{\hspace{0.17em}}\text{\hspace{0.17em}}\text{\hspace{0.17em}}y\left(0\right)=x\left(0\right)=K{u}_{0},$`

where:

• u is the filter input.

• x is the filter state.

• y is the filter output.

• n is the simulation time step.

• u0 is the initial input to the block.

### Initial Conditions

To specify the initial conditions of this block, set Initialization to:

• `Inherited from block input` — The block sets the state and output initial conditions to the initial input.

• `Specify as parameter` — The block sets the state initial condition to the value of Initial state.

### Limiting the Integral

Set the Upper saturation limit and Lower saturation limit parameters to use the anti-windup saturation method.

The anti-windup method limits the integrator state between the lower saturation limit A and upper saturation limit B:

`$A<=x<=B\text{\hspace{0.17em}}.$`

Because the state is limited, the output can respond immediately to a reversal of the input sign when the integral is saturated. This block diagram depicts the implementation of the anti-windup saturation method in the filter.

This block does not provide a windup saturation method. To use the windup saturation method, set the Upper saturation limit parameter to `inf`, the Lower saturation limit parameter to `-inf`, and attach a saturation block to the output.

### Bypass Filter Dynamics

Set the time constant to a value smaller than or equal to the sample time to ignore the dynamics of the filter. When bypassed, the block feeds the gain-scaled input directly to the output:

`$T\le {T}_{s}\to y=Ku$`

In the continuous case, the sample time and time constant must both be zero.

## Ports

### Input

expand all

Low-pass filter input signal. The block uses the input initial value to determine the state initial value.

Data Types: `single` | `double`

### Output

expand all

Low-pass filter output.

Data Types: `single` | `double`

## Parameters

expand all

Low-pass filter gain.

Low-pass filter time constant. In the discrete implementation, set this value to less than the Sample time to bypass the dynamics of the filter.

Low-pass filter upper state limit. Set this to `inf` for an unsaturated upper limit, or to a finite value to prevent upper windup of the filter's integrator.

Low-pass filter lower state limit. Set this to `-inf` for an unsaturated lower limit, or to a finite value to prevent lower windup of the filter's integrator.

Specify the initial state condition for this block. For more information, see Initial Conditions.

Block initial state.

#### Dependencies

To enable this parameter, set Initialization to `Specify as parameter`.

Time between consecutive block executions. During execution, the block produces outputs and, if appropriate, updates its internal state. For more information, see What Is Sample Time? and Specify Sample Time.

For inherited discrete-time operation, specify `-1`. For discrete-time operation, specify a positive integer. For continuous-time operation, specify `0`.

If this block is in a masked subsystem, or other variant subsystem that allows you to switch between continuous operation and discrete operation, promote the sample time parameter. Promoting the sample time parameter ensures correct switching between the continuous and discrete implementations of the block. For more information, see Promote Parameter to Mask.

## References

[1] IEEE Recommended Practice for Excitation System Models for Power System Stability Studies. IEEE Std 421.5-2016. Piscataway, NJ: IEEE-SA, 2016.

## Extended Capabilities

### C/C++ Code GenerationGenerate C and C++ code using Simulink® Coder™.

Introduced in R2017b