WriteBySymbol

Diese Methode liest den Wert eines vorgegebenen ADS-Symbols aus und speichert diesen in der von Beckhoff vorgegebenen Standardtabellenstruktur ab. Es können auch ADS-Symbole von anderen ADS-Geräten ausgelesen werden.

Syntax

METHOD WriteBySymbol : BOOL
VAR_INPUT
    hDBID: UDINT;
    sTableName: T_MaxString;
    stADSDevice: ST_ADSDevice;
    stSymbol: ST_Symbol;
    eDBWriteMode: E_WriteMode := E_WriteMode.eADS_TO_DB_Append;
    nRingBuffParameter: UDINT;
END_VAR

WriteBySymbol 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.

stADSDevice

ST_ADSDevice

ADS-Gerät, von dem ein Symbol in die Standardtabellenstruktur geloggt werden soll.

stSymbol

ST_Symbol

Symbolname der zu schreibenden Variablen

eDBWriteMode

E_WriteMode

Gibt den Schreibmodus an. (Anhängen, updaten, Ringbuffer)

nRingBuffParameter

UDINT

Zusatzparameter für den Schreibmodus “Ringbuffer“

WriteBySymbol 2: Rückgabewert

Name

Typ

Beschreibung

WriteBySymbol

BOOL

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

Beispiel

Dieses Beispiel zeigt die Verwendung der Methode FB_PLCDBWriteEvt.WriteBySymbol:

VAR
    fbPLCDBWrite    :  FB_PLCDBWriteEvt(sNetID := '', tTimeout := T#5S);
    myValue         :  LREAL := 43.23;
    myAdsDevice     :  ST_ADSDevice;
    mySymbol        :  ST_Symbol;
    tcMessage       :  I_TcMessage;
END_VAR
// Set ADSDevice Information
myAdsDevice.sDevNetID     := '127.0.0.1.1.1';
myAdsDevice.nDevPort      := 851;
myAdsDevice.eADSRdWrtMode := E_ADSRdWrtMode.bySymbolName; 
myAdsDevice.tTimeout      := T#5S; 

// Set Symbol Information
mySymbol.eDataType        := E_PLCDataType.eType_LREAL;
mySymbol.sDBSymbolName    := 'MySymbol';
mySymbol.sSymbolName      := 'MAIN.myValue';
mySymbol.nBitSize         := 8;

// Call Functionblock
IF fbPLCDBWrite.WriteBySymbol(
    hDBID:= 1, 
    sTableName:= 'myTable_WithLReal', 
    stADSDevice:= myAdsDevice, 
    stSymbol:= mySymbol, 
    eDBWriteMode:= E_WriteMode.eADS_TO_DB_Append, 
    nRingBuffParameter:= 1) 
THEN
    IF fbPLCDBWrite.bError THEN
        tcMessage := fbPLCDBWrite.ipTcResult;
        nState := 255; 
    ELSE
        nState := 0;
    END_IF
END_IF

Ergebnis in der Datenbank:

ID

Timestamp

Name

Value

28

'2018-01-30 14:04:19'

'MyValue'

41.23

29

'2018-01-30 14:04:29'

'MyValue'

42.23

30

'2018-01-30 14:04:39'

'MyValue'

43.23

31

'2018-01-30 14:06:12’

‘MySymbol’

86.2