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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: Schrittkette mit Sprung (Abzweig)

  1. #1
    Registriert seit
    16.07.2006
    Beiträge
    45
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Ausrufezeichen


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!
    ich muss in eine Schrittkette einen Alternativabzweig programmieren, nachdem die Schrittkette 8 mal durchlaufen wurde.
    Nach den 8 durchläufen soll die Maschine zu 1 fahren und wieder von neuem beginnen (ohne Unterbrechung).

    Hier ist mein Programm, hat jemand eine Idee wo der Fehler liegen kann?

    Der MW_Startposition wird im letzten Schritt um 1 hochgezählt, und soll bei 9 (also nach dem 8 durchlauf auf 0 gesetzt werden):

    Der MW_Position wird in jeder Station der Maschine um 1 hochgezählt, damit das Programm weiß in welcher Station sich die Maschine befindet.

    NW1: Schritt0 (Startschritt)
    U(
    U #Position_unten
    U #Position_Badmitte
    UN #Position_oben
    UN #Vorfahren
    UN #Rueckfahren
    U #ff320
    O #Reset
    O #Startpos_erreicht
    )
    S #ff0
    U #ff1
    R #ff0
    U #ff0
    = #SR_0


    NW2: Sprung3
    L #MW_Startposition
    L 8
    ==I
    SPB CAS3

    NW3: Sprung1
    L #MW_Startposition
    L 8
    >I
    SPB CAS1

    NW4: Schritt1
    U(
    O(
    L #MW_Position
    L #MW_Startposition
    <I
    )
    O #M_Startposition
    )
    U #Position_Badmitte
    UN #Position_oben
    U #Position_unten
    UN #Vorfahren
    UN #Rueckfahren
    U #ff0
    U #Programm_Automatik_ein
    U #Programm_Autom_ein_stat
    S #ff1
    U(
    O #ff5
    O #Reset
    )
    R #ff1
    U #ff1
    = #SR_1

    NW5: Sprung2
    L #MW_Startposition
    L 8
    <=I
    SPB CAS2

    NW6: Sprungziel1
    CAS1: U #ff0
    R #ff0

    NW7: Zurückfahren auf Position 1 wenn MW2>=8
    U(
    L #MW_Startposition
    L 8
    >=I
    )
    U #Programm_Automatik_ein
    S #ff_rueckfahren
    U(
    O #Startpos_erreicht
    O #Reset
    )
    R #ff_rueckfahren
    U #ff_rueckfahren
    = #SR_2

    NW8: Fahren bis MW_Startposition=2
    L #MW_Startposition
    L 2
    ==I
    = #Startpos_erreicht

    NW9: MW0-MW2-MW4-MW6 rücksetzen wenn Startposition erreicht ist
    U #Startpos_erreicht
    = L 0.0
    U L 0.0
    SPBNB _001
    L 0
    T "Absolutposition"
    _001: NOP 0
    U L 0.0
    SPBNB _002
    L 0
    T "Startposition"
    _002: NOP 0
    U L 0.0
    SPBNB _003
    L 0
    T "Wert_FU_Schnellfahrt"
    _003: NOP 0
    U L 0.0
    SPBNB _004
    L 0
    T MW 6
    _004: NOP 0

    NW10: Sprungziel3
    CAS3: U #ff0
    R #ff0
    S #ff_Sprung3

    NW11: Sprungziel2 /Schritt5
    CAS2: U(
    U #Position_Badmitte
    UN #Position_oben
    U #Position_unten
    UN #Rueckfahren
    U #ff1
    O
    U #Position_Badmitte
    UN #Position_oben
    U #Position_unten
    UN #Rueckfahren
    U #Startpos_erreicht
    O
    U #Position_Badmitte
    UN #Position_oben
    U #Position_unten
    UN #Rueckfahren
    U #ff_Sprung3
    )
    S #ff5
    U(
    O #ff10
    O #Reset
    )
    R #ff5
    U #ff5
    = #SR_5
    R #ff_rueckfahren

    NW12: Schritt 10
    UN #Position_unten
    U #Position_Badmitte
    U #Position_oben
    UN #Vorfahren
    UN #Rueckfahren
    U #ff5
    S #ff10
    U(
    O #ff15
    O #Reset
    )
    R #ff10
    U #ff10
    = #SR_10
    R #ff_Sprung3

    Geändert von neon (27.02.2007 um 11:25 Uhr)
    Zitieren Zitieren Schrittkette mit Sprung (Abzweig)  

  2. #2
    Registriert seit
    18.09.2004
    Ort
    Münsterland/NRW
    Beiträge
    4.718
    Danke
    729
    Erhielt 1.158 Danke für 969 Beiträge

    Standard

    Hallo,

    also was funktioniert denn und was funktioniert nicht????
    Wo inkrementierst du deine MWs (MW_Startposition und MW_Position).
    Auf jeden Fall nicht in dem Code den du gepostet hast.


    marlob

  3. #3
    Avatar von neon
    neon ist offline Benutzer
    Themenstarter
    Registriert seit
    16.07.2006
    Beiträge
    45
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,

    Es funktioniert alles, bis zum 8. durchlauf -dann ist 2 Schritte aktiv und ich weiß nicht wo der Fehler ist.
    Das Problem ist, dass ich nach dem 8. Durchlauf die Schrittkette verlassen muss und die Maschine zur Startposition 1 fahren muss, dann geht alles wieder von vorne los.
    Aber wie kann ich die Schrittkette für diesen Rückfahrschritt aussetzen, und bei 1 wieder setzen?
    Ich habe versucht diesen Rückfahrschritt durch die Sprünge zu realisieren, indem ich vergleiche welcher Wert im MW für den Startschritt steht.


    Das Hochzählen der Position funktioniert mit ADD_I/SUB_I, das durch Näherungsschalter gezählt wird.
    Und die Startposition wird mit dem letzten Schritt hochgezählt, und muss nach dem Rückfahrschritt wieder auf 0 gesetzt werden.

    Ich hoffe jetzt wird mein Problem etwas klarer.

  4. #4
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    Hallo neon,

    mache doch am Ende ne Verzweigung und setze den anderen Schritt verodert auf den 0-ten Schritt.

    hth

  5. #5
    Avatar von neon
    neon ist offline Benutzer
    Themenstarter
    Registriert seit
    16.07.2006
    Beiträge
    45
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo,
    du meinst am Ende des Schritt 0 eine Abfrage, ob der MW_Starposition 8 ist und dann den Schritt für das Rückfahren aktivieren?

    Habe ich das so richtig verstanden?

    //Das würde aber so nicht funktionieren, da ich den Schritt1 überspringen muss wenn der 8. Ablauf fertig ist.

  6. #6
    Registriert seit
    22.11.2005
    Ort
    kl.Odenwald
    Beiträge
    716
    Danke
    111
    Erhielt 85 Danke für 71 Beiträge

    Standard

    also ehrlich gesagtwerd ich aus deiner Beschreibung nicht schlau.

    Mach dir nen Ablaufdiagramm und füge notfalls noch Hilfsschritte ein - dann funktionierts...

    hth

  7. #7
    Avatar von neon
    neon ist offline Benutzer
    Themenstarter
    Registriert seit
    16.07.2006
    Beiträge
    45
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Frage

    Hallo!
    Mich würde jetzt doch interressieren, wie ich eine Schrittkette mit dem Sprungverteiler realisieren könnte.
    Wäre super, wenn mir das jemand kurz erklären könnte.

    Ich habe in meinem SPS-Buch schon nachgeschaut, aber das Thema wird recht kurz abgehandelt.


    Beispiel:

    NW1: Schritt0 (Startschritt)
    U(
    U #Position_unten
    U #Position_Badmitte
    UN #Position_oben
    UN #Vorfahren
    UN #Rueckfahren
    U #ff320
    O #Reset
    O #Startpos_erreicht
    )
    S #ff0
    U #ff1
    R #ff0
    U #ff0
    = #SR_0


    NW11: Schritt5

    U #Position_Badmitte
    UN #Position_oben
    U #Position_unten
    UN #Rueckfahren
    U #ff0
    O
    U #Position_Badmitte
    UN #Position_oben
    U #Position_unten
    UN #Rueckfahren
    U #Startpos_erreicht
    O
    U #Position_Badmitte
    UN #Position_oben
    U #Position_unten
    UN #Rueckfahren
    )
    S #ff5
    U(
    O #ff10
    O #Reset
    )
    R #ff5
    U #ff5
    = #SR_5



    Wie müsste ich das mit SPL machen?
    Ich habe diesen Lösungsansatz:

    SPL Schritt0
    U(
    U #Position_unten
    U #Position_Badmitte
    UN #Position_oben ..............................<== Sprungbedingungen der Schritte
    UN #Vorfahren
    UN #Rueckfahren
    O #Reset
    O #Startpos_erreicht
    )
    S #ff0
    U #ff1
    R #ff0
    U #ff0
    = #SR_0


    SPL Schritt5
    U #Position_Badmitte
    UN #Position_oben
    U #Position_unten
    UN #Rueckfahren
    U #ff0
    O
    U #Position_Badmitte
    UN #Position_oben
    U #Position_unten
    UN #Rueckfahren
    U #Startpos_erreicht
    O
    U #Position_Badmitte
    UN #Position_oben
    U #Position_unten
    UN #Rueckfahren


    SPL SchrittXY

    SPA Schritt0

    ON SPA Schritt 0.................................. <== Abarbeitung der Schritte
    BEA ..........................................................wenn die Sprungbedingung erfüllt ist

    SPA Schritt5
    U SR_0
    = #SR_5

    ON SPA Schritt 5
    O #Reset SPB SPA Schritt 0 .................................<== Springe zum Schritt0 wenn Reset
    BEA ........................................................................Gedrückt wurde.

    Ich müsste ja einen Schritt nach dem anderen abarbeitet....
    Zitieren Zitieren Schrittkette mit Sprungverteiler  

  8. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Code:
          L     "DATA_STATION_".STEPNUMBER   //das ist ein Byte
          SPL   ENDE
          SPA   LEER                        //Schritt 00 - Leerschritt
          SPA   STRT                        //Schritt 01 - Start, Teilekontrolle
          SPA   NHNL                        //Schritt 02 - Niederhalter abwärts
          SPA   BUNL                        //Schritt 03 - Bürstvorschub vorwärts
          SPA   LER1                        //Schritt 04 - Leerschritt
          SPA   BUZE                        //Schritt 05 - Ablauf Bürstzeit  
          SPA   OKAY                        //Schritt 06 - Abfrage Bürstergebnis
          SPA   BUHL                        //Schritt 07 - Bürstvorschub rückwärts
          SPA   NHHL                        //Schritt 08 - Niederhalter aufwärts  
          SPA   LER2                        //Schritt 09 - Leerschritt
          SPA   LETZ                        //Schritt 10 - letzter Schritt
    ENDE: SPA   LEER
    
    
    // Schritt 01 - Start, Teilekontrolle
    STRT: SET   
    
    //++++   Sprung zum Ende wenn kein Teil in Pos.  ++++
          U     "DATA_STATION_".Stat_Auto
          U(    
          ON    "DATA_PLANT_INFO".INFO_RT1_Nest_03.Teil_2_vorhanden
          ON    "DATA_GLOBAL_TECHNOLOGIE".Typ_Prod.Aktivieren.ST_10
          )     
          S     "DATA_STATION_".K_LAST_STEP
          SPB   LEER
    
    //++++   wenn Teil v.h.-->nächster Schritt  ++++
          U     "DATA_PLANT_INFO".INFO_RT1_Nest_03.Teil_2_vorhanden
          U     "DATA_GLOBAL_TECHNOLOGIE".Typ_Prod.Aktivieren.ST_10
          O     
          U     "DATA_STATION_".Step_angewaehlt
          S     "DATA_STATION_".SK_NEXT_STEP_AUTO   //damit wird dann das Schrittbyte um 1 erhöht, beim nächsten Zyklus kommt man in den nächsten Schritt
          SPA   LEER
    
    // Schritt 02 - Niederhalter abwärts
    NHNL: SET   
          S     "DATA_STATION_".MSG_OUT_01_SET
    
          UN    "E s9 Niederhalter GS"
          S     "DATA_STATION_".SK_NEXT_STEP_AUTO
          SPA   LEER
    
    // Schritt 03 - Bürstvorschub vorwärts
    BUNL: SET   
          S     "DATA_STATION_".MSG_OUT_01_SET
          S     "DATA_STATION_".MSG_OUT_02_SET
          S     "DATA_STATION_".MSG_OUT_05_SET
    
          UN    "E s9 Niederhalter GS"
          UN    "E s9 Vorschubzyl. GS"
          U     "E s9 Klappe AS"
          UN    "E s9 Klappe GS"
          S     "DATA_STATION_".SK_FORCE_STEP
          SPA   LEER
    
    // Schritt 04 - leer
    LER1: SET   
    
          S     "DATA_STATION_".SK_FORCE_STEP
          SPA   LEER
    
    // Schritt 05 - Ablauf Bürstzeit 
    BUZE: SET   
          L     "DATA_GLOBAL_TECHNOLOGIE".Produktionsdaten[5]    //vorgegebene Bürstzeit vom TP
          L     10
          /I    
          T     "DATA_STATION_".SK_Waiting_Time
    
          S     "DATA_STATION_".SK_FORCE_STEP
          SPA   LEER
    
    // Schritt 06 - Leerschritt
    OKAY: SET   
    
          S     "DATA_STATION_".SK_FORCE_STEP
          SPA   LEER
    
    
    // Schritt 07 - Bürstvorschub rückwärts
    BUHL: SET   
          S     "DATA_STATION_".MSG_OUT_02_RES
          S     "DATA_STATION_".MSG_OUT_05_RES
    
          U     "E s9 Vorschubzyl. GS"
          UN    "E s9 Vorschubzyl. AS"
          U     "E s9 Klappe GS"
          UN    "E s9 Klappe AS"
          S     "DATA_STATION_".SK_NEXT_STEP_AUTO
          SPA   LEER
    
    // Schritt 08 - Niederhalter aufwärts
    NHHL: SET   
          S     "DATA_STATION_".MSG_OUT_01_RES
    
          U     "E s9 Niederhalter GS"
          UN    "E s9 Niederhalter AS"
          S     "DATA_STATION_".SK_NEXT_STEP_AUTO
          SPA   LEER
    
    // Schritt 09 - Leerschritt
    LER2: SET   
    
          S     "DATA_PLANT_INFO".INFO_RT1_Nest_03.Teil_2_Mantel_A
          S     "DATA_STATION_".SK_FORCE_STEP
          SPA   LEER
    
    // Schritt 10 - letzter Schritt 
    LETZ: SET   
    
          S     "DATA_STATION_".K_LAST_STEP  //Hiermit wird die Schrittkette abgeschlossen, ein "Endebit" gesetzt!
    
    // Ende
    LEER: NOP   0
    Hier mal ein Beispiel, wie es in meinen Programmen vorkommt. Kannst auch mal nach "Schrittkette" oder "Sprungverteiler" hier im Forum suchen, da gibts glaube ich auch schon Erläuterungen zu diesem Thema.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  9. #9
    Avatar von neon
    neon ist offline Benutzer
    Themenstarter
    Registriert seit
    16.07.2006
    Beiträge
    45
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Frage

    Danke, sowas habe ich gesucht.
    Wie könnte ich auf diese Art eine Verzweigung einbauen?

    z.B.:
    Wenn E0.0=1 dann führe Schritt1 aus, und dann weiter bei Schritt5

    Wenn E0.1=1 dann führe Schritt2 aus, und dann weiter bei Schritt5

    Und wenn ich Reset drücke springe zu Schritt0 und setzte alle anderen Schritte zurück.

    Werden die SPL Anweisungen (Schritte 0-10) eigentlich automatisch nacheinander abgearbeitet?


  10. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bei SPL wird solange in die entsprechende Verzweigung gesprungen, bis eine neue Nummer in das Byte eingetragen wird. Ruf mal die Hilfe dazu in Step7 auf, ist ganz gut erläutert. Für die Weiterschaltung mußt du selbst sorgen.

    Hier mal ein anderes Beispiel, mit Stepweiterschaltung:

    Code:
    NW1:
    
          L     #Stepcounter
          SPL   ALE2
          SPA   END
          SPA   T3S0                        //Tab 3 Seg 0
          SPA   T5S0                        //Tab 5 Seg 0
    ALE2: SPA   END
    
    NW2:
    
    T3S0: NOP   0                           //;
    
          L     3
          T     #Send.Tabellennummer
          L     0
          T     #Send.Segmentnummer
    
    //;
    
          U(    
          L     #Recive.Tabellennummer
          L     #Send.Tabellennummer
          ==I   
          )     
          U(    
          L     #Recive.Segmentnummer
          L     #Send.Segmentnummer
          ==I   
          )     
          SPBN  BUSY
    
          CALL  "BLKMOV"
           SRCBLK :=P#DIX 50.0 BYTE 13
           RET_VAL:=#Ret_Val_Temp
           DSTBLK :=#Tabelle_3.Segment_0    //P#DIX 148.0 BYTE 13     //Tabelle 3 Segment 0
    
          L     #Ret_Val_Temp
          L     0
          <>I   
          SPB   ERR
    
          SPA   NSTP
    
    NW3:
    
    
    T5S0: NOP   0                           //;
    
          L     5
          T     #Send.Tabellennummer
          L     0
          T     #Send.Segmentnummer
    
    //;
    
          U(    
          L     #Recive.Tabellennummer
          L     #Send.Tabellennummer
          ==I   
          )     
          U(    
          L     #Recive.Segmentnummer
          L     #Send.Segmentnummer
          ==I   
          )     
          SPBN  BUSY
    
          CALL  "BLKMOV"
           SRCBLK :=P#DIX 50.0 BYTE 13
           RET_VAL:=#Ret_Val_Temp
           DSTBLK :=#Tabelle_5.Segment_0    //P#DIX 190.0 BYTE 13     //Tabelle 5 Segment 0
    
          L     #Ret_Val_Temp
          L     0
          <>I   
          SPB   ERR
    
          SPA   NSTP
    
    NW4:
    
    END:  NOP   0
          SET   
          R     #fn_Busy                    // set function ready
          L     0
          T     #fn_Error                   // set no error
          L     1
          T     #Stepcounter
          SPA   PGEM
    //;
    ERR:  L     0                           // reset statemachine
          T     #Stepcounter
          SET   
          R     #fn_Busy
          R     #Anlauf_Stat
          SPA   PGEM
    //;
    NSTP: NOP   0
          L     #Stepcounter
          INC   1                           // go to the next Step
          T     #Stepcounter
          SPA   PGEM
    BUSY: L     0                           // set no error
          T     #fn_Error
          SET   
          S     #fn_Busy                    // set function busy
    //;
    PGEM: NOP   0
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Ähnliche Themen

  1. AS Sprung in PRG
    Von Tyler-Durden im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 01.07.2011, 10:08
  2. EK1122 EtherCAT Abzweig einbinden
    Von olitheis im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 27.06.2011, 13:05
  3. Sprung programmieren
    Von Syntaxfehler im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 17.12.2007, 11:19
  4. vergleich mit sprung?
    Von Ibaxx im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.09.2007, 09:50
  5. ob1 sprung in fc1
    Von Anonymous im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 14.11.2005, 17:32

Lesezeichen

Berechtigungen

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