FB_CMA_MomentCoefficients

Berechnet den Mittelwert, die empirische Standardabweichung, die Schiefe und den Exzess für ein- und mehrkanalige reell-wertige Zeitreihen.

Der Baustein behandelt das Eingangssignal als Zeitreihe mit mehreren unabhängigen Kanälen. Für jeden Kanal werden die Momentenkoeffizienten optional bis zur Ordnung vier berechnet. Die maximale Ordnung der zu berechnenden Momente ist konfigurierbar mittels des Parameters nOrder. Eine spezifische Enumeration zur Verwendung der Momentenkoeffizienten ist ebenfalls verfügbar: E_CM_MCoefOrder. Das Ergebnis wird als Array dieser Koeffizienten mit entsprechenden Indizes weitergegeben.

Standardmäßig wird für die Berechnung von empirischer Standardabweichung, Schiefe und Exzess keine Bessel'sche Korrektur durchgeführt. In den Initialisierungsparametern kann optional die Korrektur eingeschaltet werden, siehe bPopulationEstimates. Um erwartungstreue Ergebnisse zu erhalten, ist der Parameter auf TRUE zu setzen. Der Einfluss der Bessel’schen Korrektur wird mit Vergrößerung der Stichprobenmenge kleiner. Die relative Abweichung von korrigierter und nicht korrigierter empirischer Standardabweichung lässt sich eindeutig bestimmen. Anhaltspunkte liefert folgende Tabelle:

Stichprobenumfang N

Relative Abweichung / %

10

-5,13

100

-0,501

1000

-0,05001

10000

-0,0050001

Vom Baustein ausgegeben werden: Der Stichprobenumfang N (für alle nOrder), der arithmetische Mittelwert (nOrder = 1), die empirische Standardabweichung (nOrder = 2), die Schiefe (nOrder = 3), der Exzess (nOrder = 4).

Definition der empirisch berechneten Momente

Der arithmetische Mittelwert

FB_CMA_MomentCoefficients 1:

Die empirische Standardabweichung, ohne Bessel’sche Korrektur

FB_CMA_MomentCoefficients 2:

Die empirische Standardabweichung, mit Bessel’scher Korrektur

FB_CMA_MomentCoefficients 3:

Die empirische Schiefe (ohne Bessel’sche Korrektur v‘ sowie mit Korrektur v)

FB_CMA_MomentCoefficients 4:

Der empirische Exzess (ohne Bessel’sche Korrektur E‘ sowie mit Korrektur E)

FB_CMA_MomentCoefficients 5:

FB_CMA_MomentCoefficients 6:

Der Exzess E ist demnach die Differenz von Wölbung K und dem Wert 3, dies entspricht der Wölbung der Normalverteilung. Sie beschreibt also die Bewertung der berechneten Wölbung hinsichtlich einer Normalverteilung.

Es kann sowohl in jedem Zyklus ein einzelnes Sample pro Kanal (siehe Ein- und Ausgänge, erste Tabelle) als auch in einem Zyklus mehrere Samples pro Kanal zur Stichprobenmenge hinzugefügt werden (siehe Ein- und Ausgänge, zweite Tabelle).

Weitere Anmerkungen

Die Berechnung von Standardabweichung und höheren Momenten erfordert, dass eine Mindestzahl von Stichprobenwerten vorliegt. Ist die Bessel’sche Korrektur inaktiv wird der Mittelwert sowie die Standardabweichung bereits für einen Stichprobenumfang von 1 berechnet. Für die Berechnung der Schiefe und den Exzess werden 2 Werte benötigt. Ist die Bessel’sche Korrektur hingegen aktiv entspricht der minimal benötigte Stichprobenumfang der Ordnung (Mittelwert – 1, Standardabweichung -2, Schiefe – 3, Exzess - 4). Zusätzlich darf für die Berechnung von Schiefe und Exzess die Varianz nicht Null sein.

Ergebnisse für höhere Momente können unter Umständen ungenau werden, wenn die Eingangswerte viele Größenordnungen auseinanderliegen.

Gedächtniseigenschaften

