Thema Rundtakt.....

Jethro2006

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich bin relative "neu" in der Welt der SPS Programmierung und stehe gerade vor ein hoffe "kleines" Problem.
In der Firma haben wir eine ca. 20 Jahre alte Abfuellanlage wieder ausgekramt um diese auf einen neueren Stand zu bringen. Also sprich eine S7 mit Touchpanel. Die Projekte die ich bis jetzt schon Programmiert haben waren meisten alles Ablaufsteuerungen die man Schritt fuer Schritt Programmieren konnte. Jetzt stehe ich aber vor einer Anlage die einen Rundtakttisch mit secht Positionen hat vobei an 4 Positionen nur etwas gemacht wird, abegefuellt etc.
Mein problem besteht darin das ich diese "sache" mit dem Rundtakttisch Prinzip nicht so richtig nachvollziehen kann. Also wie ich da ran gehen soll. Ich habe zwar schon viel gesucht und gelesen , auch hier, und mit bekommen das es mit Datenbausteine und Schieberegiester funktionieren soll aber ich habe nicht verstanden wie und wo man da ansetzt bei solch ein Problem. Es wäre nett wenn mir jemand mal das erklaeren koennte oder ein Beispiel zeigen kann oder so.
Ich hoffe ich kann auf eure hilfe zaehlen sonst stehe ich weiterhin im regen.
Danke fuer eure Mühe im voraus.
Gruss Jess
 
Ich hoffe ich kann auf eure hilfe zaehlen sonst stehe ich weiterhin im regen.

Ist dir mit einem Schirm geholfen? :ROFLMAO:

AN jeder Position wird etwas gemacht.
Wenn der Tisch zu dieser Position kommt, wird die Funktion gestartet.
Ich würde zunächst beschreiben für jede Position was wie gemacht wird.
Dafür einen oder mehrere Bausteine programmieren.
Dann als übergeordnete Funktion das Takten des Tisches und das Aktivieren der Funktionen.
Wenn dies eine reale Maschine ist, bitte bedenke die Risikoanalyse. Schau dass das Teil sicher ist.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich würde so vorgehen:
jede station/position besteht aus:
- speicherbereich (z.b. werkstückdaten)
- startsignal
- fertigmeldung-signal
- funktion

ablauf:
1. start der maschine abwarten
2. jede station bekommt startsignal
3. die funktion jeder station läuft mit dem stationseigenen speicherbereich
4. fertigmeldung aller stationen abwarten
5. rundtisch eins weiter takten
6. speicherbereiche kopieren 5=>6; 4=>5 ... 1=>2; 1 leeren
7. sprung zu 2.
 
Wir bauen auch Rundtakter und bei uns hat jede Station seine eigene "Schrittkette". Jede Schrittkette kann bis zu 16 Schritte enthalten. Die Startbedingung für den ersten Schritt ist in Jeder Position die Freigabe vom Drehtisch das Werkstück bearbeitet werden kann (Endposition). Dann läuft die Schrittkette ab 1=>2=>~=>16 beim Endschritt wird dann das Schrittregister wieder auf Null geschrieben und das Bit für die Bearbeitung zurückgesetzt. Wenn alle Bearbeitungspositionen 0 zurückmelden ergeht wieder die Startfreigabe an den Tisch.

Definition Schrittkette: Diese wird so gehandhabt dass, einfach nach erfüllung einer Aufgabe in einen Speicherbereich die Schrittnummer die erhöht wird somit kann immer nur einer nach dem anderen kommen
zb. Schrittkette wartet auf Freigabe (Schrittregisterwert= 0)==> Freigabe von Drehtisch SRW= 0 auf 1 Nun ist Schritt 1 aktiv==>Aufgabe erledigenwenn fertig (Endlage Erreicht) SRW 1 auf 2==> und so weiter wir haben uns für jenes sogar mal nen Baustein gebaut. Über diesen läuft dann auch die Störungen Meldungen Laufzeitüberwachung Ausgangsbedingungen und Schrittweiterschaltbedingen

