Vai all indice del manuale di programmazione
Tipo:
Funzione
Libreria LogicLab:
eLLabUtyLib
Libreria Codesys:
Non disponibile
Questa funzione scrive un valore BOOL indicizzando i bits di un array, è possibile definire il tipo dati dell’array e l’endianness dei bits.
- Big-endian: Il bit con IDx 0 è considerato nella posizione array con indirizzo maggiore. Aumentando IDx si considerano posizioni array con indirizzo minore.
- Little-endian: Il bit con IDx 0 è considerato nella posizione array con indirizzo minore. Aumentando IDx si considerano posizioni array con indirizzo maggiore.
Endianness bits
BIG-endian +-----------------+ ... +-----+-----------------+ | DBuffer[00] ... | DBuffer[nn] | +-----+-----------+ ... +-----+-----+-----+-----+ | Bnn | . . | B08 | B07 | ... | B00 | ABM_BYTEBE +-----+ ... +-----+-----+-----+-----+ | Bnn | . . | B16 | B15 | ... | B00 | ABM_WORDBE +-----+ ... +-----+-----+-----+-----+ | Bnn | . . | B32 | B31 | ... | B00 | ABM_DWORDBE +-----+ ... +-----+-----+-----+-----+ | Bnn | . . | B64 | B63 | ... | B00 | ABM_LWORDBE +-----+ ... +-----+-----+-----+-----+ Little-endian +-----------------+-----+ ... +-----------------+ | DBuffer[00] | ... | DBuffer[nn] | +-----+-----+-----+-----+ ... +-----+-----+-----+ | B07 | ... | B00 | B08 | | Bnn | | | ABM_BYTEBE +-----+-----+-----+-----+ ... +-----+-----+-----+ | B15 | ... | B00 | B16 | | Bnn | | | ABM_WORDBE +-----+-----+-----+-----+ ... +-----+-----+-----+ | B31 | ... | B00 | B32 | | Bnn | | | ABM_DWORDBE +-----+-----+-----+-----+ ... +-----+-----+-----+ | B63 | ... | B00 | B64 | | Bnn | | | ABM_LWORDBE +-----+-----+-----+-----+ ... +-----+-----+-----+
Sostituisce VBitSet
Sostituisce la funzione VBitSet permettendo di operare su array di variabili e non solo su di una variabile DWORD.
// La precedente dichiarazione:
DWVar:=VBitSet(BValue, DWVar, BNr);
// Diventa:
eTO_JUNK(ABWrite(ABM_DWORDBE, ADR(DWVar), SIZEOF(DWVar), BNr, BValue));
Descrizione
Mode (ARRAYBOOL) Definizione tipo array ed endianness (Definizione).
DBuffer (PVOID) Data buffer address, indirizzo array dati.
Size (UDINT) Dimensione array.
IDx (UDINT) Indice bit.
Value (BOOL) Valorre da scrivere.
La funzione ritorna una variabile BOOL con lo stato, FALSE: Errore esecuzione, TRUE: Esecuzione Ok.

Esempi
Come utilizzare gli esempi.
Nell’esempio vengono scritti i bit in diversi tipi di array considerando diverse endianness. Al termine dell’esecuzione avremo:
- BBuffer:=[16#81, 16#81]
- WBuffer:=[16#8001, 16#8001]
- DWBuffer:=[16#80000001, 16#80000001]
- LWBuffer:=[16#8000000000000001, 16#8000000000000001]
LogicLab (Ptp114, ST_ABWrite)
PROGRAM ST_ABWrite
VAR
BVal : BOOL; (* BOOL value *)
BBuffer : ARRAY[0..1] OF BYTE; (* BYTE buffer *)
WBuffer : ARRAY[0..1] OF WORD; (* WORD buffer *)
DWBuffer : ARRAY[0..1] OF DWORD; (* DWORD buffer *)
LWBuffer : ARRAY[0..1] OF LWORD; (* LWORD buffer *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_ABWrite"
// *****************************************************************************
// This program shows the use of "ABWrite" function.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// WRITE ARRAY BOOL VALUE
// -------------------------------------------------------------------------
// Write the BOOL value to BYTE array buffer.
BVal:=ABWrite(ABM_BYTEBE, ADR(BBuffer), SIZEOF(BBuffer), 0, TRUE);
BVal:=ABWrite(ABM_BYTEBE, ADR(BBuffer), SIZEOF(BBuffer), 15, TRUE);
BVal:=ABWrite(ABM_BYTELE, ADR(BBuffer), SIZEOF(BBuffer), 0, TRUE);
BVal:=ABWrite(ABM_BYTELE, ADR(BBuffer), SIZEOF(BBuffer), 15, TRUE);
// Write the BOOL value to WORD array buffer.
BVal:=ABWrite(ABM_WORDBE, ADR(WBuffer), SIZEOF(WBuffer), 0, TRUE);
BVal:=ABWrite(ABM_WORDBE, ADR(WBuffer), SIZEOF(WBuffer), 31, TRUE);
BVal:=ABWrite(ABM_WORDLE, ADR(WBuffer), SIZEOF(WBuffer), 0, TRUE);
BVal:=ABWrite(ABM_WORDLE, ADR(WBuffer), SIZEOF(WBuffer), 31, TRUE);
// Write the BOOL value to DWORD array buffer.
BVal:=ABWrite(ABM_DWORDBE, ADR(DWBuffer), SIZEOF(DWBuffer), 0, TRUE);
BVal:=ABWrite(ABM_DWORDBE, ADR(DWBuffer), SIZEOF(DWBuffer), 63, TRUE);
BVal:=ABWrite(ABM_DWORDLE, ADR(DWBuffer), SIZEOF(DWBuffer), 0, TRUE);
BVal:=ABWrite(ABM_DWORDLE, ADR(DWBuffer), SIZEOF(DWBuffer), 63, TRUE);
// Write the BOOL value to LWORD array buffer.
BVal:=ABWrite(ABM_LWORDBE, ADR(LWBuffer), SIZEOF(LWBuffer), 0, TRUE);
BVal:=ABWrite(ABM_LWORDBE, ADR(LWBuffer), SIZEOF(LWBuffer), 127, TRUE);
BVal:=ABWrite(ABM_LWORDLE, ADR(LWBuffer), SIZEOF(LWBuffer), 0, TRUE);
BVal:=ABWrite(ABM_LWORDLE, ADR(LWBuffer), SIZEOF(LWBuffer), 127, TRUE);
// [End of file]