Movimiento del sistema, movimiento de memoria

Lista

Esta página es parte del Manual de programación IEC 61131-3. Ir al índice.

Esta función copia el área de memoria definida en Src en el área de memoria definida en Dest para el tamaño definido en Size. Las dos áreas de memoria también pueden superponerse.

La función garantiza la atomicidad de la transferencia, por lo que el área de memoria definida en Dest siempre tiene un valor constante incluso si lo escribe una tarea y lo usa otra tarea. Debe usarse para pasar variables de más de 4 bytes para cadenas de una tarea a otra tarea con mayor prioridad de ejecución.

Círculo de información

Funzione

CÓDIGOS: eCDSXUnificado12Lib

Laboratorio lógico: eLLabXUnified12Lib

Descripción

Dest (PVOID) Dirección del área de memoria de destino.
Src (PVOID) Dirección del área de memoria de origen.
Size (UDINT) Tamaño del área de memoria a transferir.

La función devuelve una variable (PVOID) con la dirección del área de memoria de destino. En caso de error, se devuelve eNULL.

Imagen de la función Sysmemmove

Ejemplos

Cómo utilizar los ejemplos..
Establecer la variable de depuración CMovememoria Source será transferido a 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]
CODESIS (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]
¿Le resultó útil este artículo?