Es scheint ein ziemlich verbreiteter Irrglaube zu sein, dass die DB-"Anfangswerte" im DB-Editor mit den Aktualwerten nach Urlöschen irgendwas zu tun haben. Dabei braucht man im DB-Editor einfach nur F1 drücken und kann lesen:
Datensicht von Datenbausteinen
(...)
Anfangswert | Hierbei handelt es sich um den Anfangswert, den Sie für die Variable festgelegt haben, wenn die Software nicht den Defaultwert für den eingegebenen Datentyp übernehmen sollte.
Der Anfangswert wird beim erstmaligen Speichern des Datenbausteins für die Variable als aktueller Wert übernommen, falls Sie nicht explizit einen aktuellen Wert der Variable festlegen.
Bitte beachten Sie: Im Gegensatz zu den Aktualwerten können Anfangswerte nicht in die CPU geladen werden! |
Aktualwert | (...) aktueller Wert beim Öffnen des Datenbausteins (...)
Dieses Feld können Sie editieren (...)
Bitte beachten Sie: Nur Aktualwerte können in die CPU geladen werden! |
Die "Anfangswerte" werden ausschließlich offline verwendet, wenn DB initialisiert werden, z.B. beim Erzeugen von neuen DB/IDB-Instanzen, beim Übersetzen in der Konsistenzprüfung (!) oder durch explizites "Datenbaustein initialisieren" im DB-Editor.
Beim Laden von DB aus dem Ladespeicher in den Arbeitsspeicher (bei Urlöschen oder Laden aus PG) erhält der Aktualwert im Arbeitsspeicher den Aktualwert aus dem Ladespeicher. Deshalb nenne ich die Aktualwerte im Ladespeicher "anfängliche Aktualwerte". Diese Aktualwerte im Ladespeicher sollen sinnvolle Werte für den Zeitpunkt des Ladens in den Arbeitsspeicher haben.
Die Aktualwerte aus dem Arbeitsspeicher bekommt man durch Herausladen des Online-DB aus der CPU in das Offline-Projekt (in die Offline-Aktualwerte) und wieder Laden in die CPU (in die Aktualwerte im Ladespeicher und den Arbeitsspeicher). S7-300 CPU können die Aktualwerte aus dem Arbeitsspeicher direkt in den Ladespeicher kopieren durch "RAM nach ROM kopieren" (für alle DB) und mit SFC84 "WRIT_DBL". S7-400 haben diese Funktionen nicht.
Achtung: Weil man beim Herausladen von Online-DB aus der CPU die Aktualwerte aus dem Arbeitsspeicher erhält und nicht die aus dem Ladespeicher, unterscheidet sich ein so angefertigtes Backup vom Programm im Ladespeicher (der Speicherkarte). Daher kann es passieren, dass das SPS-Programm nach dem zurückladen dieses Backup in die CPU nicht oder anders funktioniert! (ganz davon abgesehen, dass DB zur Laufzeit erstellt werden können, die nie im Ladespeicher waren, aber im Backup enthalten sein können)
Will man die Aktualwerte aus dem Ladespeicher haben (z.B. für exakte Kopien des Programms), dann müsste man zunächst im STOP der CPU "Urlöschen" durchführen und direkt danach die DB herausladen (ohne die CPU in RUN zu setzen!), oder direkt die Speicherkarte kopieren.
Ein Übernehmen der Aktualwerte in die Anfangswerte im offline DB im Projekt ist meistens unnötig, auch wenn einige Datensicherungs-Tools das als besonderes Merkmal anbieten.