Bei genaueren Antworten musst du genauere Angaben machen.
 
Zuletzt bearbeitet:
Hallo zusammen !
Ein Regenschirm ? Ich denke da mehr an ein Regendach *gg!
Danke erstmal für eure schnellen und Professionellen Antworten.
Wenn ich das richtig verstehe muss ich also die Bity und Byts weiterschieben zur nächsten Station(Datenbaustein) wenn der Drehteller zur nächsten Station fährt. Die nächste Station muss dann aber als "Einschalbedinung" das "erfolgreiche abarbeiten des Füllvorgang" haben oder ? Wie gesagt. Ich verstehe das noch nicht ganz und vor allen ich kann das nicht nachvollziehen wie es gemeint ist was es schwierig macht etwas zu Programmieren und auch nachher zu warten, verbessern, erweitern oder zu ändern.
Der genau Ablauf der Anlage sieht folgend aus:
-die Anlage wird mit den Abfüllbehälter über ein Transportband beschickt und bei jeden Takt wird ein Gefäß mit genommen.
-Das Gefäß wird zur ersten Station, der Abfüllanlage gedreht. Dort befindet sich ein Sensor der Feststellt ob ein Gefäß unter der Abfüllung ist. Wenn ja, Abfüllen wenn nein nichts machen.
-Nach dem erfolgreichen Abfüllen (oder auch nicht) fährt die Anlage ein Takt zur nächsten Station. Dort wird ein Deckel auf dem Gefäß gelegt wenn der Abfüllvorgang erfolgreich war.
-Der nächste Takt bring das Gefäß zu einem Sensor der Kontrolliert ob ein Deck vorhanden ist.
-Dann wiederrum dreht der Teller auf die letzte Station wo etwas gemacht wird, denn wenn der Deckel vorhanden ist wird er jetzt verschlossen.
-Danach dreht der Teller noch einen Takt ins leere, alos wo nicht gemacht wird und dann der nächste takt schiebt das gefäß auf ein Transportband zum Abtransport.

Den Ablauf der Anlage konnte wir nur wieder erkennen weil das alte ding noch läuft obwohl es über drei Jahre im Keller oder besser Aussenlagen gestanden hat. In der Anlage befindet sich noch eine alte Telemechanique SPS "TSX-17". vielleicht sagt einen von euch das ja etwas. Leider haben wir kein möglichkeit an das Programm zu kommen da kein Kabel oder Programmiertgerät vorhanden ist . Aber auch wenn ist wohl keine da der sich damit noch auskennt. Das ing hat zwei EPROM Module einmal das Programm und einmal wohl die PCL Software. Aber nützt ja nichts wenn man die nicht auslesen kann ohne kenntnisse und gerät.

Wie ihr seht stehe ich wirklich i voll im Regen und das noch ohne schutz *fg!
Ich hoffe ihr könnt mir noch ein bisschen weiter helfen vielleicht an hand von Beispielen oder so. Es ist gerade nicht leicht für mich den "Kern" der Rundtaktprogrammierung zu verstehen.
Danke für eure Mühe im voraus.

Gruß Jess
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich verstehe dein befürchten nicht ganz wenn Keine Störung aufgetreten ist muss zb die Ja befüllt sein oder ? Du wirst dies Wohl überwachen oder?

Ist das richtig da dein Drehtisch 6 Positionen (Werkstückträger) hat?

Die Schrittkette 1 für die 1 Position des DT würde jetzt meiner Meinung so aussehen:
Schritt 0 Warten auf Freigabe Drehtisch
Schritt 1 Prüfen ob Dose Vorhanden
Schritt 2 Dose füllen bis Füllstand erreicht oder Gewicht
Schritt 3 Freigabe an Drehtisch
Und dann mit der mit der Startfreigabe und einem Bit vom Antrieb das sich der Drehtisch bewegt (um auch sicher zu stellen das die gleiche Dose nicht zweimal befüllt wird) wird im Schrittregister wieder der Schritt 0 gesetzt und das Spiel beginnt von vorne auf der Position.

Und genau das gleiche machst du mit der Zweiten bis sechsten position.
 
Ich hoffe ihr könnt mir noch ein bisschen weiter helfen vielleicht an hand von Beispielen oder so. Es ist gerade nicht leicht für mich den "Kern" der Rundtaktprogrammierung zu verstehen.

Also das Prinzip der Rundtakt ist nichts anderes wie das Prinzip einer Reihenmaschine (Straße) welche im Kreis gebogen wurde ;)
Somit ist halt Anfang und Ende am selben Platz!
Für die Einheiten / Stationen änderst sich somit nix!

Am einfachsten Du siehst jede Station / Funktion als einen Ablauf.
Ich schreibe mal Ablauf anstatt Schrittkette.
Im Prinzip laufen diese alle Simulatan, nur mit der Prämisse, das die Stationen erst arbeiten wenn der Rundtisch getaktet hat!

Guter Hinweis wäre einmal, du malst dir einen Flowchart auf und danach kannst dann die Ketten programmieren. Das verdeutlicht dann schon vieles.

Also z.B. RT drauf nur drehen, wenn alle EH fertig und außer Störbereich.
Dann dreht Runtisch und löscht in den Stationen die Fertigmeldung ab.

Wenn RT in position und Station keine Fertigmeldung hat, darf diese den Ablauf starten ...

So geht es dann immer im Kreis ...

Beim Schieberegister schiebst einfach ein Datenwort oder mehr im Prinzip auch im Kreis, wenn der RT in Position kommt. Ich habe da früher immer teils zwei Bytes zur Positionsspeicherung genommen. Einmal die aktuelle Position wie der RT steht (auch wenn in Hand verfahren und so) und den anderen wenn RT mit fertigen Werkstücken verfahren wurde. Somit kann man beide vergleichen und wenn gleich, steht der RT für Automatik richtig

Dann geht es im Schieberegsiter im Prinzip so.

P6 -> Temp / P5 -> P6 / P4 -> P5 / P3 -> P4 / P2 -> P3 / P1 -> P2 / Temp -> P1
 
So wie es die Vorredner beschrieben haben würde ich es auch machen. Zu jeder Bearbeitungsstation sollte es in deinem Schieberegister so etwas wie einen GUT/SCHLECHT-Merker geben. Die nachfolgende Station bekommt dann nur einen Startbefehl, wenn die vorherige Station ein GUT-Signal eingetragen hat. Ggf. kannst Du so auch die Anwesenheitskontrolle lösen. Ist das Teil an der entsprechenden Station (z.B. Einlegestation am Start) nicht vorhanden, schreibst Du das Bit im Schieberegister an der Station "SCHLECHT".
Noch ein Tip: Verwende für das Schieberegister remanente Merker oder noch besser eine DB-Variable, damit die Daten nach dem Ausschalten gespeichert bleiben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
die meißten meiner Anwendungen sind Rundschalttische.
Ich löse das so :
Es gibt einen Schiebespeicher (so nennen wir das), der für jeden Platz des Tisches eine Checkliste der Aktionen mitführt (so wie im "wirklichen Leben").
Wird eine Station des Tisches gestartet, so sieht sie zunächst im für sie zuständigen Schiebespeicher nach, ob sie arbeiten muß. Wenn ja, dann macht sie, was zu tun ist und trägt ihren Vermerk im Schiebespeicher ein. Wenn nicht dann ist sie sofort fertig.
Der Tisch und die Stationen arbeiten im Gegentakt - also Tisch hat gedreht -> alle Stationen werden gestartet -> alle Stationen sind fertig -> Tisch kann wieder drehen.
Wenn sich der Tisch dreht wird der Schiebespeicher weitergeschoben. Hierbei wird natürlich der Zustand vom letzten Platz wieder auf den ersten Platz geschoben. Dadurch kann der Tisch auch mal in Hand weitergetaktet werden und die Bearbeitung kommt trotzdem wieder an Gang.

