Step 7 Viele Fragen zum Rundtisch...

spirit

Level-1
Beiträge
961
Reaktionspunkte
23
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ihr,

ich stehe vor dem großen Problem einen Rundtisch programmieren zu müssen. Glaube da ist Frau doch etwas überfordert…

An einem RT sind mehrere Tray's befestigt; allerdings mehrere Tray's als es Stationen gibt. Die Aufgabe besteht darin, dass Busverbinder zusammengesetzt werden. In ein Gehäuse müssen aus bis zu vier Stationen Kontakte eingesetzt werden. Dann gibt es noch eine Kamera- und eine Druckerstation.

Anbei meine Grundüberlegungen:

Jede Station am RT erhält eine Art Schiebespeicher. Hat der RT gedreht, so wird in jedem Schiebespeicher einer Station das Bit0 gesetzt (sozusagen als Stationsfreigabe). Jetzt wäre es natürlich schön, wenn jede Station in ihrem Schiebespeicher zusätzlich eine Information hätte, ob sie auch tatsächlich arbeiten muss. Wie könnte ich das realisieren – muss hier z.B. zusätzlich Bit1 gesetzt werden? Und dann Abfrage ob Bit0 + 1 aktiv sind und falls ja, dann arbeitet die Station…

Dann, wenn eine Station gearbeitet hat, trägt sie das wieder in ihrem Schiebespeicher ein. D.h. es wird einfach wieder ein Bit im Schiebespeicher gesetzt. Haben alle Stationen diesen Vermerk eingetragen, dann erhält der Tisch wieder die Drehfreigabe. Mein Problem ist nun die Verwaltung der einzelnen Schiebespeicher. Wenn der RT wieder dreht, wird ja das Register um eine Stelle geschoben. Damit verliert sich ja aber auch z.B. die Information, ob eine Station arbeiten muss oder nicht.

1)
Könntet ihr mir bitte hierzu ein konkretes Beispiel geben, wie das mit dem Schiebespeicher in der Praxis am besten gelöst werden könnte? Finde irgendwie keinen Ansatzpunkt…

2)
Sollte so ein RT über einen FU gesteuert werden oder reicht es hier auch einen Getriebemotor über ein Schütz zu schalten. Und können die einzelnen Positionen mittels eines Drehgebers angefahren werden oder macht man das eher mittels Sensoren?


Lieben Dank schon mal vorab!
 
Hi,

habe das auch schon mal gehabt, ich habe nur einen Schiebespeicher für den RT gebraucht. Die Station hat eingetragen ob sie fertig ist und dann konnte der RT weiter drehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So kenn ich das auch, ein FIFO für den Rundtisch, und darin alle relevanten Daten. Das FIFO wird mit dem Drehen des Rundisches geschoben. So weißt du an jeder Station welches Teil du hast und was du machen musst.
 
Wie viele Positionen gibt es denn Überhaupt am RT.

Ich würde eine RT von Weiss oder Taktomat nehmen die Steuerst du über ein Schütz an bis der Positionssensor kommt.
 
Hallo Spirit,
ich mache das so, dass ich für jeden Drehtisch-Platz einen Bearbeitungs-Status des darauf befindlichen Teils abspeichere. Der wird mit dem Drehtisch-Takt weiter geschoben. Die Stationen "wissen" nun für welchen Grund-Zustand sie zuständig sind und ändern ihn nach erfolgter Bearbeitung. Stell es dir einfach als eine Art Laufzettel vor, auf dem die/alle einzelnen Bearbeitungschritte draufstehen und die jeweilige Station ihre Position abhakt wenn sie die Arbeit gemacht hat.
Beispiel :
Station 1 führt das Grundteil zu - sie darf nur arbeiten, wenn die Aufnahme auf dem Tisch frei ist.
Station 2 macht den ersten Arbeitsschritt (was auch immer) - sie darf nur arbeiten wenn die Aufnahme belegt ist, aber der Arbeitsschritt 1 noch nicht gemacht wurde.
Station 4 macht den zweiten Arbeitsschritt (was auch immer) - sie darf nur arbeiten wenn die Aufnahme belegt ist und der Arbeitsschritt 1 gemacht wurde, aber der Arbeitsschritt 2 noch nicht gemacht wurde.
usw.
Station 11 ist die Entnahme NIO - sie darf arbeiten, wenn der Teile-Status unsinnig ist oder wenn der Teile-Status einen Fehler aufweisst (den trägt man dann auch in die Strichliste)
Station 12 ist die Entnahme IO - sie darf arbeiten, wenn der Teile-Status keine Fehler aufweisst und ALLE Arbeitsschritte gemacht worden sind.

