FB_ALY_ScalerFitting

Das Scaler Fitting-Modul kann verwendet werden, um die Parameter für ein Feature-Scaling zu ermitteln und in einer Datei abzuspeichern. Anschließend können diese Parameter im Scaler-Modul verwendet werden.

Abhängig vom Betriebsmodus werden die für die Skalierung erforderlichen Parameter ermittelt.

Normalisierung:

FB_ALY_ScalerFitting 1:

Standardisierung:

FB_ALY_ScalerFitting 2:

Syntax

Definition:

FUNCTION_BLOCK FB_ScalerFitting
VAR_OUTPUT
    ipResultMessage: Tc3_EventLogger.I_TcMessage;
    bError: BOOL;
    bNewResult: BOOL;
    bConfigured: BOOL;
    fScalingParam1: LREAL;
    fScalingParam2: LREAL;
    bBusy: BOOL;
    eState: E_TeachState;
END_VAR

FB_ALY_ScalerFitting 3: Ausgänge

Name

Typ

Beschreibung

ipResultMessage

I_TcMessage

Beinhaltet nähere Informationen zum aktuellen Rückgabewert. Für diesen speziellen Schnittstellenzeiger ist intern sichergestellt, dass er immer gültig/zugewiesen ist.

bError

BOOL

Der Ausgang ist TRUE, wenn ein Fehler auftritt.

bNewResult

BOOL

Wenn ein neues Ergebnis berechnet wurde, ist der Ausgang TRUE.

bConfigured

BOOL

Zeigt TRUE an, wenn der Baustein erfolgreich konfiguriert ist.

fScalingParam1

LREAL

Gibt den ersten Skalierungsparameter abhängig vom Skalierungsmodus aus:
Normalization: Kleinster Wert des Eingangskanals.
Standardization: Mittelwert des Eingangskanals.

fScalingParam1

LREAL

Gibt den zweiten Skalierungsparameter abhängig vom Skalierungsmodus aus:
Normalization: Größter Wert des Eingangskanals.
Standardization: Standardabweichung des Eingangskanals.

bBusy

BOOL

TRUE, wenn der FB aufgrund eines Dateizugriffs aktiv ist.

eState

E_ALY_TeachState

Aktueller Zustand des Funktionsbausteins. Siehe Zustandsdiagramm.

FB_ALY_ScalerFitting 4: Methoden

Name

Definitionsort

Beschreibung

Call()

Local

Methode zur Berechnung der Ausgänge für eine bestimmte Konfiguration.

Configure()

Local

Allgemeine Konfiguration des Algorithmus mit seinen parametrisierten Bedingungen.

GetBusyState()

Local

Diese Methode liefert den Zustand Busy des Funktionsbausteins.

Reset()

Local

Setzt alle internen Zustände oder die bisher durchgeführten Berechnungen zurück.

SetChannelValue()

Local

Methode zur Übergabe von Werten an den Algorithmus.

SwitchState_Idle()

Local

Methode, um den Funktionsbaustein in den Zustand Idle zu versetzen, wenn der Einlernvorgang abgeschlossen ist.

SwitchState_Teach()

Local

Methode, um den Funktionsbaustein in den Einlernmodus zu versetzen.

UpdateState()

Local

Aktualisierung des Zustands, nachdem eine Zustandsänderung mit einer der SwitchState-Methoden initiiert wurde. Wird so lange aufgerufen bis der Zielzustand erreicht ist.

Zustandsdiagramm

Aufgrund des asynchronen Dateizugriffs in Echtzeitanwendungen benötigt dieser Funktionsbaustein eine Zustandsmaschine, um den Dateizugriff vorzubereiten und abzuschließen.

Beim Start ist der Funktionsbaustein im Zustand Idle. Um die eingehenden Daten in eine Datei zu schreiben, muss er in den Zustand Teach wechseln. Daher muss die Methode SwitchState_Teach() einmal aufgerufen werden, um den Funktionsbaustein in den Zustand PendingTeach zu versetzen. Anschließend muss die Methode UpdateState() aufgerufen werden, bis sich der Funktionsbaustein im Zustand Teach befindet. In diesem Zustand können ein oder mehrere Einlernzyklen durchlaufen werden. Wenn der Funktionsbaustein keine weiteren Zyklen einlernen soll, kann er wieder in den Zustand Idle versetzt werden. Um den Zustandswechsel zu initiieren, muss die Methode SwitchState_Idle() aufgerufen werden. Anschließend muss die Methode UpdateState() aufgerufen werden, bis sich der Funktionsbaustein im Zustand Idle befindet.

Zustandsdiagramm für den Einlernvorgang der Daten:

FB_ALY_ScalerFitting 5:

Beispiel

VAR
    fbScalerFitting : FB_ALY_ScalerFitting_1Ch;
    tTimeout : TIME := T#5S;
    eScalingMode : E_ALY_ScalingMode := E_ALY_ScalingMode.Normalization;
    sFilePath : STRING := '%TC_BOOTPRJPATH%\Scaler.json';
    bConfigure : BOOL := TRUE;
    eState : E_ALY_TeachState := E_ALY_TeachState.Idle;
    bTeach : BOOL;
    fInput : LREAL;
    bFit : BOOL;
END_VAR
// Configure algorithm
IF bConfigure THEN
    bConfigure := FALSE;
    fbScalerFitting.Configure(eScalingMode, tTimeout, sFilePath);
END_IF

// Call algorithm
eState := fbScalerFitting.eState;
CASE eState OF
E_ALY_TeachState.Idle:
    IF bTeach THEN
        fbScalerFitting.SwitchState_Teach();
        fbScalerFitting.UpdateState();
    END_IF
E_ALY_TeachState.Teach:
    fbScalerFitting.SetChannelValue(fInput);
    fbScalerFitting.Call(bFit);
    IF NOT bTeach THEN
        fbScalerFitting.SwitchState_Idle();
        fbScalerFitting.UpdateState();
    END_IF
E_ALY_TeachState.Pending,
E_ALY_TeachState.PendingIdle,
E_ALY_TeachState.PendingTeach:
    fbScalerFitting.UpdateState();
    eState := fbScalerFitting.eState;
END_CASE

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4024.0

PC oder CX (x64, x86)

Tc3_Analytics