Step 7 DB Aktualwerte auf Anfangswert oder "0" setzen währen "RUN"

sailor

Level-2
Beiträge
641
Reaktionspunkte
27
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

gibt es eine Möglichkeit, einen DB durch einen Befehl auf seine Anfangswerte zu setzen,
bzw. ohne Zeiger und BLKMOV alle Werte eines DB auf "0" zu setzen?

Gruß
Sailor
 
Hi,
ich weiss nicht genau was du machen willst, aber wie sieht es mit der SFC21 "Fill" aus?
"0" schreiben geht auf jeden Fall. Und wenn du einen DB mit den Anfangswerten hast sollte dies auch funktionieren.
Wieso willst du keine Zeiger oder BLKMOV verwenden?

Gruß
ben
 
Und mit SFC 83 "READ_DBL" kannst du ihn auf die Anfangswerte initialisieren. Sollten die alle 0 sein ist natürlich die Methode FILL von Vorteil.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da fällt mir ein, ich hab auch schon mal was mit einer Schleife gebastelt:

Code:
//DB-Zeiger einstellen
  AUF   #DB_Nummer
      L     DBNO
      T     #pt_DB

//Kontrolle, ob DB vorhanden
      CALL  SFC   24
       DB_NUMBER :=#pt_DB
       RET_VAL   :=#RET_VAL_SFC24
       DB_LENGTH :=#DB_Laenge
       WRITE_PROT:=#DB_WP

//Sprung, wenn DB nicht vorhanden oder schreibgeschützt
   O(    
      L     #RET_VAL_SFC24
      L     0
      <>I   
      )     
      O     #DB_WP
      SPB   ende

//Alle Bytes werden mit dem Wert "0" überschrieben.
      L     0                           // Startadresse laden (Byte 0)
      T     #Nr

      AUF   DB [#pt_DB]                 // DB aufrufen
      L     #DB_Laenge                  // Größe DB (in Bytes) auf Schleifenzähler schreiben
m001: T     #LoopZaehler                // (Anzahl Bytes im DB = Anzahl Schleifen)

      L     #Nr                         // Nr des zu adressierenden Byte in Zeiger wandeln
      SLD   3
      T     #Adr

      L     0                           // adressiertes MB mit "0" beschreiben
      T     DBB [#Adr]

      L     #Nr                         // Adressierung auf das nächste Byte erhöhen
      L     1
      +I    
      T     #Nr

      L     #LoopZaehler
      LOOP  m001

ende: NOP   0
 
ich gehe davon aus das du S7-classic meinst.
Außer "Datenbaustein initialisieren" über den Simatic Manager, sehe ich da keine Möglichkeit das mit einem Befehl auszuführen. Ansonst gibts da auch noch den SFC83 der kopiert einen DB, siehe auch hier.

MfG MK

PS.. zu langsam, damn
 
Zurück
Oben