Hilft dir das ein wenig ...?

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt hoffe ich, ich habe es richtig verstanden.

So würde ich es realisieren:
Es gibt einen Baustein in dem die vorhandenen Stationen hinterlegt werden.
Ein Rezept(DB), in dem festgelegt ist, was wann und wie bearbeitet werden soll.
Und dann noch einen Baustein in dem die zu dem BT die durchgeführten Arbeitsschritte gespeichert werden.
Wenn der Tisch richtig gerüstet ist, dann kann das Bauteil bearbeitet werden.
Station 1 setzt Bit 0 BT bearbeitet.
Station 32 setzt Bit 31.

Du musst auch nachdenken, dass du ggF vorbearbeitete BT wieder einschleussen mußt, wenn z.B. bei Station 4 ein Fehler war, dieser bereinigt wird und dann wird das BT wieder eingschleusst.
An Station 1-3 vorbei und dann ab 4 weiter bearbeiten.

Du hast nach einem Beispiel gefragt. dazu noch die Frage hast du Codeträger für die BT?
Damit könntest du die Bearbeitung perfekt überwachen.


bike
 
So kenn ich das auch, ein FIFO für den Rundtisch, und darin alle relevanten Daten. Das FIFO wird mit dem Drehen des Rundisches geschoben. So weißt du an jeder Station welches Teil du hast und was du machen musst.

Danke schon mal für eure Antworten. D.h. es gibt nur einen einzigen Schiebespeicher und nicht für jede Station einen eigenen? Wie ist dann so ein FIFO aufgebaut - an Station1 wird das Gehäuse in ein Tray gelegt. Wird hier jetzt Bit0 gesetzt? Nach dreimal Takten muss z.B. Station2 3x arbeiten, um drei Kontakte in das Gehäuse zu pressen. Woher weiß nun Station2, dass sie arbeiten muss - wo wird das im FIFO eingetragen?

@Wetzelaer: Es steht noch nicht ganz fest, aber es dürften wohl 8-9 Stationen am RT werden...

Ah, die anderen waren schneller als ich - lese mir erst nochmals die anderen Beiträge durch und melde mich dann wieder zu Wort! ;)
 
D.h. es gibt nur einen einzigen Schiebespeicher und nicht für jede Station einen eigenen? Wie ist dann so ein FIFO aufgebaut ... ?

Ja ... nur EINEN Schiebespeicher, der als ARRAY of UDT alle Plätze am Tisch abbildet und in seinem UDT den Laufzettel der Teile-Bearbeitung abbildet ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

noch ein kleiner Hinweis, der Tisch darf natürlich nicht bewegt werden wenn nicht alle Stationen fertig sind, sonst kann der Tisch oder z.B. ein Greifer der gerade in den Tisch greift beschädigt werden.
 
Lieben Dank für eure Hilfe!

Aber irgendwie finde ich keinen Ansatz wie ich den Schiebespeicher für die einzelnen Stationen aufbauen kann. Wie könnte denn so ein Schiebespeicher ganz konkret für folgendes Beispiel aussehen:


  • Tray von RT ist an Station1 angekommen und Station1 legt ein leeres Gehäuse in den Tray
  • Ist das Gehäuse im Tray abgelegt, taktet der RT 3x um zu Station2 zu kommen
  • Station2 muss nun 2x hintereinander arbeiten, um zwei Kontakte in das Gehäuse zu pressen
  • Nun muss der RT 1x weitertakten um an Station3 zu kommen
  • Station3 muss 1x arbeiten und einen weiteren Kontakt in das Gehäuse pressen
  • RT taktet wieder 2x und kommt an die Kamerastation
  • Ist alles ok, wird das Gehäuse nach erneutem Takten des RT an der Druckerstation bedruckt
  • Nach 2x takten kommt der RT zur Ausschleußstation; Teil muss nur ausgeschleust werden, wenn es von der Kamera als nIO erkannt wurde
  • Nach noch 1x takten gelangt das Tray mit Gehäuse und Kontaktteil endlich zur Ausgabestation, nachdem es als iO erkannt wurde
  • Danach geht es wieder von vorne los…

Nun zum Schiebespeicher (Beispiel MW10):

