Engee documentation

rpmordermap

A map of the dependence of the order on the rotation speed for analyzing the orders.

Library

EngeeDSP

Syntax

Function call

  • map,order,rpm,time,res = rpmordermap(x,fs,rpm) — returns a map of the ratio of rotation orders and frequency map obtained by analyzing the orders of the input vector x, as well as vectors with orders order, rotation speeds rpm and moments of time time, in which the order map is calculated map. The function also returns the resolution of the orders used. res.

    Input argument x It is measured at a set speed value. rpm expressed in rpm . Argument fs — sampling rate in Hz. Each column of the matrix map contains RMS estimates of the amplitude of the orders of magnitude for each value rpm. Function rpmordermap performs resampling of the signal x with a constant sampling rate and uses the short-term Fourier transform to analyze the spectral components of the oversampled signal.

  • map,order,rpm,time,res = rpmordermap(___,Name,Value) — sets additional parameters using arguments like «name-value» for any of the previous syntax options.

  • rpmordermap(___,out=:plot) — builds a map of orders as a function of rotation speed and time on an interactive graph.

Arguments

Input arguments

# x — input signal

+ vector

Details

The input signal is specified as a row vector or column vector.

# fs — sampling rate
scalar

Details

The sampling rate, set as a positive scalar, expressed in Hz.

# rpm — rotation speed

+ vector

Details

The rotation speed, set as a vector of positive values expressed in rpm. Length of the argument rpm must match the length of the argument. x.

  • If there is a pulse signal of the tachometer, use the function tachorpm for direct extraction rpm.

  • If there is no pulse signal of the tachometer, use the function rpmtrack to extract rpm from the vibration signal.

# res — order resolution

+ (15 × fs)/(16 × max(rpm)) (by default) | scalar

Details

The resolution of the order of the map depends on the rotation speed, set as a positive scalar. If the argument is res if not specified, then the function rpmordermap sets its value equal to the sampling frequency of the signal with a constant number of samples per cycle divided by 256. If the signal duration is insufficient, the function uses the entire length of the oversampled signal to calculate a single order estimate.

The actual resolution of the order may differ slightly from the specified value. For more information, see Algorithms.

Типы данных

Float32, Float64

Input arguments «name-value»

Specify optional argument pairs as Name,Value, where Name — the name of the argument, and Value — the appropriate value. Type arguments «name-value» they should be placed after the other arguments, but the order of the pairs does not matter. You can specify multiple pairs «name-value».

Use commas to separate the name and value, and Name put it in quotation marks.

Example: rpmordermap(x, fs, rpm, "Scale", "dB", "Window", "hann") sets the frequency map rating scale in dB and uses the Hanna window.

# Amplitude — type of amplitude

+ "rms" (default) | "peak" | "power"

Details

The type of amplitude of the rotation frequency dependence map, set by one of the following values:

  • "rms" — returns the RMS amplitude for each estimated order;

  • "peak" — returns the peak amplitude for each estimated order;

  • "power" — returns the power level for each estimated order.

# OverlapPercent — percentage of overlap between adjacent segments

+ 50 (default) | scalar

Details

The percentage of overlap between adjacent segments, given as a scalar of 0 before 100. Meaning 0 means that adjacent segments do not overlap. Meaning 100 means that adjacent segments are offset by one count. A higher percentage of overlap provides a smoother map, but increases calculation time. For more information, see Algorithms.

Типы данных

Float32, Float64

# Scale — scale of the map depending on the order of rotation speed
"linear" (by default) | "dB"

Details

The scale of the map depending on the rotation speed, set by one of the following values:

  • "linear" — returns a map with a linear scale;

  • "dB" — returns a map with a logarithmic scale, the values of which are expressed in dB.

# Window — The analysis window

+ "flattopwin" (by default) | "chebwin" | "hamming" | "hann" | "kaiser" | "rectwin"

Details

The analysis window, set to one of the following values:

  • "flattopwin" — sets a window with a flat top. For more information, see Function description flattopwin.

  • "chebwin" — sets the Chebyshev window. Use the tuple to indicate the attenuation of the side lobes in dB. The weakening of the side lobes should be greater 45 dB. If the attenuation value is not set, the default value is 100 dB. For more information, see Function description chebwin.

    Example: rpmordermap(x, fs, rpm, 0.25, "Amplitude", "peak", "Window", ("chebwin", 80)) sets the peak amplitude and resolution 0.25 It also uses a Chebyshev window with a weakening of the side lobes. 80 dB.

  • "hamming" — sets the Hamming window. For more information, see Function description hamming.

  • "hann" — Hannah sets the window. For more information, see Function description hann.

  • "kaiser" — sets the Kaiser window. Use a tuple to specify the form factor. . The form factor must be a positive scalar. If the value of the form parameter is not set, it is used by default. 0.5. For more information, see Function description kaiser.

  • "rectwin" — sets a rectangular window. For more information, see Function description rectwin.

Типы данных

Symbol, String

