Sysmemmove, mouvement de mémoire

Liste

Cette page fait partie de la Manuel de programmation CEI 61131-3. Aller à l'index.

Cette fonction copie la zone mémoire définie dans Src dans la zone mémoire définie dans Dest pour la taille définie dans Size. Les deux zones de mémoire peuvent également se chevaucher.

La fonction garantit l'atomicité du transfert, donc la zone mémoire définie dans Dest il a toujours une valeur cohérente même s'il est écrit par une tâche et utilisé par une autre tâche. Il doit être utilisé pour passer des variables supérieures à 4 octets a pour les chaînes d'une tâche à une autre tâche avec une priorité d'exécution plus élevée.

Cercle d'informations

Fonction

CODESYS : eCDSXUnified12Lib

LogicLab : eLLabXUnified12Lib

Description

Dest (PVOID) Adresse de la zone mémoire de destination.
Src (PVOID) Adresse de la zone mémoire source.
Size (UDINT) Taille de la zone mémoire à transférer.

La fonction retourne une variable (PVOID) avec l'adresse de la zone mémoire destination. En cas d'erreur, e est retournéNULL.

Image de la fonction Sysmemove

Exemples

Comment utiliser les exemples.
Définir la variable à partir du débogage CMove, mémoire Source sera transféré à 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]
Cet article a-t-il été utile?