Zu Beginn ist dieser ja leer; also darf Station1 arbeiten und ein Teil in das Tray legen. Nach Arbeitsende setzt Station1 das Bit0. Nun wird ja 3x getaktet; d.h. M10.3 ist jetzt aktiv und zeigt an, dass Station2 arbeiten darf.

Wie kann ich jetzt z.B. in diesem Schiebespeicher kennzeichnen, dass Station2 2x hintereinander arbeiten muss?

Hat Station2 gearbeitet, muss sie das ja wieder hinterlegen; wie kann das geschehen?

Sorry, blicke da echt nicht durch!
 
Also ich würde das ganze (grob) so aufbauen:

Jede Station bekommt einen eigenen FB in dem steht was sie machen soll (wahrscheinlich eine Schrittkette).

Als Eingangsparameter für jede Station:
Generelle Bearbeitungsfreigabe z.B. Not-Aus ok (IN)
Startsignal (INOUT)
Anforderung Grundstellungsfahrt (INOUT)
Station nicht bearbeiten (IN)

Als Ausgangsparameter für jede Station:
Grundstellung
Startbereit
Auftrag läuft
Auftrag korrekt abgearbeitet, bereit zum Tisch weitertakten
Aktuelle Schrittnummer (für Diagnosezwecke)

Jedem Tray auf dem Tisch ein Wort zuordnen, in dem eingetragen wird,
was mit dem Tray schon passiert ist. (Es liegt wirklich was drauf, Station 1+2 korrekt bearbeitet
Station 3 fehlerhaft bearbeitet etc.)
Ist natürlich schon ein bisschen verzwickt, mit Leerfahren usw. aber das muss ja nicht gleich zu aller Anfang drin sein.
Was da wirklich noch rein muss zeigt sich am besten während der Inbetriebnahme.

Der Rundtisch selbst sollte eigentlich unkritisch sein.
Ich kenne die Dinger so:
Feste unveränderbare mechanische Teilung (5, 6 ....8 Stationen)
Unten sitzt eine Art Schneckengetriebe, das den Tisch immer um eine Teilung dreht.
Nach jeder Teilung fährt er auf eine Nocke, dann schaltest du den Antrieb ab.
Die Schnecke ist mechanisch so aufgebaut, dass sie am Anfang und Ende fast keine Steigung hat.
Dadurch ist es unkritisch ob der Motor 3 Umdrehungen mehr oder weniger macht.
Drehgeber etc. ist normalerweise nicht nötig
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du machst deinen Schiebespeicher nicht nur als einfaches wort wo du bit schiebst. Sondern ein echtes Array aus dir genehmen UDTs

Der UDT kann ja dann enthalten z.B.
TeileCode als Word
Bearbeitungsschritte als int
Fehlerbit
Derzeitiger Standort als Word/Int/Dword -> dieser kann aber auch z.B. vom Standort im Array abhängig gemacht werden.
etc.

Dann erstellst du in einem DB ein array [0..100] of UDT

jetzt führst du deinen Schritt aus an dem Teil das gerade den richtigen Standort drin hat, zählst da den arbeitsschritt runter. und gehst zum nächsten schritt über wenn kein Arbeitsschritt an dem Standort mehr übrig ist etc.

mfG René
 
Das Problem ist, dass mir die Antworten irgendwie alle zu theoretisch sind - weil mir einfach viel Erfahrung fehlt...

Habe im Netz auch schon ganz speziell nach einem Beispiel gesucht bevor ich euch nerve; bin aber leider nicht fündig geworden!


Ich versuche es mal Stück für Stück:

Ok, wie ein UDT angelegt wird, weiß ich - aber was muss da rein? Larry hat geschrieben, er schreibt da für jeden Drehtisch-Platz einen Bearbeitungs-Status rein. Aber wie kann ich da beispielsweise ganz konkret reinschreiben, dass Station2 z.B. 2x hintereinander arbeiten muss?
 
Schreib doch in diesen Status einfach ne 2 rein.
führe die Bearbeitung durch wenn grösser als 0
wenn Bearbeitung durchgeführt lies Status. Subtrahiere 1 und schreibe das Resultat auf Status zurück.

Gehe erst zur nächsten Station wenn Status 0 ist oder fehler oder oder.