# out — type of output data

+ :data (by default) | :plot

Details

Type of output data:

  • :data — the function returns data;

  • :plot — the function returns a graph.

For this argument, the name and value are separated by an equal sign (=).

Output arguments

# map — a map of the order depending on the rotation speed
the matrix

Details

A map of the rotation order and frequency ratio returned as a matrix.

# order — orders

+ vector

Details

The orders returned as a vector.

# rpm — rotation speed

+ vector

Details

The rotation speed returned as a vector.

# time — points in time

+ vector

Details

The time points returned as a vector.

# res — order resolution

+ scalar

Details

The resolution of the order returned as a scalar.

Examples

Surface diagram of the map of the dependence of the order on the rotation speed

Details

We will generate a signal consisting of two linear and one quadratic chirps, all with a sampling frequency. 600 Hz during 5 seconds. The system generating the signal increases its rotation speed from 10 before 40 rpm during the testing period.

Let’s generate the tachometer readings.

fs = 600
t1 = 5
t = 0:1/fs:t1

f0 = 10
f1 = 40
rpm = collect(60 * range(f0, f1, length=length(t)))

Linear chirps have orders of magnitude 1 and 2.5. The component with the order 1 It has an amplitude twice as large as the amplitude of the other component. A quadratic chirp starts with the order 6 and returns to this order at the end of the measurement. Its amplitude is 0.8. Let’s create a signal using this information.

o1 = 1
o2 = 2.5
o6 = 6

import EngeeDSP.Functions: chirp

x = 2 * chirp(t, o1 * f0, t1, o1 * f1) + chirp(t, o2 * f0, t1, o2 * f1) +
    0.8 * chirp(t, o6 * f0, t1, o6 * f1, "quadratic")

Let’s calculate a map of the dependence of the signal order on the rotation speed. We use the peak amplitude in each measuring cell. Specify the resolution 0.25 orders of magnitude. Let’s process the data using the Chebyshev window with the weakening of the side lobes. 80 dB.

import EngeeDSP.Functions: rpmordermap

map, or, rp = rpmordermap(x, fs, rpm, 0.25, "Amplitude", "peak", "Window", ("chebwin", 80))

We will construct a map of the dependence of the order on the rotation frequency in the form of a surface diagram.

OR = repeat(or', length(rp), 1)
RP = repeat(rp, 1, length(or))

surface(OR, RP, map';
        camera = (-15, 45),
        xlabel = "Order",
        ylabel = "RPM",
        zlabel = "Amplitude")

rpmordermap

Algorithms

Order analysis is the study of vibrations in rotating systems resulting from rotation itself. The frequencies of these oscillations are often proportional to the rotational speed. The coefficients of proportionality are order.

The rotation speed is usually measured independently and varies over time under most experimental conditions. For the correct analysis of vibrations caused by rotation, oversampling and interpolation of the measured signal is required in order to achieve a constant number of samples per cycle. As a result of this process, the signal components, whose frequencies are integer multiples of the rotation speed, are converted into constant tones. This transformation reduces the blurring of spectral components that occurs when the frequency changes rapidly over time.

Function rpmordermap performs the following steps:

  1. Evaluates the phase angle as an integral of the rotational velocity over time:

  2. Uses the function resample to increase the sampling rate and low-frequency filtering of the signal. This step allows the function to interpolate the signal at undiscretized time points without overlapping high-frequency components. Function rpmordermap increases the sampling rate of the signal in 15 once.

  3. Uses the function interp1 for linear interpolation of an increased signal onto a uniform grid in the phase domain. The highest available measurement order is determined by the sampling frequency and the maximum rotational speed achieved by the system.:

    To accurately determine this highest order, it is necessary to sample the signal at least twice as often as . To achieve better results, the function rpmordermap increases the sampling rate in 4 times. The resulting sampling rate in the phase domain is equal to

    The default function is rpmordermap it is configured to calculate maps of the ratio of order and speed of rotation with a target resolution of the order:

    but you can set a different value using the input argument. res.

  4. Uses the function spectrogram to calculate the short-term Fourier transform of an interpolated signal. By default, the function divides the signal into segments from samples and processes each of them using a flat-top window. Are

    overlap counts between adjacent segments, where — the value of the type argument «name-value» OverlapPercent and by default it is 50%. The length of the DFT is set to . The resolution is related to the sampling rate and segment length by the expression

    where — the equivalent noise band of the window is calculated using the function enbw. Adjust the resolution to distinguish between closely spaced orders. Lower values they require a longer segment length. Myself depends on , therefore it must be calculated recursively for the given and . The received value it is usually not an integer, so the function rpmordermap rounds it up using the function ceil. Thus, the actual resolution of the orders may differ slightly from the set target value. If you need to achieve a preset resolution, make sure that your signal contains a sufficient number of samples.

Literature

  1. Brandt, Anders. Noise and Vibration Analysis: Signal Analysis and Experimental Procedures. Chichester, UK: John Wiley & Sons, 2011.