FB_ALY_CorrelationFunction

Der Correlation Function Baustein berechnet die diskrete Korrelationsfunktion zwischen einem Referenzsignal (Channel Ref) und einem oder mehreren weiteren Signalen (Channel 00, …, Channel 0n). Die Korrelationskoeffizienten werden für Zeitverschiebungen von m Zyklen zwischen den beiden Signalen berechnet, wobei der maximale und der minimale Wert für m durch die Parameter Minimum Lag (negative ganze Zahl) und Maximum Lag (positive ganze Zahl) begrenzt ist.

Durch den Parameter StepSize wird bestimmt, um wie viele Zyklen die Signale für die Berechnung zweier aufeinanderfolgender Korrelationskoeffizienten verschoben werden. D.h. m ist immer ein Vielfaches der StepSize. Dementsprechend sind für Minimum Lag und Maximum Lag auch nur Vielfache der StepSize zulässig. Ist die StepSize auf eins gesetzt und beispielsweise Minimum Lag auf -6 sowie Maximum Lag auf +4, so werden Korrelationskoeffizienten für Verschiebungen um -6, -5, -4, -3, -2, -1, 0, +1, +2, +3 und +4 Zyklen berechnet. Setzt man die StepSize auf zwei, werden Koeffizienten für Verschiebungen um -6, -4, -2, 0, +2 und +4 Zyklen berechnet.

Die Koeffizienten können über verschiedene Zeitfenster berechnet werden. Diese werden durch den Parameter Window Mode gesetzt. Im Continuous Modus werden alle Werte seit Beginn der Analyse in die Berechnungen miteinbezogen. Im SlidingWindow Modus läuft die Berechnung kontinuierlich über die letzten, durch die Window Size gesetzte Anzahl von Zyklen. Im FixWindow Modus erfolgt die Berechnung auch über die durch die Window Size gesetzte Anzahl von Zyklen. Jedoch startet die Berechnung nach jeden WindowSize Zyklen neu und die Ausgangswerte werden nur beim Durchlaufen des letzten Zyklus eines Fensters aktualisiert.

Für m ungleich Null verschiebt sich das Fenster für das entsprechende Signal um m Zyklen. Damit bleibt die Anzahl von Werten, welche in die Berechnung der Koeffizienten mit einbezogen werden, für alle Werte von m gleich. Eine Ausnahme hierzu bilden nur die Ergebnisse aus den ersten Zyklen nach Start der Analyse. Ist die Anzahl der verstrichenen Zyklen kleiner als |m|, werden entsprechend weniger Werte in die Berechnung mit einbezogen.

Für positive Werte von m werden die Werte des Referenzsignals (Channel Ref) in einem Ringspeicher gespeichert, damit jeweils der vor m Zyklen eingegangene Wert des Referenzsignals mit den aktuellen Werten von Channel 00 bis Channel 0n verglichen werden kann. Dies entspricht einer Verschiebung des Referenzsignals in die Vergangenheit. Für negative Werte von m müsste das Referenzsignal dementsprechend in die Zukunft verschoben werden. Da dies offensichtlich nicht möglich ist, wird stattdessen das zweite Signal (Channel 00,..Channel0n) gespeichert und nach hinten verschoben.

Die Korrelationskoeffizienten können nach unterschiedlichen Berechnungsvorschriften berechnet werden. Diese wird durch den Correlation Mode bestimmt. In den Modi Base und Normed werden die Koeffizienten analog zu der Definition aus der Signalverarbeitung berechnet, welche die Korrelation über die Faltung berechnet. Im Normed – Modus werden die Koeffizienten zudem durch die Anzahl der Summanden geteilt. Covariance und CovarianceBessel berechnen die Kovarianz ohne und mit Bessel-Korrektur. Der Modus Pearson nutzt die Definition des in der Statistik üblichen Pearson Korrelationskoeffizienten. In den Konfigurationsoptionen sind die genauen Berechnungsvorschriften mathematisch aufgeführt. Hier bezeichnet xn den Wert des Referenzsignals und yn den Wert des zweiten Signals (jeweils Channel00, …, Channel0n) zum Zeitstempel tn (entsprechend dem n-ten Zyklus seit Start der Analyse oder seit Reset, ausgenommen der Zyklen in denen Enable Execution = FALSE). Der Wert von N hängt von dem gewählten WindowMode ab. Für den SlidingWindow-Mode und FixWindow-Mode ist N gleich der Window Size, vorausgesetzt seit Start der Analyse sind bereits entsprechend viele Zyklen vergangen, sodass xn-N-m (bzw. yn-N+m) aufgenommen wurde, andernfalls reduziert sich N zu n-m+1 bzw. n+m+1. Zu beachten ist, dass im FixWindow-Mode die Ausgangswerte nur alle Window Size Zyklen aktualisiert werden. Im Continuous-Mode gilt stets N = n+1.