mfG René
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... ich mache das so, dass ich für jeden Drehtisch-Platz einen Bearbeitungs-Status des darauf befindlichen Teils abspeichere. Der wird mit dem Drehtisch-Takt weiter geschoben. Die Stationen "wissen" nun für welchen Grund-Zustand sie zuständig sind und ändern ihn nach erfolgter Bearbeitung. Stell es dir einfach als eine Art Laufzettel vor, auf dem die/alle einzelnen Bearbeitungschritte draufstehen und die jeweilige Station ihre Position abhakt wenn sie die Arbeit gemacht hat.

Beispiel :
Station 1 führt das Grundteil zu - sie darf nur arbeiten, wenn die Aufnahme auf dem Tisch frei ist.
Station 2 macht den ersten Arbeitsschritt (was auch immer) - sie darf nur arbeiten wenn die Aufnahme belegt ist, aber der Arbeitsschritt 1 noch nicht gemacht wurde.
Station 4 macht den zweiten Arbeitsschritt (was auch immer) - sie darf nur arbeiten wenn die Aufnahme belegt ist und der Arbeitsschritt 1 gemacht wurde, aber der Arbeitsschritt 2 noch nicht gemacht wurde.
usw.
Station 11 ist die Entnahme NIO - sie darf arbeiten, wenn der Teile-Status unsinnig ist oder wenn der Teile-Status einen Fehler aufweisst (den trägt man dann auch in die Strichliste)
Station 12 ist die Entnahme IO - sie darf arbeiten, wenn der Teile-Status keine Fehler aufweisst und ALLE Arbeitsschritte gemacht worden sind.

Ja ... nur EINEN Schiebespeicher, der als ARRAY of UDT alle Plätze am Tisch abbildet und in seinem UDT den Laufzettel der Teile-Bearbeitung abbildet ...

Danke René,

ja für diesen einen Fall könnte das so prima gelöst werden!


ABER:
Mein Problem ist einfach immer noch, dass ich nicht weiß wie ich das Geschriebene von Larry in einen UDT verfrachten kann. Es müsste ja, wenn ich das richtig verstanden habe, für jede Station so einen "Laufzettel" geben. Also müssten ja alle Bearbeitungsschritte einer Station z.B. in UDT1 abgebildet werden. Aber wie gebe ich so etwas in einem UDT ein? :confused:


Habe mal so ein ARRAY of UDT angehängt; ist es in etwa so gedacht?


DB_UDT.jpg
 
... ich würde den Schiebespeicher-UDT dann so aufbauen :
Code:
Bit 0 : Teil eingelegt
Bit 1 : Station 1 hat 1. Feder eingelegt
Bit 2 : Station 1 hat 2. Feder eingelegt
Bit 3 : Station 1 hat 3. Feder eingelegt
Bit 4 : Station 2 hat 1. Feder eingelegt
Bit 5 : Station 2 hat 2. Feder eingelegt
Bit 6 : Station 2 hat 3. Feder eingelegt
... der Vorschlag von René (mit der Zähl-Variablen) hat aber auch etwas für sich.
In jedem Fall kannst du dann sogra in der Station unterscheiden, ob die Arbeit noch gar nicht, Teilweise oder vollständig getan ist und bei teilweise dann noch fehlende Arbeitsschritte nachholen.
Der Trick beim Programmieren ist, den komplexen Ablauf in kleine überschaubare Teile zerlegen zu können.

Versuch doch mal deinen Bearbeitungs-Laufzettel nach der von mir beschriebenen Methode für dich umzusetzen und ihn ggf. dann hier vorzustellen.

Gruß
Larry
 
Achja ... es muß nicht für jede Station sondern für jeden Platz am Drehtisch so einen Laufzettel geben.
Der Laufzettel ist der UDT11.
Dein Drehtisch hat z.B. 12 Plätze - du hast dann also ein Array [1..12] of UDT11 ...
Die Station 1 bedient sich IMMER nur am Index 1 und schaut dort nach, ob und ggf. was sie machen kann.
Taktet der Tisch dann schiebst du das ganze Array um 1 nach hinten und den Platz 12 bei Platz 1 wieder rein ( also Platz 12 -> Platz 1, Platz 11 -> Platz 12 usw.).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Achja ... es muß nicht für jede Station sondern für jeden Platz am Drehtisch so einen Laufzettel geben.

Also im Grunde für jedes Tray, das am RT befestigt ist, richtig?


