FB_CMA_Sink

Dieser Funktionsbaustein schreibt Daten aus einem MultiArray Puffer in einen externen SPS Datenpuffer.

Er erhält alle MultiArrays, die an die angegebene Analyse-ID übergeben werden. Je nach Analysekette können die Ausgangsergebnisse NaN Werte enthalten.

Hinweis

Exception

Vergleiche mit NaN (Not a Number) können eine Exception verursachen, die zu einem Ausführungsstopp führt und möglicherweise einen Maschinenschaden verursachen. Es wird strengstens empfohlen, das Ergebnis für NaN zu überprüfen, bevor es verarbeitet wird. Oder wenn NaNs in der Anwendung abgearbeitet werden sollen, müssen die Floating Point Exceptions für diese Task deaktiviert werden.

Ein- und Ausgänge

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
    nOwnID           : UDINT;                // ID for this FB instance 
    tTransferTimeout : LTIME := LTIME#40US;  // 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.

Eigenschaften

Folgende Eigenschaften geben Informationen zu den zur letzten Ergebnisausgabe zugehörigen Eingangswerten der Analysekette. Siehe hierzu auch die mögliche Parametrierung am FB_CMA_Source.

Name

Typ

Zugriff

Beschreibung

nSourceTimestampNewest

ULINT
[T_DCTIME64; 1ns steps since 1.1.2000]

Get

Zugehörig zur letzten Ergebnisausgabe, gibt dies den Zeitstempel des neuesten Eingangswertes der Analysekette aus.
Es handelt sich um die Obergrenze (exklusive) der Zeitspanne.

nSourceTimestampOldest

ULINT
[T_DCTIME64; 1ns steps since 1.1.2000]

Get

Zugehörig zur letzten Ergebnisausgabe, gibt dies den Zeitstempel des ältesten Eingangswertes der Analysekette aus.
Es handelt sich um die Untergrenze (inklusive) der Zeitspanne.

nSourceValues

ULINT

Get

Zugehörig zur letzten Ergebnisausgabe, gibt dies die Anzahl der Eingangswerte (Signalwerte) der Analysekette aus.

tSourceTimespan

LTIME

Get

Zugehörig zur letzten Ergebnisausgabe, gibt dies die Zeitspanne der Eingangswerte (Signalwerte) der Analysekette aus.
tSourceTimespan := nSourceValues * tSamplePeriod;

Methoden

Output1D():

Schreibt Daten von einem MultiArray in einen externen eindimensionalen Datenpuffer. 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 Output1D : HRESULT
VAR_INPUT
    pDataOut      : POINTER TO BYTE;      // address of data buffer
    nDataOutSize  : UDINT;                // size of data buffer in bytes
    eElementType  : E_MA_ElementTypeCode;
    nWorkDim      : UDINT:=0;             // It designates the dimension in the MultiArray being processed.
    nElements     : UDINT:=0;             // optional: default:0->full  copy; It designates the number of elements to be copied out of the MultiArray.
    pStartIndex   : POINTER TO UDINT;    (* optional: default:0->internally handled as [0,0,..]; 
                                          It designates the index of the first element to be copied out of the MultiArray.
                                          If allocated it must point to a onedimensional array of UDINT with so many elements as dimensions of the MultiArray. *)
    nOptionPars   : DWORD;                // option mask 
END_VAR
VAR_OUTPUT
    bNewResult    : BOOL;                 // TRUE every time when data was written from MultiArray to data buffer.
    bError        : BOOL;                 // TRUE if an error occurs.
    hrErrorCode   : HRESULT;              // '< 0' = error; '> 0' = info; '0' = no error/info
