F_iecMoveStreamToBuffer
Diese Funktion kopiert Datenbytes von der stream-Variablen in eine externe Puffervariable und löscht anschließend die kopierten Datenbytes aus der stream-Variablen. Der Speicherinhalt der stream-Variablen wird verkleinert. Der Rückgabeparameter der Funktion liefert die Anzahl der erfolgreich kopierten Datenbytes.
Syntax
FUNCTION F_iecMoveStreamToBuffer : UDINT
VAR_INPUT
pBuffer : PVOID;
cbBuffer : UDINT;
END_VAR
VAR_IN_OUT
stream : ST_IEC870_5_101Stream;
END_VAR
Eingänge
pBuffer: Pointer (Adresse) einer externen Puffervariablen.
cbBuffer: Maximale Anzahl der Datenbytes die aus der stream-Variablen in den externen Puffer kopiert werden sollen.
Beispiel in ST
Nach dem Programmstart sind 8 Byte-Werte in der stream-Variable initialisiert. Bei einer steigenden Flanke an bRx werden jedes Mal 4 Datenbytes aus der stream-Variablen in die rxBuffer-Variable kopiert.
PROGRAM P_iecMoveStreamToBuffer
VAR
stream : ST_IEC870_5_101Stream := ( length := 8, data := [16#78, 16#56, 16#34, 16#12, 16#01, 16#EF, 16#CD, 16#AB] );
rxBuffer : DWORD;
cbResult : UDINT;
bRx : BOOL := TRUE;
END_VAR
IF bRx THEN
bRx := FALSE;
cbResult := F_iecMoveStreamToBuffer( ADR( rxBuffer ), SIZEOF( rxBuffer ), stream );
END_IF
Speicherdarstellung der stream-Variablen nach dem Programmstart:
length | data | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
8 | 16#78 | 16#56 | 16#34 | 16#12 | 16#01 | 16#EF | 16#CD | 16#AB | ... | ... | ... | IEC870_MAX_ASDU_DATA_BYTE |
Speicherdarstellung der stream-Variablen nach dem ersten F_iecMoveStreamToBuffer-Funktionsaufruf:
length | data | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
4 | 16#01 | 16#EF | 16#CD | 16#AB | 16#01 | 16#EF | 16#CD | 16#AB | ... | ... | ... | IEC870_MAX_ASDU_DATA_BYTE |
Speicherdarstellung der stream-Variablen nach dem zweiten F_iecMoveStreamToBuffer-Funktionsaufruf:
length | data | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 16#01 | 16#EF | 16#CD | 16#AB | 16#01 | 16#EF | 16#CD | 16#AB | ... | ... | ... | IEC870_MAX_ASDU_DATA_BYTE |
Voraussetzungen
Entwicklungsumgebung |
Zielplattform |
Einzubindende SPS Bibliotheken (Kategoriegruppe) |
---|---|---|
TwinCAT v3.1.4012.0 |
PC oder CX (x86, x64, ARM) |
Tc2_IEC60870_5_10x (Communication->IEC60870) |