Step 7 Loop

deadmeachine

Level-1
Beiträge
13
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo miteinander!

ich habe einen Datenbaustein DB 4 (siehe anhang)
alle Zahlen haben verschiedene Aktualwerte.
Wie kann ich am einfachsten alle auf 0 setzen wenn ich taste "Nullen"drücke?
Ich möchte es mit Loop Funktion machen
Kann mir jemand bitte kurz helfen ?
Ich habe es so gemacht aber es stimmt nicht ganz:

AUF DB4
U Nullen

SPBN _100
LAR1 P#0.0
L 5
lop1: T #t_nullen
L 0
T DBW [AR1,P#0.0]
+AR1 P#2.0
SET
L #t_nullen
LOOP lop1

_100: NOP 0

S7-300

MfG
deadmeachine
 

Anhänge

  • sps-forum-loop.PNG
    sps-forum-loop.PNG
    6,8 KB · Aufrufe: 30
Warum denn so umständlich, wenn es wirklich nur diese 5 werte sind, mach´s doch so:

Code:
U Eingang_Nullen
SPBN m001

L 0
T Zahl1
T Zahl2
T Zahl3
T Zahl4
T Zahl5
m001: NOP 0

Und BTW, der code von Dir sollte eigentlich laufen. Was für ein Problem hast Du denn genau?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Warum denn so umständlich, wenn es wirklich nur diese 5 werte sind, mach´s doch so:

Code:
U Eingang_Nullen
SPBN m001

L 0
T Zahl1
T Zahl2
T Zahl3
T Zahl4
T Zahl5
m001: NOP 0

Hallo Florian,

es war nur ein Beispiel.:)
Eigentlich sind es 20 Werte und ich möchte Loop-Funktion lernen deswegen.

MfG
deadmeachine
 
Ich hab da mal was gebaut um komplette DB´s zu löschen.
Wenn du nichts anderes wichtiges in dem DB hast kannst du das auch verwenden.


Code:
//    Datenbaustein laden und Eigenschaften auswerten:
      AUF   #DB_IN
      L     DBNO
      T     #DBNO_Temp
      L     DBLG
      T     #DBLG_Temp
//ANY-Zeiger für Ziel von SFC21/Fill bauen:
      L     B#16#10                     //10h für s7
      T     LB     0
      L     B#16#2                      //Typ BYTE
      T     LB     1
      L     #DBLG_Temp                  //Anzahl (Wiederholungsfaktor)
      T     LW     2
      L     #DBNO_Temp                  //Datenbaustein
      T     LW     4
      L     0                           //Anfangsadresse
      SLD   3                           //Pointer bauen
      T     LD     6
      L     B#16#84                     //Speicherbereich (hier DB)
      T     LB     6
//Nun wird der angegebene (von Extern) DB mit Nullen voll gemacht:
      CALL  "FILL"
       BVAL   :=P#L 18.0 BYTE 1         //Lokaler Speicherbereich freigehalten
       RET_VAL:=#Error                  //Braucht man nicht unbedingt
       BLK    :=#Zeiger_Temp            //baut sich aus den Lokalzugriffen oben zusammen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wörter in einen DB löschen.

Nullen = Trigger zum löschen
Nullen_Anfang = Byte Adresse im DB ab der gelöscht werden soll
Durchläufe = Wie viele Wörter sollen gelöscht werden
i = Schleifenzähler

Code:
U       Nullen
SPBN End

AUF DB4

L       Nullen_Anfang
SLD  3
LAR1

L        Durchläufe
SP_1: T i

L 0
T DBW [AR1, P#0.0]

L 2
+AR1

L i
Loop SP_1

End: Nop 0

*Code ungetestet.



Stefan
 
Zuletzt bearbeitet:
Zurück
Oben