END_VAR
  • eElementType: Dieser Eingang ist vom Typ E_MA_ElementTypeCode. Der Elementtyp des gegebenen MultiArray Puffers muss mit dem Elementtyp des angegebenen externen Datenpuffers übereinstimmen.
  • nWorkDim: Gibt die Dimension des zu verarbeitenden MultiArrays an. Diesen Daten werden in den angegebenen externen Datenpuffer kopiert. Im Allgemeinen ist das MultiArray auch eindimensional und nWorkDim:=0, aber das MultiArray kann auch zusätzliche Dimensionen haben, die dann aber nicht kopiert werden dürfen.
  • nElements: Gibt die Anzahl Elemente an, die aus dem MultiArray zu kopieren sind. nElements:=0 ist einzustellen, um alles zu kopieren. Wenn Sie allerdings nur an einer bestimmten Bandbreite Ihres Ergebnisses interessiert sind, dann ist es nicht notwendig, die gesamte Datenmenge zu kopieren. Dies verringert ebenfalls die notwendige Größe Ihres angegebenen externen Datenpuffers.
  • pStartIndex: Dies ist ein optionaler Parameter, der nützlich ist, wenn das MultiArray mehr als eine Dimension hat oder wenn nicht alle Elemente kopiert werden sollen. Gibt den Index des ersten Elements an, das aus dem MultiArray zu kopieren ist. Wenn zugewiesen, dann muss es auf ein eindimensionales Array von UDINT zeigen, das so viele Elemente hat, wie das MultiArray Dimensionen hat.
  • bNewResult: Dieser Ausgang ist jedes Mal TRUE, wenn ein neues Ergebnis erfolgreich in den Datenpuffer geschrieben wurde.
  • bError: Dieser Ausgang ist TRUE, wenn ein Fehler auftritt.
  • hrErrorCode: Tritt ein Fehler auf, dann wird ein beschreibender Fehlercode vom Typ HRESULT angezeigt. Mögliche Werte sind in der Liste der Fehlercodes definiert. Dieser Ausgang ist gleich dem Rückgabewert der Methode.
    Tipp: Wenn ein Timeout auftritt, gehen die Eingangsdaten nicht verloren. Sie werden beim nächsten Aufruf verarbeitet.

Output1DStd():

Schreibt Daten von einem MultiArray in einen externen eindimensionalen Datenpuffer. 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.

Diese Methode verwendet Standardwerte für die Parameter nWorkDim:=0, nElements:=0 und pStartIndex:=0.

  • 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 Output1DStd : HRESULT
VAR_INPUT
    pDataOut      : POINTER TO BYTE;      // address of data buffer
    nDataOutSize  : UDINT;                // size of data buffer in bytes
    eElementType  : E_MA_ElementTypeCode;
    nOptionPars   : DWORD;                // option mask 
END_VAR
VAR_OUTPUT
    bNewResult    : BOOL;                 // TRUE every time when data was written from MultiArray to data buffer.
    bError        : BOOL;                 // TRUE if an error occurs.
    hrErrorCode   : HRESULT;              // '< 0' = error; '> 0' = info; '0' = no error/info
END_VAR
  • eElementType: Dieser Eingang ist vom Typ E_MA_ElementTypeCode. Der Elementtyp des gegebenen MultiArray Puffers muss mit dem Elementtyp des angegebenen externen Datenpuffers übereinstimmen.
  • bNewResult: Dieser Ausgang ist jedes Mal TRUE, wenn ein neues Ergebnis erfolgreich in den Datenpuffer geschrieben wurde.
  • bError: Dieser Ausgang ist TRUE, wenn ein Fehler auftritt.
  • hrErrorCode: Tritt ein Fehler auf, dann wird ein beschreibender Fehlercode vom Typ HRESULT angezeigt. Mögliche Werte sind in der Liste der Fehlercodes definiert. Dieser Ausgang ist gleich dem Rückgabewert der Methode.
    Tipp: Wenn ein Timeout auftritt, gehen die Eingangsdaten nicht verloren. Sie werden beim nächsten Aufruf verarbeitet.

Output2D():

Schreibt Daten von einem MultiArray in einen externen zweidimensionalen Datenpuffer. Wird die Methode weder mit einem Hinweis auf neues Ergebnis, noch mit einem Fehler zurückgegeben, dann wartet das Objekt auf Eingangsdaten. Das ist ein reguläres Verhalten in 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 Output2D : HRESULT
VAR_INPUT
    pDataOut      : POINTER TO BYTE;  // address of data buffer
    nDataOutSize  : UDINT;            // size of data buffer in bytes
    eElementType  : E_MA_ElementTypeCode;
    nWorkDim0     : UDINT:=0;         // It designates the first dimension in the MultiArray being processed.
    nWorkDim1     : UDINT:=1;         // It designates the second dimension in the MultiArray being processed.
    nElementsDim0 : UDINT:=0;         // optional: default:0->full copy; It designates the number of elements to be copied out of WorkDim0 of the MultiArray.
    nElementsDim1 : UDINT:=0;         // optional: default:0->full copy; It designates the number of elements to be copied out of WorkDim1 of the MultiArray.
    pStartIndex   : POINTER TO UDINT; (* optional: default:0->internally handled as [0,0,..]; 
                                      It designates the index of the first element to be copied out of the MultiArray.
                                      If allocated it must point to a onedimensional array of UDINT with so many elements as dimensions of the MultiArray. *)
    nOptionPars   : DWORD;           // option mask
END_VAR
VAR_OUTPUT
    bNewResult    : BOOL;            // TRUE every time when data was written from MultiArray to data buffer.
    bError        : BOOL;            // TRUE if an error occurs.
    hrErrorCode   : HRESULT;         // '< 0' = error; '> 0' = info; '0' = no error/info
END_VAR
  • pDataOut: Adresse des externen zweidimensionalen Datenpuffers.
  • eElementType: Dieser Eingang ist vom Typ E_MA_ElementTypeCode. Der Elementtyp des gegebenen MultiArray Puffers muss mit dem Elementtyp des angegebenen externen Datenpuffers übereinstimmen.
  • nWorkDim0: Gibt die erste Dimension des zu verarbeitenden MultiArray an. Diesen Daten werden in die erste Dimension des angegebenen externen Datenpuffers kopiert. Im Allgemeinen ist das MultiArray auch zweidimensional und nWorkDim0:=0, aber das MultiArray kann auch zusätzliche Dimensionen haben, die dann aber nicht kopiert werden dürfen.
    Z.B.: Wenn die zweite Dimension in den ersten Index des Zieldatenpuffers kopiert werden soll, dann setzen Sie nWorkDim0:=1.
  • nWorkDim1: Gibt die zweite Dimension des zu verarbeitenden MultiArray an. Diesen Daten werden in die zweite Dimension des angegebenen externen Datenpuffers kopiert. Im Allgemeinen ist das MultiArray auch zweidimensional und nWorkDim1:=1, aber das MultiArray kann auch zusätzliche Dimensionen haben, die dann aber nicht kopiert werden dürfen.
    Z.B.: Wenn die erste Dimension in den zweiten Index des Zieldatenpuffers kopiert werden soll, dann setzen Sie nWorkDim1:=0.
  • nElementsDim0: Gibt die Anzahl Elemente an, die aus nWorkDim0 des MultiArrays zu kopieren sind. nElementsDim0:=0 ist einzustellen, um alles zu kopieren. Wenn Sie allerdings nur an einer bestimmten Bandbreite Ihres Ergebnisses interessiert sind, dann ist es nicht notwendig, die gesamte Datenmenge zu kopieren. Dies verringert ebenfalls die notwendige Größe Ihres angegebenen externen Datenpuffers.
  • nElementsDim1: Gibt die Anzahl Elemente an, die aus nWorkDim0 des MultiArrays zu kopieren sind. nElementsDim1:=0 ist einzustellen, um alles zu kopieren. Wenn Sie allerdings nur an einer bestimmten Bandbreite Ihres Ergebnisses interessiert sind, dann ist es nicht notwendig, die gesamte Datenmenge zu kopieren. Dies verringert ebenfalls die notwendige Größe Ihres angegebenen externen Datenpuffers.
  • pStartIndex: Dies ist ein optionaler Parameter, der nützlich ist, wenn das MultiArray mehr als zwei Dimensionen hat oder wenn nicht alle Elemente kopiert werden sollen. Gibt den Index des ersten Elements an, das aus dem MultiArray zu kopieren ist. Wenn zugewiesen, dann muss es auf ein eindimensionales Array von UDINT zeigen, das so viele Elemente hat, wie das MultiArray Dimensionen hat.
  • bNewResult: Dieser Ausgang ist jedes Mal TRUE, wenn ein neues Ergebnis erfolgreich in den Datenpuffer geschrieben wurde.
  • bError: Dieser Ausgang ist TRUE, wenn ein Fehler auftritt.
  • hrErrorCode: Tritt ein Fehler auf, dann wird ein beschreibender Fehlercode vom Typ HRESULT angezeigt. Mögliche Werte sind in der Liste der Fehlercodes definiert. Dieser Ausgang ist gleich dem Rückgabewert der Methode.
    Tipp: Wenn ein Timeout auftritt, gehen die Eingangsdaten nicht verloren. Sie werden beim nächsten Aufruf verarbeitet.

