# LGF_StartValueReadWrite (FB / 1.0.0)

Übersicht

Autor: Simatic Systems Support

## Kurzbeschreibung

Startwert(e) von Variablen oder kompletten Datenblöcken lesen oder schreiben

### Baustein Schnittstelle

| LGF_StartValueReadWrite (FB) |
--- | --- | ---
Bool |  |  | read |  | readDone |  |  | Bool
Bool |  |  | write |  | writeDone |  |  | Bool
Variant |  |  | dataSource |  | busy |  |  | Bool
Variant |  |  | dataDestination |  | error |  |  | Bool
|  |  |  |  | lastRead |  |  | DTL
|  |  |  |  | lastWrite |  |  | DTL
|  |  |  |  | status |  |  | Word
|  |  |  |  | diagnostics |  |  | LGF_typeDiagnostics

### Input Parameter

Bezeichner | Datentyp | Default Wert | Beschreibung
--- | --- | --- | ---
read | Bool | FALSE | Ansteigende Flanke: Startwert des Datenblocks / Variable des Datenblocks lesen
write | Bool | FALSE | Steigende Flanke: Aktuelle(r) Wert(e) in Startwert des Datenblocks / Variable des Datenblocks schreiben
dataSource | Variant | --- | Daten (Block / Variable) Quelle, wenn eine separate Quelle benötigt wird. Darf auch `NULL` sein - dann wird das Ziel gleichermaßen als Quelle verwendet.
dataDestination | Variant | --- | Daten (Block / Variable) Destination

### Output Parameter

Bezeichner | Datentyp | Beschreibung
--- | --- | ---
readDone | Bool | TRUE: Lesen wurde erfolgreich abgeschlossen
writeDone | Bool | TRUE: Schreiben wurde erfolgreich abgeschlossen
busy | Bool | TRUE: FB ist noch nicht beendet und neue Ausgangswerte können erwartet werden
error | Bool | TRUE: Während der Ausführung des FBs ist ein Fehler aufgetreten
lastRead | DTL | Zeitstempel des letzten Lesezugriffs
lastWrite | DTL | Zeitstempel des letzten Schreibzugriffs
status | Word | 16#0000 - 16#7FFF: Status des FBs, 16#8000 - 16#FFFF: Fehleridentifikation
diagnostics | LGF_typeDiagnostics | Diagnoseinformationen

### Status & Error Meldungen

Code / Wert | Bezeichner / Beschreibung
--- | ---
16#0001 | STATUS_READ_DONE Schreibausführung ohne Fehler beendet
16#0002 | STATUS_WRITE_DONE Leseausführung ohne Fehler beendet
16#7000 | STATUS_NO_CALL Kein Auftrag in Bearbeitung
16#7001 | STATUS_READ Wert(e) lesen in Bearbeitung
16#7002 | STATUS_WRITE Wert(e) schreiben in Bearbeitung
16#8400 | ERR_MULTIPLE_COMMANDS Fehler: Mehrere Befehle zur gleichen Zeit sind nicht erlaubt.
16#8600 | ERR_UNDEFINED_STATE Fehler: Undefinierter Zustand im Zustandsautomaten
16#8601 | ERR_READ Fehler: Wert(e) lesen `READ_DBL` - siehe `diagnostics.subfunctionStatus`
16#8602 | ERR_WRITE Fehler: Wert(e) schreiben `WRITE_DBL` - siehe `diagnostics.subfunctionStatus`
16#8611 | ERR_READ_TIME Fehler: Zeitstempel `RD_LOC_T` beim Lesen von Werten - siehe `diagnostics.subfunctionStatus`
16#8612 | ERR_WRITE_TIME Fehler: Zeitstempel `WR_LOC_T` beim Schreiben von Werten - siehe `diagnostics.subfunctionStatus`

## Benutzer definierte Datentypen

### LGF_typeDiagnostics (UDT / V1.0.1)

Diagnosestruktur zur Speicherung und Übertragung von Diagnoseinformationen von Blöcken über die Schnittstelle.

Bezeichner | Datentyp | Default Wert | Beschreibung
--- | --- | --- | ---
status | Word | 16#0000 | Status des Bausteins oder Fehleridentifikation beim Auftreten des Fehlers
subfunctionStatus | Word | 16#0000 | Status oder Rückgabewert von aufgerufenen FB's, FC's und Systembausteinen
stateNumber | DInt | 0 | Zustand in der Zustandsmaschine des Blocks, in dem der Fehler aufgetreten ist

## Funktionsbeschreibung

Die Funktion liest oder schreibt den Startwert einer einzelnen Variablen, einer strukturierten Variable oder eines ganzen Datenbereichs oder Datenblocks von der Quelle in das Ziel.

Der Parameter `dataDestination` muss immer vorhanden sein, der Parameter `dataSource` ist optional.
Wenn `dataSource` nicht verwendet wird, wird die Funktion...

- den/die Startwert(e) des Ziel(s) einlesen und schreibt diese(n) in den aktuellen Wert der gleichen Variable(n)/des gleichen Datenblocks.
- schreibt den/die Startwert(e) des Ziels in den Startwert der gleichen Variable(n) des Datenblocks.

HINWEIS
  Wenn die Startwerte geschrieben werden, erscheint der Datenblock anschließend im Engineering als "inkonsistenter" Datenbaustein, nachdem die Werte vom Anwenderprogramm geschrieben wurden.

HINWEIS
  Um komplette Datenbausteine zu verwenden, müssen diese zwingend von einem PLC-Datentyp abgeleitet werden.

Hinweis
  Eine Änderung der Startwerte ist nicht mehr ohne weiteres Rückgängig zu machen.

  Die Möglichkeiten sind zum Beispiel:

  - eine "leere" Quelle mit Standardwerten zu verwenden
  - den Wert erneut mit einem anderen Wert zu überschreiben
  - ein Download des Ursprünglichen Datenbausteins aus dem Engineering System

Vorsicht
  Die Änderungen werden auf die SMC (Simatic-Memory-Card) geschrieben.
  Die SMC ist ein Flash-Speicher mit begrenzten Schreibzyklen, deshalb sollte man nicht zyklisch auf die SMC schreiben!

## Änderungshistorie

Version & Datum | Änderungsbeschreibung
--- | ---
| 1.0.0 | Simatic Systems Support
| 2025-05-05 | First released version