Vai al contenuto

eVMove, move data using pointers

Vai all indice del manuale di programmazione
Tipo: Funzione
Libreria LogicLab: eLLabCommonLib
Libreria Codesys: Non disponibile

Questa funzione permette di copiare o spostare dati tra due variabili definendone indirizzo e tipo.

Descrizione

Destination (PVOID) Indirizzo variabile di destinazione.
Source (PVOID) Indirizzo variabile sorgente.
Type (VR_TYPE) Tipo variabile (Vedi definizione).

La funzione ritorna una variabile BOOL, FALSE: Errore esecuzione, TRUE: Esecuzione Ok.

Immagine funzione eVMove

Esempi

Come utilizzare gli esempi.
Alcuni esempi di utilizzo funzione.

LogicLab (Ptp201, ST_eVMove)
PROGRAM ST_eVMove
VAR
    pAV : PVOID; (* Auxiliary void pointer *)
    BArray : ARRAY[0..1] OF BYTE := [16#00, 16#12]; (* Byte array *)
    WArray : ARRAY[0..1] OF WORD := [16#0000, 16#1234]; (* Word array *)
    DWArray : ARRAY[0..1] OF DWORD := [16#00000000, 16#12345678]; (* Double word array *)
    LWArray : ARRAY[0..1] OF LWORD := [16#0000000000000000, 16#0123456789ABCDEF]; (* Long word array *)
    RArray : ARRAY[0..1] OF REAL := [0.0, 1.2]; (* Real array *)
    LRArray : ARRAY[0..1] OF LREAL := [0.0, 1.2]; (* Long real array *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_eVMove"
// *****************************************************************************

    // Some variables copy.

    eTO_JUNK(eVMove(ADR(BArray[0]), ADR(BArray[1]), VR_TYPE#BYTE_TYPE)); //[16#12, 16#12]
    eTO_JUNK(eVMove(ADR(WArray[0]), ADR(WArray[1]), VR_TYPE#WORD_TYPE)); //[16#1234, 16#1234]
    eTO_JUNK(eVMove(ADR(DWArray[0]), ADR(DWArray[1]), VR_TYPE#DWORD_TYPE)); //16#12345678, 16#12345678]
    eTO_JUNK(eVMove(ADR(LWArray[0]), ADR(LWArray[1]), VR_TYPE#LWORD_TYPE)); //16#0123456789ABCDEF, 16#0123456789ABCDEF]
    eTO_JUNK(eVMove(ADR(RArray[0]), ADR(RArray[1]), VR_TYPE#REAL_TYPE)); //[1.2, 1.2]
    eTO_JUNK(eVMove(ADR(LRArray[0]), ADR(LRArray[1]), VR_TYPE#LREAL_TYPE)); //[1.2, 1.2]

    // Use of a void pointer on various architectures.
    // On 32 bits architecture value is: 16#12345678
    // On 64 bits architecture value is: 16#1234567812345678

    eTO_JUNK(eVMove(ADR(pAV), ADR(DWArray), VR_TYPE#PVOID_TYPE));

// [End of file]
Was this article helpful?