F_iecMoveStreamToBuffer

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

F_iecMoveStreamToBuffer 1:

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.

FUNCTION F_iecMoveStreamToBuffer : 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 zwei DWORD-Werte in die stream-Variable kopiert. Bei einer steigenden Flanke an bRx werden jedes Mal 4 Datenbytes aus der stream-Variablen in die rxBuffer-Variable kopiert.

PROGRAM P_MoveStreamToBuffer
VAR
    stream  : ST_IEC870_5_101Stream;
    txBuffer    : ARRAY[0..1] OF DWORD := 16#12345678, 16#ABCDEF01;
    cbTx    : UDINT;
    bTx     : BOOL := TRUE;

    rxBuffer    : DWORD;
    cbRx    : UDINT;
    bRx     : BOOL;
END_VAR
IF bTx THEN
    bTx     := FALSE;
    cbTx    := F_iecCopyBufferToStream( ADR( txBuffer ), SIZEOF( txBuffer ), stream );
END_IF

IF bRx THEN
    bRx     := FALSE;
    cbRx    := 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

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 )