F_iecCopyStreamToBuffer

F_iecCopyStreamToBuffer 1:

Diese Funktion kopiert Datenbytes von der stream-Variablen in eine externe Puffervariable. Der Speicherinhalt der stream-Variablen bleibt unverändert. Der Rückgabeparameter der Funktion liefert die Anzahl der erfolgreich kopierten Datenbytes.

Syntax

FUNCTION F_iecCopyStreamToBuffer: UDINT
VAR_INPUT
    pBuffer : PVOID;
    cbBuffer: UDINT;
END_VAR
VAR_IN_OUT
    stream  : ST_IEC870_5_101Stream;
END_VAR

F_iecCopyStreamToBuffer 2: 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.

Ein-/Ausgänge

stream: Quelldatenpuffer.

Beispiel in ST

Bei einer steigenden Flanke am bRx werden die ersten vier Datenbytes der stream-Variablen in die rxBufferA- und rxBufferB-Variable kopiert.

PROGRAM P_iecCopyStreamToBuffer
VAR
    stream    : ST_IEC870_5_101Stream := ( length := 4, data := [16#01, 16#02, 16#03, 16#04] );
    rxBufferA : ARRAY[0..3] OF BYTE;
    rxBufferB : ARRAY[0..3] OF BYTE;
    cbResult  : UDINT;
    bRx       : BOOL;
END_VAR
IF bRx THEN
    bRx := FALSE;
    cbResult := F_iecCopyStreamToBuffer ( ADR( rxBufferA ), SIZEOF( rxBufferA ), stream );
    cbResult := F_iecCopyStreamToBuffer ( ADR( rxBufferB ), SIZEOF( rxBufferB ), stream );
END_IF

Speicherdarstellung der stream-Variablen nach dem Programmstart:

length

data

4

16#01

16#02

16#03

16#04

...

...

...

...

...

...

...

IEC870_MAX_ASDU_DATA_BYTE

Speicherdarstellung der stream-Variablen nach dem ersten und zweiten F_CopyStreamToBuffer-Funktionsaufruf:

length

data

4

16#01

16#02

16#03

16#04

...

...

...

...

...

...

...

IEC870_MAX_ASDU_DATA_BYTE

Die rxBufferA und rxBufferB Array-Variable haben nach dem Aufruf folgenden Wert: [16#01, 16#02, 16#03, 16#04].

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.4012.0

PC oder CX (x86, x64, ARM)

Tc2_IEC60870_5_10x (Communication->IEC60870)
Tc2_SerialCom (Communication->Serial)
Tc2_TcpIp (Communication->TcpIp)
Tc2_Utilities (System)