Vibration assessment according to ISO 10816-3 (compact)
Vibration assessment based on ISO 10816-3 is explained in more detail in section Application concepts, see Vibration assessment. The classification takes place via the function block FB_CMA_VibrationAssessment.
The sample is available for download from here: VibrationAssessment_Sample.zip
An alternative implementation can be found in the sample Vibration assessment according to ISO 10816-3 and in the sample Vibration assessment according to ISO 10816-3 (extended).
Block diagram

Program parameters
The table below shows a list of important parameters for the configuration of the function blocks that are used.
Buffer size | 800 |
Channels | 2 |
FFT length | 2048 |
Window size | 1600 |
Sampling rate | 10000 |
Number of frequency bands | 2 |
Lower frequency bound | [10, 200] |
Upper frequency bound | [1000, 2000] |
Order (RMS) | 2 |
Window type | eCM_HannWindow |
Conversion to decibels | FALSE |
Configuration
The speed and deflection of the measured data are used for the machine monitoring according to ISO 10816-3. A classification on the basis of the acceleration data does not take place. For this reason the classification is implicitly deactivated by setting the limit values to a sufficiently high value (see GVL_Constants):
cISOClassDef_Vibration : ARRAY[1..cMaxClasses] OF LREAL := [1E6, 1E6, 1E6];
cISOClassDef_Velocity : ARRAY[1..cMaxClasses] OF LREAL := [2.3E-3, 4.5E-3, 7.1E-3];
cISOClassDef_Displ : ARRAY[1..cMaxClasses] OF LREAL := [29E-6, 57E-6, 90E-6];Evaluation
The definition of the classification on the basis of ISO 10816-3, based on the speed and deflection for all channels, takes place in the control task. If a new result is available, it is evaluated as follows:
IF bCalculate THEN
// Highscore in classification according to ISO 10816-3.
ISO_10816_HighscoreClass := aVAResult[ISO_10816_nSelectedBand][1]; // class
ISO_10816_HighscoreOrder := aVAResult[ISO_10816_nSelectedBand][2]; // order
ISO_10816_HighscoreChannel := aVAResult[ISO_10816_nSelectedBand][3]; // channel
IF NOT (ISO_10816_HighscoreClass = E_IsoClass.Error) THEN
nCountResults := fbSink.nCntResults;
// ToDo: if succeeded
ELSE
// ToDo: if error; RMS result is NaN. Code here what to do.
END_IF
END_IFThe result data aVAResult contain the following information for all configured frequency bands:
ISO_10816_HighscoreClass: The classification (A-D) of the machine state on the basis of the configured limit values.ISO_10816_HighscoreOrder: The integration order for the calculated evaluation, i.e.0for the acceleration,1for the speed and2for the deflection.ISO_10816_HighscoreChannel: The basic channel for the calculated evaluation.
In this sample, the frequency band for the evaluation is selected via the variable ISO_10816_nSelectedBand.
Memory property
The memory property of the algorithm can be changed via the initial parameter bMemorize. If the parameter is set to TRUE, the highest classification is not overwritten again by a lower evaluation until the method ResetData() is called. Compare the behavior of the function block FB_CMA_WatchUpperThresholds here.
Requirements
Development environment | Target platform | PLC libraries to include |
|---|---|---|
TwinCAT v3.1.4022.25 | PC or CX (x86, x64) | Tc3_CM, Tc3_CM_Base |
![]() | Limited functional scope already available with CM 3.1. See section Compatibility. |