In der Abbildung sind beispielhaft für eine Konfiguration (Correlation Mode = Pearson, Window Mode = FixWindow, Window Size = 75, Step Size = 5, Maximum Lag = 50, Minimum Lag = -50) die Ausgangswerte des Bausteins für zwei Signale (Channel Ref und Channel 00) für einen bestimmten Zyklus (n=150) dargestellt. In den beiden linken Plots sind die Eingangssignale Channel Ref und Channel 00 im Verlauf der Zeit dargestellt. Im rechten Plot ist die diskrete Korrelationsfunktion (die Pearson-Korrelationskoeffizienten in Abhängigkeit von m) zu sehen. Es sind Koeffizienten für die Verschiebungen m= -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, +5, +10, +15, +20, +25, +30, +35, +40, +45, +50 dargestellt. Diese werden im Baustein als Array ausgegeben. Neben den beiden Parametern Minimum und Maximum Lag, sind auf der Abszisse die Ausgangswerte Minimizing und Maximizing Lag gekennzeichent. Die dazugehörigen Koeffizienten Minimum und Maximum Coefficient, welche ebenfalls Ausgänge des Bausteins darstellen, sind auf der Ordinate markiert. Exemplarisch sind für die Verschiebungen m = -25, m = 0 und m =+25 in den Plots der Eingangskanäle (links) die Zeitbereiche farblich hervorgehoben, welche in die Berechnung des jeweiligen Koeffizienten eingehen. Im rechten Plot sind die entsprechenden Punkte jeweils eingefärbt.

FB_ALY_CorrelationFunction 1:

Syntax

Definition:

FUNCTION_BLOCK FB_ALY_CorrelationFunction
VAR_OUTPUT
    ipResultMessage: Tc3_EventLogger.I_TcMessage;
    bError: BOOL;
    bNewResult: BOOL;
    bConfigured: BOOL;
END_VAR

FB_ALY_CorrelationFunction 2: 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.

FB_ALY_CorrelationFunction 3: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.

FB_init()

Local

Initialisieren der Anzahl der Eingangskanäle.

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.

GetChannelOutputArray()

Local

Abrufen des Ergebnis-Arrays für einen bestimmten Kanal, ohne neue Werte hinzuzufügen.

GetChannelOutputValues()

Local

Abrufen der Ergebnisse (Einzelwerte) für einen bestimmten Kanal, ohne neue Werte hinzuzufügen.

Beispiel

VAR
    fbCorrelationFunction : FB_ALY_CorrelationFunction(nMinLag := -50, nMaxLag := 50, nStepSize := 5, nNumChannels := 1, eWindowMode := E_ALY_WindowMode.FixWindow, eCorrelationMode := E_ALY_CorrelationMode.Pearson, nWindowSize := 75);

    // Configuration
    nMinLag : DINT := -50;
    nMaxLag : DINT := 50;
    nStepSize : UDINT := 5;
    nNumChannels : UDINT := 1;
    eWindowMode : E_ALY_WindowMode := E_ALY_WindowMode.FixWindow;
    eCorrelationMode : E_ALY_CorrelationMode := E_ALY_CorrelationMode.Pearson;
    nWindowSize : UDINT := 75;

    bConfigure : BOOL := TRUE;

    // Inputs
    nInputRef : INT;
    fInputCh1 : LREAL;

    // Results
    fMinCoef : LREAL;
    fMaxCoef : LREAL;
    nMinimizingLag : DINT;
    nMaximizingLag : DINT;
    aCoefficients : ARRAY[-10..10] OF LREAL;
END_VAR
// Configure algorithm
IF bConfigure THEN
    bConfigure := FALSE;

    fbCorrelationFunction.Configure(
        nMinLag := nMinLag,
        nMaxLag := nMaxLag,
        nStepSize := nStepSize,
        nNumChannels := nNumChannels,
        eWindowMode := eWindowMode,
        eCorrelationMode := eCorrelationMode,
        nWindowSize := nWindowSize);
END_IF

// Call algorithm
fbCorrelationFunction.SetChannelValue(0, nInputRef);
fbCorrelationFunction.SetChannelValue(1, fInputCh1);
fbCorrelationFunction.Call();

fbCorrelationFunction.GetChannelOutputArray(1, ADR(aCoefficients), SIZEOF(aCoefficients));
fbCorrelationFunction.GetChannelOutputValues(1, fMinCoef, fMaxCoef, nMinimizingLag, nMaximizingLag);

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4024.0

PC oder CX (x64, x86)

Tc3_Analytics