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

Results 1 to 9 of 9

Thread: Sprung SPBN

  1. #1
    Join Date
    15.05.2018
    Posts
    9
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    habe eine generelle Frage zu Sprüngen:

    Wenn eine Bedingung für einen Sprung nicht erfüllt ist, wird die Sequenz nach der Sprungmarke trotzdem abgearbeitet im Zyklus, oder nicht?

    z.B.

    U M0.1
    SPBN M001

    Sequenz 1

    M001: Sequenz 2

    also die Frage ist wird die Sequenz 2 immer abgearbeitet, unabhängig davon, ob die Bedingung für Sprung erfüllt nicht oder nicht, oder nur dann, wenn der Sprung zu der Sprungmarke getätigt ist?

    Danke im Voraus!
    Reply With Quote Reply With Quote Sprung SPBN  

  2. #2
    Join Date
    14.01.2015
    Posts
    6,869
    Danke
    1,409
    Erhielt 1,574 Danke für 1,163 Beiträge

    Default

    also die Frage ist wird die Sequenz 2 immer abgearbeitet, unabhängig davon, ob die Bedingung für Sprung erfüllt nicht oder nicht, oder nur dann, wenn der Sprung zu der Sprungmarke getätigt ist?
    Ja, deine Sequenz 2 wird in jedem Fall abgearbeitet, unabhängig von dem Sprung.
    Mit Grüßen

    Gesendet von meinem Nokia 6310
    【ツ】Ƹ̵̡Ӝ̵̨̄Ʒ

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

    stalmoro (23.02.2021)

  4. #3
    Join Date
    14.01.2015
    Posts
    6,869
    Danke
    1,409
    Erhielt 1,574 Danke für 1,163 Beiträge

    Default

    Wenn du nicht möchtest, dass der Baustein im Falle von Sequenz 1 beendet wird, aus welchem Grund/Sinn auch immer,
    dann müsstest du dein Programm folgendermaßen anpassen:
    U M0.1
    SPBN M001

    Sequenz 1
    BE

    M001: Sequenz 2
    Mit Grüßen

    Gesendet von meinem Nokia 6310
    【ツ】Ƹ̵̡Ӝ̵̨̄Ʒ

  5. Folgender Benutzer sagt Danke zu DeltaMikeAir für den nützlichen Beitrag:

    stalmoro (23.02.2021)

  6. #4
    stalmoro is offline Neuer Benutzer
    Themenstarter
    Join Date
    15.05.2018
    Posts
    9
    Danke
    4
    Erhielt 0 Danke für 0 Beiträge

    Default

    Hallo, vielen Dank für die Antwort! Hast mir sehr geholfen!

  7. #5
    Join Date
    25.06.2017
    Location
    Oerlinghausen
    Posts
    3,337
    Danke
    424
    Erhielt 625 Danke für 522 Beiträge

    Default

    Quote Originally Posted by DeltaMikeAir View Post
    Code:
    U M0.1
    SPBN M001
    Sequenz 1
    
    BE
    
    M001: Sequenz 2

    BE ist aber doch das absolute BausteinEnde ... und M001 liegt dann im Jenseits/Nirvana!?

    Code:
    U M0.1
    SPBN M001  // "If"
    Sequenz 1  // "then"-Zweig
    SPA M002
    
    M001: Sequenz 2  // "else"-Zweig
    M002: BE  // "end_if"

  8. #6
    Join Date
    14.01.2015
    Posts
    6,869
    Danke
    1,409
    Erhielt 1,574 Danke für 1,163 Beiträge

    Default

    Ja Heinrich, das ist mir klar. Es kommt einfach darauf an, was der TE machen möchte. Daher noch der
    Hinweis
    aus welchem Grund/Sinn auch immer
    Entscheiden muss das der TE bzw. sagen was er ganz genau möchte.

    Mit Grüßen

    Gesendet von meinem Nokia 6310
    【ツ】Ƹ̵̡Ӝ̵̨̄Ʒ

  9. #7
    Join Date
    22.06.2009
    Location
    Färöer
    Posts
    16,412
    Danke
    1,353
    Erhielt 4,837 Danke für 3,909 Beiträge

    Default

    Eine vollständige IF..THEN..ELSE sieht so aus:
    Code:
    IF "Bedingung" THEN
      Sequenz 1
    ELSE
      Sequenz 2
    END_IF
    
    Sequenz 3
    und wird in AWL so programmiert:
    Code:
          U    "Bedingung"
          SPB  M001  //wenn erfüllt dann zu M001
          SPA  M002  //sonst (wenn nicht erfüllt) dann zu M002
                     //(SPA kann nicht entfallen!)
    M001: ...
    // Sequenz 1
    
          SPA  M003
    
    M002: ...
    // Sequenz 2
    
          SPA  M003  //(SPA kann entfallen)
    
    M003: ...
    // Sequenz 3
    oder der Kopf andersrum formuliert:
    Code:
          U    "Bedingung"
          SPBN M002  //wenn nicht erfüllt dann zu M002
          SPA  M001  //sonst (wenn erfüllt) dann zu M001
                     //(SPA und M001: kann entfallen)
    M001: ...
    // Sequenz 1
    
          SPA  M003
    
    M002: ...
    // Sequenz 2
    
          SPA  M003  //(SPA kann entfallen)
    
    M003: ...
    // Sequenz 3

    Wenn es keinen ELSE-Zweig geben soll, dann kann man die zugehörige Marke M002 und einige SPA weglassen. (Ein SPA zur nächsten Zeile/Anweisung darunter ist überflüssig, weil der Programmablauf auch ohne SPA sowieso dahin geht.)
    Code:
    IF "Bedingung" THEN
      Sequenz 1
    END_IF
    
    Sequenz 3
    Code:
          U    "Bedingung"
          SPB  M001  //wenn erfüllt dann zu M001
          SPA  M003  //sonst (wenn nicht erfüllt) dann zu M003 (hinter das END_IF)
                     //(SPA kann nicht entfallen!)
    M001: ...
    // Sequenz 1
    
          SPA  M003  //(SPA kann entfallen)
    
    M003: ...
    // Sequenz 3
    oder
    Code:
          U    "Bedingung"
          SPBN M003  //wenn nicht erfüllt dann zu M003 (hinter das END_IF)
          SPA  M001  //sonst (wenn erfüllt) dann zu M001
                     //(SPA und M001: kann entfallen)
    M001: ...
    // Sequenz 1
    
          SPA  M003  //(SPA kann entfallen)
    
    M003: ...
    // Sequenz 3
    oder ohne alles überflüssige
    Code:
          U    "Bedingung"
          SPBN M003  //wenn nicht erfüllt dann zu M003 (hinter das END_IF)
    
    // Sequenz 1
    
    M003: ...
    // Sequenz 3

    Achtung! In der Kopf-Abfrage den Sprung SPA nicht durch SPBN ersetzen!! Das funktioniert nicht!
    Code:
          U    "Bedingung"
          SPB  M001
          SPBN M002  //!!! funktioniert so nicht !!! Weil das SPB davor das VKE=1 setzt!
    
          U    "Bedingung"
          SPBN M002
          SPB  M001  //funktioniert so, sollte man aber nicht machen, damit nicht irgendjemand das einfach umdreht
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.
    'Funktioniert nicht' ist keine Fehlerbeschreibung

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet
    Reply With Quote Reply With Quote IF..THEN..ELSE in AWL  

  10. #8
    Join Date
    22.06.2009
    Location
    Färöer
    Posts
    16,412
    Danke
    1,353
    Erhielt 4,837 Danke für 3,909 Beiträge

    Default

    Quote Originally Posted by Heinileini View Post

    BE ist aber doch das absolute BausteinEnde ... und M001 liegt dann im Jenseits/Nirvana!?
    S7: BE markiert nicht das Bausteinende, sondern es ist lediglich ein unbedingter Rücksprung aus dem Baustein in den aufrufenden Baustein (ein Return). Hinter dem BE darf noch Code stehen, das BE kann ganz normal übersprungen werden. BE darf auch mehrmals im Code vorkommen.

    Die S7-Operation BE ist mit der S5-Software nicht identisch. Bei S7 hat die Operation BE die gleiche Funktionalität wie die S5-Operation BEA.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    Der Pfälzer (24.02.2021)

  12. #9
    Join Date
    25.06.2017
    Location
    Oerlinghausen
    Posts
    3,337
    Danke
    424
    Erhielt 625 Danke für 522 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Quote Originally Posted by PN/DP View Post
    S7: BE markiert nicht das Bausteinende, sondern es ist lediglich ein unbedingter Rücksprung aus dem Baustein in den aufrufenden Baustein (ein Return). Hinter dem BE darf noch Code stehen, das BE kann ganz normal übersprungen werden. BE darf auch mehrmals im Code vorkommen.
    Das habe ich Dir unbesehen geglaubt, Harald ... und trotzdem habe ich vorhin bei Siemens nachgesehen, weil mich interessiert hat, wie Siemens die "Situation" erklärt.
    Die S7-Beschreibungen von BE und BEA gleichen sich, wie ein Ei demselben. Inkl. der Beispiele.
    Lediglich beim BE zusätzlich der Verweis auf bzw. der Vergleich mit dem S5-BE und dem S5-BEA.
    Kein Hinweis auf den S7-BEA beim S7-BE und keiner auf den S7-BE beim S7-BEA und dementsprechend auch kein SterbensWörtchen darüber, dass es 2 Befehle gibt, die sich durch nichts unterscheiden (ausser durch ihre Schreibweise). Keine Empfehlung, ob und wofür man welchen bevorzugt verwenden soll.
    Klar, hier wurde dafür gesorgt, dass das Konvertieren von S5 auf S7 nicht unnötig behindert wird, aber für meine Begriffe übertrieben stillschweigend.

    Sorry, ich habe also Unsinn behauptet

    Gruss, Heinileini

Similar Threads

  1. AWL: SPBN und Co
    By SPS-Fee in forum Programmierstrategien
    Replies: 10
    Last Post: 13.03.2016, 11:01
  2. AS Sprung in PRG
    By Tyler-Durden in forum CODESYS und IEC61131
    Replies: 3
    Last Post: 01.07.2011, 10:08
  3. Spbn
    By Patrick Kniel in forum Simatic
    Replies: 3
    Last Post: 03.12.2009, 12:49
  4. Sprungbefehl SPBN
    By petzi in forum Simatic
    Replies: 9
    Last Post: 10.05.2009, 15:16
  5. Problem mit Befehl SPB und SPBN
    By danielch in forum Simatic
    Replies: 13
    Last Post: 24.10.2007, 08:15

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •