Mehrkanal-Magnitudenspektrum
Dieses Beispiel implementiert das Magnitudenspektrum für 5 Eingangskanäle gleichzeitig. Der Code ist in zwei Tasks aufgeteilt; einer Steuerungstask, welche die Eingangsabtastungen von einem Hardwaremodul sammelt, z.B. EL3632, und einer CM-Task, die das Spektrum errechnet. Das Blockdiagramm unten zeigt die im Programm implementierte Analysekette.
Den Quellcode für das Beispiel können Sie hier herunterladen:
Multichannel_FrequencyAnalysis_Sample.zip
Blockdiagramm
Programmparameter
Die Tabelle unten zeigt eine Liste mit wichtigen Parametern für die Konfiguration der Magnitudenspektrum-Funktionsbausteine.
Kanäle | 5 |
FFT-Länge | 4096 |
Fenstergröße | 3200 |
Puffergröße | 1600 |
Window Typ | eCM_HannWindow |
Skalierungsart | eCM_RootPowerSum |
Umwandeln in Dezibel | FALSE |
Globale Konstanten
Diese Parameter werden in der Liste der globalen Variablen als Konstanten definiert.
VAR_GLOBAL CONSTANT
cOversamples : UDINT := 20; // number of oversamples
cMaxChannels : UDINT := 5; // Number of data channels
cWindowType : E_CM_WindowType := E_CM_WindowType.eCM_HannWindow; // window type for analysis
cWindowLength : UDINT := 3200; // length of signal window.
cOverlap : UDINT := 1600; // recommended buffer overlap
cBufferLength : UDINT := cWindowLength - cOverlap; // internal buffer size with 50% overlapping
cFFTLength : UDINT := 4096; // length of FFT for mag. spectrum
cFFTResult : UDINT := 2049; // result of mag. spectrum (cFFTLength/2+1)
END_VAR
Globale Variablen
Diese Parameter werden in der Liste der globalen Variablen definiert.
VAR_GLOBAL
bInvalidateCh4 : BOOL := FALSE; // Invalidate input signal on channel 4
END_VAR
Erläuterungen
Das Ergebnis des Beispielcodes kann für ein sinusförmiges Signal beliebiger Amplitude und Frequenz getestet werden. Die Effektivwerte werden im Array aRmsValue
gemäß der entsprechenden Kanalnummer gespeichert. Das Ergebnis muss genau der Spitzenamplitude von jedem sinusförmigen Signal geteilt durch SQRT(2)
entsprechen. Der Beispielcode kann für mehr als 5 Kanäle erweitert werden, je nach Anforderungen und Ressourcen des Zielsystems.
Das Setzen der globalen Variablen bInvalidateCh4 := TRUE
demonstriert ein mögliches Fehlerhandling bei unzulässigen Eingangsdaten.
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.4022.25 | PC or CX (x86, x64) | Tc3_CM, Tc3_CM_Base, Tc3_MultiArray |