Window functions
This sample implements several single-channel magnitude spectra and compares the use of different window functions. Three variants are presented: One with the overlap mechanism deactivated, an automatic calculation of the recommended overlap and a manual configuration using a suitable firmware function.
The source code for the sample is available for download from here: WindowFunctions_Sample.zip
Block diagram
Program parameters
The table below shows a list of important parameters for the configuration of the magnitude spectrum function blocks.
FFT length | 4096 |
Window size | 3200 |
Buffer size | 3200 / 1600 / 767 |
Window type |
|
Decibel transformation |
|
Calculation/specification of the overlap
Version 1: Use of the function F_CM_CalculateRecommendedOverlap
By means of the named function the recommended overlap can be calculated at runtime. After download/login, the necessary values are called in the MAIN_CM
in the first cycle.
IF bCalculateOverlap THEN
// recommended overlap for window 1
nOverlap1 := F_CM_CalculateRecommendedOverlap(eWindowType := cWindowType1, aWindowParameters := cWindowParameters1, nWindowLength := cWindowLength);
// recommended overlap for window 2
nOverlap2 := F_CM_CalculateRecommendedOverlap(eWindowType := cWindowType2, aWindowParameters := cWindowParameters2, nWindowLength := cWindowLength);
// recommended overlap for window 3
nOverlap3 := F_CM_CalculateRecommendedOverlap(eWindowType := cWindowType3, aWindowParameters := cWindowParameters3, nWindowLength := cWindowLength);
bCalculateOverlap := FALSE;
END_IF
The lengths obtained in this way can subsequently be entered in the configuration of the analysis chains (parameters cOverlap1
, cOverlap2
, cOverlap3
in the GVL_Constants
.). The dependencies in the buffer length must be observed here! After downloading/logging in again, the application is configured with regard to the overlap.
Version 2: Reading the initial parameters in the Online view
If the value nOverlap := cCM_OverlapRecommended
is used with the initialization structure for the overlap, then the optimum overlap is calculated in the initialization phase of the function block, depending on the window parameters. This value can be read in the Online View of the function block in the node stInitPars
after the download and login. With this variant it is not necessary to start the application!
Online View for Spectrum 2 (Hann window)
Requirements
Development environment | Target platform | PLC libraries to include |
---|---|---|
TwinCAT v3.1.4022.25 | PC or CX (x86, x64) | Tc3_CM, Tc3_CM_Base, Tc3_MultiArray |