Selbstverständlich ist sowohl der Tisch eine Schrittkette wie auch jede der Stationen eine eigene hat. Ein leerer Platz am Tisch ist auch eine Station, die allerdings immer sofort fertig ist.

Gruß
Larry
 
Das klingt nach einer zu Ende gedachten Lösung :)
Dann gibt es im "Schiebespeicher" aber auch einen Eintrag mit einer Stationsnummer die das "Nest" zuletzt bearbeitet hat, oder? (für die korrekte Weiterbearbeitung)
 
Hey ihr alle,
danke und Danke für eure Antworten. Ihr seit grossartig und verständnisvoll für welche die noch viel zu lernen haben!
Also wie ich das jetzt im Kopf umsetzten muss (kann) das kannich jetzt schon besser nachvollziehen. Nur wie setzte ich Programmtechnisch das mit dem Schieberegister um? Also an einem oder mehre Datenbaustein (sprich ein Datenbaustein pro Station) hatte ich gedacht. Nur das Programmieren des weiterschiebens muss ich jetzt noch umsetzten und besser verstehen.
Soll ich dann die Schiebefunktionen "SHL_W oder SHR_W" benutzen oder kann ich einfach ein den Datenbaustein der Nächsten Station direkt beschreiben damit die Station weis das sie nach dem naechsten Takt zu arbeiten hat oder ob sie nichts tun soll?
Die Stationen habe ich jetzt erstmal getrennt in FB's mit Datenbaustein als "Schrittkette" programmiert. Also einen FB für das Abfuellen,Deckel auflegen,Deckel Kontrolle und Deckel verschliessen.
Jetzt bracuhte cih nur den zusammenhang wie ich es hinbekomme das die sich "unterhalten" also sie sollen wissen was die vorherige station gemacht hat damit sie im nächsten takt wissen ob sie arbeiten müssen oder nicht.
Ich hoffe ich habe das jetzt alles richtig verstanden was ihr mir so geantwortet habt. Sonst wird es jetzt richtig Peinlich :ROFLMAO:!

Danke nochmal an alle !

Gruss Jess
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Lösung für die Daten hängt ein bisschen davon ab, welche Menge an Informationen geschoben werden soll.

Ein einfaches Beispiel: Es soll eingetragen werden, ob die Prüfung/Bearbeitung einer Station in Ordnung war, so dass die nächste Station arbeiten soll. Das geht schön mit einem Schieberegister.

An der ersten Station wird das erste Bit gesetzt, wenn dort die Bearbeitung erfolgreich war. (z.B. S M10.0)
Dann mit SLW1 das MW10 weiterschieben, wenn der Tisch taktet. Dabei natürlich einen Impuls als Trigger verwenden. Die nächste Station arbeitet dann nur, wenn M10.1 = TRUE. Falls dort wiederum die Bearbeitung nicht erfolgreich war, wird das Bit zurückgesetzt. (R M10.1)
So kann man das dann für die folgenden Stationen weiterschreiben und ggf. mehrere Wörter benutzen, um weitere Informationen durchzuschieben.

Bei größeren Datenmengen würde ich empfehlen, diese in einer Struktur abzulegen und diese dann wahlweise in einem Array zu deklarieren oder 1 DB für jeden Platz zu generieren, in dem diese dann abgelegt wird.
 
Man nehme einen DB und dort Reserviert man pro Station bzw. "Werkstückplatz" ein paar Bytes oder Worte. Je nach Inhalt was man alles mitschieben möchte.


Wenn man den Tisch dreht, so wie in meinem ersten Posting schon geschrieben einfach die Daten umkopieren von dem einen auf den anderen Platz/Station.


P6 -> Temp / P5 -> P6 / P4 -> P5 / P3 -> P4 / P2 -> P3 / P1 -> P2 / Temp -> P1

Das kann man Händisch mittels L und T oder mittels dem Block Move machen egal und kommt aufs selbe raus ...
 
