Vai all indice del manuale di programmazione
Tipo:
Funzione
Libreria LogicLab:
eLLabUtyLib
Libreria Codesys:
Non disponibile
Questa funzione legge 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 VBitTest
Sostituisce la funzione VBitTest permettendo di operare su array di variabili e non solo su di una variabile DWORD.
// La precedente dichiarazione:
BValue:=VBitTest(DWVar, BNr);
// Diventa:
BValue:=ABRead(ABM_DWORDBE, ADR(DWVar), SIZEOF(DWVar), BNr);
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.
La funzione ritorna lo stato del bit (BOOL).

Esempi
Come utilizzare gli esempi.
Nell’esempio vengono letti i bit di diversi tipi di array considerando diverse endianness. Tutti valori ritornati sono TRUE.
LogicLab (Ptp114, ST_ABRead)
PROGRAM ST_ABRead
VAR
BVal : ARRAY[0..15] OF BOOL; (* BOOL value *)
BBuffer : ARRAY[0..1] OF BYTE := [16#80, 16#01]; (* BYTE buffer *)
WBuffer : ARRAY[0..1] OF WORD := [16#8000, 16#0001]; (* WORD buffer *)
DWBuffer : ARRAY[0..1] OF DWORD := [16#80000000, 16#00000001]; (* DWORD buffer *)
LWBuffer : ARRAY[0..1] OF LWORD := [16#8000000000000000, 16#0000000000000001]; (* LWORD buffer *)
END_VAR
// *****************************************************************************
// PROGRAM "ST_ABRead"
// *****************************************************************************
// This program shows the use of "ABRead" function.
// -----------------------------------------------------------------------------
// -------------------------------------------------------------------------
// READ ARRAY BOOL VALUE
// -------------------------------------------------------------------------
// Read the BOOL value from BYTE array buffer.
BVal[0]:=ABRead(ABM_BYTEBE, ADR(BBuffer), SIZEOF(BBuffer), 0);
BVal[1]:=ABRead(ABM_BYTEBE, ADR(BBuffer), SIZEOF(BBuffer), 15);
BVal[2]:=ABRead(ABM_BYTELE, ADR(BBuffer), SIZEOF(BBuffer), 7);
BVal[3]:=ABRead(ABM_BYTELE, ADR(BBuffer), SIZEOF(BBuffer), 8);
// Read the BOOL value from WORD array buffer.
BVal[4]:=ABRead(ABM_WORDBE, ADR(WBuffer), SIZEOF(WBuffer), 0);
BVal[5]:=ABRead(ABM_WORDBE, ADR(WBuffer), SIZEOF(WBuffer), 31);
BVal[6]:=ABRead(ABM_WORDLE, ADR(WBuffer), SIZEOF(WBuffer), 15);
BVal[7]:=ABRead(ABM_WORDLE, ADR(WBuffer), SIZEOF(WBuffer), 16);
// Read the BOOL value from DWORD array buffer.
BVal[8]:=ABRead(ABM_DWORDBE, ADR(DWBuffer), SIZEOF(DWBuffer), 0);
BVal[9]:=ABRead(ABM_DWORDBE, ADR(DWBuffer), SIZEOF(DWBuffer), 63);
BVal[10]:=ABRead(ABM_DWORDLE, ADR(DWBuffer), SIZEOF(DWBuffer), 31);
BVal[11]:=ABRead(ABM_DWORDLE, ADR(DWBuffer), SIZEOF(DWBuffer), 32);
// Read the BOOL value from LWORD array buffer.
BVal[12]:=ABRead(ABM_LWORDBE, ADR(LWBuffer), SIZEOF(LWBuffer), 0);
BVal[13]:=ABRead(ABM_LWORDBE, ADR(LWBuffer), SIZEOF(LWBuffer), 127);
BVal[14]:=ABRead(ABM_LWORDLE, ADR(LWBuffer), SIZEOF(LWBuffer), 63);
BVal[15]:=ABRead(ABM_LWORDLE, ADR(LWBuffer), SIZEOF(LWBuffer), 64);
// [End of file]