Definieren von Werkobjekt

  • Hallo!


    Ich möchte mit einem ABB-Roboter 2400, IRC 5 Steuerung Folgendes machen:


    Der Roboter soll Käsepakungen in eine Schachtel verpacken. Die Schachtel hat vorne einen rand von 40mm, ungefähr wie auf dem Bild.


    Frage:Wie soll ich den Werkobjekt definieren (schräg oder gerade)?Oder wie difiniere ich diese Kante,weil Werkobjekt eigentlich gerade ist.Wie geht Ihr Profis da vor?Was muss ich beachten?
    Bin noch ziemlich neu im Robysektor.


    Gruß
    Andi

    Wenn man Ruhe sucht, findet man sie niemals.(c)

  • ANZEIGE
  • Hallo,


    erst einnmal ein paar grundsätzliche Dinge.
    Der Roboter selber arbeitet mit dem Basiskoordinaten System, dieses ist notwendig, damit der Roboter sich von seiner Position aus immer genau im Raum bewegen kann.
    Am Roboter ist in der Regel ein Werkzeug befestigt. Das Tool wird so beschrieben, dass der TCP Tool center point / Arbeitspunkt entsprechend eingemessen wird, dass der Roboter sich bei einer anzufahrenden Position auf den Arbeitspunkt des Werkzeuges bezieht.
    Nun kommt das Werkobjekt ins Spiel.
    Das Werkobjekt beschreibt ein zusätzliches Koordinatensystem im Raum, dass sich in einer bestimmten Position Abstand und Drehung vom Roboter befindet.
    Wenn du also ein Werkobjekt einmisst, dann sollte die Positon, die du als Basis angenommen hast z.B. untere linke Kannte 0,0,0 (x,y,z) entsprechen würde.
    Das Werkobjekt sollte immer genau eingemessen sein und nicht einfach schräg oder sonst wie gestellt werden.


    Wenn Du das Werkobjekt richtig eingemessen hast, dann kannst Du z.B. mit unterschiedlichen Werkzeugen immer wieder die selben Positionen an deinem Werkobjekt anfahren.


    Nun schreibst Du ein Programm, dass das Werkobjekt deiner Kiste nutzt, und deine Tüten entsprechend einsortiert.
    Aber was ist, wenn nicht nur eine Kiste dort steht und nicht durch einen neustart neu initialisiert wird.


    In dieesm Fall ( 4 Kisten stehen neben und hintereinander) kannst Du das Programm einer Kiste verwenden und verschiebst einfach nur das Werkobjekt oder nutzt 4 verschiedene Werkobjekte mit ein und demselben Programm.


    Die Standarddokumentation ist hjierbei wirklich hilfreich.


    m.f.G.


    Ralph

    Lieber einen Roboter, als gar keinen Freund

  • Hi Andi,
    wie Ralph schön in einer längeren Ausführung erwähnte kann ein sinnvoll positioniertes Werkobjekt dir jede Menge Programmieraufwand ersparen.
    Nun denke ich das Du schauen solltest wie Deine übrige Mechanik der Anlage aufgebaut ist. Wie wird Deine Verpackungsschachtel zentriert bzw. positioniert um das Du dort mit dem Roboter Deine Produkte einpallettieren kannst. Wie Ralph schon erwähnte ist es von Vorteil mehrere Werkobjekte bei mehrere gleiche Pallettierungsstapeln zu verwenden um dann programmtechnisch sehr effektiv verfahren zu können. Aber das wirst Du selber entscheiden müssen.
    Auf alle Fälle würde ich mein Werkobjekt nicht an der Pappe festmachen sondern daran wo Deine Verpackung, in die Du stapeln solltst, zentriert wird.
    Sollte irgendetwas sein was auch später noch nachvollziehbar ist!
    Ansonsten würde ich nach Deinen Informationen hin das Werkobjekt schön rechtwinklig zu Deine Verpackung hin ausrichten. Die positiive Z-Richtung würde bei mir nach oben zeigen und die positive X-Richtung, von Deinem Bild oben aus gesehen, in den Stapel hinein. Die Y-Richtung ergibt sich dann logischerweise.


    Sven

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Hallo Ralph und Sven
    danke für gute tips :)
    Die Standarddokumentation habe ich gelesen, so weit ist klar. Mich hat nur diese Kante vorne gestört. Die Anlage ist noch auf dem Papier,es sieht so aus, dass die Käsepackungen mit Vakuumsauger in ein Karton geschoben werden je 10 Stück pro Karton, näheres später, wenn Hardware steht. Unten habe ich die Datei mit meinem Programm angehängt,würde mich über die konstruktive Kritik freuen


    Gruß
    Andi

    Wenn man Ruhe sucht, findet man sie niemals.(c)

  • Hallo


    100% ack


    Die Kante deiner Pappschachtel brauchst du beim definieren des Werkobjektes nicht zu berücksichtigen.
    Die 3 Punkte liegen am Boden deiner Schachtel.
    Beim definieren des Werkobjektes geht es darum zu bestimmen wo die X und Y Achse im Raum liegt.


    Neben den von den Kollegen bereits beschriebenen Vorteilen, hast du es auch beim Teachen leichter.
    Besonders wenn die Kartons irgendwie schräg zur Roboterbasis stehen.
    Dann bekommst du mit dem Basis- Welt Koordinatensystem Probleme.
    Da kannst du noch so virtuos mit dem Joystick umgehen können.
    Ohne Werkobjekt wird sich der Robbi nie entlang deiner Kartonkanten bewegen.
    Wie von Sven schon gesagt, achte darauf das sich bei deinem Werkobjekt bei +Z der Roboter nach oben bewegt.
    Das ist zwar jedem selbst überlassen, aber mit deinem Programm müssen in Zukunft auch andere Leute klarkommen.


    Gruß
    Högi

    Zwei Dinge sind unendlich,das Universum und die menschliche Dummheit. Aber bei dem Universum bin ich mir noch nicht ganz sicher, !!!!<br />Albert Einstein

  • Hi Ganz,
    wie sieht es mit Eingängen bei Deiner Applikation aus? :denk:
    Denke das Du die beim Vakuum benötigen wirst. Einfach so an und weiter wird nich gehen. Und des weiteren wäre für einen schnelleren und zügigen Ablauf eventuell zu empfhelen das nicht nur Vakuum abgestellt wird sondern auch ein Blasen erfoderlich ist der Dir das Vakuum schnell und sicher beseitigt.
    Ansonsten finde ich persönlich Deine Test anweisung zwar korrekt aber beim Programmieren gibt es noch elegantere Möglichkeiten.
    Überlege mal ob Du Dir nicht den Y und X-Offset berechnen kannst in Abhängigkeit der Befüllung des Kartons?
    Somit würdes Du eine Bewegungsroutine haben und nicht pro Position eine. Was ja eigentlich Schwachsinn ist weil die Bewegung ist ja immer die gleiche. Also sinnvoll verkürzten.
    z.B.:
    nWertX,nWertY,nWertZ sind als speichernde Variable Deklariert und können vor dem Ablegen in abhängigkeit des Füllstandes verändert werden.
    Wäre dann für die gesamte Pallettierung ein und die selbe Bewegung.


    MoveL Offs(pProductAb,nWertX,nWertY,nWertZ+50), v500, v20, tVakuum\WObj:=wPlatzAb;
    MoveL Offs(pProductAb,nWertX,nWertY,nWertZ), v500, fine, tVakuum\WObj:=wPlatzAb;
    Vakuum_Aus;
    MoveJ pProductGedreht,v500,z50,tVakuum;


    Also soll nur als Gedankenanstoß verstanden werden. Möglichkeiten derart gibt es unendlich viele.


    Sven

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

  • Hallo Andi


    Du willst jedes Käse Tütchen einzeln in den Karton packen? :kopfkratz:
    Ob das geht?????
    Wie verhinderst du z.B. das die schon in den Karton gepackten Tüten umfallen? :denk:


    Also ich glaube du müsstest , wenn das überhaupt gehen soll, schon den kompletten Käsehaufen greifen und alle auf einmal in den Karton stopfen.
    Ist nur ein Tipp:


    Die Pappkartons werden nie gleich sein, und deine Käsetüten wahrscheinlich auch nicht! :???:


    Ansonsten hat Sven recht, du musst um den Käse loszuwerden kurz blasen.
    Sonst bleibt es kleben.


    Gruß
    Högi

    Zwei Dinge sind unendlich,das Universum und die menschliche Dummheit. Aber bei dem Universum bin ich mir noch nicht ganz sicher, !!!!<br />Albert Einstein

  • Hallo Ganz,


    und hier kommt wieder dein Freund das Werkojekt und hilft dir, wenn du dein Programm fertig und lauffähig hast, jedoch Probleme durch umfallende Tüten hast, dann stelle die Kisten anders hin, vermesse dein Werkobjekt neu und dein Programm läuft immer noch.


    Aber trotzdem, verzeiht es mir, ich habe mir gerade beim lesen des Beitrages von Högli (was jedoch absolut richtig ist) mir so vorgestellt dann stopf ich mal die Käsetüten in den Karton lol.


    Gruß
    Ralph

    Lieber einen Roboter, als gar keinen Freund

  • Hi Ralph
    Gute Idee :ylsuper:
    Deine Kartons sollten beim Beladen nach hinten gekippt stehen.
    Dann können die Tüten nicht nach vorne umfallen.


    Viele Wege führen nach Rom.
    Könnte gehen! :supi:


    Eingetütete Sachen zu verpacken ist nicht ohne! :angry:
    Sollte mal Tüten mit Waschpulver in Kartons verpacken.
    Da hab ich eine echte Krise gekriegt.
    Je nach Umgebungstemperatur und Dichte des Pulvers haben die mal eben um 3mm
    variert.
    Da hast du ein riesen Problem wenn kein Platz im Karton ist!!!! :eviltongue:


    Nachdem die Verfügbarkeit jenseits von gut und böse lag, wurde mal eben das Konzept geändert.
    Anstatt jede Tüte einzeln zu verpacken wurden alle auf einmal in den Karton gepackt.
    Seitdem gehts!!!! :supi:
    Gruß
    Högi

    Zwei Dinge sind unendlich,das Universum und die menschliche Dummheit. Aber bei dem Universum bin ich mir noch nicht ganz sicher, !!!!<br />Albert Einstein

  • Hallo Leute
    Danke für Infos:applaus:sehr nett hier
    Sven aber Case anweisung kann ich nicht umgehen oder... :denk:

    Wenn man Ruhe sucht, findet man sie niemals.(c)

    Einmal editiert, zuletzt von Ganz ()

  • Wie Sven eigendlich auch schon durch seine Variablen angedeutet hat geht dieses:



    Also, ich wollte Dir ja kein komplettes Programm schreiben,


    hier jedoch noch eine Frage, warum nutzt du nicht den selben Weg rein in den Karton wie raus?
    Du hast dort jedesmal eine J Positon angegeben, ich würde in einer so engen Kiste wenn möglich immer L fahren.


    Auch ohne Test Case ist dieses wie folgt zu realisieren:


    PROC GesamtAblauf()
    VAR num nZustellz := 20;
    FOR GesAblauf FROM 1 TO 10 DO
    Product_Auf;
    !Ab hier steht dein Code ohne Test Case
    MoveL Offs(pProductAb,0,0,-nZustellz*GesAblauf + nZustellz ), v500, fine, tVakuum\WObj:=wPlatzAb;
    Vakuum_Aus;
    MoveL Offs(pProductAb,0,0,-10??? ), v500, fine, tVakuum\WObj:=wPlatzAb;
    ENDFOR
    ENDPROC


    Ich weis zwar nicht warum du hier in z Zustellen willst, da wie von Sven und Högli bereits erwähnt dein z von oben nach unten durch dein Werkobjekt schauen sollte.
    Aber mit allen anderen Richtungen funktioniert dieses genau so.


    m.f.G.
    Ralph

    Lieber einen Roboter, als gar keinen Freund

  • Hallo Ganz,


    acu würde ich wie auch schon durch Sven erwähnt für deine Variable, die dur für deine For Next Schleife verwendest eine Per variable verwenden, das diese speichernd ist. Ansonsten hast du ein Problem, wenn deine Kiste halb gefüllt ist und der Roboter neu gestartet oder ... werden muss.


    Hallo Hölgi,
    ich bin mir schon im Klaren, dass ein einsortieren eine teilweise sehr komplizierte Sache ist, ich habe mir dass nur so vorgestellt, wie der Roboter in die Kiste fährt und stopft :uglyhammer_2:. Man hat ja immer fein Reden, wenn man nicht selber an der Anlage steht und der Kunde im Rücken steht und fragt, wann geht es den endlich wieder los :biggrins:, oder das kriegen wir nie im Griff :hilfe:.



    m.f.G.
    Ralph

    Lieber einen Roboter, als gar keinen Freund

  • Hi,
    du kannst dies mit ein bischen Mathe auch völlig umgehen. Schau Dir mal die Operation MOD und DIV an! :zwink:
    Dann schau deinen Stapel einmal an. Du hast auf der einen Seite die Päckchen mit geraden und auf der anderen Seite die mit den ungeraden Zahlen beim einlegen. Jetzt hast Du die Möglichkeit eine kleine Formel zu basteln z.Bsp:


    nMaxTeile ist eine Konstante die die maximale Anzahl in Deiner Pallettierung angibt
    nWertXStapel ist eine Konstante um die in der X-Richtung die Packchen Verschoben sind.
    nWertYStapel ist eine Konstante um die in der Y-Richtung die Packchen Verschoben sind.
    nAnzahlSpalte ist eine Konstante die die Anzahl der Teile in X-Richtung darstellt. (Bei Dir im Bild sind es zwei)
    nAnzahlReihe ist eine Konstante die die Anzahl der Teile in Y-Richtung darstellt. (Bei Dir im Bild nehme ich mal an das es 10 oder mehr sein werden).
    nAnzahlTeileKarton ist Dein Zähler wieviele in Deinem Karton schon eingelegt worden sind.


    nWertX:=((nAnzahlTeileKarton MOD nMaxTeile) DIV nAnzahlSpalte)*nWertXStapel;
    nWertY:=(nAnzahlTeileKarton MOD nAnzahlReihe)*nWertYStapel;

    Beginnen würde ich mit 1.
    So habe ich bis dato all meine Stapel und Pallettierungen gelöst. Ohne Schleifen, Test-Anweisungen etc.
    Das kann man natürlich aber auch noch für die Z-Richtung so handhaben. Habe dann drei Zeilen für eine dreidimensionale Pallettierung.



    Sven


    P.S.: Hatte ich vergessen variable Variablen (VAR) werden bei einem Start von Haupt neu initilisiert also für eine Pallettierung völlig ungeeignet.

    Wer nichts macht, macht keine Fehler!

    Wer keine Fehler macht, kann nichts daraus lernen!

    Wer nichts lernen kann, kann sich nicht weiterentwickeln!

    Wer sich nicht entwickelt, geht unter!

    Einmal editiert, zuletzt von Sven Weyer ()

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

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