Sysmemmove, Speicher verschieben

Liste

Diese Seite ist Teil der IEC 61131-3 Programmierhandbuch. Gehen Sie zum Index.

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.

Informationskreis

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.

Bild der Sysmemmove-Funktion

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]
War dieser Artikel hilfreich?