Sysmemmove, mișcare de memorie

Listă

Această pagină face parte din Manual de programare IEC 61131-3. Mergeți la index.

Această funcție copiază zona de memorie definită în Src în zona de memorie definită în Dest pentru dimensiunea definită în Size. Cele două zone de memorie se pot suprapune, de asemenea.

Funcția garantează atomicitatea transferului, deci zona de memorie definită în Dest are întotdeauna o valoare consistentă chiar dacă este scrisă de o sarcină și folosită de o altă sarcină. Trebuie folosit pentru a trece variabile mai mari de 4 octeți a pentru șiruri de caractere de la o sarcină la alta cu prioritate de execuție mai mare.

Cercul de informații

funzione

CODESYS: eCDSXUnified12Lib

LogicLab: eLLabXUnified12Lib

Descriere

Dest (PVOID) Adresa zonei de memorie de destinație.
Src (PVOID) Adresa zonei de memorie sursă.
Size (UDINT) Dimensiunea zonei de memorie de transferat.

Funcția returnează o variabilă (PVOID) cu adresa zonei de memorie de destinație. În cazul unei erori, e returnatNULL.

Imaginea funcției Sysmemmove

Exemple

Cum se utilizează exemplele.
Setarea variabilei de la debug CMove, memorie Source va fi transferat la 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]
A fost util acest articol?