Output2DStd():

Schreibt Daten von einem MultiArray in einen externen zweidimensionalen Datenpuffer. Wird die Methode weder mit einem Hinweis auf neues Ergebnis, noch mit einem Fehler zurückgegeben, dann wartet das Objekt auf Eingangsdaten. Das ist ein reguläres Verhalten in der Analysekette.

Diese Methode verwendet Standardwerte für die Parameter nWorkDim0:=0, nWorkDim1:=1, nElementsDim0:=0, nElementsDim1:=0 und pStartIndex:=0.

  • 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 Output2DStd : HRESULT
VAR_INPUT
    pDataOut      : POINTER TO BYTE;  // address of data buffer
    nDataOutSize  : UDINT;            // size of data buffer in bytes
    eElementType  : E_MA_ElementTypeCode;
    nOptionPars   : DWORD;           // option mask
END_VAR
VAR_OUTPUT
    bNewResult    : BOOL;            // TRUE every time when data was written from MultiArray to data buffer.
    bError        : BOOL;            // TRUE if an error occurs.
    hrErrorCode   : HRESULT;         // '< 0' = error; '> 0' = info; '0' = no error/info
END_VAR
  • pDataOut: Adresse des externen zweidimensionalen Datenpuffers.
  • eElementType: Dieser Eingang ist vom Typ E_MA_ElementTypeCode. Der Elementtyp des gegebenen MultiArray Puffers muss mit dem Elementtyp des angegebenen externen Datenpuffers übereinstimmen.
  • bNewResult: Dieser Ausgang ist jedes Mal TRUE, wenn ein neues Ergebnis erfolgreich in den Datenpuffer geschrieben wurde.
  • bError: Dieser Ausgang ist TRUE, wenn ein Fehler auftritt.
  • hrErrorCode: Tritt ein Fehler auf, dann wird ein beschreibender Fehlercode vom Typ HRESULT angezeigt. Mögliche Werte sind in der Liste der Fehlercodes definiert. Dieser Ausgang ist gleich dem Rückgabewert der Methode.
    Tipp: Wenn ein Timeout auftritt, gehen die Eingangsdaten nicht verloren. Sie werden beim nächsten Aufruf verarbeitet.

Output3D():

Schreibt Daten von einem MultiArray in einen externen dreidimensionalen Datenpuffer. Wird die Methode weder mit einem Hinweis auf neues Ergebnis, noch mit einem Fehler zurückgegeben, dann wartet das Objekt auf Eingangsdaten. Das ist ein reguläres Verhalten in 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 Output3D : HRESULT
VAR_INPUT
    pDataOut      : POINTER TO BYTE;  // address of data buffer
    nDataOutSize  : UDINT;            // size of data buffer in bytes
    eElementType  : E_MA_ElementTypeCode;
    nWorkDim0     : UDINT:=0;         // It designates the first dimension in the MultiArray being processed.
    nWorkDim1     : UDINT:=1;         // It designates the second dimension in the MultiArray being processed.
    nWorkDim2     : UDINT:=1;         // It designates the third dimension in the MultiArray being processed.
    nElementsDim0 : UDINT:=0;         // optional: default:0->full copy; It designates the number of elements to be copied out of WorkDim0 of the MultiArray.
    nElementsDim1 : UDINT:=0;         // optional: default:0->full copy; It designates the number of elements to be copied out of WorkDim1 of the MultiArray.
    nElementsDim2 : UDINT:=0;         // optional: default:0->full copy; It designates the number of elements to be copied out of WorkDim2 of the MultiArray.
    pStartIndex   : POINTER TO UDINT; (* optional: default:0->internally handled as [0,0,..]; 
                                      It designates the index of the first element to be copied out of the MultiArray.
                                      If allocated it must point to a onedimensional array of UDINT with so many elements as dimensions of the MultiArray. *)
    nOptionPars   : DWORD;           // option mask
END_VAR
VAR_OUTPUT
    bNewResult    : BOOL;            // TRUE every time when data was written from MultiArray to data buffer.
    bError        : BOOL;            // TRUE if an error occurs.
    hrErrorCode   : HRESULT;         // '< 0' = error; '> 0' = info; '0' = no error/info
END_VAR
  • pDataOut: Adresse des externen zweidimensionalen Datenpuffers.
  • eElementType: Dieser Eingang ist vom Typ E_MA_ElementTypeCode. Der Elementtyp des gegebenen MultiArray Puffers muss mit dem Elementtyp des angegebenen externen Datenpuffers übereinstimmen.
  • nWorkDim0: Gibt die erste Dimension des zu verarbeitenden MultiArray an. Diese Daten werden in die erste Dimension des angegebenen externen Datenpuffers kopiert. Im Allgemeinen ist das MultiArray auch zweidimensional und nWorkDim0:=0, aber das MultiArray kann auch zusätzliche Dimensionen haben, die dann aber nicht kopiert werden dürfen.
    Z.B.: Wenn die zweite Dimension in den ersten Index des Zieldatenpuffers kopiert werden soll, dann setzen Sie nWorkDim0:=1.
  • nWorkDim1: Gibt die zweite Dimension des zu verarbeitenden MultiArray an. Diese Daten werden in die zweite Dimension des angegebenen externen Datenpuffers kopiert. Im Allgemeinen ist das MultiArray auch zweidimensional und nWorkDim1:=1, aber das MultiArray kann auch zusätzliche Dimensionen haben, die dann aber nicht kopiert werden dürfen.
    Z.B.: Wenn die erste Dimension in den zweiten Index des Zieldatenpuffers kopiert werden soll, dann setzen Sie nWorkDim1:=0.
  • nWorkDim2: Gibt die dritte Dimension des zu verarbeitenden MultiArray an. Diese Daten werden in die dritte Dimension des angegebenen externen Datenpuffers kopiert. Im Allgemeinen ist das MultiArray auch dreidimensional und nWorkDim2:=2, aber das MultiArray kann auch zusätzliche Dimensionen haben, die dann aber nicht kopiert werden dürfen.
    Z.B.: Wenn die erste Dimension in den zweiten Index des Zieldatenpuffers kopiert werden soll, dann setzen Sie nWorkDim2:=0.
  • nElementsDim0: Gibt die Anzahl Elemente an, die aus nWorkDim0 des MultiArrays zu kopieren sind. nElementsDim0:=0 ist einzustellen, um alles zu kopieren. Wenn Sie allerdings nur an einer bestimmten Bandbreite Ihres Ergebnisses interessiert sind, dann ist es nicht notwendig, die gesamte Datenmenge zu kopieren. Dies verringert ebenfalls die notwendige Größe Ihres angegebenen externen Datenpuffers.
  • nElementsDim1: Gibt die Anzahl Elemente an, die aus nWorkDim1 des MultiArrays zu kopieren sind. nElementsDim1:=0 ist einzustellen, um alles zu kopieren. Wenn Sie allerdings nur an einer bestimmten Bandbreite Ihres Ergebnisses interessiert sind, dann ist es nicht notwendig, die gesamte Datenmenge zu kopieren. Dies verringert ebenfalls die notwendige Größe Ihres angegebenen externen Datenpuffers.
  • nElementsDim2: Gibt die Anzahl Elemente an, die aus nWorkDim2 des MultiArrays zu kopieren sind. nElementsDim2:=0 ist einzustellen, um alles zu kopieren. Wenn Sie allerdings nur an einer bestimmten Bandbreite Ihres Ergebnisses interessiert sind, dann ist es nicht notwendig, die gesamte Datenmenge zu kopieren. Dies verringert ebenfalls die notwendige Größe Ihres angegebenen externen Datenpuffers.
  • pStartIndex: Dies ist ein optionaler Parameter, der nützlich ist, wenn das MultiArray mehr als zwei Dimensionen hat oder wenn nicht alle Elemente kopiert werden sollen. Gibt den Index des ersten Elements an, das aus dem MultiArray zu kopieren ist. Wenn zugewiesen, dann muss es auf ein eindimensionales Array von UDINT zeigen, das so viele Elemente hat, wie das MultiArray Dimensionen hat.
  • bNewResult: Dieser Ausgang ist jedes Mal TRUE, wenn ein neues Ergebnis erfolgreich in den Datenpuffer geschrieben wurde.
  • bError: Dieser Ausgang ist TRUE, wenn ein Fehler auftritt.
  • hrErrorCode: Tritt ein Fehler auf, dann wird ein beschreibender Fehlercode vom Typ HRESULT angezeigt. Mögliche Werte sind in der Liste der Fehlercodes definiert. Dieser Ausgang ist gleich dem Rückgabewert der Methode.
    Tipp: Wenn ein Timeout auftritt, gehen die Eingangsdaten nicht verloren. Sie werden beim nächsten Aufruf verarbeitet.

