Funktionsbausteine
Grundstruktur der Funktionsbausteine
Alle Funktionsbausteine der Bibliothek TwinCAT Weighing SPS-Bibliothek basieren auf derselben Grundstruktur. Dies erleichtert das Engineering, wenn von einem Weighing-Typ zu einem anderen gewechselt wird.
Syntax
FUNCTION_BLOCK FB_WG_<type>
VAR_INPUT
stConfig : ST_WG_<type>;
END_VAR
VAR_OUTPUT
bError : BOOL;
bConfigured : BOOL;
ipResultMessage : I_TCMessage;
END_VAR
Eingänge
Zur Konfiguration des Weighing-Bausteins wird den Funktionsbausteinen bei der Instanziierung eine Konfigurationsstruktur vom Typ ST_WG_<type> übergeben. Die Konfigurationsstruktur kann in der Deklaration oder über die Methode Configure()
zur Laufzeit zugewiesen werden.
Siehe auch: Datentypen > Konfigurationsstrukturen
Beispiel zur Konfiguration in der Deklaration:
(* define configure structure - exemplary for ComboFilter *)
stParams : ST_WG_ComboFilter := (
nOrder := nOrder,
fCutoff := fCutoff,
fSamplingRate := fSampleRate,
nSamplesToFilter := nSamplesToFilter);
(* create filter instance with configure structure *)
fbFilter : FB_WG_ComboFilter := (stConfig := stParams);
Ausgänge
Alle Funktionsbausteine haben als Ausgangsparameter ein Error-Flag bError
und ein Flag bConfigured
vom Typ BOOL
. Diese zeigen an, ob ein Fehler vorliegt und ob die zugehörige Funktionsbausteininstanz erfolgreich konfiguriert wurde. Der Ausgang ipResultMessage
vom Typ I_TcMessage
bietet verschiedene Eigenschaften zur Erläuterung einer Event-Ursache sowie Methoden zur Verarbeitung der Message (Event-Liste).
Siehe auch: I_TcEventBase und I_TcMessage
Methoden
Alle Funktionsbausteine der Bibliothek Tc3_Weighing verfügen über drei Methoden. Diese liefern einen positiven Rückgabewert, wenn sie fehlerfrei ausgeführt wurden.
Configure()
Die Methode kann zur Laufzeit verwendet werden, um die Instanz eines Weighing-Bausteins initial zu konfigurieren (wenn nicht schon in der Deklaration geschehen) oder zu rekonfigurieren.
METHOD Configure : BOOL
VAR_INPUT
stConfig : ST_WG_<type>;
END_VAR
Call()
Die Methode berechnet aus einem Eingangssignal, das in Form eines Pointers übergeben wird, ein manipuliertes Ausgangssignal.
METHOD Call : BOOL
VAR_INPUT
pIn : POINTER TO LREAL; (*address of input array*)
nSizeIn : UDINT; (*size of input array*)
pOut : POINTER TO LREAL; (*address of output array*)
nSizeOut : UDINT; (*size of output array*)
END_VAR
Reset()
Die Methode setzt den internen Status eines Weighing-Bausteins zurück. Der Einfluss der vergangenen Werte auf den aktuellen Ausgangswert wird eliminiert.
METHOD Reset : BOOL
Eigenschaften
Die Bibliothek Tc3_Weighing referenziert auf den TwinCAT 3 EventLogger und stellt somit sicher, dass Informationen (Ereignisse) über die standardisierte Schnittstelle I_TcMessage bereitgestellt werden.
Jeder Funktionsbaustein verfügt über die Eigenschaften eTraceLevel
vom Typ TcEventSeverity
und eTraceLevelDefault
vom Typ BOOL
.
Das Trace-Level bestimmt die Severity eines Events (Verbose, Info, Warning, Error, Critical) und wird über die Eigenschaft eTraceLevel
gesetzt.
(* Sample of setting fbFilter to trace level info *)
fbFilter.eTraceLevel := TcEventSeverity.Info;
Über die Eigenschaft eTraceLevelDefault
kann das Trace-Level wieder auf den Standardwert (TcEventSeverity.Warning
) gesetzt werden.
Auf die Eigenschaft kann lesend und schreibend zugegriffen werden, d. h. über die Eigenschaft eTraceLevelDefault
kann abgefragt werden, ob der Standardwert gesetzt ist.
Die Eigenschaften können auch im Online View gesetzt werden.

Umgang mit Oversampling
Alle Funktionsbausteine sind Oversampling-fähig, wobei unterschiedliche Arten der Nutzung möglich sind. Die Deklaration der Weighing-Funktionsbausteininstanz fbFilter
ist hier immer gleich.
Einkanalige Anwendung mit Oversamples
Die Ein- und Ausgangsarrays können als eindimensionale Größen deklariert werden.
VAR CONSTANT
cOversamples : UINT := 10;
END_VAR
VAR
aInput : ARRAY [1..cOversamples] OF LREAL;
aOutput : ARRAY [1..cOversamples] OF LREAL;
END_VAR
bSucceed := fbFilter.Call(ADR(aInput), SIZEOF(aInput), ADR(aOutput), SIZEOF(aOutput));
Einkanalige Anwendung ohne Oversamples
Wenn kein Oversampling angewendet wird, können die Ein- und Ausgangsgrößen auch als LREAL
deklariert werden.
VAR CONSTANT
cOversamples : UINT := 1;
END_VAR
VAR
fInput : LREAL;
fOutput : LREAL;
END_VAR
bSucceed := fbFilter.Call(ADR(fInput), SIZEOF(fInput), ADR(fOutput), SIZEOF(fOutput));