Read

Diese Methode liest eine vorgegebene Anzahl an Datensätzen aus einer Datenbanktabelle mit der von Beckhoff vorgegebenen Standardtabellenstruktur. Die Standardtabellenstruktur wird unter anderem beim AutoLog-Modus und beim FB_DBWriteEvt-Baustein verwendet.

Syntax

METHOD Read : BOOL
VAR_INPUT
    hDBID: UDINT;
    sTableName: T_MaxString;
    sDBSymbolName: T_MaxString;
    eOrderBy: E_OrderColumn := E_OrderColumn.eColumnID;
    eOrderType: E_OrderType := E_OrderType.eOrder_ASC;
    nStartIndex: UDINT;
    nRecordCount: UDINT;
    pData: POINTER TO ST_StandardRecord;
    cbData: UDINT;
END_VAR

Read 1: Eingänge

Name

Typ

Beschreibung

hDBID

UDINT

Gibt die ID der zu verwendenden Datenbank an.

sTableName

T_MaxString

Name der Tabelle, aus der gelesen werden soll.

sDBSymbolName

T_MaxString

Symbolname, der in der Standardtabellenstruktur ausgelesen werden soll.

eOrderBy

E_OrderColumn.eColumnID

Sortierspalte (ID, Timestamp, Name oder Value)

eOrderType

E_OrderType.eOrder_ASC

Sortierrichtung (ASC oder DESC)

nStartIndex

UDINT

Gibt den Index des ersten zu lesenden Datensatzes an.

nRecordCount

UDINT

Gibt die Anzahl der zu lesenden Datensätzen an.

pData

POINTER TO ST_StandardRecord

Adresse des Strukturarrays, in das die Datensätze geschrieben werden sollen.

cbData

UDINT

Gibt die Größe des Strukturarrays in Byte an.

Read 2: Rückgabewert

Name

Typ

Beschreibung

Read

BOOL

Zeigt den Status der Methode. Liefert TRUE, sobald die Methodenausführung beendet ist, also auch im Fehlerfall.

Beispiel

VAR
    fbPLCDBRead    : FB_PLCDBReadEvt (sNetID := '', tTimeout := T#5S);
    ReadStruct     : ST_StandardRecord;
    tcMessage      : I_TcMessage;
END_VAR
IF fbPLCDBRead.Read(
    hDBID:= 1, 
    sTableName:= 'MyTable_WithLReal', 
    sDBSymbolName:= 'MyValue', 
    eOrderBy:= E_OrderColumn.ID, 
    eOrderType:= E_OrderType.DESC, 
    nStartIndex:= 0, 
    nRecordCount:= 1, 
    pData:= ADR(ReadStruct), 
    cbData:= SIZEOF(ReadStruct))
THEN
    IF fbPLCDBRead.bError THEN
        tcMessage := fbPLCDBRead.ipTcResult;
        nState := 255; 
    ELSE
        nState := 0;
    END_IF
END_IF

Ergebnis in der SPS:

Read 3: