FB_CMA_SourcePaired
Dieser Funktionsbaustein schreibt Daten aus externen SPS Datenpuffern in ein Paar von MultiArray Puffern.
Er häuft ununterbrochen Eingangsdaten an, bis die Größen der MultiArrays erreicht ist. Wenn diese komplett gefüllt sind, wird es an die Zielanalyse-ID übergeben.
Synchronisation der Daten Die Zuordnung der Daten des ersten Streams zum zweiten ist direkt, d.h. der erste Wert aus Stream A steht in Beziehung zum ersten Wert aus Stream B. Messdaten, z.B. Positions- und Vibrationswerte müssen vorab synchronisiert werden. |
Eine Instanz von FB_CMA_Source darf nicht als Ziel für irgendeinen anderen Analysebaustein verwendet werden. Sie bietet ausschließlich Quellfunktionalitäten.
Eine Zeitreihensammlung kann im Falle eines Fehlerauftritts unterbrochen werden. Verlorene Signaldaten können zu einem unerwarteten Ergebnis der Analysekette führen, je nach Konfiguration der Algorithmen.
Ein- und Ausgänge
Die Ausgangspuffer entsprechen folgender Definition (Shape). Die variablen Parameter sind Teil des Bausteineingangs stInitPars
.
MultiArray im | Elementtyp | Dimensionen | Dimensionsgrößen |
---|---|---|---|
output stream A | eTypeCode |
|
|
output stream B | eTypeCode |
|
|
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
stInitParsA : ST_MA_MultiArray_InitPars; // init parameters for first MultiArray
stInitParsB : ST_MA_MultiArray_InitPars; // init parameters for second MultiArray
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#40US; // timeout checking off during access to inter-task FIFOs
END_VAR
stInitParsA
: Funktionsbausteinspezifische Struktur der Initialisierungsparameter vom Typ ST_MA_MultiArray_InitPars. MultiArray Puffer werden für die Ergebnispuffer spezifiziert. Diese Parameter müssen mit der obigen Definition der Ausgangspuffer übereinstimmen.stInitParsB
: Funktionsbausteinspezifische Struktur der Initialisierungsparameter vom Typ ST_MA_MultiArray_InitPars. MultiArray Puffer werden für die Ergebnispuffer spezifiziert. Diese Parameter müssen mit der obigen Definition der Ausgangspuffer übereinstimmen.nOwnID
: Identifiziert die Bausteininstanz mit einer eindeutigen ID. Diese muss immer größer als null sein. Eine bewährte Vorgehensweise ist die Definition einer Enumeration für diesen Zweck.aDestIDs
: Legt die Ziele durch Angabe derer IDs fest, zu denen die Ergebnisse weitergeleitet werden sollen. Die Definition des Ausgangspuffers (wie oben beschrieben) muss mit der Definition des Eingangspuffers jedes gewählten Zieles übereinstimmen.nResultBuffers
: Der Funktionsbaustein initialisiert einen Transfer Tray Stream mit der gegebenen Anzahl an MultiArray Puffern. Der Defaultwert ist vier.tTransferTimeout
: Einstellung des synchronen Timeout für interne MultiArray Weiterleitungen. Siehe Kapitel Parallelverarbeitung.
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 istTRUE
, falls ein Fehler auftritt. -
hrErrorCode
: Falls ein Fehler auftritt, wird ein entsprechender Fehlercode vom TypHRESULT
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 können optional verwendet werden, um den Zeitstempel der Eingangswerte zugehörig zum nächsten Input-Aufruf zu spezifizieren. Werden die Eigenschaften nicht gesetzt, so wird intern automatisch ein aktueller Zeitstempel und eine typische Zeitdifferenz zwischen zwei Eingangswerten ermittelt.
Am FB_CMA_Sink werden Zeitspanne und Zeitstempel der Eingangswerte der Analysekette zugeordnet zum Ergebnis der Analyse bereitgestellt.
Name | Typ | Zugriff | Beschreibung |
---|---|---|---|
nTimestamp | ULINT | Set | Angabe des Zeitstempels zugehörig zum ältesten Wert, welcher mit dem nächsten Input-Aufruf übergeben wird. |
tSamplePeriod | LTIME | Set | Angabe der Zeitdifferenz zwischen zwei Eingangswerten. |
Methoden
Input1D():
Schreibt Daten von externen eindimensionalen Datenpuffern in ein Paar von MultiArrays. Jedes Mal wenn neue Eingangsabtastungen vorliegen, muss diese Methode aufgerufen werden, normalerweise zyklisch.
- 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 Input1D : HRESULT
VAR_INPUT
pDataInA : POINTER TO BYTE; // address of data buffer (e.g. oversampling data) as one-dimensional array
nDataInSizeA : UDINT; // size of data buffer in bytes
pDataInB : POINTER TO BYTE; // address of data buffer (e.g. oversampling data) as one-dimensional array
nDataInSizeB : UDINT; // size of data buffer in bytes
eElementTypeA : E_MA_ElementTypeCode; // valid types: LREAL, INT32, UINT64, LCOMPLEX
eElementTypeB : E_MA_ElementTypeCode; // valid types: LREAL, INT32, UINT64, LCOMPLEX
nWorkDimA : UDINT; // It designates the dimension in the first multi array being processed.
nWorkDimB : UDINT; // It designates the dimension in the second multi array being processed.
pStartIndexA : POINTER TO UDINT; (* optional: default:0->internally handled; It designates the index of the first MultiArray element to be copied.
If allocated it must point to a onedimensional array of UDINT with so many elements as dimensions of the MultiArray.
Upon successful completion of the copy, corresponding StartIndex is incremented by the number of copied elements. *)
pStartIndexB : POINTER TO UDINT; // see pStartIndexA
nOptionPars : DWORD; // option mask
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
pDataInA
,pDataInB
: Der Datenpuffer muss die Daten von allen Kanälen enthalten.eElementTypeA
,eElementTypeB
: Dieser Eingang ist vom Typ E_MA_ElementTypeCode. Der Elementtyp des spezifizierten MultiArray Puffers (Initialisierungsparameter) muss mit dem Elementtyp des angegebenen externen Datenpuffers übereinstimmen.nWorkDimA
,nWorkDimB
: Definiert die Dimension, in welcher die Daten angesammelt werden. Im Allgemeinen ist das MultiArray auch eindimensional undnWorkDimA := 0
, bzw.nWorkDimB := 0
aber das MultiArray kann auch zusätzliche Dimensionen haben, die dann jedoch nicht verarbeitet werden dürfen.pStartIndexA
,pStartIndexB
: Dies ist ein optionaler Parameter, der dann nützlich ist, wenn das MultiArray mehr als eine Dimension erhalten hat. Gibt den Index des ersten zu kopierenden MultiArray Elements an. Wenn zugewiesen, dann muss es auf ein eindimensionales Array vonUDINT
zeigen, das so viele Elemente hat, wie das MultiArray Dimensionen hat. Im Anschluss an einen erfolgreichen Kopiervorgang wird der entsprechende Start-Index um die Anzahl der kopierten Elemente inkrementiert.bError
: Dieser Ausgang istTRUE
, 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.
Input1DStd():
Schreibt Daten von externen eindimensionalen Datenpuffern in ein Paar von MultiArrays. Jedes Mal wenn neue Eingangsabtastungen vorliegen, muss diese Methode aufgerufen werden, normalerweise zyklisch.
Diese Methode verwendet Standardwerte für die Parameter nWorkDimA := 0
, nWorkDimB := 0
und pStartIndexA := 0
, pStartIndexB := 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 Input1DStd : HRESULT
VAR_INPUT
pDataInA : POINTER TO BYTE; // address of data buffer (e.g. oversampling data) as one-dimensional array
nDataInSizeA : UDINT; // size of data buffer in bytes
pDataInB : POINTER TO BYTE; // address of data buffer (e.g. oversampling data) as one-dimensional array
nDataInSizeB : UDINT; // size of data buffer in bytes
eElementTypeA : E_MA_ElementTypeCode; // valid types: LREAL, INT32, UINT64, LCOMPLEX
eElementTypeB : E_MA_ElementTypeCode; // valid types: LREAL, INT32, UINT64, LCOMPLEX
nOptionPars : DWORD; // option mask
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
pDataInA
,pDataInB
: Der Datenpuffer muss die Daten von allen Kanälen enthalten.eElementTypeA
,eElementTypeB
: Dieser Eingang ist vom Typ E_MA_ElementTypeCode. Der Elementtyp des spezifizierten MultiArray Puffers (Initialisierungsparameter) muss mit dem Elementtyp des angegebenen externen Datenpuffers übereinstimmen.bError
: Dieser Ausgang istTRUE
, 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.
Input2D():
Schreibt Daten von externen zweidimensionalen Datenpuffern in ein Paar von MultiArrays. Jedes Mal wenn neue Eingangsabtastungen vorliegen, muss diese Methode aufgerufen werden, normalerweise zyklisch.
- 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 Input2D : HRESULT
VAR_INPUT
pDataInA : POINTER TO BYTE; // address of data buffer (e.g. oversampling data) as one-dimensional array
nDataInSizeA : UDINT; // size of data buffer in bytes
pDataInB : POINTER TO BYTE; // address of data buffer (e.g. oversampling data) as one-dimensional array
nDataInSizeB : UDINT; // size of data buffer in bytes
eElementTypeA : E_MA_ElementTypeCode; // valid types: LREAL, INT32, UINT64, LCOMPLEX
eElementTypeB : E_MA_ElementTypeCode; // valid types: LREAL, INT32, UINT64, LCOMPLEX
nWorkDimA0 : UDINT; // It designates the first dimension in the first multi array being processed.
nWorkDimA1 : UDINT; // It designates the second dimension in the first multi array being processed.
nWorkDimB0 : UDINT; // It designates the first dimension in the second multi array being processed.
nWorkDimB1 : UDINT; // It designates the second dimension in the second multi array being processed.
pStartIndexA : POINTER TO UDINT; (* optional: default:0->internally handled; It designates the index of the first MultiArray element to be copied.
If allocated it must point to a onedimensional array of UDINT with so many elements as dimensions of the MultiArray.
Upon successful completion of the copy, corresponding StartIndex is incremented by the number of copied elements. *)
pStartIndexB : POINTER TO UDINT; // see pStartIndexA
nOptionPars : DWORD; // option mask
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
pDataInA
,pDataInB
: Der Datenpuffer muss die Daten von allen Kanälen enthalten.eElementTypeA
,eElementTypeB
: Dieser Eingang ist vom Typ E_MA_ElementTypeCode. Der Elementtyp des spezifizierten MultiArray Puffers (Initialisierungsparameter) muss mit dem Elementtyp des angegebenen externen Datenpuffers übereinstimmen.nWorkDimA0
,nWorkDimB0
: Definiert die Dimension, welche der Anzahl Kanäle entspricht. Im Allgemeinen ist das MultiArray auch zweidimensional undnWorkDimA0 := 0
, bzw.nWorkDimB0 := 0,
aber das MultiArray kann auch zusätzliche Dimensionen haben, die dann jedoch nicht verarbeitet werden dürfen.
Z.B.: Wenn der erste Index des angegebenen Datenpuffers für die Kanäle steht, aber die zweite Dimension des MultiArray die Kanäle aufzählt, dann setzen SienWorkDimA0 := 1
, bzw.nWorkDimB0 := 1
.nWorkDimA1
,nWorkDimB1
: Definiert die Dimension, in welcher die Daten angesammelt werden. Im Allgemeinen ist das MultiArray auch zweidimensional undnWorkDimA1 := 1
, bzw.nWorkDimB1 := 1
, aber das MultiArray kann auch zusätzliche Dimensionen haben, die dann aber nicht verarbeitet werden dürfen.
Z.B.: Wenn der zweite Index des angegebenen Datenpuffers für die gesammelten Daten steht, aber die erste Dimension des MultiArray die Daten sammelt, dann setzen SienWorkDimB1 := 0
, bzw.nWorkDimB1 := 0
.pStartIndexA
,pStartIndexB
: Dies ist ein optionaler Parameter, der dann nützlich ist, wenn das MultiArray mehr als eine Dimension erhalten hat. Gibt den Index des ersten zu kopierenden MultiArray Elements an. Wenn zugewiesen, dann muss es auf ein eindimensionales Array vonUDINT
zeigen, das so viele Elemente hat, wie das MultiArray Dimensionen hat. Im Anschluss an einen erfolgreichen Kopiervorgang wird der entsprechende Start-Index um die Anzahl der kopierten Elemente inkrementiert.bError
: Dieser Ausgang istTRUE
, 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.
Input2DStd():
Schreibt Daten von externen zweidimensionalen Datenpuffern in ein Paar von MultiArrays. Jedes Mal wenn neue Eingangsabtastungen vorliegen, muss diese Methode aufgerufen werden, normalerweise zyklisch.
Diese Methode verwendet Standardwerte für die Parameter nWorkDimA0 := 0
, nWorkDimA1 := 1
, nWorkDimB0 := 0
, nWorkDimB1 := 1
und pStartIndexA := 0
, pStartIndexB := 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 Input2D : HRESULT
VAR_INPUT
pDataInA : POINTER TO BYTE; // address of data buffer (e.g. oversampling data) as one-dimensional array
nDataInSizeA : UDINT; // size of data buffer in bytes
pDataInB : POINTER TO BYTE; // address of data buffer (e.g. oversampling data) as one-dimensional array
nDataInSizeB : UDINT; // size of data buffer in bytes
eElementTypeA : E_MA_ElementTypeCode; // valid types: LREAL, INT32, UINT64, LCOMPLEX
eElementTypeB : E_MA_ElementTypeCode; // valid types: LREAL, INT32, UINT64, LCOMPLEX
nOptionPars : DWORD; // option mask
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
pDataInA
,pDataInB
: Der Datenpuffer muss die Daten von allen Kanälen enthalten.eElementTypeA
,eElementTypeB
: Dieser Eingang ist vom Typ E_MA_ElementTypeCode. Der Elementtyp des spezifizierten MultiArray Puffers (Initialisierungsparameter) muss mit dem Elementtyp des angegebenen externen Datenpuffers übereinstimmen.bError
: Dieser Ausgang istTRUE
, 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.
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
stInitParsA : ST_MA_MultiArray_InitPars; // init parameters for first MultiArray
stInitParsB : ST_MA_MultiArray_InitPars; // init parameters for second MultiArray
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
stInitParsA
: Funktionsbausteinspezifische Struktur der Initialisierungsparameter vom Typ ST_MA_MultiArray_InitPars. MultiArray Puffer werden für die Ergebnispuffer spezifiziert. Diese Parameter müssen mit der obigen Definition der Ausgangspuffer übereinstimmen.stInitParsB
: Funktionsbausteinspezifische Struktur der Initialisierungsparameter vom Typ ST_MA_MultiArray_InitPars. MultiArray Puffer werden für die Ergebnispuffer spezifiziert. Diese Parameter müssen mit der obigen Definition der Ausgangspuffer übereinstimmen.nOwnID
: Identifiziert die Bausteininstanz mit einer eindeutigen ID. Diese muss immer größer als null sein. Eine bewährte Vorgehensweise ist die Definition einer Enumeration für diesen Zweck.aDestIDs
: Legt die Ziele durch Angabe derer IDs fest, zu denen die Ergebnisse weitergeleitet werden sollen. Die Definition des Ausgangspuffers (wie oben beschrieben) muss mit der Definition des Eingangspuffers jedes gewählten Zieles übereinstimmen.nResultBuffers
: Der Funktionsbaustein initialisiert einen Transfer Tray Stream mit der gegebenen Anzahl an MultiArray Puffern. Der Defaultwert ist vier.
ResetData():
Die Methode löscht alle bereits hinzugefügten Datensätze, um die aktuellen Ausgangspuffer (MultiArray) erneut von Beginn an befüllen zu können. Sollten beim Befüllen externe Indizes (pStartIndex
Parameter) genutzt werden, so müssen diese explizit zurückgesetzt werden.
- 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
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.4022.25 | PC or CX (x86, x64) | Tc3_CM, Tc3_CM_Base, Tc3_MultiArray |