Konfiguration eines Filters mit FB_FTR_IIRSpec

In diesem Beispiel wird exemplarisch gezeigt, wie ein Filter vom Typ „Butterworth“ mit dem Funktionsbaustein FB_FTR_IIRSpec konfiguriert wird.

Download: Tc3_Filter_SimpleIIRSpec.zip (*.tnzip)

Beschreibung:

Implementierung:

stParams : ST_FTR_IIRSpec := ( … )
fbFilter : FB_FTR_IIRSpec := (stConfig := stParams);
IF NOT fbFilter.bError THEN
    fbFilter.Call(ADR(aSignalBuffer), SIZEOF(aSignalBuffer),
                  ADR(aFilteredSignal), SIZEOF(aFilteredSignal));
ELSE
    // if on error state, do something
    nErrorCount := nErrorCount + 1;
    // e.g. check if filter is configured
    // IF fbFilter.bConfigured THEN
    // or use ipResultMessage to check root cause
    // fbFilter.ipResultMessage
END_IF;

Beobachtung:

Die Aufnahme mit dem TwinCAT 3 Scope zeigt, dass die Ausgangssignale durch den Filter in ihrer Amplitude gedämpft und in ihrer Phase verschoben sind. Das Signal im zweiten Kanal (grün) wird stärker gedämpft als das im ersten Kanal (blau, Dämpfung um -3 dB).

Konfiguration eines Filters mit FB_FTR_IIRSpec 1:
Signalverläufe der Eingangssignale (oben) und der Ausgangsignale (unten) (blau: Kanal 1, grün: Kanal 2)

Wenn Sie das Flag bReconfigure aktivieren, wird die Grenzfrequenz auf 50 Hz verschoben, wodurch die Amplitude beider Ausgangssignale noch kleiner wird.

Konfiguration eines Filters mit FB_FTR_IIRSpec 2:
Signalverlauf der Eingangssignale (oben) und der Ausgangssignale (unten), wenn das Flag bReconfigure aktiviert ist (blau: Kanal 1, grün: Kanal 2)

Wenn Sie das Flag bReset aktiveren, wird der interne Zustand des Filters gelöscht, d. h. vergangene Ein- und Ausgangswerte werden nicht mehr berücksichtigt. Der stetige Verlauf des Signals wird unterbrochen (bei ca. 27 ms) und das Filter schwingt sich neu ein.

Konfiguration eines Filters mit FB_FTR_IIRSpec 3:
Signalverläufe der Eingangssignale (oben) und der Ausgangssignale (unten), wenn das Flag bReset aktiviert ist (blau: Kanal 1, grün: Kanal 2)

Siehe auch: