F_iecCopyBufferToStreamByOffset
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
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.
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) |