Palettieren an unterbrochener Stelle fortsetzen

  • Hallo zusammen,

    ich habe folgendes Problem. Wir bestücken einen Beschriftungslaser mit einem UR10, dazu entstapeln wir eine Palette mit 500 Teilen, die in 10 definierten Stapeln abgelegt sind. Beim ablegen auf einer leeren Palette bilde ich ebenfalls 10 Stapel zu je 50 Teilen. Dazu nutze ich in beiden Fällen den Zyklus Palettieren wo ich jeweils eine Box über die Eckpositionen definiert habe.
    Wie kann ich es hinbekommen das der UR beim ablegen der Teile, nach einem Neustart, nicht immer an der untersten Position anfangen möchte ?

    Gruß Vekedi

  • ANZEIGE
  • Hallo,


    ich kenne mich mit der Palettier-Funktion zwar nicht aus, eventuell geht es aber mit einer Installationsvariable.


    Bei einer Installationsvariable bleibt der zugewiesene Wert nach dem Stoppen des Programmes in der Variable gespeichert. (Kann unter Installation - Allgemein - Variable erstellt werden)

  • Wie Hendrik schon gesagt hat solltest du dir eine Variable anlegen, in der du die aktuelle Höhenposition abspeicherst. Diese Variable sollte ganzzahlig sein. Dann brauchst du noch eine weitere Variable mit der Höhe einer Ebene, z.B. 10mm (Bedenke, dass bei diesen Berechnungen die Werte in [m] angegeben werden müssen, also Ebenenhoehe = 0.01


    Nun musst du, bevor du eine Position anfährst, die aktuelle Position kontrollieren und vor dem Anfahren erhöhen. Dies kannst du mit einem Scriptbefehl vor dem Anfahrpunkt und dem Musterpunkt machen:

    Code
    AnfahrPunkt_1[2] = AnfahrPunkt_1[2] + (AktuelleEbene * Ebenenhoehe)
    *Auf Anfahrpunkt fahren*
    MusterPunkt_1[2] = MusterPunkt_1[2] + (AktuelleEbene * Ebenenhoehe)
    *Auf Musterpunkt fahren*

    So berechnest du die aktuelle Höhe immer bevor du den Punkt anfährst. Da die Variable der Höhe nicht zurückgesetzt wird wenn das Programm gestoppt wird, berechnest du den Punkt immer korrekt. Bedenke bitte, dass du parallel dazu noch ein paar Variablen brauchst, um das ganze zu kontrollieren. Ich lasse einen Thread parallel laufen. Wenn eine Lage voll ist, dann erhöhe ich die AktuelleEbene um +1. Wenn eine Palette voll beladen ist, setze ich sie wieder auf 0 zurück. Das läuft bei mir auch über Threads.


    Da ich meine Palettierfunktion in UR-Script selbst geschrieben habe, da die fertige Funktion nicht genug Funktionen/Möglichkeiten bietet, kann ich nicht versprechen, dass das so 100% funktioniert.


    Ich benutze diese Berechnung jedoch in meinem Programm und es funktioniert beim Kunden einwandfrei.


    Grüße,


    Jan

  • Ich habe es jetzt anders gelöst. Um unterschiedliche Stapelhöhen zu erkennen habe ich am Wechselsauger je einen Materialsensor angebracht. Sobald die Stößel beim ablegen etwas einfedern, wird das Material erkannt und gibt die Höhe vor.
    Nochmals vielen Dank für Eure Mühe.

    Schönes Wochenende
    Vekedi

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden