FB_ALY_DynamicTimeWarpingInterval
Der Algorithmus Dynamic Time Warping Interval vergleicht mehrere Eingangsdaten miteinander. Das Besondere an dem Algorithmus ist, dass auch Signale mit unterschiedlicher Geschwindigkeit oder aber auch verschobene Signale verglichen werden können. Für den Vergleich wird nur das Signalintervall eines konfigurierten Fensters berücksichtigt. Neue Ergebnisse werden nach dem Ablauf des Fensters ausgegeben. Als Ergebnis wird die Distanz zwischen dem Referenzsignal und dem jeweiligen Eingangssignal ausgegeben. Je geringer die Distanz, desto gleicher sind die verglichenen Signale. Ist die Distanz 0, so sind beide Signale identisch. Die Höhe der Distanz ist abhängig von der Gleichheit aber auch von der Länge der Signale.
Syntax
Definition:
FUNCTION_BLOCK FB_ALY_DynamicTimeWarpingInterval
VAR_OUTPUT
ipResultMessage: Tc3_EventLogger.I_TcMessage;
bError: BOOL;
bNewResult: BOOL;
bConfigured: BOOL;
nBestMatchIdx: UDINT;
END_VAR
Ausgänge
Name | Typ | Beschreibung |
---|---|---|
ipResultMessage | 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 |
bNewResult | BOOL | Wenn ein neues Ergebnis berechnet wurde, ist der Ausgang |
bConfigured | BOOL | Zeigt |
nBestMatchIdx | UDINT | Gibt den Index des Eingangskanals mit der geringsten Distanz zum Referenzkanal aus. |
Methoden
Name | Definitionsort | Beschreibung |
---|---|---|
Call() | Local | Methode zur Berechnung der Ausgänge für eine bestimmte Konfiguration. |
Configure() | Local | Konfiguration des Algorithmus. |
FB_init() | Local | Initialisieren der Anzahl der Eingangskanäle. |
GetChannelOutputVaue() | Local | Methode für das Abholen von einzelnen Ausgangswerten aus dem Ausgangs-Array |
GetChannelOutputArray() | Local | Methode für das Abholen des gesamten Ausgangs-Arrays. |
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. |
Beispiel
VAR
fbDynamicTimeWarpingInterval : FB_ALY_DynamicTimeWarpingInterval(nNumChannels := 3);
nWindowSize : UDINT := 100;
bConfigure : BOOL := TRUE;
fReference : LREAL;
fInput1 : LREAL;
fInput2 : LREAL;
fInput3 : LREAL;
aDistances : ARRAY[1..3] OF LREAL;
END_VAR
// Configure algorithm
IF bConfigure THEN
bConfigure := FALSE;
fbDynamicTimeWarpingInterval.Configure(nWindowSize);
END_IF
// Call algorithm
fbDynamicTimeWarpingInterval.SetChannelValue(0, fReference);
fbDynamicTimeWarpingInterval.SetChannelValue(1, fInput1);
fbDynamicTimeWarpingInterval.SetChannelValue(2, fInput2);
fbDynamicTimeWarpingInterval.SetChannelValue(3, fInput3);
fbDynamicTimeWarpingInterval.Call();
// Get results
fbDynamicTimeWarpingInterval.GetOutputArray(pArrayOut:=ADR(aDistances), nArrayOutSize:=SIZEOF(aDistances));
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.4024.0 | PC oder CX (x64, x86) | Tc3_Analytics |