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:
- Das Beispielprojekt besteht aus einem TwinCAT-SPS-Projekt und einem Measurement-Projekt.
- Im Measurement-Projekt sind zwei Eingangssignale und zwei Ausgangssignale in zwei Achsen konfiguriert.
- Die beiden Eingangssignale werden über einen in der SPS aufgerufenen Funktionsgenerator synthetisch erzeugt. Es handelt sich um harmonische Signale (Sinus) mit einer Frequenz von 250 Hz für den ersten Kanal und mit einer Frequenz von 300 Hz für den zweiten Kanal. Die Signale werden von einem Filter vom Typ „Butterworth“ verarbeitet. Der realisiert Filter hat eine Grenzfrequenz von 250 Hz.
- Das SPS-Programm MAIN wird von einer Task mit 1 ms Zykluszeit aufgerufen.
Implementierung:
- Zunächst wird eine Struktur
stParams
vom TypST_FTR_IIRSpec
deklariert und initialisiert. Die Struktur wird bei Parametrierung des FunktionsbausteinsFB_FTR_IIRSpec
bzw. zur Konfiguration des Filters verwendet.
stParams : ST_FTR_IIRSpec := ( … )
- Anschließend wird eine Instanz
fbFilter
des FunktionsbausteinsFB_FTR_IIRSpec
erzeugt. Bei der Instanziierung wird die StrukturstParams
übergeben.
fbFilter : FB_FTR_IIRSpec := (stConfig := stParams);
- Im Quellcode werden die Methode
Call()
aufgerufen, um den Filter auszuführen, und Varianten zur Fehlerprüfung aufgeführt.
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;
- Außerdem werden die Methoden
Configure()
und/oderReset()
aufgerufen, um während der Laufzeit die Filterkonfiguration zu verändern (fbFilter.Configure
) oder ein Reset durchzuführen (fbFilter.Reset
). Der Aufruf der Methoden wird über die FlagsbReconfigure
undbReset
gesteuert. Diese können Sie im Online Watch manuell aufTRUE
oderFALSE
setzen.
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).

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

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.

Siehe auch: