TIA Automatische Aufgabenplanung für einen Manipulator

Tmbiz

Level-2
Beiträge
601
Reaktionspunkte
17
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

in meinem aktuellen Projekt geht es um den Materialtransport und die Bearbeitung von Werkstücken. Die Fertigungszelle besteht aus 8 Stationen und zwei Manipulatoren (Roboter). Je nach Kunde kann es sein, dass alle 8 Stationen die gleiche Bearbeitung durchführen. Es kann aber auch sein, dass jede Station eine individuelle Bearbeitung durchführt. Es ist aber auch möglich, dass zwei Stationen eine identische Bearbeitung durchführen, da der Prozess in der Station sehr lange dauert. Wichtig ist, dass die Bearbeitung unter Schutzgas erfolgt. Deshalb gibt es mehrere Schleusen.

Die Werkstücke kommen von einem Logistiksystem in einem Träger (es können mehrere Werkstücke im Träger sein) und werden in Reichweite des ersten Manipulators platziert. Dieser nimmt die Werkstücke auf und legt sie in eine Messstation. Möglicherweise gibt es noch eine Station zum Reinigen oder Vorbereiten. Anschließend legt der erste Manipulator das Werkstück in eine von zwei Schleusen. Von dort übernimmt der zweite Manipulator das Werkstück und bestückt die Bearbeitungsstationen. Wenn die Werkstücke bearbeitet sind, müssen sie je nach Anforderung durch eine der Schleusen und den ersten Manipulator zurück in den Träger oder erste zu einer anderen Bearbeitungsstation und erst dann zurück über die Schleuse usw..

Wichtig ist, dass es Kunden gibt, die noch eine Sonderform haben. Es gibt Kunden, die die Stationen reinigen müssen. Dazu wird ein sogenanntes Reinigungswerkstück aus einer speziellen Station entnommen und in eine der Bearbeitungsstationen transportiert. Das Magazin für diese Reinigungswerkstücke befindet sich in Reichweite des ersten Manipulators. Die Reinigung hängt von verschiedenen Faktoren ab und kann im normalen Planungszyklus nicht berücksichtigt werden. Es kann jedoch berechnet werden, dass nach x Bearbeitungszyklen eine Reinigung erforderlich ist. Es kann also sein, dass ein Werkstück aus der Station muss, dann die Reinigung und dann das Werkstück zurück in der Station und die Bearbeitung beenden.

Auf einer externen Applikation gibt es ein Programm, in dem der Vorarbeiter die Bearbeitungsschritte für die Werkstücke festlegen kann. Er kann auch sagen, in welcher Station das passieren soll. Die Idee ist aber, dass die Planung nun von einem Verwaltungssystem erstellt werden soll. Die Logik soll nun frei entscheiden, über welchen Weg und zu welcher Station das Werkstück gefördert werden soll. Wichtig ist, dass es so schnell wie möglich abläuft und die Logik immer den optimalen Weg berechnet.

Wir könnten als Beispiel auch eine Firma mit verschiedenen Hallen und Arbeitsplätze verwenden. Es gibt verschiedene Tore, welche belegt sind können und dann alternative Wege gefunden werden müssen usw.


Frage:
- Habt ihr eine Idee, wie man ein solches System auf einer SPS programmieren kann?
- Könnte es sein, dass eine SPS dazu nicht geeignet ist?
- Wenn ja, warum ist die SPS dazu nicht geeignet?
 
Zuletzt bearbeitet:
Wie soll man darauf antworten?
Natürlich lässt sich sowas auch auf einer SPS umsetzen.
Neben der Vorwahl ist auch die Werkstückverfolgung genauso Thema.
Je nach Komplexität kann es dann auch sinnvoll sein, ein MES-System oder einen Materialflussrechner zu verwenden.

Am besten mal ein Datenmodell erstellen und danach beurteilen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Im Grunde sehe ich es ähnlich wie @Blockmove , ich bin allerdings der Ansicht, dass dieses "freie Erstellen eines Auftrags" auf einer HMI oder einen MES nicht wirklich umsetzbar ist - das ist aus meiner Sicht eine speziell erstellte Software.

Was ist übrigens ein Manipulator ? Ein Roboter ?
 
Im Grunde sehe ich es ähnlich wie @Blockmove , ich bin allerdings der Ansicht, dass dieses "freie Erstellen eines Auftrags" auf einer HMI oder einen MES nicht wirklich umsetzbar ist - das ist aus meiner Sicht eine speziell erstellte Software.

Was ist übrigens ein Manipulator ? Ein Roboter ?
Ich widersprech zumindest mal in Hinsicht auf das HMI.
Heutige HMI-Systeme können da schon viel. Zum Beispiel Kommunikation mit einer Datenbank.

Beim MES ist es halt vom Hersteller / Produkt abhängig.
Die Aufgabenstellung von @Tmbiz ist jetzt nicht so aussergewöhnlich.
Verteilung von x Teilen mit y Varianten auf z Anlagen.

Deshalb auch der Hinweis auf das Erstellen eines Datenmodells
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Je nach Komplexität kann es dann auch sinnvoll sein, ein MES-System oder einen Materialflussrechner zu verwenden.
Dazu würde ich vorschlagen einen rudimentären UML-Plan zu erstellen welche Stationen es alles gibt & welche Schnittstellen diese haben.
Wenn du weißt was du brauchst, kannst du dich an die Planung machen mit was du das realisieren willst => Entscheidung MES/MFR/SPS.

Ich hab sowas was du beschreibst z.B. bei Kammerofenlinien (Härtereiöfen).
- Produkte werden vom Bediener in einem Hochregallager abgesetzt & die SPS mit Auftragsdaten für das entsprechende Fach versorgt.
- Je nach Prio und Rezept holt sich die Anlage die Produkte und packt diese in den passenden Ofen, bzw. den Ofen der für diesen Auftrag umparametriert wurde. Dabei werden auch Aufträge entsprechend ihrer Prio je nach Rezeptdaten gesammelt (dauert immer einen Ofen umzustellen).
- Nach dem Härten packt ein weiterer Manipulator das Material in eine Waschmaschine.
- Nach dem Waschen werden die Produkte ggf. noch in einen Anlassofen gepackt & kommen danach in ein Ausgabe-Hochregallager.
- Ab da holen dann automatisierte Stapler die Teile zu weiteren Produktion ab.

Aufteilungstechnisch läuft jede Einheit (Lager/Härteofen/Waschmaschine/Anlassofen) mit einer eigenen SPS & besitzt nur eine "dumme" Schnittstelle für die Übergabe von Soll-Prozessparametern und Auftragsdaten (Materialidentifikation).
Das Management des Anlagenverbunds macht dann eine übergeordnete SPS, also die Verwaltung von Aufträgen, wo welches Material wann hin soll, welche Einheit welche Soll-Prozesswerte bekommt, Prozessaufzeichnung für jedes einzelne Produkt.
Hat den großen Vorteil die Einheiten standardisiert entwickeln zu können und nur die Management-SPS auf die Kundenanlage anpassen zu müssen.

Die physische Trennung der SPSen zwischen Management und Einheiten ist geschmackssache.
Könntest das z.B. auch in SoftwareUnits untergliedern.
Wir haben so gemacht, weil wir die Linien in ihrer Lebenszeit oft erweitern/anpassen oder umbauen.
Da liegen zwischen dem Baujahr der jüngsten und ältesten Teileinheit schonmal 30 Jahre.

Betreffend der Management-SPS könntest du dir mal das hier anschauen:
 
Heutige HMI-Systeme können da schon viel. Zum Beispiel Kommunikation mit einer Datenbank.
Warum genau wäre ein Zugriff auf eine Datenbank nötig? Welche Funktionen könnte ich nicht nutzen oder erstellen, wenn das HMI keinen Zugriff auf eine Datenbank hat? Mit der Frage möchte ich den Aufbau besser verstehen. Aus meiner Sicht ist das Panel "nur" eine dumme Mensch-Maschine-Schnittstelle.
Verteilung von x Teilen mit y Varianten auf z Anlagen.
Hast du da bedacht, dass es auch dynamische Anforderungen gibt? Z.B. die Reinigung usw.
Aufteilungstechnisch läuft jede Einheit (Lager/Härteofen/Waschmaschine/Anlassofen) mit einer eigenen SPS & besitzt nur eine "dumme" Schnittstelle für die Übergabe von Soll-Prozessparametern und Auftragsdaten (Materialidentifikation).
Das mit der dummen Schnittstelle sehe ich auch so. Die Übergabe der Daten erachte ich als relativ unproblematisch. Die Verfolgung der Daten ist dann wieder so eine Sache.
Hat den großen Vorteil die Einheiten standardisiert entwickeln zu können und nur die Management-SPS auf die Kundenanlage anpassen zu müssen.
Wäre für uns auch sehr wichtig.
Betreffend der Management-SPS könntest du dir mal das hier anschauen:
Kann das System von Siemens mit dynamischen Anforderungen umgehen? Ich habe es so verstanden, dass die Bibliothek "nur" das Aufzeichnen der Daten ausführt. Nicht die Logik, was wann so sein muss. Habe ich das richtig verstanden?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Produkte werden vom Bediener in einem Hochregallager abgesetzt & die SPS mit Auftragsdaten für das entsprechende Fach versorgt.
Dieser Schritt würde automatisch laufen und vom externen System vorgegeben werden.
Je nach Prio und Rezept holt sich die Anlage die Produkte und packt diese in den passenden Ofen, bzw. den Ofen der für diesen Auftrag umparametriert wurde. Dabei werden auch Aufträge entsprechend ihrer Prio je nach Rezeptdaten gesammelt (dauert immer einen Ofen umzustellen).
Ich habe gerade noch Mühe damit eine Lösung für die Priorisierung zu erstellen. Mein erster Gedanke ist eine Datenbank aus den verschiedenen Jobs, welche erledigt werden müssen. Dann muss aus der Datenbank ein Job gewählt werden. Das Auswahlkriterium ist dann von verschiedenen Dingen abhängig.

Man kann ja z.B. ein Array in der PLC umsortieren. Meine erste Idee ist, das Register nach jedem Job neu nach Prio zu sortieren und dann immer den wichtigsten auszuführen.

Wenn du's berechnen kannst, dann kannst du es auch einplanen.
Ja, das ist verständlich.
 
Ich habe gerade noch Mühe damit eine Lösung für die Priorisierung zu erstellen. Mein erster Gedanke ist eine Datenbank aus den verschiedenen Jobs, welche erledigt werden müssen. Dann muss aus der Datenbank ein Job gewählt werden. Das Auswahlkriterium ist dann von verschiedenen Dingen abhängig.

Man kann ja z.B. ein Array in der PLC umsortieren. Meine erste Idee ist, das Register nach jedem Job neu nach Prio zu sortieren und dann immer den wichtigsten auszuführen.
Die Kriterien müssen eben gewichtet werden.. da kommst du eventuell auch schon in den Bereich von mathematischen Optimierungen (MIP).. gibts da jemanden bei euch, der sich mit Optimierungen auskennt?
 
Kann das System von Siemens mit dynamischen Anforderungen umgehen? Ich habe es so verstanden, dass die Bibliothek "nur" das Aufzeichnen der Daten ausführt. Nicht die Logik, was wann so sein muss. Habe ich das richtig verstanden?
Definiere: dynamisch.
Definiere: Anforderungen.

Diese Bibliothek ist für dich evtl eine Teillösung für die Management-SPS, nicht mehr und nicht weniger.
Eine Übersicht über die Siemens-Bibliotheken findest du hier:
Ob für dich was passendes dabei ist musst du selber schauen.
Für die Logik wirst du wohl kaum etwas fertiges finden.

Man kann ja z.B. ein Array in der PLC umsortieren. Meine erste Idee ist, das Register nach jedem Job neu nach Prio zu sortieren und dann immer den wichtigsten auszuführen.
Das ist die Frage, ob das so einfach geht.
Mach dir mal eine Liste mit Parametern, die die Verarbeitungsreihenfolge beeinflussen können.
Speziell auch betreffend Rüstzeiten bei Produktumstellungen & dem aktuellen Prozesszustand.

Bei uns kann es beispielsweise passieren, dass ein nieder-Prio Auftrag trotzdem zuerst verarbeitet wird, weil ich für den hochpriorisierten Auftrag beispielsweise den Härteofen prozesstechnisch umrüsten müsste (Temperatur, athmosphärische Zusammensetzung, ...).
Genauso dürfen/sollen niederprio-Aufträge nicht ewig im Lager versauern oder in der Anlage Parkplätze belegen, weil sich hochprio Aufträge vorbeidrängeln.

Die Kriterien müssen eben gewichtet werden.. da kommst du eventuell auch schon in den Bereich von mathematischen Optimierungen (MIP)..
Genau diese Gewichtung ist die "dark magic" an dem ganzen Thema.
Diese Priorisierungs-Zusammenhänge mathematisch zu definieren wäre aber auch für ein MES-System/Materialflussrechner notwendig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Zumindest habe ich jetzt mal ein paar Begriffe mit denen ich etwas anfangen kann. Ich habe auch erkannt, dass es bei so einem Materialflussrechner mehrere Elemente gibt. Zum einen eine Logik, welche die Auswahl von Jobs ermöglicht. Dann noch die Priorisierung der Jobs und die Gewichtung der Kriterien. Bzw. nach welchen Attributen die Auswahl erfolgen soll. Ein weitere Punkt ist die Wahl des Weges in der Maschine. Denn wenn eine Schleuse belegt ist, muss ja die andere genommen werden. Es kann aber sein, dass in übernächsten Schritt (Ausfördern aus der Maschine) die Schleuse gebraucht wird. Aber das ist dann eher eine Frage wie der Job selber geplant wird. Es kann natürlich auch sein, dass ein Job gelöscht werden muss, da er durch eine neue Situation überflüssig ist. Fehler und Eingriffe von Hand sind dann auch noch nicht abgedeckt.
 
