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

Funktionsbausteine 1: 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);

Funktionsbausteine 2: 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

Funktionsbausteine 3: 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

Funktionsbausteine 4: 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.

Funktionsbausteine 5:

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));