Diese Funktion kopiert den in definierten Speicherbereich Src in dem in definierten Speicherbereich Dest für die in Size. Die beiden Speicherbereiche können sich auch überlappen.
Die Funktion garantiert die Atomarität der Übertragung, also den in definierten Speicherbereich Dest Es hat immer einen konsistenten Wert, selbst wenn es von einer Aufgabe geschrieben und von einer anderen Aufgabe verwendet wird. Es muss verwendet werden, um Variablen größer als 4 Byte a für Strings von einer Task zu einer anderen Task mit höherer Ausführungspriorität zu übergeben.
Funktion
CODESYS: eCDSXUnified12Lib
LogikLab: eLLabXUnified12Lib
Beschreibung
Dest (PVOID) Adresse des Zielspeicherbereichs.
Src (PVOID) Adresse des Quellspeicherbereichs.
Size (UDINT) Größe des zu übertragenden Speicherbereichs.
Die Funktion gibt eine Variable (PVOID) mit der Adresse des Zielspeicherbereichs zurück. Im Fehlerfall wird e zurückgegebenNULL.
Beispiele
Verwendung der Beispiele.
Festlegen der Variablen aus dem Debug CMove, Erinnerung Source wird weitergeleitet an Destination.
LogicLab (Ptp116)
PROGRAM ST_Sysmemmove
VAR
i : UDINT; (* Auxiliary variable *)
CMove : BOOL; (* Move command *)
Source : ARRAY[ 0..15 ] OF BYTE; (* Source memory *)
Destination : STRING[ 32 ]; (* Destination memory *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_Sysmemmove"
// *****************************************************************************
// By setting the "Move" command the memory is moved
// -----------------------------------------------------------------------------
IF (CMove) THEN
CMove:=FALSE; //Move command
i:=Sysmemmove(ADR(Destination), ADR(Source), SIZEOF(Source));
END_IF;
// [End of file]
CODESYS (Ptp161)
PROGRAM ST_Sysmemmove
VAR
i : UDINT; //Auxiliary variable
CMove : BOOL; //Move command
Source : ARRAY[ 0..15 ] OF BYTE; //Source memory
Destination : STRING[ 32 ]; //Destination memory
END_VAR
// *****************************************************************************
// PROGRAM "ST_Sysmemmove"
// *****************************************************************************
// By setting the "Move" command the memory is moved
// -----------------------------------------------------------------------------
IF (CMove ) THEN
CMove :=FALSE; //Move command
i:=Sysmemmove(ADR(Destination), ADR(Source), SIZEOF(Source));
END_IF;
// [End of file]