Je nach größe/Komplexität deiner Anwendung wäre evtl das Stichwort "Shopfloor Management" eine Konsultation des großen G wert.
Es gibt zwar auch fertige Sftware in diesem Bereich, was aber für die interne Verwartung einer einzelnen Maschine ggf. etwas overkill sein könnte.
Trotzdem könntest du die in diesem Bereich gängigen Konzepte mal auf brauchbarkeit prüfen.
 
Danke euch für die Hilfe. Mir ist bewusst, dass meine Fragen teilweise sehr unqualifiziert sind und noch viele offene Fragen beinhalten. Aber dieser oberflächliche Austausch gibt mit immer sehr viele Begriffe, welche ich dann weiterverfolgen kann. Ich werde das Thema nun mal so weiter verfolgen. Danke euch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Je nach größe/Komplexität deiner Anwendung wäre evtl das Stichwort "Shopfloor Management" eine Konsultation des großen G wert.
Es gibt zwar auch fertige Sftware in diesem Bereich, was aber für die interne Verwartung einer einzelnen Maschine ggf. etwas overkill sein könnte.
Trotzdem könntest du die in diesem Bereich gängigen Konzepte mal auf brauchbarkeit prüfen.
Hey, wir sind mit der Planung etwas weiter gekommen. Es ist im Bereich des möglichen, dass wir die Anlage Teilen. Die Prozesskammern könnten von einer SPS gesteuert werden und der Rest von einer andren. Das bedeutet, dass die zwei Manipulatoren von einer SPS kontrolliert werden und den gesamten Materialfluss in der Maschine ermöglichen.
 
Du meinst einen Line Controller und untergeordnete Zellen?
Also sowas wie hier:

Oder meinst du zwei einzelne, "gleichberechtigte" CPUs die jeweils ihren Bereich haben & ihre Abläufe koordinieren?
 
Du meinst einen Line Controller und untergeordnete Zellen?
Also sowas wie hier:

Oder meinst du zwei einzelne, "gleichberechtigte" CPUs die jeweils ihren Bereich haben & ihre Abläufe koordinieren?
Danke für die Rückfrage. Ich versuche es mal zu beschreiben:
Es geht tatsächlich um zwei "gleichberechtigte" Steuerungen (SPS). Die eine ist für die Prozesskammern verantwortliche und die andere für das Fördersystem (bestehend aus zwei Robotern) usw.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genau diese Gewichtung ist die "dark magic" an dem ganzen Thema.
Diese Priorisierungs-Zusammenhänge mathematisch zu definieren wäre aber auch für ein MES-System/Materialflussrechner notwendig.

Zu dem Aspekt könnte ich noch mal einen Tipp gebrauchten. Ich habe ja 3 Lagerplätze mit je 25 Lagern. Jedes Werkstück kann maximal 16 mal gegriffen und abgelegt werden. Ich kann also 16 Bearbeitungsschritte programmieren.

Ich habe zum Test ein Array aufgebaut in dem ich den Ablauf programmiere. Das Flow Array ist besteht aus einem UDT mir 4 Integer Variablen.
Array 1:
Pick.Unit := Lager 1 (int 1)
Pick.Slot := 1
Place.Unit := Bearbeitungsstation 4 (int 4)
Place.Slot := 1

Array 2:
Pick.Unit := Bearbeitungsstation 4
Pick.Slot := 1
Place.Unit := Bearbeitungsstation 5
Place.Slot := 1

Array 3:
Pick.Unit := Bearbeitungsstation 5
Pick.Slot := 1
Place.Unit := Lager 1
Place.Slot := Slot 1

usw.
Ich kann in dem Array das Flowrezept für ein Werkstück festlegen. Wenn alle Werkstücke aus einem Lager oder allen Lagern den gleichen Weg gehen sollen, kann ich im ersten Pick und im letzten Place einfach den Slot um den Wert 1 erhöhen. Wenn das Lager bearbeitet ist, kann ich im ersten Pick und Place auch noch das Lager von 1 auf 2 oder 3 erhöhen.

