Beschreibung
Mit der Anweisung übertragen Sie den Inhalt eines DBs oder eines DB-Bereichs aus dem Arbeitsspeicher in einen DB oder einen DB-Bereich im Ladespeicher (Micro Memory Card). Der Quell-DB muss ablaufrelevant sein, d. h. er darf nicht mit dem Attribut UNLINKED erzeugt worden sein. Er darf jedoch per Anweisung "CREAT_DB" erzeugt worden sein.
Um Datenkonsistenz zu gewährleisten, dürfen Sie den Quellbereich während der Bearbeitung von "WRIT_DBL" (d. h. solange der Parameter BUSY den Wert TRUE hat) nicht verändern.
Für die Parameter SRCBLK und DSTBLK gelten folgende Einschränkungen:
-
Bei einem ANY-Pointer vom Typ BOOL muss die Länge durch 8 teilbar sein.
-
Bei einem ANY-Pointer vom Typ STRING muss die Länge gleich 1 sein.
Die Länge des Ziel-DB können Sie bei Bedarf mit der Anweisung "TEST_DB" ermitteln.
Die "WRIT_DBL" verändert nicht die Prüfsumme des Anwenderprogramms, wenn Sie einen mittels Anweisung erzeugten DB beschreiben. Beim Beschreiben eines geladenen DB hingegen verändert das erste Schreiben auf diesen DB die Prüfsumme des Anwenderprogramms.
|
Hinweis "WRIT_DBL" eignet sich nicht dazu, Variablen häufig (bzw. zyklisch) im Ladespeicher zu schreiben, da auf eine Micro Memory Card technologiebedingt nur eine bestimmte Anzahl von Schreibzugriffen möglich ist. |
Arbeitsweise
Die Anweisung "WRIT_DBL" ist eine asynchron arbeitende Anweisung, d. h. die Bearbeitung erstreckt sich über mehrere Aufrufe. Sie starten den Auftrag, indem Sie "WRIT_DBL" mit REQ = 1 aufrufen.
Über die Ausgangsparameter RET_VAL und BUSY wird der Zustand des Auftrags angezeigt.
Siehe auch: Unterschied zwischen synchron und asynchron arbeitenden Anweisungen
Parameter
Die folgende Tabelle zeigt die Parameter der Anweisung "WRIT_DBL":
|
Parameter |
Deklaration |
Datentyp |
Speicherbereich |
Beschreibung |
|---|---|---|---|---|
|
REQ |
Input |
BOOL |
E, A, M, D, L |
REQ = 1: Anforderung zum Schreiben |
|
SRCBLK |
Input |
ANY |
D |
Zeiger auf den Datenbaustein im Arbeitsspeicher, aus dem gelesen wird |
|
RET_VAL |
Return |
INT |
E, A, M, D, L |
Fehlerinformation |
|
BUSY |
Output |
BOOL |
E, A, M, D, L |
BUSY = 1: Der Schreibvorgang ist noch nicht beendet. |
|
DSTBLK |
Output |
ANY |
D |
Zeiger auf den Datenbaustein im Ladespeicher, in den geschrieben werden soll. |
Weitere Informationen zu den gültigen Datentypen finden Sie unter "Übersicht über die gültigen Datentypen".
Parameter RET_VAL
|
Fehlercode (W#16#...) |
Beschreibung |
|---|---|
|
0000 |
kein Fehler |
|
0081 |
Der Zielbereich ist größer als der Quellbereich. |
|
7000 |
Erstaufruf mit REQ=0: keine Datenübertragung aktiv; BUSY hat den Wert "0". |
|
7001 |
Erstaufruf mit REQ=1:Datenübertragung angestoßen; BUSY hat den Wert "1". |
|
7002 |
Zwischenaufruf (REQ irrelevant): Datenübertragung bereits aktiv; BUSY hat den Wert "1". |
|
8081 |
Der Quellbereich ist größer als der Zielbereich. |
|
8092 |
Falsche Betriebsart: Während "WRIT_DBL" aktiv war, ist die CPU in STOP gegangen. Beim nächsten Übergang nach RUN wird dieser Fehlercode geliefert. Rufen Sie "WRIT_DBL" erneut auf. |
|
8093 |
Beim Parameter SRCBLK ist kein Datenbaustein angegeben oder ein Datenbaustein, der nicht im Arbeitsspeicher steht. |
|
80B1 |
Beim Parameter DSTBLK ist kein Datenbaustein angegeben, oder der dort angegebene Datenbaustein ist kein Ladespeicherobjekt (z. B. ein per "CREAT_DB" erzeugter DB). |
|
80B4 |
DB mit F-Attribut darf nicht verändert werden |
|
80C0 |
Das Ziel wird gerade durch eine andere Anweisung oder eine Kommunikationsfunktion bearbeitet. Beispiel: Sie laden einen DB von der CPU in das PG. Den Inhalt dieses DB wollen Sie per "WRIT_DBL" verändern. |
|
80C3 |
Die maximale Anzahl gleichzeitig aktiver "WRIT_DBL"-Anweisungen ist momentan bereits erreicht. |
|
827F |
Parameter 2 ist fehlerhaft, möglicherweise ein nicht unterstützter Datentyp |
|
8xyy |
allgemeine Fehlercodes Siehe auch: Fehlerauswertung mit dem Ausgangsparameter RET_VAL |