Die Stichprobenmenge N, welche zur Berechnung des aktuellen Ergebnisses genutzt wird, erhöht sich automatisch bei jedem neuen eingehenden Datensatz, d.h. der Baustein verwendet alle Eingangswerte seit dessen Instanziierung. Das Zurücksetzen der Stichprobenmenge auf Null (löschen des internen Speichers des FBs) ist über eine ResetData() Methode oder, bei Verwendung der CallEx() Methode über die Variable bResetData vorgesehen.

NaN Vorkommnis

Falls für einen Kanal noch keine ausreichende Anzahl Eingangswerte für die Berechnung eines Ergebnisses vorliegt oder die Varianz Null beträgt, wird für diesen Kanal der Wert NaN (Not A Number) nach IEEE 754 zurückgegeben. Das Vorliegen dieses Fehlerwertes kann mit der Funktion LrealIsNaN() überprüft werden. Ursache dafür kann entweder sein, dass noch nicht genug Eingangsdaten übergeben wurden oder dass für einzelne Kanäle bisher lediglich NaNs als Eingangswerte übergeben wurden. Eine Varianz von Null kann insbesondere auftreten, wenn die Zeitreihe der Werte konstant ist, etwa wenn aufgrund von Kabelbruch oder Schaltfehlern keine Sensordaten übertragen werden.

Enthält ein Satz von Eingangswerten die spezielle Konstante NaN, so wird der Statistik für diesen Kanal bei diesem Zeitschritt kein Wert hinzugefügt, d.h. sie wird als Indikator für fehlende Werte behandelt.

FB_CMA_MomentCoefficients 7:

Behandlung von NaN-Werten

Falls die oben beschriebenen Situationen, welche zu NaN-Werten führen, nicht ausgeschlossen oder sicher vernachlässigt werden können, muss das Anwendungsprogramm diese Fehlerwerte behandeln.

Verhalten bei der Verarbeitung mehrkanaliger Eingangsdaten

Bei der Verarbeitung mehrerer Kanäle (nChannels > 1) besteht die Möglichkeit unterschiedlicher Rückgabewerte je Kanal. In diesem Fall können gesonderte Rückgabewerte am Funktionsbaustein abgefragt werden. Sind die Ergebnisse von einem oder mehreren Kanälen unzulässig, jedoch nicht alle Kanäle, dann entspricht der Wert am Baustein eCM_InfRTime_AmbiguousChannelResults. Sind die Ergebnisse aller Kanäle unzulässig, dann entspricht der Wert am Baustein eCM_ErrRTime_ErrornousChannelResults.

Die Abfrage einer Liste der Rückgabewerte aller Kanäle kann über die Methode GetChannelErrors()erfolgen.

Bei der Verarbeitung mehrerer Unterkanäle (nSubChannels > 0) ist die Formatierung der Eingangs- und Ausgangsdaten gesondert zu beachten. Bestehen die Eingangsdaten aus einem mehrkanaligen Ergebnis eines vorangestellten Funktionsbausteins, muss der Wert von nChannels übernommen werden, eine weitere Konfiguration erfolgt in diesem Fall über den Parameter nSubChannels.

Beispiel: Bei der statistischen Betrachtung (z.B. durch FB_CMA_Quantiles) der Frequenzkanäle eines mehrkanaligen Spektrums (z.B. FB_CMA_MagnitudeSpectrum) ist der Wert von nChannels identisch zur Anzahl der Eingangssignale zu wählen, die Anzahl der Unterkanäle nSubChannels entspricht der Länge des Spektrums.

Ein- und Ausgänge

Die Ein- und Ausgangspuffer entsprechen folgender Definition (Shape). Die variablen Parameter sind Teil des Bausteineingangs stInitPars.

Varianten

Eingangspuffer (MultiArray input stream)
Elementtyp, Dimensionsanzahl, Dimensionsgrößen

Ausgangspuffer (MultiArray output stream)
Elementtyp, Dimensionsanzahl, Dimensionsgrößen

Standardvariante
(nSubChannels = 0)

LREAL, 1,
nChannels