...
Dann gibt es im "Schiebespeicher" aber auch einen Eintrag mit einer Stationsnummer die das "Nest" zuletzt bearbeitet hat, oder? (für die korrekte Weiterbearbeitung)
Nicht so ganz. Es kann auch durchaus so sein, dass eine Station mehr als einen Einzelvorgang ausführt. Ich habe also Zustandsbits für den Vorgang, der gemacht wurde.

@TE:
Es ist so, wie von Boxy beschrieben. Der Schiebespeicher (wie ich ihn nenne) ist eine Funktion des Rundschalttisches und nicht der Aggregate daran (letztere beschreien ihn nur). Taktest du z.B. 2mal (vielleicht im Handbetrieb) so muß / soll immer noch alles passen und bearbeitet werden können.
Die Frage, wie groß dieses Speicher wird, hängt stark mit den (individuellen) Bedürfnissen zusammen. Bei mir umfasst der Vorgangs-Schiebespeicher 10 Bytes (wobei hier auch noch kummulierte Info's mit drin sind und der Fehler-Status eines Teils etc.). Darüber hinaus vewende ich den gleichen Baustein immer wieder - ob für eine große oder kleine Anlage ist hie dann egal.

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jungs
... ihr redet mir hier zuviel über das Datenschieben und vergesst dabei
den wichtigsten Aspekt eines Rundschalttisches - der Sicherheit!!!!
Damit meine ich nicht, dass man Schutztüten hat und diese auch
möglichst bei der Drehung des RST verriegelt sind.

Viel wichtiger ist der Schutz vor eigenem programmiertechnischen Versagen.
Es passiert schneller als man denkt, dass man in dem Wunsch taktzeitoptimal
zu programmieren bei seinen programmtechnischen Versuchen
vielleicht doch schon "versehentlich" währen der Drehung des RST
nach unten fährt und ins Leere greift. Spätestens wenn dann der RST zum
stehen kommt, räumt der Werkstückträger dann die Station ab - DESASTER!
Soll mir keiner kommen und sagen - das kann mir nicht passieren.

Daher einen separaten Baustein (FC) Programmieren, den man an das
Ende des OB1-Zyklusses setzt:


Code:
//Station 1
SET
U     "RST-START"   //   z.B. A11.0    
U(
ON "HANDLING OBEN über dem RST" 
ON "HANDLING seitlich weggefahren"
)
S   "Fehler - Station 1 - Stationsfehler während RST-Drehung
R     "RST-START"   //   z.B. A11.0     


//Station 2
SET
U     "RST-START"   //   z.B. A11.0    
U(
ON "HANDLING OBEN über dem RST" 
ON "HANDLING seitlich weggefahren"
)
S   "Fehler - Station 2 - Stationsfehler während RST-Drehung
R     "RST-START"   //   z.B. A11.0   

//Station 3
...


//Station 4
...

usw.


Denn Code sollte man möglichst frühzeitig in sein Programm aufnehmen,
am besten dann, wenn alle entsprechenden Endlagen mit den RICHTIGEN
Sensoren versehen wurden.

Frank
 
Dann sollte ergänzend erwähnt werden, dass alle Sensoren die eine "sichere" Stellung anzeigen auch unbedingt einen Sensortest haben sollten.

Z.B. Pick+Place mit Pneumatikzylinder, dessen Grundstellung hinten als Freigabe zum Takten abgefragt werden soll.
 
Dann sollte ergänzend erwähnt werden, dass alle Sensoren die eine "sichere" Stellung anzeigen auch unbedingt einen Sensortest haben sollten.

Sensortest??? - Den hat es doch automatisch, wenn man bei jedem Wegfahren aus der
"Über RST" -Endlage zusätzlich auf "UndNicht" abfragt ... oder machst du sowass etwa nicht :confused:

Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich wollte das einfach nur ergänzen. Es ist nicht immer alles so "selbstverständlich" und i.d.R. weiß man ja auch nicht, wie viel background der TE hat. Da kann jede Information nützlich sein.
 
Na ja, wir können hier auch über vieles weiter schreiben und gehen vom Thema weg!

Das Thema Schutztüren, Sicherheit beim Takten, Abfragen usw. ist auch bei normalen Taktanlagen usw. zu beachten. Auch gibts da zig Varianten und z.B. Firmeninternas welche man berücksichtigt! Wenn wir bei Adam und Eva anfagen sollen, dann sollte man auch gleich noch an die Fehler eines Bediners denken *ROFL*


Start, Feigabe und evtl. Vorschub oder Bewegunssperre ist meist überall zu berücksichtigen. Nicht nur bei Rundtaktmaschinen!
Denke aber nicht, das ich solch etwas anfangen würde und den OB1 vollknallen und unübersichtilich machen würde! Da beachtet man z.B. in Baustein S vor R und im Fehler Fall würde das Rücksetzen prägnant sein und den Ablauf stoppen. Auch gehören bestimmte Verriegelungen in ne Schritkette oder z.B. an den Ventil-FB ;)
 
