F_iecCopyStreamToBuffer
Ab der Produktversion: TwinCAT PLC Library IEC60870-5-104 Unterstation v2.0.6 und höher.
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.
FUNCTION F_iecCopyStreamToBuffer: 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 4 Datenbytes in die stream-Variable kopiert. Bei einer steigenden Flanke am bRx werden die ersten vier Datenbytes der stream-Variablen in die rxBuffer-Variable kopiert.
PROGRAM P_CopyStreamToBuffer
VAR
stream : ST_IEC870_5_101Stream;
txBuffer : ARRAY[0..3] OF BYTE := 1, 2, 3, 4;
cbTx : UDINT;
bTx : BOOL := TRUE;
rxBuffer : ARRAY[0..3] OF BYTE;
cbRx : UDINT;
bRx : BOOL;
END_VAR
IF bTx THEN
bTx := FALSE;
cbTx := cbTx + F_iecCopyBufferToStream( ADR( txBuffer ), SIZEOF( txBuffer ), stream );
txBuffer[0] := txBuffer[0] + 1;
txBuffer[1] := txBuffer[1] + 1;
txBuffer[2] := txBuffer[2] + 1;
txBuffer[3] := txBuffer[3] + 1;
END_IF
IF bRx THEN
bRx := FALSE;
cbRx := F_iecCopyStreamToBuffer( ADR( rxBuffer ), SIZEOF( rxBuffer ), 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 jedem weiteren F_CopyStreamToBuffer-Funktionsaufruf:
length | data | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
4 | 16#01 | 16#02 | 16#03 | 16#04 | ... | ... | ... | ... | ... | ... | ... | 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 |