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.
Syntax
FUNCTION F_iecCopyStreamToBuffer: UDINT
VAR_INPUT
pBuffer : PVOID;
cbBuffer: UDINT;
END_VAR
VAR_IN_OUT
stream : ST_IEC870_5_101Stream;
END_VAR
Eingänge
pBuffer: Pointer (Adresse) einer externen Puffervariablen.
cbBuffer: Maximale Anzahl der Datenbytes die aus der stream-Variablen in den externen Puffer kopiert werden sollen.
Beispiel in ST
Bei einer steigenden Flanke am bRx werden die ersten vier Datenbytes der stream-Variablen in die rxBufferA- und rxBufferB-Variable kopiert.
PROGRAM P_iecCopyStreamToBuffer
VAR
stream : ST_IEC870_5_101Stream := ( length := 4, data := [16#01, 16#02, 16#03, 16#04] );
rxBufferA : ARRAY[0..3] OF BYTE;
rxBufferB : ARRAY[0..3] OF BYTE;
cbResult : UDINT;
bRx : BOOL;
END_VAR
IF bRx THEN
bRx := FALSE;
cbResult := F_iecCopyStreamToBuffer ( ADR( rxBufferA ), SIZEOF( rxBufferA ), stream );
cbResult := F_iecCopyStreamToBuffer ( ADR( rxBufferB ), SIZEOF( rxBufferB ), 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 zweiten F_CopyStreamToBuffer-Funktionsaufruf:
length | data | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
4 | 16#01 | 16#02 | 16#03 | 16#04 | ... | ... | ... | ... | ... | ... | ... | IEC870_MAX_ASDU_DATA_BYTE |
Die rxBufferA und rxBufferB Array-Variable haben nach dem Aufruf folgenden Wert: [16#01, 16#02, 16#03, 16#04].
Voraussetzungen
Entwicklungsumgebung |
Zielplattform |
Einzubindende SPS Bibliotheken (Kategoriegruppe) |
---|---|---|
TwinCAT v3.1.4012.0 |
PC oder CX (x86, x64, ARM) |
Tc2_IEC60870_5_10x (Communication->IEC60870) |