DB löschen

Je nachdem was du dir vorstellst , gibt es ja die Anfangswerte.
Diese kannst du gezielt über die Aktualwerte schreiben lassen.

Dazu den DB öffnen.
Unter Ansicht auf Datenansicht schalten
Unter Bearbeiten : Baustein initialisieren

Damit wird der DB mit den Anfangswerten belegt, diesen dann in die CPU laden.

Falls du das schon kennst und nicht das gewünschte ist, es gibt die Function "Fill"
 
Nein, ich hatte an eine Art Werks-Reset gedacht.
Momentan erstelle ich einen 2.DB für die Werkseinstellungen und kopiere dann von dem in den Benutzer-DB.
Damit hab' ich aber vom Grunde her die Daten 3x gespeichert (1x Aktual- und 2x Initialwert). Ist ja eigentlich überflüssiger Aufwand, wenn Siemens das Initalisieren vom Programm aus ermöglichen würde, oder?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wäre zwar schön, aber denke das mal zu ende.
Für diese Initialwerte würde jeder DB doppelt so groß, oder ?
Auch nicht der Bringer, hängt aber an der Speicherverwaltung von Siemens.
 
Die Initialwerte werden gar nicht mit übertragen? Das erklärt natürlich das Ganze.

(Arbeite bei uns bis jetzt nur mit der S7-200, da ist das ja eh' anders. Die großen Anlagen haben aber die C7-300 und die muß ich als nächstes optimieren. Die S7-300 hatte ich nur bei der Schulung.)
 
Rücksetzen alle DB auf Initialwerte

Für diese Initialwerte würde jeder DB doppelt so groß, oder ?
Ist er auch (fast) -> im Ladespeicher.
Die Initialwerte werden gar nicht mit übertragen?
Doch, die werden mit in den Ladespeicher übertragen.
Im Arbeitsspeicher steht nur der DB mit den Aktualwerten.

Ziehe mal die MMC, während die CPU Spannung hat. Die CPU geht dabei in STOP!
Nach dem anschließenden Urlöschen haben alle DB ihre Initialwerte.
Das wäre ein ganz einfaches manuelles "Werksreset".

Gruß
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
Ziehe mal die MMC, während die CPU Spannung hat. Die CPU geht dabei in STOP!
Nach dem anschließenden Urlöschen haben alle DB ihre Initialwerte.
Das wäre ein ganz einfaches manuelles "Werksreset".
...
Nettes Manual:
"... Um die Werkseinstellungen wieder herzustellen, ziehen Sie im laufenden Betrieb einfach die Speicherkarte heraus..."

Und ich Dussel mach' mir die Mühe und programmier' da was.
dj30-t.gif

:ROFLMAO:

Aber mal Spaß beiseite - die CPU's bei der Schulung (ich glaub' 317, is' aber schon 'ne Weile her) hatten gar keine Speicherkarte, wie ist das bei denen? Werden die Initialwerte mit übertragen oder nicht?
 
SFC83 read_dbl

die CPU's bei der Schulung (ich glaub' 317, is' aber schon 'ne Weile her) hatten gar keine Speicherkarte, wie ist das bei denen? Werden die Initialwerte mit übertragen oder nicht?
Es muß keine Speicherkarte gesteckt sein, die alten CPUs und S7-400-CPUs haben einen kleinen
integrierten Ladespeicher. Wenn der nicht ausreicht, dann muß eine MC gesteckt werden.
Die neuen S7-300-CPU brauchen zwingend eine MMC, weil sie keinen integrierten Ladespeicher haben.
[EDIT] Die Initialwerte werden immer mit in den Ladespeicher übertragen, egal ob mit oder ohne (M)MC. [/EDIT]

Und ich Dussel mach' mir die Mühe und programmier' da was.
dj30-t.gif

:ROFLMAO:
Selber was programmieren ist selbstverständlich besser als mein obiger Vorschlag ;)
(der war nur als "Beweis" für meine Aussage gedacht).