Hey ihr !
Danke erstmal das ihr euch so einen "Kopf" macht über das Thema und mich dadurch schon viel weiter gebracht hat als ich noch vor einer Woche gestanden habe. Lauffähig ist es noch nicht, teste es schrittweise immer noch in der Simualtion.
Thema Sensoren. Also jeweils zwei Sensoren an dem Pneumatik Zylinder von der Abfülldüse (oben und untere Position). Einen Sensor am Pneumatik Zylinder der den Deck drauf legt (untere Position) und einen Sensor am Pneumatik Zylinder den den Deckel Festdrückt (auch untere Position nur). Natürlich der Sensor unter der Abfülldüse der erkennt und meldet ob ein Gefäß zum Abfüllen vorhanden ist. Der Sensor zum erkennen ob ein Deckel vorhanden ist liegt zwischen Station zwei und drei.
Thema Sicherheit:
Ihr habt alle recht. Die Sicherheit wird hier gross geschrieben und darüber bin ich auch froh. Denn wenn etwas passiert ist das Theater gross in der Firma . Aber an die Sicherheit in allen belangen habe ich so weit schon gedacht weil wie ihr schon fesgestellt habe , das es an allen Anlagen um die Sicherheit geht und nicht nur bei einer Rundtaktanlage. Ich kam einfach nicht hinter dem "Geheimniss" wie uich solch Rundtakt Programmieren bzw wo ich bei solch einer Anlage ansetzen muss um zu einen Akzeptablen ergebniss zu kommen. Dafür bin ich euch sehr Dankbar, und das allen mit ihren kommentaren.
Der Rundtaktteller liegt eh hinter einer Tür bzw zwei Türen(vorne und hinten) die mit schmersal sicherheitsschalter überwacht werden sobald die tür aufgeht, warum auch immer, geht die Anlage im Stop! Zum einrichten existiert ein Schlüsselschalter der die beiden Türen überbrücken kann aber nur von uns Techniker. Sobald wir fertig sind wir der Abgezogen und weggeschlossen so wie es von der Sicherheit her sei soll. Spmit ist zumindest gewährleistet das keiner von dem Bedienerpersonal gewollt oder ungewollt unter den Staionen greift oder sonst wo hinpacken kann im laufenden Betrieb.

womit ich noch mit mir hapere ist wo ich festlege das der vorgang erfolgreich war und wann nicht? also ich denke mir das ich den letzten Schrittmerker von der Abfülleinheit als "erfolgreich " nehme oder ist das der falsche weg ? genau so wie der zylinder unten ausgelöst wurde der den Deckel drauf legt, dann hat er es acu "getan" oder ist das zu unsicher ?
Die falsch oder nicht erfolgreich Meldung wollte ich auslösen durch eine Zyklusüberwachung in der Schrittkette oder ist das auch nicht der richtige weg ?
Wäre nett, auch wen ich von euch viel verlange, nochmal ein Kopf darüber macht und mir ein paar ratschläge wir ihr das umsetzt geben könnt?
danke im voraus!

gruß Jess
 
Zurück
Oben