SFC23

DiplomandSPS

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

vor kurzem hatte ich die Frage gestellt wie ich am besten Bereiche eines oder komplette DB "resete" (vgl. http://www.sps-forum.de/phpBB2/viewtopic.php?t=84)

Man hat mir unter anderem den SFC23 empfohlen:
" 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! "


Nun habe ich meine Funktion damit versucht:
Um ganz sicher zu gehen die Hirarchieebenen einzuhalten, rufe ich den wie folgt auf :

OB1 => FB11 => SFC 23

Der zu "resetende" DB, DB 59 befindet sich tiefer:

OB1 => FC50 => FB59 => DB59


Meine SPS geht trotz OB121 in Sammelfehler. Baugruppenzustand:
"Bereichslängenfehler beim Schreiben
DB nicht geladen"

Hat jemand eine Idee was ich falsch mache ?


Gruß

Martin
 
OP
D

DiplomandSPS

Active member
Beiträge
35
Punkte Reaktionen
0
Thema erledigt

also *g* .....die Funktion ist schon ok so ....weil der SFC23 löscht nämlich meinen Baustein :D

Man hatte mich also falsch verstanden....ich will keinen DB entfernen sondern nur mit Nullen befüllen *g*.

Naja das nur als Info


Gruß

Martin
 

Ingo dV

Well-known member
Beiträge
61
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Löschen

Moinsens,
in dem kleinen Bspl. kannst du sehen, wie man ein Array auf '0' setzt.
Diese Funktion kannst du natürlich auch auf einen DB übertragen.
(Fill = SFC 21)

Code:
L     0                           // Wert '0' für CLEAR laden
T     #Wert_0                

U     #T_Clear               //  CLEAR ARRAY
SPBN  CLR                    
CALL  "FILL"                  
BVAL   :=#Wert_0         
RET_VAL:=#Fehlercode             
BLK    :=#Visi.Raeumfolge        

CLR: NOP   0
 
Oben