Das Rücksetzen einzelner DB im Arbeitsspeicher auf die Initialwerte geht auch ohne STOP der CPU
im Anwenderprogramm: mit der SFC83 "READ_DBL".
Und mit der SFC84 "WRIT_DBL" kann man die Aktualwerte vom Arbeitsspeicher als Initialwerte in den
Ladespeicher schreiben.

http://support.automation.siemens.com/WW/view/de/22295462

Gruß
Harald
 
Zuletzt bearbeitet:
Noch ein paar Anmerkungen

Je nachdem, wie viele Werte als "Werkseinstellung" initialisiert werden sollen und wie verstreut diese Werte in
Programm-DBs liegen, können auch andere Verfahren als SFC83 günstiger sein.
  • Das Rücksetzen von DB-Aktualwerten auf Werkseinstellungswerte muß nicht mit der SFC83 gemacht werden.
    Es kann auch in einem Programmteil hard-codiert werden, vor allem, wenn es nur wenige Werte sind.
    Code:
      L 123
      T DB10.DBW0
    
      L S5T#500MS
      T DB10.DBW2
    
    //...
    Das braucht aber Programm-Speicherplatz im Arbeitsspeicher und im Ladespeicher.
  • Die Quelle des SFC83 im Ladespeicher muß nicht unbedingt der DB mit der selben Nummer sein, es kann auch
    ein anderer DB sein, auch ein "unlinked" DB, der nur im Ladespeicher liegt.
    Das bietet sich an, wenn es sehr viele Werte sind und diese Werte schreibgeschützt sein sollen.
  • Wenn ein OperatorPanel vorhanden ist, dann kann man auch Rezepturen nutzen. Einer der Rezeptur-Datensätze
    heißt dann eben "Werkseinstellung" (leider nicht schreibgeschützt) oder die Werkseinstellungswerte werden in
    einem Script hard-codiert in die Rezeptur geschrieben. Die Verwendung von Rezepturen benötigt auf der CPU
    keinen Arbeitsspeicher und keinen Ladespeicher.
Gruß
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi gibt es irgendeine Funktion um einen bereich oder gar einen ganzen db mit sammt allen einträgen auf 0 zu setzen?

Hallo.
Jepp, diese (System)Funktion heisst SFC21 "FILL". Funktioniert ähnlich dem SFC20 "Blockmove". Diesen benutze ich meist im Anlauf-OB, um nach einem Neustart Datenbausteine mit statistischen Laufzeit-Daten abzulöschen.

Gruß Approx
 
Soweit mir bekannt ist gibt es die SFC83/84 nur auf CPUs mit MMC, also der 300er Serie und nicht für die 400er.

Es gibt ja die Funktion einen Kalt- oder Warmstart auszulösen mit dem PG. Beim Kaltstart werden die DBs auf iihre Intialwerte gesetzt, das ist dann interessant wenn die Initalwerte, wie so oft, nur Müll enthalten. Ob man so etwas auch programmieren kann, dass die DBs mit ihren Initalwerten bei einer 400er geladen werden, weiß ich ned.

Gruß Rolf
 
Datenbausteine initialisieren geht beim mir mit einem "baugleichen" DB.

Dieser wird mit den Initialwerten versehen und im Anschluß initialisiert - also die von mir vorgegebenen Anfangswerte werden als Aktualwert in den DB geschrieben.
Dann wird der DB "Werkseinstellungen" schreibgeschützt im AG abgelegt.

Nun definiere man einen beliebigen Trigger (z.B.: OB100 oder Flanke von Bedienfeld-Taste).
Beim Trigger-Ereignis kopiere ich den gesamten DB"Werkseinstellungen" über den DB"Ziel" - fertig.

Hat bis jetzt jedesmal funktioniert.
Und man versteht es auch nachmittags noch ;-)
 
Zurück
Oben