LREAL, 2,
nChannels x nOrder+1

Standardvariante für mehrere Datensätze
(nSubChannels = 0)

LREAL, 2,
nChannels
 not specified*

LREAL, 2,
nChannels x nOrder+1

Mehrkanalige Variante
(nSubChannels > 0)

LREAL, 2,
nChannels x nSubChannels

LREAL, 3,
nChannels x nSubChannels x nOrder+1

Mehrkanalige Variante für mehrere Datensätze
(nSubChannels > 0)

LREAL, 3,
nChannels x nSubChannels x 
not specified*

LREAL, 3,
nChannels x nSubChannels x nOrder+1

*: Die Länge dieser Dimension kann beliebig gewählt werden und sich so der Applikation bzw. dem Ausgangspuffer des vorrausgehenden Algorithmus anpassen.

Eingangsparameter

Die Eingangsparameter dieses Bausteins repräsentieren Initialisierungsparameter und müssen bereits bei der Deklaration der FB Instanz zugewiesen werden! (Alternativ: Init()-Methode). Sie dürfen nur einmalig zugewiesen werden. Eine Änderung zur Laufzeit ist nicht möglich.

VAR_INPUT
    stInitPars       : ST_CM_MomentCoefficients_InitPars;  // init parameter
    nOwnID           : UDINT;                              // ID for this FB instance
    aDestIDs         : ARRAY[1..cCMA_MaxDest] OF UDINT;    // IDs of destinations for output
    nResultBuffers   : UDINT := 4;                         // number of MultiArrays which should be initialized for results (0 for no initialization)
    tTransferTimeout : LTIME := LTIME#500US;               // timeout checking off during access to inter-task FIFOs
END_VAR

Ausgangsparameter

VAR_OUTPUT
    bError         : BOOL;                           // TRUE if an error occurs. Reset by next method call.
    hrErrorCode    : HRESULT;                        // '< 0' = error; '> 0' = info; '0' = no error/info
    ipErrorMessage : I_TcMessage := fbErrorMessage;  // Shows detailed information about occurred errors, warnings and more.
    nCntResults    : ULINT;                          // Counts outgoing results (MultiArrays were calculated and sent to transfer tray).
END_VAR
  • bError: Der Ausgang ist TRUE, falls ein Fehler auftritt.
  • hrErrorCode: Falls ein Fehler auftritt, wird ein entsprechender Fehlercode vom Typ HRESULT ausgegeben. Mögliche Werte sind in der Liste der Fehlercodes erläutert.
  • ipErrorMessage: Beinhaltet nähere Informationen zum aktuellen Rückgabewert. Siehe hierzu den Abschnitt Fehlerbeschreibung und Information. Für diesen speziellen Schnittstellenzeiger ist intern sichergestellt, dass er immer gültig/zugewiesen ist.

Methoden

Call():

Die Methode wird jeden Zyklus aufgerufen, um den Algorithmus auf die aktuellen Eingangsdaten anzuwenden. Der Baustein wartet auf Eingangsdaten, sofern die Methode weder neue Ergebnisse noch einen Fehler angibt. Dies ist ein reguläres Verhalten im Ablauf der Analysekette.

  • Rückgabewert: Falls ein Fehler auftritt, wird ein entsprechender Fehlercode vom Typ HRESULT ausgegeben. Mögliche Werte sind in der Liste der Fehlercodes erläutert.
METHOD Call : HRESULT
VAR_OUTPUT
    bNewResult   : BOOL;       // TRUE every time when outgoing MultiArray was calculated and sent to transfer tray.
    bError       : BOOL;       // TRUE if an error occurs.
    hrErrorCode  : HRESULT;    // '< 0' = error; '> 0' = info; '0' = no error/info
END_VAR
  • bError: Der Ausgang ist TRUE, falls ein Fehler auftritt.
  • hrErrorCode: Falls ein Fehler auftritt, wird ein entsprechender Fehlercode vom Typ HRESULT ausgegeben. Mögliche Werte sind in der Liste der Fehlercodes erläutert. Dieser Ausgang ist identisch zum Rückgabewert der Methode.
