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
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“ |
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 |