DB komplett oder große Teile löschen

DiplomandSPS

Active member
Beiträge
35
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Morgen die Herren :D

ich Rahmen einer über SPS gesteuerten Messreihe befülle ich einigen Datenbausteine mit sehr vielen Daten. Mit Ende der Messreihe will ich die DB-Bereiche bzw. komplette DB löschen (mit 0 beschreiben).

Gibt es da einen "Killerbefehl" *g*, der mit dem ich möglich viele Teile ansprechen/löschen kann ?


MfG

Martin
 

Markus

Administrator
Teammitglied
Beiträge
5.190
Punkte Reaktionen
1.256
denke mal das deine dbs für die messungen alle gleich groß sind, und wenn du nicht so auf die zykluszeit achten musst, dann würde ich einen weiteren db mit der selben struktur anlegen in de alle startwerte auf 0 stehen, und die anderen einfach mit sfc20 (blkmv) überschreiben.

oder die länge der dbs mit ner sfc (weiß grad nicht auswendig) berechnen und nen pointer durchrasseln lassen der die 0 reischreibt.

2. lösung wäre je nach befarf über mehrer zyklen verteilbar...


aber ich denke du suchst nen standartbefehl um die dbs in einem zug zu löschen, könnte mir da noch vostellen das du sie komplett löschst und neu erzeugst....
 
OP
D

DiplomandSPS

Active member
Beiträge
35
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Ziel: Netzwerkanzahl gering, Übersicht

Morgen Markus,

es ist so, wie Du vermutet hast:

" aber ich denke du suchst nen standartbefehl um die dbs in einem zug zu löschen, könnte mir da noch vostellen das du sie komplett löschst und neu erzeugst...."

Die Zeit ist dabei nebensächlich ......ich will nicht ca 60 DB-Wörter/Doppelwörter usw einzeln löschen müssen. Ziel ist es eigentlich nur wenig Netzwerke zu haben.....

Gruß

Martin
 
N

NetPirate

Guest
Hallo,
guckst Du hier:
http://www.sps-forum.de/phpBB2/viewtopic.php?t=809
beim Neuerstellen mit "E DB" werden aber die aktuellen Speicherinhalte in den DB übernommen. D.h. die Werte innerhalb des DB's sind nicht NULL!
Das löschen des DB funktioniert tadellos mit Aufruf des OB124. Das klappt aber nur bei 135U/115U (CPUs 928 oder 948).
Welche CPU nutzt Du?

Gruß
NetPirate
 
A

Anonymous

Guest
Hallo Diplomand,

möchtest Du den Baustein löschen dann (Auszug aus der S7-Hilfe):

Mit der SFC 23 "DEL_DB" (delete data block) löschen Sie einen im Arbeitsspeicher und gegebenenfalls im Ladespeicher der CPU liegenden Datenbaustein. Der zu löschende DB darf weder in der aktuellen noch in einer niederprioren Ablaufebene aufgeschlagen sein. D. h., er darf weder in einem der beiden DB-Register noch im B-Stack eingetragen sein. Bei Aufruf der SFC 23 startet die CPU sonst den OB 121. Wenn der OB 121 nicht vorhanden ist, wechselt die CPU in STOP.

Mit dem SFC 23 ist ein Datenbaustein löschbar wenn:
Durch Aufruf der SFC 22 "CREAT_DB" erzeugt wurde oder mittels STEP 7 auf die CPU übertragen wurde und nicht mit dem Schlüsselwort
UNLINKED erzeugt wurde.
NICHT LÖSCHBAR allerdings wenn er auf der Flashcard gespeichert ist!

Gruß
NetPirate
 

SPS Markus

Well-known member
Beiträge
324
Punkte Reaktionen
10
Hi,

habe mal soetwas benutzt um neu erstellte DB's zu "befruchten".
(Laufende Nummer des Index zu erhöhen) Geht am besten mit einem Schleifenzähler und einem Pointer.


Markus
 

Harry

Well-known member
Beiträge
76
Punkte Reaktionen
6
Zuviel Werbung?
->Hier kostenlos registrieren
Ich hab das mal so gemacht:


U M 10.0 //Flankenmerker DB mit 0 überschreiben
SPBN INIT

AUF DB 10 //Oeffne DB
LAR1 P#0.0 //Start Adresse im DB
L 32 //Anzahl Doppelworte zum überschreiben
lp: L 0 //Wert zum überschreiben
T DBD [AR1,P#0.0] //Zieladresse
+AR1 P#4.0 //nächstes Doppelwort
TAK //wieder Schaufenzähler in Akku 1 holen
LOOP lp

INIT: NOP 0


Gruss

Harry
 

Markus

Administrator
Teammitglied
Beiträge
5.190
Punkte Reaktionen
1.256
jo dann ist alles weg, aber das wäre wohl zuviel des "guten" weil das programm und die config auch davon betroffen wären... :roll:
 
Oben