FB_CMA_MomentCoefficients 8:

Falls ein Timeout eintritt oder kein MultiArray Puffer für das Ergebnis verfügbar ist, so gehen weder die Eingangsdaten noch die Ergebnisdaten verloren. Sie werden beim nächsten Aufruf weitergeleitet.

CallEx():

Die Methode wird jeden Zyklus aufgerufen um den internen Speicher aus dem Eingangssignal zu aktualisieren. Ein Ergebnis wird nur alle nAppendData Zyklen ausgegeben. Eine alternative Methode ist Call().

Der Baustein wartet auf Eingangsdaten, sofern die Methode weder neue Ergebnisse noch einen Fehler angibt. Dies ist ein reguläres Verhalten im Ablauf der Analysekette.

  • Rückgabewert: Falls ein Fehler auftritt, wird ein entsprechender Fehlercode vom Typ HRESULT ausgegeben. Mögliche Werte sind in der Liste der Fehlercodes erläutert.
METHOD CallEx : HRESULT
VAR_INPUT
    nAppendData  : UDINT;      // count of data buffers which are appended until calculation (1= calculate always)
    bResetData   : BOOL;       // automatic reset of dataset buffer after each calculation
END_VAR
VAR_OUTPUT
    bNewResult   : BOOL;        // TRUE every time when outgoing MultiArray was calculated and sent to transfer tray.
    bError       : BOOL;        // TRUE if an error occurs.
    hrErrorCode  : HRESULT;     // '< 0' = error; '> 0' = info; '0' = no error/info
END_VAR
  • nAppendData: Legt fest wie viele Eingangsdatenpuffer gesammelt werden sollen bevor eine Berechnung ausgeführt wird, denn vorzugsweise werden mehrere Datenblöcke angefügt um ein präzises Ergebnis zu erreichen.
  • bResetData: Falls gesetzt, wird der interne Datenpuffer nach Berechnung vollständig gelöscht.
  • bError: Der Ausgang ist TRUE, falls ein Fehler auftritt.
  • hrErrorCode: Falls ein Fehler auftritt, wird ein entsprechender Fehlercode vom Typ HRESULT ausgegeben. Mögliche Werte sind in der Liste der Fehlercodes erläutert. Dieser Ausgang ist identisch zum Rückgabewert der Methode.
FB_CMA_MomentCoefficients 9:

Falls ein Timeout eintritt oder kein MultiArray Puffer für das Ergebnis verfügbar ist, so gehen weder die Eingangsdaten noch die Ergebnisdaten verloren. Sie werden beim nächsten Aufruf weitergeleitet.

Init():

Üblicherweise ist diese Methode in einer Condition Monitoring Applikation nicht notwendig. Sie bietet eine Alternative zur Bausteininitialisierung. Die Init() Methode darf nur während der Initialisierungsphase der SPS aufgerufen werden. Sie kann nicht während der Laufzeit verwendet werden. Es sei auf die Verwendung von einer FB_init Methode oder dem Attribut 'call_after_init' hingewiesen (siehe TwinCAT SPS Referenz). Hiermit wird zudem die Bausteinkapselung erleichtert.

Die Eingangsparameter der Bausteininstanz dürfen nicht bei der Deklaration zugewiesen werden, falls die Initialisierung mit der Init() Methode erfolgen soll.

  • Rückgabewert: Falls ein Fehler auftritt, wird ein entsprechender Fehlercode vom Typ HRESULT ausgegeben. Mögliche Werte sind in der Liste der Fehlercodes erläutert.
METHOD Init : HRESULT
VAR_INPUT
    stInitPars    : ST_CM_MomentCoefficients_InitPars;  // init parameter
    nOwnID        : UDINT;                              // ID for this FB instance
    aDestIDs      : ARRAY[1..cCMA_MaxDest] OF UDINT;    // IDs of destinations for output
    nResultBuffers: UDINT := 4;                         // number of MultiArrays which should be initialized for results (0 for no initialization)
END_VAR

ResetData():

