F_iecCopyStreamToStream
Diese Funktion kopiert Datenbytes von der source-Variablen in die target-Variable. Der Speicherinhalt der source-Variablen bleibt unverändert. Der Speicherinhalt der target-Variablen wird vergrößert. Der Rückgabeparameter der Funktion liefert die Anzahl der erfolgreich kopierten Datenbytes.
Syntax
FUNCTION F_iecCopyStreamToStream: UDINT
VAR_INPUT
cbCopy : UDINT;
END_VAR
VAR_IN_OUT
target : ST_IEC870_5_101Stream;
source : ST_IEC870_5_101Stream;
END_VAR
Eingänge
cbCopy: Anzahl der Bytes die von der source-Variablen in die target-Variable kopiert werden sollen.
Beispiel in ST
Bei einer steigenden Flanke am bCopy wird zuerst srcValue inkrementiert und in srcStream kopiert. Danach werden die ersten 4 Datenbytes von srcStream nach dstStream kopiert. Zum Schluss werden die ersten 4 Datenbytes von dstStream in die dstValue-Variable kopiert.
PROGRAM P_iecCopyStreamToStream
VAR
srcStream : ST_IEC870_5_101Stream;
srcValue : DWORD;
dstStream : ST_IEC870_5_101Stream;
dstValue : DWORD;
bCopy : BOOL;
END_VAR
IF bCopy THEN
bCopy := FALSE;
srcValue := srcValue + 1;
F_iecCopyBufferToStream( ADR( srcValue ), SIZEOF( srcValue ), srcStream );
F_iecCopyStreamToStream ( SIZEOF( srcValue ), dstStream, srcStream );
F_iecCopyStreamToBuffer( ADR( dstValue ), SIZEOF( dstValue ), dstStream );
END_IF
Speicherdarstellung der srcStream- und dstStream-Variablen nach dem ersten F_iecCopyStreamToStream-Funktionsaufruf:
length | data | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
4 | 16#01 | 16#00 | 16#00 | 16#00 | ... | ... | ... | ... | ... | ... | ... | IEC870_MAX_ASDU_DATA_BYTE |
length | data | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
4 | 16#01 | 16#00 | 16#00 | 16#00 | ... | ... | ... | ... | ... | ... | ... | IEC870_MAX_ASDU_DATA_BYTE |
Speicherdarstellung der srcStream- und dstStream-Variablen nach dem zweiten F_iecCopyStreamToStream-Funktionsbaufruf:
length | data | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
8 | 16#01 | 16#00 | 16#00 | 16#00 | 16#02 | 16#00 | 16#00 | 16#00 | ... | ... | ... | IEC870_MAX_ASDU_DATA_BYTE |
length | data | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
8 | 16#01 | 16#00 | 16#00 | 16#00 | 16#01 | 16#00 | 16#00 | 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) |