F_iecCopyStreamToBuffer

Ab der Produktversion:  TwinCAT PLC Library IEC60870-5-104 Unterstation v2.0.6 und höher.

F_iecCopyStreamToBuffer 1:
F_iecCopyStreamToBuffer

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.

FUNCTION F_iecCopyStreamToBuffer: UDINT

VAR_INPUT
    pBuffer     : DWORD;
    cbBuffer    : UDINT;
END_VAR
VAR_IN_OUT
    stream  : ST_IEC870_5_101Stream;
END_VAR

pBuffer: Pointer (Adresse) einer externen Puffervariablen.

cbBuffer: Maximale Anzahl der Datenbytes die aus der stream-Variablen in den externen Puffer kopiert werden sollen.

stream: Datenpuffer.

 

Beispiel in ST:

Nach dem Programmstart werden 4 Datenbytes in die stream-Variable kopiert. Bei einer steigenden Flanke am bRx werden die ersten vier Datenbytes der stream-Variablen in die rxBuffer-Variable kopiert.

PROGRAM P_CopyStreamToBuffer
VAR
    stream  : ST_IEC870_5_101Stream;
    txBuffer    : ARRAY[0..3] OF BYTE := 1, 2, 3, 4;
    cbTx    : UDINT;
    bTx     : BOOL := TRUE;

    rxBuffer    : ARRAY[0..3] OF BYTE;
    cbRx    : UDINT;
    bRx     : BOOL;
END_VAR
IF bTx THEN
    bTx     := FALSE;
    cbTx    := cbTx + F_iecCopyBufferToStream( ADR( txBuffer ), SIZEOF( txBuffer ), stream );
    txBuffer[0] := txBuffer[0] + 1;
    txBuffer[1] := txBuffer[1] + 1;
    txBuffer[2] := txBuffer[2] + 1;
    txBuffer[3] := txBuffer[3] + 1;
END_IF

IF bRx THEN
    bRx     := FALSE;
    cbRx    := F_iecCopyStreamToBuffer( ADR( rxBuffer ), SIZEOF( rxBuffer ), 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 jedem weiteren F_CopyStreamToBuffer-Funktionsaufruf:

length

data

4

16#01

16#02

16#03

16#04

...

...

...

...

...

...

...

IEC870_MAX_ASDU_DATA_BYTE

 

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS Bibliotheken

TwinCAT v2.10.0 Build >= 1301

PC oder CX (x86)

CX (ARM)

TcIEC870_5_101.Lib
( Standard.Lib; TcBase.Lib; TcSystem.Lib; TcUtilities.Lib;  werden automatisch eingebunden )