Die Methode löscht alle bereits hinzugefügten Datensätze, vgl. Gedächtniseigenschaft des Funktionsbausteins. Wird nach einem ResetData() die Call()-Methode wieder aufgerufen, muss entsprechend erst der interne Speicher wieder aufgefüllt werden um ein gültiges Ergebnis zu berechnen.

  • Rückgabewert: Falls ein Fehler auftritt, wird ein entsprechender Fehlercode vom Typ HRESULT ausgegeben. Mögliche Werte sind in der Liste der Fehlercodes erläutert.
METHOD ResetData : HRESULT
VAR_INPUT
END_VAR

Alternativ kann der automatische Reset in der Methode CallEx() verwendet werden.

PassInputs():

Solange eine FB_CMA_Source Instanz aufgerufen wird und somit Signaldaten zu einem Zielblock übertragen werden, müssen wie in der API SPS Referenz erläutert alle weiteren Blöcke der Analysekette zyklisch aufgerufen werden.
Manchmal ist es sinnvoll, einen Algorithmus für eine bestimmte Zeit nicht auszuführen. Beispielsweise sollten manche Algorithmen nur nach vorherigem Training bzw. Konfiguration ausgeführt werden. Zwar muss der Funktionsbaustein dennoch zyklisch aufgerufen werden, aber es ist ausreichend, wenn die am Baustein ankommenden Daten im Kommunikationsring weitergeleitet werden. Dies geschieht mittels der Methode PassInputs() anstelle der Methode Call(). Hierbei wird der Algorithmus selbst nicht aufgerufen und entsprechend kein Ergebnis berechnet sowie kein Ausgangspuffer generiert.

  • Rückgabewert: Falls ein Fehler auftritt, wird ein entsprechender Fehlercode vom Typ HRESULT ausgegeben. Mögliche Werte sind in der Liste der Fehlercodes erläutert.
METHOD PassInputs : HRESULT
VAR_INPUT
END_VAR

GetChannelErrors():

Die Methode ermöglicht die Abfrage einer Liste der kanalspezifischen Rückgabewerte bei der Verarbeitung mehrerer Kanäle (nChannels > 1). Ein Aufruf ist sinnvoll für den Fall, dass der Rückgabewert des Bausteins einem der Werte eCM_InfRTime_AmbiguousChannelResults oder eCM_ErrRTime_ErrornousChannelResults entspricht.

  • Rückgabewert: Information über den Ausleseprozess der Liste der Fehlercodes. Der Wert wird auf TRUE gesetzt, falls die Abfrage erfolgreich war, FALSE anderenfalls.

    METHOD GetChannelErrors : BOOL
VAR_IN_OUT
    aChannelErrors : ARRAY[*] OF HRESULT;
END_VAR
  • aChannelErrors: Fehlerliste vom Typ HRESULT der Länge nChannels.

Ähnliche Funktionsbausteine

Der Baustein FB_CMA_EmpiricalMean berechnet den empirischen Mittelwert von Eingangswerten.

Der Baustein FB_CMA_EmpiricalStandardDeviation berechnet die empirische Standardabweichung von Eingangswerten.

Der Baustein FB_CMA_EmpiricalSkew berechnet die empirische Schiefe von Eingangswerten.

Der Baustein FB_CMA_EmpiricalExcess berechnet den empirischen Exzess von Eingangswerten.

Der Baustein FB_CMA_HistArray berechnet die Histogramme von Verteilungen von Eingangswerten.

Der Baustein FB_CMA_Quantiles berechnet die Quantile einer empirischen Verteilung, die ebenfalls erlauben die Häufigkeit von Ausreißern zu beurteilen.

Der Baustein FB_CMA_CrestFactor berechnet ein zur Kurtosis alternatives Maß für die Spitzenhaltigkeit (Crest Faktor ) eines Signals, das allerdings empfindlicher gegenüber Ausreißern ist.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4022.25

PC or CX (x86, x64)

Tc3_CM, Tc3_CM_Base

FB_CMA_MomentCoefficients 10:

Eingeschränkter Funktionsumfang bereits mit CM 3.1 verfügbar. Siehe Abschnitt Kompatibilität.