Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 8 von 8

Thema: Loop

  1. #1
    Registriert seit
    11.08.2016
    Ort
    Dortmund
    Beiträge
    13
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard


    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
    Angehängte Grafiken Angehängte Grafiken
    Zitieren Zitieren Loop  

  2. #2
    Registriert seit
    24.03.2010
    Ort
    Westerwald
    Beiträge
    144
    Danke
    37
    Erhielt 12 Danke für 6 Beiträge

    Standard

    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?
    Geändert von plc_typ (23.08.2016 um 16:45 Uhr)
    Gruß Florian

    Programmierer in sechster Generation

  3. #3
    deadmeachine ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.08.2016
    Ort
    Dortmund
    Beiträge
    13
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von plc_typ Beitrag anzeigen
    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

  4. #4
    Registriert seit
    13.05.2015
    Ort
    Coburg
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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

  5. #5
    Registriert seit
    15.05.2015
    Beiträge
    41
    Danke
    2
    Erhielt 9 Danke für 9 Beiträge

    Standard

    Noch einfacher wärs den DB zu strukturieren und dann die Struktur mit SFC21 zu löschen.

  6. #6
    Registriert seit
    15.10.2014
    Beiträge
    78
    Danke
    14
    Erhielt 18 Danke für 15 Beiträge

    Standard

    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
    Geändert von Stefan592 (25.08.2016 um 09:11 Uhr) Grund: Byte, Wörter,... fast das gleiche..

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    9.558
    Danke
    825
    Erhielt 2.826 Danke für 2.275 Beiträge

    Standard

    Zitat Zitat von Stefan592 Beitrag anzeigen
    Wörter in einen DB löschen.
    [...]
    Durchläufe = Wie viele Byte sollen gelöscht werden
    [...]
    Code:
    [...]
    L 0
    T DBW [AR1, P#0.0]
    
    L 2
    +AR1
    [...]
    *Code ungetestet.
    War wohl noch ein bisschen früh am Morgen

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #8
    Registriert seit
    15.10.2014
    Beiträge
    78
    Danke
    14
    Erhielt 18 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von PN/DP Beitrag anzeigen
    War wohl noch ein bisschen früh am Morgen

    Harald
    Ach mist. Nächste mal warte ich bis der Kaffee Pegel den Minimalstand überschritten hat.


    Stefan

Ähnliche Themen

  1. 'Loop' - Beobachten
    Von logo78 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 15.12.2010, 14:28
  2. Loop
    Von Wolflesch im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 15.08.2008, 16:29
  3. Loop in Alarm
    Von lunaticxt im Forum HMI
    Antworten: 1
    Letzter Beitrag: 21.04.2008, 19:36
  4. Sortierstrecke (Loop)
    Von SinusQuadrat im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 06.10.2007, 23:50
  5. loop Schleife
    Von Anonymous im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 30.01.2006, 12:59

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •