# Transitionen einer Schrittkette



## neon (5 November 2006)

Hallo!

Ich muss als Projektaufgabe eine Schrittkette für eine Maschine programmieren. 
Die Maschine muss Werkstücke umsetzen und hat dabei folgende Funktionen:
Heben, Senken, Vorfahren, Zurückfahren. 

Ich habe die Transitionen in einen eigenen FC geschrieben (die gesamte Schrittkette besteht aus ca. 30 Schritten):

NW1
Transition 0 zu 5

U     #Programm_starten
      UN    #Position_oben
      U     #Position_unten
      UN    #Vorfahren
      UN    #Rueckfahren
      =     #Tr0_5 ==> heben

NW2
Transition 5 zu 10

     UN    #Position_unten
      U     #Position_oben
      UN    #Rueckfahren
      =     #Tr5_10 ==>Vorfahren

NW3
Transition 10 zu 15

      UN    #Position_unten
      U     #Position_oben
      UN    #Vorfahren
      UN    #Rueckfahren
      =     #Tr10_15 ==>senken


NW4
     Transition 15 zu 20

      U    #Position_unten
      UN     #Position_oben
      UN    #Vorfahren
 =     #Tr15_20 ==>rückfahren
 

.....
....
jetzt habe ich das Problem, dass u.U. die Bedingung für zwei Transitionen nacheinander zutreffen.
Und deswegen eine Transition garnicht abgearbeitet wird, weil das Programm gleich eine weiter springt.

Beispiel:
1. Greifer ist gesenkt (endschalter unten ein), Maschine steht (startposition).

2. Greifer heben (endschalter unten aus, endschalter oben ein).
3. Maschine soll vorfahren (endschalter oben aus).
==>da aber die Maschine noch nicht vorfährt ist auch die Bedingung im NW3 erfüllt, und der Greifer senkt wieder.

Gibt es eine Möglichkeit, das Programm dazu zu zwingen dass die Transitionen definiert nacheinander abgearbeitet werden?

Mit Graph kenne ich mich nicht aus, und in der Schule benutzen wir leider kein Graph. 
Deswegen programmiere ich es mit Merkern und verschiedenen Bausteinen. 

Ich benutze für die Schrittkette ein FB für die Aktionen einen FB und für die Transitionen einen FC.


mfg neon


----------



## Ralle (5 November 2006)

Hast du dir dieses Schrittkettenkonzept selbst ausgedacht?
Ich finde die Aufteilung in unterschiedliche FB/FC eher unpraktisch, 
besonders für die Fehlersuche.

Sieh dir das einmal an, ist zwar unter dem Stichwort Step5, so lief es
aber dann auch ersmal unter Step7 :

http://www.sps-forum.de/showthread.php?t=1265&highlight=Schrittkette
http://www.sps-forum.de/showthread.php?t=1667&highlight=Sprungverteiler

Eine weitere gute Möglichkeit für Schrittketten in Step7 ist der Sprungverteiler:

http://www.sps-forum.de/showthread.php?t=8926&highlight=Sprungliste


----------



## neon (5 November 2006)

Ich weiß, dass Schrittketten normalerweise in Graph/SPL programmiert werden. 
Aber leider will das unser Lehrer auf diese Art machen.

Gibt es eine Möglichkeit, das ich es so programmieren kann? 
Oder bin ich hier an der Grenze angekommen und muss doch auf SPL umsteigen?


----------



## Ralle (5 November 2006)

Du mußt gar nichts in Graph7 machen, ich habe in den letzten 14 Jahren erst einmal mit Graph7 gearbeitet und programmiere auch mit Schrittketten. Die ersten zwei Links oben zeigen dir doch Merkerbasierte Schrittketten, das wäre schon Mal ein Weg für dich.


----------



## Kai (6 November 2006)

neon schrieb:


> NW1
> Transition 0 zu 5
> 
> U #Programm_starten
> ...


 
Das kann so nicht funktionieren.

Hast Du keine Endschalter Position_vor und Position_zurück?

Wenn die Maschine am Vorfahren oder am Rückfahren ist, woher soll die Maschine wissen, wann sie anhalten soll, wenn sie keine Endschalter hat?

Du könntest höchstens mit einer Zeitverzögerung arbeiten, also die Maschine eine bestimmte Zeit Vorfahren und Rückfahren lassen und nach Ablauf der Zeit die Maschine anhalten.

Gruß Kai


----------



## winny-sps (6 November 2006)

neon schrieb:


> ....
> jetzt habe ich das Problem, dass u.U. die Bedingung für zwei Transitionen nacheinander zutreffen.
> Und deswegen eine Transition garnicht abgearbeitet wird, weil das Programm gleich eine weiter springt.
> ....
> ...



Hallo,

du kannst die die Reihenfolge in Schrittketten beeinflussen in dem du in einem Punkt der Kette einen Merker setzt. In der nachfolgen Transition prüfst du dann über eine UND verknüpfung zusätzlich zu deinen anderen Bedingungen ob der Merker gesetzt ist (Die Merker zurücksetzen nicht vergessen). Wenn du dies konsequent machst sollte eigentlich jeder Schritt mindestens einen Zyklus aktiv sein.


----------



## neon (6 November 2006)

Danke für die Antworten,

ich bin inzwischen auf den Fehler gekommen:

Ich habe vergessen in die UND-Verknüpfung nach dem Vorfahren den Positionsmerker mit einzufügen.

Wie Kai schon geschrieben hat weiß ja die Maschine sonst garnicht wo der Greifer überhaupt steht. :???:


----------



## mr.binford (28 November 2006)

HAI neon,

um zu verihindern, daß du einen schritt überspringst,
kannst du schrittketten immer von hinten programmieren.
Also nicht mit schritt 1 sonder mit 10 oben anfangen, so 
ist jeder schritt min einen zyclus gültig.

FF


----------

