Transitionen einer Schrittkette

neon

Level-1
Beiträge
45
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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?

:confused:
 
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.
 
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

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
 
Zuviel Werbung?
-> Hier kostenlos registrieren

....
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.
....

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

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.
 
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. :???:
 
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
 
Zurück
Oben