Problem mit Verzweigungen in s7 graph

cy-lord

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe ein großes Problem mit meinem graph 7 Programm:

3 Zylinder sollen nacheinander auf ein Fließband gelegt werden, sobald die Zylinder durch eine Lichtschranke gegangen sind, wird jeweils ein Timer gestartet. Nach 3 Sekunden sollen die Zylinder dann nacheinander vom Fließband in ein Silo befördert werden.

In meinem Programm benutze ich für jeden Zylinder einen parallelen Zweig in dem der jeweilige Timer gestartet wird und der Zylinder ausgestoßen wird.


Mein Problem ist, dass die Zeit NUR für den ersten Zylinder stimmt. Bei dem 2. und 3 Zylinder wird der Pneumatikzylinder viel zu spät angesteuert!

Habt ihr eine Idee wie man das Problem lösen kann?
In einem weiteren Schritt sollen noch viel mehr Zylinder gleichzeitig sortiert werden


BG393998.bmp
 
Sehe ich das richtig, es werden 3 Zylinder auf´s Band gelegt. Nach dem Durchlaufen der Lichtschranke sollen diese wieder im Abstand von 3s in den Silo geschoben werden ?
Ich würde sagen, pos. Flanke der Lichtschranke startet Timer, nach 3s wird Zylinder in Silo geschoben.

Da brauchst Du doch keine 3 Timer, da reicht einer, der bei pos. Flanke der LS schaltet.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Graph

Hi,
die SK sieht mir ein wenig komisch aus..vielleicht ist die Überlegung
die Sache ohne Parallelzweige zu lösen, die Parallelschritte warten auch
immer auf alle entspr.Transitionen.

Gruss: V.
 
Ich kann mir wirklich nicht vorstellen, wie die Kette ohne parallelen Zweig gehen soll, hab vergessen zu sagen, dass der Abstand der Zylinder viel weniger als 3s beträgt.
Wenn zb 3 Zylinder auf den Band sind und der erste durch die Erkennung geht wird die Zeit gestartet, jetzt startet der 2. und 3. die Zeit nochmal. Daraus resultiert doch dass nur der 3. einsortiert wird.
Meiner Meinung nach, muss soband ein Teil durch die Erkennung geht die Kette sich verzweigen. Jeder Zweig hat dann seine eigene "Zeit"
Mein Problem ist nur, dass er erste richtig sortiert wird aber die anderen ca 0,5s zu spät kommen
Ich hab mal 2 Bilder gemacht
Auf Bild Nr2 ist der 3. Zweig gezeit. Die beiden ersten Zweige sind analog
1 Zylinder erkannt -> 1. zweig und Merker gesetzt dass der 2. Zweig beim nächsten durchlauf benutzt werden soll. Wenn der Zweig fertig ist, wird der Merker gelöscht und der Zweig kann zb den 4. Zyl aufnehmen ....

val05062.bmp

wok05112.bmp
 
Zuletzt bearbeitet:
Kannst Du vielleicht kurz umreisen, was Du realisieren wilst ?
Wenn der 1.Zyl durch die LS geht, wird die Zeit gestartet und er abgeschoben.Kommt der nächste Zylinder, wird die Zeit wieder gestartet, und er nach Ablauf dieser abgeschoben.usw.. Das setzt dann natürlich vorraus, dass der Abschieber entsprechend schnell wieder in Grundposition ist.

Oder willst Du mit einer Art Erkennung verschiedener Zylinder arbeiten ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eigentlich sollen verschiedene Materialien in verschiedene Silos sortiert werden. Das Funktioniert nacheinnander auch schon wunderbar.
Die Steigerung soll jetzt sein, dass die ganze zeit zylinder aufs band gelegt, erkannt und sortiert werden sollen.
Damit es erstmal nicht zu kompliziert wird versuche ich es nur mit schwarzen Zylindern. Es sollen min 3 Stück auf dem Band sein. Der Abstand zwischen Lichtschranke und Silo beträgt 3 Sekunden.
Zyl auf Band-> erkennen -> timer 1
-> Zyl auf Band-> erkennen -> timer 2
-> Zyl auf Band-> erkennen -> timer 3
- >einsortieren 1 2 und 3

Die Abschieber sind natürlich schnell genug ! min 1 Teil pro sekunde
 
Ich werd es mir wenn ich morgen mal Zeit habe, nocheinmal anschauen.
Steh jetzt irgendwie auf der Leitung.

Gruss Sven

Aber das Ganze normal programmieren, stell ich mir einfacher vor.
 
Sortieten

Hi,
Eigentlich sollen verschiedene Materialien in verschiedene Silos sortiert werden.
Die Steigerung soll jetzt sein, dass die ganze zeit zylinder aufs band gelegt, erkannt und sortiert werden sollen.
Möchtest du sowas:
-an der LS kommt ein Tei
--Erkennung für welches Silo das Teil ist(z.B. Silo 1, 2 ,3,4...)
--Starten ein Tiimer für das passende Silo..
-Zeit kommt: raus damit.

So, jetzt kann sofort das gleiche Teil kommen: nochmal das o.g.machen,
wobei der Timer ein anderer ist! Man braucht so viele Timer pro Silo,
je nachdem wieviele Teile "unterwegs" sein können.
Z.B., für Silo 1 reserviere ich 3 Timer:T1, T2, T3.
Teil kommt: wenn T1 nicht belegt, starten...
Teil kommt: wenn T1 belegt, T2 frei: T2 starten
Teil kommt: wenn T1 und T2 laufen, T3 starten..(jetzt wird irgendwann T1 wieder frei für das nächste Teil..)
usw. für die andere Silos.

Vladi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke vladi für deine Zusammenfassung, genau das mache ich in meinem Programm. Mein Problem ist nur, dass die Zweige 2 und 3 viel langsamer laufen als der erste ! Damit meine ich nicht ms sondern ca 0.5s
 
Ich werd es mir wenn ich morgen mal Zeit habe, nocheinmal anschauen.
Steh jetzt irgendwie auf der Leitung.
Aber das Ganze normal programmieren, stell ich mir einfacher vor.

Wahrscheinlich ist es auch so, weil bis sehr viel parallel gearbeitet wird. Die Aufgabenstellung ist aber es muss in graph 7 sein.

bei 3 silos und max 3 je teilen je sorte -> 9 parallele ereignisse
 
Sort.

Hi Kollege,
GRAPH ist nicht die Programmiersprache, wo man sich die Gedanken
darüber machen muss, ob etwas um 0,5 s langsamer oder schneller
läuft; das ist PCS7 auch nicht, dort ist im Normalfall alles unter 1s
Zuffalsgeschichte. Und wenn jemand solche Vorgaben definiert, das
Ding so zu programmieren..na ja :rolleyes:.
Versuche es mit extern bearbeitete Timer, in einem FC ausserhalb
vom GRAPH, in Transitionen lese nur die Timerbits ab. Es ist einfach so.
Oder nimm als Vergleich die interne Schrittlaufzeiten(T,U), die laufen in ms..evtl. klappt es so besser.

Ich hatte auch meine Erfahrungen mit Timer und Counter in GRAPH Aktionen, jetzt verwende ich sie so nicht mehr, basta. :cool:

Vladi
 
Zurück
Oben