Das Problem ist, dass in der Maschine keine Sensorik ist, welche die Anwesenheit eines Werkstücks in den Stationen erkennen kann. Ich muss also den genauen Zustand speichern. Theoretisch müsste ich also 75 Zustandsautomaten programmieren. Bzw. einen Zustandsautomaten, der 75 mal aufgerufen wird und seine Daten in einem entsprechenden individuellen Bereich ablegt.

Mögliche wäre auch ein Schieberegister, in welchem der Zustand des Werkstücks mitgeschrieben wird. Darin könnte ich einen absoluten Wert für jedes Werkstück ablegen. Es gibt sicher noch andre Möglichkeiten. Die Frage ist, welches ist die beste für den vorliegenden Fall.

Hat jemand eine Idee, wie man das geschickt machen kann.
 
Hallo @Tmbiz,
ich würde tatsächlich für jedes Werkstück speichern was alles schon daran gemacht worden ist.
Auch würde ich mir für jede Station und auch jede Lagerplatz ein Abbild in der Steuerung machen, dass mindestens die Belegung aussagt - ggf. aber vielleicht auch welches Werkstück (Index-Nr.) sich dort befindet - über die Index-Nummer könntest du dann wieder auflösen was mit dem Werkstück schon gemacht worden ist.

Was ich gerade nicht verstehe ist wozu du meinst, dass du 75 Zustandsautomaten (also eigentlich ja Schrittketten) benötigst. Aus meiner Sicht liegt der Ablauf in der jeweiligen Station bzw. dem Manipulator.
 
Zuletzt bearbeitet:
ich würde tatsächlich für jedes Werkstück speichern was alles schon daran gemacht worden ist.
Sehe ich auch so. Da ich sicher mal zwischen "erfolgreiche" und nicht erfolgreich bearbeitet unterschieden muss, wäre ein Integer sicher eine gute Wahl. Also nach jedem Bearbeitungsschritt einen Wert X schreiben.

Auch würde ich mir für jede Station und auch jede Lagerplatz ein Abbild in der Steuerung machen, dass mindestens die Belegung aussagt - ggf. aber vielleicht auch welches Werkstück (Index-Nr.) sich dort befindet - über die Index-Nummer könntest du dann wieder auflösen was mit dem Werkstück schon gemacht worden ist.
Die Belegung ist auch sinnvoll und habe ich schon eingefügt. Frage: Wie würdest du das mit der Indexnummer machen und wie würdest du sie dann auflösen? Ich sehe gerade noch das Problem, dass ein Rezept 3 Schritte oder 10 Schritte haben kann. Ich kann ja nicht einfach abfrage, wenn 10 Schritte erledigt sind ist die Bearbeitung beendet. Nach wie vielen Schritten das Ende kommt, ist ja individuell. Eine wichtige Regel ist, dass ein Werkstück immer wieder auf den gleichen Lagerplatz kommen muss, von dem es genommen wurde. Dass das Werkstück wieder am Ursprung ist, ist ein sicheres Zeichen, dass es bearbeitet wurde. Ob mit Erfolg oder nicht, ist dann wieder eine andere Sache.

Was ich gerade nicht verstehe ist wozu du meinst, dass du 75 Zustandsautomaten (also eigentlich ja Schrittketten) benötigst. Aus meiner Sicht liegt der Ablauf in der jeweiligen Station bzw. dem Manipulator.
Gut, dass du da nachfragst. Ich versucht es mal anders zu erklären: Ich muss ja dem Roboter verschieden Kommandos geben, damit der das Werkstück vom Lager in eine der Stationen fördert. Dazu muss ich kenntliche machen, welche Schritte schon erledigt sind und welche nicht. Das könnte ich z.B. über die Indexnummer oder so machen.

Ich könnte aber auch eine Schrittkette für jedes der 75 Rezepte erstellen und darin den Fortschritt speichern. Oder halt eine Funktionalität und dann als Aufruf.

Hier z.B. liegt ein Werkstück im ersten Lager und im ersten Slot:
(Es ist ein zwei dimensionales Array, in welchem auf der ersten Dimension alles Stationen abgebildet sind und auf der zweiten Dimension dann alles Slots. Es gibt zwar Stationen mit nur einem Slot aber im Array sind mal überall 25 Slots abgebildet.)
1716876081590.png
 
Zuletzt bearbeitet:
Zurück
Oben