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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 33

Thema: Schrittketten in AWL gegeben falls mit Sprungmarken?

  1. #1
    Registriert seit
    08.05.2008
    Beiträge
    159
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich möchte ein Schrittkette aufbauen in AWL, habe aber irgendwie einen Hänger folgender Aufbau.

    Ich habe 6 Eingänge die mit einer positiven Flanke abgefragt werden und dann gespeichert werden und 3 Verknüpfungen dazu.
    Es soll in einem FB nach einander die 1-6 Eingänge eingelesen werden und mit den 3 Verknüpfungen abgearbeitet werden.
    Also wenn Eingang 1 ist gehe zur 1 Verknüpfung und arbeite die ab, ist die Verknüpfung vom logischen nicht 1 dann springe zur 2 Verknüpfung und arbeite die ab, ist die auch nicht 1 gehe zur
    3. Verknüpfung und arbeite die ab, ist die auch nicht 1 Rücksetze den gespeicherten Eingang 1.

    Zweiter Fall: Wenn Eingang 1 ist gehe zur 1 Verknüpfung und arbeite die ab, ist die Verknüpfung vom logischen nicht 1 dann springe zur 2 Verknüpfung und arbeite die ab, ist die auch nicht 1 gehe zur
    3. Verknüpfung und arbeite die ab und Resette die Speicherung Eingang 1. Danach prüfe ob der der 2. Eingang (gespeichert ist) und gehe wieder die 3 Verknüpfungen durch, bis man bei Eingang 6 ist.

    Dann beginnt alles wieder von vorne. Also wenn alle 3 Verknüpfungen logisch 0 sind kann der Zyklus beendet werden, sollte eins der Verknüpfung 1 sein muss er erst alle 6 Eingänge durchprobiern, erst dann ist ein Zyklus durch.

    Hintergrund ist:

    Die 6 Eingänge sind Alarmeingänge hinter jeder der 6 Eingänge verbirgt sich ein SMS-Text. Dieser Text soll an 1-3 Rufnummern (sind die Verknüpfungen) rausgeschickt werden (FB4.

    Netzwerk 1
    Code:
    Code:
    // Störungen auswerten
          U     #EMA
          FP    #Flankenmerker_01
          S     #Aufrufbedingung_1
          SPBN  N1
    
    N1:   U     #BMA
          FP    #Flankenmerker_02
          S     #Aufrufbedingung_2
          SPB   A2
          SPBN  N2
    
    N2:   U     #Wasserschaden
          FP    #Flankenmerker_03
          S     #Aufrufbedingung_3
          SPB   A3
          SPBN  N3
    
    N3:   U     #Heizungausfall
          FP    #Flankenmerker_04
          S     #Aufrufbedingung_4
          SPB   A4
          SPBN  N4
    
    N4:   U     #Stromausfall
          FP    #Flankenmerker_05
          S     #Aufrufbedingung_5
          SPB   A5
          SPBN  N5
    
    N5:   U     #allg_Stoerung
          FP    #Flankenmerker_06
          S     #Aufrufbedingung_6
          SPB   A6
          SPBN  E1
    
    A1:   U     #Aufrufbedingung_1
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_1
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPB   B1
    
    A2:   U     #Aufrufbedingung_2
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_2
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPB   B1
    
    A3:   U     #Aufrufbedingung_3
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_3
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPB   B1
    
    A4:   U     #Aufrufbedingung_4
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_4
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPB   B1
    
    A5:   U     #Aufrufbedingung_5
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_5
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPB   B1
    
    A6:   U     #Aufrufbedingung_6
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_6
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPB   B1
    
    B1:   U     #Aufrufbedingung_1
          O     #Aufrufbedingung_2
          O     #Aufrufbedingung_3
          O     #Aufrufbedingung_4
          O     #Aufrufbedingung_5
          O     #Aufrufbedingung_6
          L     #Telefon_1
          L     1
          ==I   
          CALL  "BLKMOV"
           SRCBLK :=#Telefon_Nr1
           RET_VAL:=#Wert
           DSTBLK :=#Telefon_Nr_Move
          S     #Speicher1
          SPB   C1
          SPBN  B2
    
    B2:   U     #Aufrufbedingung_1
          O     #Aufrufbedingung_2
          O     #Aufrufbedingung_3
          O     #Aufrufbedingung_4
          O     #Aufrufbedingung_5
          O     #Aufrufbedingung_6
          L     #Telefon_2
          L     1
          ==I   
          CALL  "BLKMOV"
           SRCBLK :=#Telefon_Nr2
           RET_VAL:=#Wert
           DSTBLK :=#Telefon_Nr_Move
          S     #Speicher2
          R     #Speicher1
          SPB   C1
          SPBN  B3
    
    B3:   U     #Aufrufbedingung_1
          O     #Aufrufbedingung_2
          O     #Aufrufbedingung_3
          O     #Aufrufbedingung_4
          O     #Aufrufbedingung_5
          O     #Aufrufbedingung_6
          L     #Telefon_3
          L     1
          ==I   
          CALL  "BLKMOV"
           SRCBLK :=#Telefon_Nr3
           RET_VAL:=#Wert
           DSTBLK :=#Telefon_Nr_Move
          S     #Speicher3
          SPB   C1
          SPBN  E1
    Netzwerk 2
    Code:
    // Prüfen, ob Meldung 1 gesendet werden soll
    C1:   U     #Aufrufbedingung_1
          O     #Aufrufbedingung_2
          O     #Aufrufbedingung_3
          O     #Aufrufbedingung_4
          O     #Aufrufbedingung_5
          O     #Aufrufbedingung_6
          SPBN  E1
    
    // Aufruf des SMS_SEND
          CALL  "SMS_SEND" , "IDB_FB48"
           MPI_TS_ADAPTER:=1
           PHONE_NO      :=#Telefon_Nr_Move
           SCENTER_NO    :=#Servicecenter_Nr
           MESSAGE       :=#SMS_Text_Move
           BUSY          :=#Send_1_Busy
           STATUS        :=#Send_1_Status
    
    
    
    // Prüfung der Aufrufergebnisse auf das Ende der Bearbeitung
    
          U     #Send_1_Busy                // ist BUSY == 0 ?
          SPB   Ende                        // nein, SMS_SEND bearbeitet den Auftrag noch 
    
          L     0                           // ja, Bearbeitung ist abgeschlossen
          L     #Send_1_Status
          ==I                               // STATUS == 0 ?
          SPB   ok_1                        // ja, es ist kein Fehler aufgetreten
          L     W#16#7000                   // nein,  
          ==I                               // hat sich SMS_SEND zurückgesetzt ?
          SPB   Ende                        // ja, SMS_SEND erneut aufrufen
    Netzwerk 3.....
    ......


    Mit einer Rufnummer geht es.

    mfg babylon05
    Zitieren Zitieren Schrittketten in AWL gegeben falls mit Sprungmarken?  

  2. #2
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Zitat Zitat von babylon05 Beitrag anzeigen
    Netzwerk 1
    Code:
    // Störungen auswerten
           U     #EMA
           FP    #Flankenmerker_01
           S     #Aufrufbedingung_1
           SPBN  N1
    
    N1:    U     #BMA
           FP    #Flankenmerker_02
           S     #Aufrufbedingung_2
           SPB   A2
           SPBN  N2
    
    N2:    U     #Wasserschaden
           FP    #Flankenmerker_03
           S     #Aufrufbedingung_3
           SPB   A3
           SPBN  N3
    
    N3:    U     #Heizungausfall
           FP    #Flankenmerker_04
           S     #Aufrufbedingung_4
           SPB   A4
           SPBN  N4
    
    N4:    U     #Stromausfall
           FP    #Flankenmerker_05
           S     #Aufrufbedingung_5
           SPB   A5
           SPBN  N5
    
    N5:    U     #allg_Stoerung
    Hab' mir den Rest (noch) nicht näher angesehen, aber warum machst Du die markierten Sprünge in die nächste Zeile? Die kommt doch sowohl mit als auch ohne Sprung als nächstes dran. Du kannst also die roten Zeilen auch einfach weglassen.
    Geändert von hucki (02.04.2013 um 23:28 Uhr) Grund: beim Zitieren ein bißchen was schief gegangen

  3. #3
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Kann es sein, daß Du generell ein Problem mit dem AWL-Sprungkonzept hast? Z.B.:
    Zitat Zitat von babylon05 Beitrag anzeigen
    Code:
    A1:   U     #Aufrufbedingung_1
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_1
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPB   B1
    
    A2:   ...
    Der CALL-Befehl ist (wie viele andere) nicht VKE abhängig. Du mußt ihn also überspringen, wenn Deine vorigen Bedingungen nicht erfüllt werden, also bei obigem Beispiel:
    Code:
    A1:   U     #Aufrufbedingung_1
          SPBN   A2
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_1
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPA   B1
    
    A2:   ...
    Außerdem werden Deine Anrufbedingungen gesetzt, damit werden Deine Texte in jedem nachfolgendem Zyklus immer wieder überschrieben.
    Beides trifft auch für Deine Telefonnummern zu. Du kannst also maximal an eine Telefonnummer senden.

    PS: Das SPA B1 hab' ich nach Deinem Programmcode verbessert/verwendet. Wenn Deine Bedingungen vernünftig gestellt werden, kann man u.U. auch drauf verzichten und den linearen Programmablauf fortsetzen

    Verbessere erst mal die bis jetzt aufgeführten Sachen, dann sehen wir weiter.
    G8,
    Geändert von hucki (03.04.2013 um 00:18 Uhr)

  4. #4
    babylon05 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2008
    Beiträge
    159
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi hucki

    so habe mal den Programmcode angepasst, habe bis jetzt mit Sprungmarken noch nichts groß gemacht.

    Was mache ich eigentlich wenn Anrufbedingung 6 nicht erfüllt ist, spring ich dann zum Bausteinende?, bzw. wenn die ja erfüllt ist, dann übergibt er ja die erste Telefonnummer an den FB48, wenn er eine SMS gesendet hat soll er ja , falls die 2. Telefonnummer aktiviert wurde mit 1:
    Code:
    L Telefon_1
    L 1
    ==I
    ja wieder von oben einlesen und abarbeiten die Kette

  5. #5
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Poste bitte mal den jetzigen Stand, denn kaum einer hier hat Lust, immer alles abzutippen.
    Bei mir musst Du Dich leider bis heut' Abend gedulden (muss jetzt arbeiten ), aber vlt. hilft Dir noch wer anderes weiter.

  6. #6
    babylon05 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2008
    Beiträge
    159
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    so hier der aktuelle Stand:

    Netzwerk 1
    Code:
     U     #EMA
          FP    #Flankenmerker_01
          S     #Aufrufbedingung_1
          SPB   A1
    
          U     #BMA
          FP    #Flankenmerker_02
          S     #Aufrufbedingung_2
          SPB   A2
    
          U     #Wasserschaden
          FP    #Flankenmerker_03
          S     #Aufrufbedingung_3
          SPB   A3
    
          U     #Heizungausfall
          FP    #Flankenmerker_04
          S     #Aufrufbedingung_4
          SPB   A4
    
          U     #Stromausfall
          FP    #Flankenmerker_05
          S     #Aufrufbedingung_5
          SPB   A5
    
          U     #allg_Stoerung
          FP    #Flankenmerker_06
          S     #Aufrufbedingung_6
          SPB   A6
    
    A1:   U     #Aufrufbedingung_1
          SPBN  A2
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_1
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPA   B1
    
    A2:   U     #Aufrufbedingung_2
          SPBN  A3
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_2
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPA   B1
    
    A3:   U     #Aufrufbedingung_3
          SPBN  A4
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_3
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPA   B1
    
    A4:   U     #Aufrufbedingung_4
          SPBN  A5
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_4
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPA   B1
    
    A5:   U     #Aufrufbedingung_5
          SPBN  A6
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_5
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPA   B1
    
    A6:   U     #Aufrufbedingung_6
          SPBN  A1
          CALL  "BLKMOV"
           SRCBLK :=#SMS_Text_6
           RET_VAL:=#Wert
           DSTBLK :=#SMS_Text_Move
          SPA   B1
    
    B1:   U     #Aufrufbedingung_1
          O     #Aufrufbedingung_2
          O     #Aufrufbedingung_3
          O     #Aufrufbedingung_4
          O     #Aufrufbedingung_5
          O     #Aufrufbedingung_6
          L     #Telefon_1
          L     1
          ==I   
          SPBN  B2
          CALL  "BLKMOV"
           SRCBLK :=#Telefon_Nr1
           RET_VAL:=#Wert
           DSTBLK :=#Telefon_Nr_Move
          SPA   B4
    
    B2:   U     #Aufrufbedingung_1
          O     #Aufrufbedingung_2
          O     #Aufrufbedingung_3
          O     #Aufrufbedingung_4
          O     #Aufrufbedingung_5
          O     #Aufrufbedingung_6
          L     #Telefon_2
          L     1
          ==I   
          SPBN  B3
          CALL  "BLKMOV"
           SRCBLK :=#Telefon_Nr2
           RET_VAL:=#Wert
           DSTBLK :=#Telefon_Nr_Move
          SPA   B4
    
    B3:   U     #Aufrufbedingung_1
          O     #Aufrufbedingung_2
          O     #Aufrufbedingung_3
          O     #Aufrufbedingung_4
          O     #Aufrufbedingung_5
          O     #Aufrufbedingung_6
          L     #Telefon_3
          L     1
          ==I   
          SPBN  B3
          CALL  "BLKMOV"
           SRCBLK :=#Telefon_Nr3
           RET_VAL:=#Wert
           DSTBLK :=#Telefon_Nr_Move
          SPA   B4
    Netzwerk 2

    Code:
    // Prüfen, ob Meldung 1 gesendet werden soll
    B4:   U     #Aufrufbedingung_1
          O     #Aufrufbedingung_2
          O     #Aufrufbedingung_3
          O     #Aufrufbedingung_4
          O     #Aufrufbedingung_5
          O     #Aufrufbedingung_6
          SPBN  Ende
    
    // Aufruf des SMS_SEND
          CALL  "SMS_SEND" , "IDB_FB48"
           MPI_TS_ADAPTER:=1
           PHONE_NO      :=#Telefon_Nr_Move
           SCENTER_NO    :=#Servicecenter_Nr
           MESSAGE       :=#SMS_Text_Move
           BUSY          :=#Send_1_Busy
           STATUS        :=#Send_1_Status
    
    
    
    // Prüfung der Aufrufergebnisse auf das Ende der Bearbeitung
    
          U     #Send_1_Busy                // ist BUSY == 0 ?
          SPB   Ende                        // nein, SMS_SEND bearbeitet den Auftrag noch 
    
          L     0                           // ja, Bearbeitung ist abgeschlossen
          L     #Send_1_Status
          ==I                               // STATUS == 0 ?
          SPB   ok_1                        // ja, es ist kein Fehler aufgetreten
          L     W#16#7000                   // nein,  
          ==I                               // hat sich SMS_SEND zurückgesetzt ?
          SPB   Ende                        // ja, SMS_SEND erneut aufrufen
    
    // (im nächsten Zyklus)
    
          NOP   0                           // nein, ein Fehler ist aufgetreten.
          S     #SMS_1_Sendefehler          // SMS-Sendefehler
          R     #Aufrufbedingung_1          // Löschen der Aufrufbedingung
          R     #Aufrufbedingung_2
          R     #Aufrufbedingung_3
          R     #Aufrufbedingung_4
          R     #Aufrufbedingung_5
          R     #Aufrufbedingung_6
          SPA   Ende
    
    //Die Bearbeitung des FB SMS_SEND wurde fehlerfrei beendet
    ok_1: U     #Aufrufbedingung_1
          SPBN  C1
          R     #Aufrufbedingung_1          // Löschen der Aufrufbedingung
          R     #SMS_1_Sendefehler          // Löschen des Sendefehlers
          SPB   A2
    C1:   U     #Aufrufbedingung_2
          SPBN  C2
          R     #Aufrufbedingung_2
          R     #SMS_1_Sendefehler
          SPB   A3
    C2:   U     #Aufrufbedingung_3
          SPBN  C3
          R     #Aufrufbedingung_3
          R     #SMS_1_Sendefehler
          SPB   A4
    C3:   U     #Aufrufbedingung_4
          SPBN  C4
          R     #Aufrufbedingung_4
          R     #SMS_1_Sendefehler
          SPB   A5
    C4:   U     #Aufrufbedingung_5
          SPBN  C5
          R     #Aufrufbedingung_5
          R     #SMS_1_Sendefehler
          SPB   A6
    C5:   U     #Aufrufbedingung_6
          SPBN  Ende
          R     #Aufrufbedingung_6
          R     #SMS_1_Sendefehler
          SPB   Ende
    Netzwerk 3

    Code:
    Ende: U     #SMS_1_Sendefehler
          =     #Sammelstoerung
    Netzwerk 4

    Code:
    BE
    Vielleicht habe ich ein Denkfehler, er soll ja wenn Aufrufbedingung_1 1 ist und er eine SMS geschickt hat, ja prüfen ob Aufrufbedingung_2 1 ist und nach und nach die Schritte abarbeiten.

  7. #7
    Registriert seit
    11.03.2011
    Beiträge
    384
    Danke
    32
    Erhielt 80 Danke für 69 Beiträge

    Standard

    Code:
      ...
        ==I                               // hat sich SMS_SEND zurückgesetzt ?
          SPB   Ende                        // ja, SMS_SEND erneut aufrufen
    
    // (im nächsten Zyklus)
    
          NOP   0                           // nein, ein Fehler ist aufgetreten.
          S     #SMS_1_Sendefehler          // SMS-Sendefehler
          R     #Aufrufbedingung_1          // Löschen der Aufrufbedingung
    ...
    Dein #SMS_1_Sendefehler wird nie gesetzt, denn wenn sich SMS_SEND zurückgesetzt hat und das VKE ist 1 wird gesprungen, wenn
    nicht gesprungen wurde ist das VKE ß und es wird auch nicht gesetzt.
    Oder wolltest du statt "NOP 0" "SET" nehmen?
    (Nach weiteren Punkten habe ich nicht geschaut, könnten also noch mehr Fehler drin sein.)

    PS: Schau dir mal den FAQ "Wie kann ich einen Zustandsautomaten (State Machine) für die SIMATIC in der Programmiersprache AWL erstellen?" an: Siemens Industry Online Support - Automation Service, Automation Support, Simatic Service, Simatic Support, Technical Support, Technical Consulting
    Ich rufe immer einen Baustein in einem Schritt auf und überprüfe im nächsten das Ergebnis. Je nach Ergebnis verzweige ich dann in weitere Schritte.

  8. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Zitat Zitat von miami Beitrag anzeigen
    wenn
    nicht gesprungen wurde ist das VKE ß und es wird auch nicht gesetzt.
    Oder wolltest du statt "NOP 0" "SET" nehmen?
    SET ist nicht nötig.
    Zitat Zitat von Hilfe zu AWL
    SPB Springe, wenn VKE = 1
    [...]
    Wenn VKE = 1, unterbricht SPB <Sprungmarke> den linearen Programmablauf und springt an das Sprungziel. Der lineare Programmablauf wird am Sprungziel fortgesetzt.
    [...]
    Wenn VKE = 0, wird der Sprung nicht ausgeführt. Das VKE wird auf "1" gesetzt, und der Programmablauf wird mit der folgenden Anweisung fortgesetzt.
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #9
    Registriert seit
    11.03.2011
    Beiträge
    384
    Danke
    32
    Erhielt 80 Danke für 69 Beiträge

    Standard

    Wieder was neues gelernt!

  10. #10
    babylon05 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2008
    Beiträge
    159
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    also passt das oder?

Ähnliche Themen

  1. Sprungmarken in AWL ?
    Von noeppkes im Forum Simatic
    Antworten: 34
    Letzter Beitrag: 15.09.2016, 23:32
  2. Schrittketten mit case
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 23
    Letzter Beitrag: 10.09.2014, 07:06
  3. Programm gesperrt falls nicht bezahlt
    Von wincc im Forum Simatic
    Antworten: 69
    Letzter Beitrag: 13.05.2009, 21:29
  4. Schrittketten in AWL
    Von Anaconda55 im Forum Simatic
    Antworten: 34
    Letzter Beitrag: 18.11.2008, 13:31
  5. Sprungmarken unter S7/AWL
    Von mad_max im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 20.04.2007, 13:55

Lesezeichen

Berechtigungen

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