Filter

Continuous low pass, high pass, band pass or band stop IIR-filter of type CriticalDamping, Bessel, Butterworth or ChebyshevI

    Filter

Library

Modelica/Blocks/Continuous

Description

This blocks models various types of filters:

low pass, high pass, band pass, and band stop filters

using various filter characteristics:

CriticalDamping, Bessel, Butterworth, Chebyshev Type I filters

By default, a filter block is initialized in steady-state, in order to avoid unwanted oscillations at the beginning. In special cases, it might be useful to select one of the other initialization options under tab "Advanced".

Typical frequency responses for the 4 supported low pass filter types are shown in the next figure:

LowPassOrder4Filters.png

The step responses of the same low pass filters are shown in the next figure, starting from a steady state initial filter with initial input = 0.2:

LowPassOrder4FiltersStepResponse.png

Obviously, the frequency responses give a somewhat wrong impression of the filter characteristics: Although Butterworth and Chebyshev filters have a significantly steeper magnitude as the CriticalDamping and Bessel filters, the step responses of the latter ones are much better. This means for example, that a CriticalDamping or a Bessel filter should be selected, if a filter is mainly used to make a non-linear inverse model realizable.

Typical frequency responses for the 4 supported high pass filter types are shown in the next figure:

HighPassOrder4Filters.png

The corresponding step responses of these high pass filters are shown in the next figure:

HighPassOrder4FiltersStepResponse.png

All filters are available in normalized (default) and non-normalized form. In the normalized form, the amplitude of the filter transfer function at the cut-off frequency f_cut is -3 dB (= 10^(-3/20) = 0.70794..). Note, when comparing the filters of this function with other software systems, the setting of "normalized" has to be selected appropriately. For example, the signal processing toolbox of MATLAB provides the filters in non-normalized form and therefore a comparison makes only sense, if normalized = false is set. A normalized filter is usually better suited for applications, since filters of different orders are "comparable", whereas non-normalized filters usually require to adapt the cut-off frequency, when the order of the filter is changed. See a comparison of "normalized" and "non-normalized" filters at hand of CriticalDamping filters of order 1,2,3:

CriticalDampingNormalized.png
CriticalDampingNonNormalized.png

Implementation

The filters are implemented in the following, reliable way:

  1. A prototype low pass filter with a cut-off angular frequency of 1 rad/s is constructed from the desired analogFilter and the desired normalization.
  2. This prototype low pass filter is transformed to the desired filterType and the desired cut-off frequency f_cut using a transformation on the Laplace variable "s".
  3. The resulting first and second order transfer functions are implemented in state space form, using the "eigen value" representation of a transfer function:
    
      // second order block with eigen values: a +/- jb
      der(x1) = a*x1 - b*x2 + (a^2 + b^2)/b*u;
      der(x2) = b*x1 + a*x2;
           y  = x2;
         
    The dc-gain from the input to the output of this block is one and the selected states are in the order of the input (if "u" is in the order of "one", then the states are also in the order of "one"). In the "Advanced" tab, a "nominal" value for the input "u" can be given. If appropriately selected, the states are in the order of "one" and then step-size control is always appropriate.

References

Tietze U., and Schenk C. (2002):
Halbleiter-Schaltungstechnik. Springer Verlag, 12. Auflage, pp. 815-852.

Parameters

Filter_0

NameLabelDescriptionData TypeValid Values

mo_analogFilter

analogFilter

Analog filter characteristics (CriticalDamping/Bessel/Butterworth/ChebyshevI)

Structure

mo_analogFilter/choice1

Filter with critical damping

Number

0
1

mo_analogFilter/choice2

Bessel filter

Number

0
1

mo_analogFilter/choice3

Butterworth filter

Number

0
1

mo_analogFilter/choice4

Chebyshev I filter

Number

0
1

mo_filterType

filterType

Type of filter (LowPass/HighPass/BandPass/BandStop)

Structure

mo_filterType/choice1

Low pass filter

Number

0
1

mo_filterType/choice2

High pass filter

Number

0
1

mo_filterType/choice3

Band pass filter

Number

0
1

mo_filterType/choice4

Band stop / notch filter

Number

0
1

mo_order

order

Order of filter

Scalar

mo_f_cut

f_cut

Cut-off frequency

Scalar

mo_gain

gain

Gain (= amplitude of frequency response at zero frequency)

Scalar

mo_A_ripple

A_ripple

Pass band ripple for Chebyshev filter (otherwise not used); > 0 required

Scalar

mo_f_min

f_min

Band of band pass/stop filter is f_min (A=-3db*gain) .. f_cut (A=-3db*gain)

Scalar

mo_normalized

normalized

= true, if amplitude at f_cut = -3db, otherwise unmodified filter

Scalar

true
false

mo_nx

nx

Scalar

mo_ncr

ncr

Scalar

mo_nc0

nc0

Scalar

mo_na

na

Scalar

mo_nr

nr

Scalar

mo_cr

cr

Vector

mo_c0

c0

Vector

mo_c1

c1

Vector

mo_r

r

Vector

mo_a

a

Vector

mo_b

b

Vector

mo_ku

ku

Vector

mo_k1

k1

Vector

mo_k2

k2

Vector

Filter_1

NameLabelDescriptionData TypeValid Values

mo_init

init

Type of initialization (no init/steady state/initial state/initial output)

Structure

mo_init/choice1

No initialization (start values are used as guess values with fixed=false)

Number

0
1

mo_init/choice2

Steady state initialization (derivatives of states are zero)

Number

0
1

mo_init/choice3

Initialization with initial states

Number

0
1

mo_init/choice4

Initialization with initial outputs (and steady state of the states if possible)

Number

0
1

mo_x_start

x_start

Initial or guess values of states

Vector

mo_y_start

y_start

Initial value of output

Scalar

mo_u_nominal

u_nominal

Nominal value of input (used for scaling the states)

Scalar

Filter_2

NameLabelDescriptionData TypeValid Values

mo_u

u

u

Structure

mo_u/fixed

fixed

Cell of scalars

true
false

mo_u/start

start

Cell of scalars

mo_y

y

y

Structure

mo_y/fixed

fixed

Cell of scalars

true
false

mo_y/start

start

Cell of scalars

mo_x

x

x

Structure

mo_x/fixed

fixed

Cell of vectors

true
false

mo_x/start

start

Cell of vectors

Ports

NameTypeDescriptionIO TypeNumber

u

implicit

Connector of Real input signal

input

1

y

implicit

Connector of Real output signal

output

1