Output3DStd():

Schreibt Daten von einem MultiArray in einen externen dreidimensionalen Datenpuffer. Wird die Methode weder mit einem Hinweis auf neues Ergebnis, noch mit einem Fehler zurückgegeben, dann wartet das Objekt auf Eingangsdaten. Das ist ein reguläres Verhalten in der Analysekette.

Diese Methode verwendet Standardwerte für die Parameter nWorkDim0:=0, nWorkDim1:=1, nWorkDim2:=2, nElementsDim0:=0, nElementsDim1:=0, nElementsDim2:=0 und pStartIndex:=0.

  • 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 Output3DStd : HRESULT
VAR_INPUT
    pDataOut      : POINTER TO BYTE;  // address of data buffer
    nDataOutSize  : UDINT;            // size of data buffer in bytes
    eElementType  : E_MA_ElementTypeCode;
    nOptionPars   : DWORD;           // option mask
END_VAR
VAR_OUTPUT
    bNewResult    : BOOL;            // TRUE every time when data was written from MultiArray to data buffer.
    bError        : BOOL;            // TRUE if an error occurs.
    hrErrorCode   : HRESULT;         // '< 0' = error; '> 0' = info; '0' = no error/info
END_VAR
  • pDataOut: Adresse des externen zweidimensionalen Datenpuffers.
  • eElementType: Dieser Eingang ist vom Typ E_MA_ElementTypeCode. Der Elementtyp des gegebenen MultiArray Puffers muss mit dem Elementtyp des angegebenen externen Datenpuffers übereinstimmen.
  • bNewResult: Dieser Ausgang ist jedes Mal TRUE, wenn ein neues Ergebnis erfolgreich in den Datenpuffer geschrieben wurde.
  • bError: Dieser Ausgang ist TRUE, wenn ein Fehler auftritt.
  • hrErrorCode: Tritt ein Fehler auf, dann wird ein beschreibender Fehlercode vom Typ HRESULT angezeigt. Mögliche Werte sind in der Liste der Fehlercodes definiert. Dieser Ausgang ist gleich dem Rückgabewert der Methode.
    Tipp: Wenn ein Timeout auftritt, gehen die Eingangsdaten nicht verloren. Sie werden beim nächsten Aufruf verarbeitet.

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
    nOwnID: UDINT; // ID for this FB instance 
END_VAR

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

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4022.25

PC or CX (x86, x64)

Tc3_CM, Tc3_CM_Base, Tc3_MultiArray