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

Ergebnis 1 bis 7 von 7

Thema: Step7 V5.5 - AWL Sprungmarke

  1. #1
    Registriert seit
    11.12.2013
    Beiträge
    33
    Danke
    11
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen,

    ich lade bisher in einem FC eine Variable in den DB.

    L 5
    T DB10.DBW6

    Jetzt würde ich gerne über einen Schalter Zwischen zwei Werten verstellen, dass hab ich folgender Maßen versucht:


    U E 0.0
    SPB then
    SPBN else

    then:
    L 5
    T DB10.DBW6
    SPA ifen

    else:
    L 3
    T DB10.DBW6

    ifen: NOP 0


    leider läd er jetzt weder die 3 noch die 5.

    Kann mir jmd. einen Tipp geben?

    Vielen Dank
    Michi
    Zitieren Zitieren Step7 V5.5 - AWL Sprungmarke  

  2. #2
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.337
    Danke
    448
    Erhielt 688 Danke für 513 Beiträge

    Standard

    Code:
          U     E      0.0
          SPB   MTru
    
    
    //E0.0 war false
          L     3
          T     DB10.DBW    6
          SPA   MEnd
    
    
    //E0.0 war true
    MTru: L     5
          T     DB10.DBW    6
    
    
    MEnd: NOP   0
    Oder umgekehrt
    Code:
          U     E      0.0
          SPBN  MFal
    
    
    //E0.0 war true
          L     5
          T     DB10.DBW    6
          SPA   MEnd
    
    
    //E0.0 war false
    MFal: L     3
          T     DB10.DBW    6
    
    
    MEnd: Nop 0
    Geändert von RONIN (10.02.2016 um 10:36 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  3. Folgender Benutzer sagt Danke zu RONIN für den nützlichen Beitrag:

    michi* (10.02.2016)

  4. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von michi* Beitrag anzeigen
    leider läd er jetzt weder die 3 noch die 5.
    Das kann eigentlich nicht sein, es müßte immer 5 in DB10.DBW6 geladen werden.
    Wird der Code denn ausgeführt?

    SPBN kann man nicht nach SPB ausführen, weil SPB bei nicht-Sprung das VKE = 1 setzt, wodurch das nachfolgende SPBN nie erfüllt wird.
    Man könnte SPBN und SPB vertauschen, dann wäre das nachfolgende SPB allerdings nur "optisch" ein bedingter Sprung, den man ebenso mit SPA ersetzen kann (weil das VKE da immer 1 ist). Da das Sprungziel "then:" direkt nach dem SPB/SPA liegt, kann man den Sprung auch gleich ganz weglassen und kommt auf die Lösung wie von RONIN dargestellt.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #4
    Registriert seit
    11.04.2014
    Ort
    Leipzig
    Beiträge
    5
    Danke
    8
    Erhielt 1 Danke für 1 Beitrag

    Standard

    In dem Beispiel aus #1 setzt das erste SPB das VKE auf 1, so dass das nachfolgende SPBN nie ausgeführt wird und immer nur die Anweisung hinter then: bearbeitet wird.

    ich arbeite in solchen Fällen so, dass ich erst einen Default-Wert lade und dann nur im Falle des Falls den zweiten Wert nachlade. Das erspart Sprünge, Sprungmarken und NOPs.

    Code:
    L 5
    U    E      0.0
            SPB T
            L     3
             T:T     DB10.DBW6

  6. Folgender Benutzer sagt Danke zu svenhuber für den nützlichen Beitrag:

    michi* (10.02.2016)

  7. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Ähnlich wie in C eine Alternativ-Zuweisung mit Bedingungs-Operator
    Code:
    var2 = (var1 == 1) ? 5 : 3 ;
    kann man in AWL auch kurz schreiben:
    Code:
          L 5
          U E0.0
          SPB Tvar
          L 3
    Tvar: T DB10.DBW6

    PS: zu langsam. Beispiel wurde gerade schon von svenhuber gezeigt

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    michi* (10.02.2016)

  9. #6
    michi* ist offline Benutzer
    Themenstarter
    Registriert seit
    11.12.2013
    Beiträge
    33
    Danke
    11
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Vielen Dank für eure Hilfe,

    hab es jetzt wie RONIN vorgeschlagen gemacht.
    Die zweite Variante ist natürlich nochmal kürzer aber so hats jetzt geklappt.

    Mit dem VKE auf 1 war mir so nicht bewusst.




    Vielen Dank
    Michi

  10. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von michi* Beitrag anzeigen
    Mit dem VKE auf 1 war mir so nicht bewusst.
    Cursor in die AWL-Zeile setzen und F1 drücken - bringt eine ausführliche Erklärung der Operation

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 33
    Letzter Beitrag: 31.05.2012, 19:15
  2. Sprungmarke
    Von Rose2 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 25.04.2011, 22:15
  3. Sprungmarke
    Von serpantin im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 24.04.2011, 00:13
  4. Programmierfehlersuche - Step7 - AWL
    Von Hope im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 04.06.2009, 11:42
  5. Sprungmarke
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 22.10.2005, 19:05

Lesezeichen

Berechtigungen

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