F_iecCopyBufferToStreamByOffset

F_iecCopyBufferToStreamByOffset 1:

Diese Funktion kopiert Datenbytes von einer externen Puffervariablen in die stream-Variable, beginnend ab einer Byteoffsetposition. Der Speicherinhalt der stream-Variablen wird vergrößert abhängig von der vorherigen Länge und dem angegebenen Byteoffset. Der Rückgabeparameter der Funktion liefert die Anzahl der erfolgreich kopierten Datenbytes.

Syntax

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

F_iecCopyBufferToStreamByOffset 2: Eingänge

pBuffer: Pointer (Adresse) einer externen Puffervariablen.

cbBuffer: Anzahl der Datenbytes die von der externen Puffervariablen in die stream-Variable kopiert werden sollen.

nOffset: Byteoffsetposition in dem Zieldatenpuffer.

Ein-/Ausgänge

stream: Zieldatenpuffer.

Beispiel in ST

Bei einer steigenden Flanke an der bTx werden 4 Datenbytes der txAtOffs-Variablen in die stream-Variable hineinkopiert (ab der Byteoffsetposition: 5).

PROGRAM P_iecCopyBufferToStreamByOffset
VAR
    bTx      : BOOL; 
    stream   : ST_IEC870_5_101Stream := (length := 8, data := [16#01, 16#02, 16#03, 16#04, 16#05, 16#06, 16#07, 16#08] );
    txAtOffs : DWORD := 16#DDCCBBAA;
    cbResult : UDINT;
END_VAR
IF bTx THEN
    bTx := FALSE;
    cbResult := F_iecCopyBufferToStreamByOffset ( ADR( txAtOffs), SIZEOF(txAtOffs), 5, stream );
      (* stream.length == 9 *)
END_IF

Speicherdarstellung der stream-Variablen nach dem Programmstart:

length

data

8

16#01

16#02

16#03

16#04

16#05

16#06

16#07

16#08

16#00

16#00

...

IEC870_MAX_ASDU_DATA_BYTE

Speicherdarstellung der stream-Variablen nach dem F_iecCopyBufferToStreamByOffset-Funktionsaufruf:

length

data

9

16#01

16#02

16#03

16#04

16#05

16#AA

16#BB

16#CC

16#DD

16#00

...

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)
Tc2_SerialCom (Communication->Serial)
Tc2_TcpIp (Communication->TcpIp)
Tc2_Utilities (System)