Der Laufzettel ist der UDT11.
Dein Drehtisch hat z.B. 12 Plätze - du hast dann also ein Array [1..12] of UDT11 ...
Die Station 1 bedient sich IMMER nur am Index 1 und schaut dort nach, ob und ggf. was sie machen kann.
Taktet der Tisch dann schiebst du das ganze Array um 1 nach hinten und den Platz 12 bei Platz 1 wieder rein ( also Platz 12 -> Platz 1, Platz 11 -> Platz 12 usw.).

Ok, d.h. es muss aus dem Laufzettel (UDT11) ersichtlich sein, ob eine Station arbeiten muss oder nicht und evtl. wie oft hintereinander? Wenn also z.B. bei Index1 an erster Stelle eine 1 steht, dann muss Station1 arbeiten, usw.
Meinst du das so?


... ich würde den Schiebespeicher-UDT dann so aufbauen :
Code:
Bit 0 : Teil eingelegt
Bit 1 : Station 1 hat 1. Feder eingelegt
Bit 2 : Station 1 hat 2. Feder eingelegt
Bit 3 : Station 1 hat 3. Feder eingelegt
Bit 4 : Station 2 hat 1. Feder eingelegt
Bit 5 : Station 2 hat 2. Feder eingelegt
Bit 6 : Station 2 hat 3. Feder eingelegt

Versuch doch mal deinen Bearbeitungs-Laufzettel nach der von mir beschriebenen Methode für dich umzusetzen und ihn ggf. dann hier vorzustellen.

Gruß
Larry

Sorry, aber ich habe hier noch ein Verständnisproblem!
Dieses Konstrukt hat ja jetzt nichts mit dem Laufzettel (UDT11) zu tun, oder? Hier trägst du ja nur ein, wenn eine Aufgabe erledigt ist. Sehe ich das richtig, dass dieser Schiebespeicher nichts mit dem Array [1..12] of UDT11 zu tun hat?


Danke für eure Geduld... ;)
 
... doch ... der Schiebespeicher ist das besagte Array of UDT.
Hier trage ich ein, ob an einem Drehtisch-Platz eine Aufgabe erledigt wurde - hat ein Platz mehrere Aufgaben dann eben auch mehrere Erledigungs-Vermerke. Dies ermöglicht mir (wenn die Hardware das so hergibt) auch eine unvollständige Arbeit noch zu Ende bringen zu können. Selbst einen manuell weitergetakteten Drehtisch kann ich ganz normal wieder in Automatik bringen - er findet dann schon seinen Einsatz (im schlimmsten Fall muß er ein paar Mal takten ohne etwas zu tun).

Schreib doch mal die/alle Einzel-Aufgaben der/aller Stationen nach meinem Beispiel auf.
Dann kommen wir vielleicht auch (ohne Verständnisproblem) weiter ...

Gruß
Larry
 
Schreib doch mal die/alle Einzel-Aufgaben der/aller Stationen nach meinem Beispiel auf.
Dann kommen wir vielleicht auch (ohne Verständnisproblem) weiter ...

Gruß
Larry

... ich sehe schon, du gibst die Hoffnung noch nicht (ganz) auf; ganz im Gegenteil zu mir! ;)

Die Schrittketten der einzelnen Stationen glaube ich klappen ganz gut - auch das Verständnis, dass der Tisch und die Stationen im Gegentakt arbeiten. Aber das mit dem Speicher übersteigt irgendwie meine Auffassungsgabe...


Ok, ich hätte jetzt mal so einen Ablauf nach deinem Muster entwickelt:
Code:
Bit 0 : Station 01 hat Leergehäuse in Tray eingelegt
Bit 1 : Station 02 hat 1. Kontakt in Gehäuse eingelegt
Bit 2 : Station 02 hat 2. Kontakt in Gehäuse eingelegt
Bit 3 : Station 04 hat 3. Kontakt in Gehäuse eingelegt
Bit 4 : Station 06 hat die eingelegten Kontakte im Gehäuse verpresst
Bit 5 : Station 07 hat das Fertigteil mittels Kamera kontrolliert
Bit 6 : Station 09 hat ein defektes Fertigteil ausgeschleust
Bit 7 : Station 10 hat ein korrektes Fertigteil bedruckt
Bit 8 : Station 11 hat ein korrektes Fertigteil in einen Palettierer gelegt

Die dargestellten Bits werden also immer dann gesetzt, wenn die Aufgabe(n) an den einzelnen Plätzen am RT erledigt sind.

Nun müssen aber doch die einzelnen Stationen noch wissen, dass sie mit der Bearbeitung an der Reihe sind...
 
Zurück
Oben