SwapData, schimbă valoarea datelor

Listă

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

Această funcție schimbă valoarea variabilelor, diferite operații sunt gestionate pe baza definiției Mode. Adresele de Source e Destination poate coincide făcând posibil swap asupra variabilei în sine.

Cercul de informații

funzione

CODESYS: Indisponibil

LogicLab: eLLabCommonLib

Descriere

Destination (PVOID) Adresă de destinație variabilă.
Source (PVOID) Adresa variabilei sursă.
Type (VR_TYPE) Tipul variabilei (Vezi definiția).
Mode (SWAP_MODE) Modul de schimb (Vezi definiția).

Funcția returnează o variabilă BOOL cu starea de conversie, FALSE: eroare de execuție, TRUE: Schimb efectuat

Imaginea F SwapData

Exemple

Cum se utilizează exemplele.
În exemplu sunt efectuate unele operații de swap pe variabile.

LogicLab (Ptp201, ST_SwapData)
PROGRAM ST_SwapData
VAR
    i : BOOL;    (* Auxiliary variable *)
    BYData : ARRAY[0..5] OF BYTE;    (* Byte data example *)
    WDData : ARRAY[0..5] OF WORD;    (* Word data example *)
    DWData : ARRAY[0..5] OF DWORD;    (* DWord data example *)
    LWData : ARRAY[0..5] OF LWORD;    (* LWord data example *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SwapData"
// *****************************************************************************
// This program shows the use of SwapData function.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // SOME VARIABLE COPY
    // -------------------------------------------------------------------------
    // Copy BYTE, Source:=16#12, Destination:=16#12.

    BYData[1]:=16#12; //Byte data example
    i:=SwapData(ADR(BYData[0]), ADR(BYData[1]), BYTE_TYPE, SWAP_COPY);

    // -------------------------------------------------------------------------
    // SOME HALF VARIABLE SWAPS
    // -------------------------------------------------------------------------
    // Swap BYTE, Source:=16#12, Destination:=16#21.

    BYData[0]:=16#12; //Byte data example
    i:=SwapData(ADR(BYData[1]), ADR(BYData[0]), BYTE_TYPE, SWAP_HALF);

    // Swap WORD, Source:=16#1234, Destination:=16#3412.

    WDData[0]:=16#1234; //Word data example
    i:=SwapData(ADR(WDData[1]), ADR(WDData[0]), WORD_TYPE, SWAP_HALF);

    // Swap DWORD, Source:=16#12345678, Destination:=16#56781234.

    DWData[0]:=16#12345678; //DWord data example
    i:=SwapData(ADR(DWData[1]), ADR(DWData[0]), DWORD_TYPE, SWAP_HALF);

    // Swap LWORD, Source:=16#0123456789ABCDEF, Destination:=16#89ABCDEF01234567.

    LWData[0]:=16#0123456789ABCDEF; //LWord data example
    i:=SwapData(ADR(LWData[1]), ADR(LWData[0]), LWORD_TYPE, SWAP_HALF);

    // -------------------------------------------------------------------------
    // SOME VARIABLE SWAPS
    // -------------------------------------------------------------------------
    // Swap BYTE, values of source and destination are swapped.

    BYData[2]:=16#34; //Byte data example
    BYData[3]:=16#12; //Byte data example
    i:=SwapData(ADR(BYData[3]), ADR(BYData[2]), BYTE_TYPE, SWAP_VARS);

    // Swap WORD, values of source and destination are swapped.

    WDData[2]:=16#5678; //Word data example
    WDData[3]:=16#1234; //Word data example
    i:=SwapData(ADR(WDData[3]), ADR(WDData[2]), WORD_TYPE, SWAP_VARS);

    // Swap DWORD, Source:=16#12345678, Destination:=16#56781234.

    DWData[2]:=16#89ABCDEF; //DWord data example
    DWData[3]:=16#01234567; //DWord data example
    i:=SwapData(ADR(DWData[3]), ADR(DWData[2]), DWORD_TYPE, SWAP_VARS);

    // Swap LWORD, Source:=16#12345678, Destination:=16#56781234.

    LWData[2]:=16#FEDCBA9801234567; //DWord data example
    LWData[3]:=16#0123456789ABCDEF; //DWord data example
    i:=SwapData(ADR(LWData[3]), ADR(LWData[2]), LWORD_TYPE, SWAP_VARS);

    // -------------------------------------------------------------------------
    // SOME ENDIANNESS SWAPS
    // -------------------------------------------------------------------------
    // Swap BYTE, Source:=16#12, Destination:=16#12.

    BYData[4]:=16#12; //Byte data example
    i:=SwapData(ADR(BYData[5]), ADR(BYData[4]), BYTE_TYPE, SWAP_ENDIAN);

    // Swap WORD, Source:=16#1234, Destination:=16#3412.

    WDData[4]:=16#1234; //Word data example
    i:=SwapData(ADR(WDData[5]), ADR(WDData[4]), WORD_TYPE, SWAP_ENDIAN);

    // Swap DWORD, Source:=16#12345678, Destination:=16#78563412.

    DWData[4]:=16#12345678; //DWord data example
    i:=SwapData(ADR(DWData[5]), ADR(DWData[4]), DWORD_TYPE, SWAP_ENDIAN);

    // Swap LWORD, Source:=16#0123456789ABCDEF, Destination:=16#EFCDAB8967452301;

    LWData[4]:=16#0123456789ABCDEF; //LWord data example
    i:=SwapData(ADR(LWData[5]), ADR(LWData[4]), LWORD_TYPE, SWAP_ENDIAN);

// [End of file]
A fost util acest articol?