Nach Interrupt "Suchwinkel" ändern und weiter

  • Hi liebe Forumuser,


    ich habe nochmal eine Frage an euch und vielleicht könnt ihr mir Programmtechnisch dabei ja helfen.


    Folgendes ist vorzufinden:


    Der KUKA muss Senkrecht nebeneinander stehende Bleche (ca. 10mm Abstand) aus einem Magazin mit einem Vakuumsauger entnehmen (siehe Foto anbei -> Draufsicht).

    Dazu fährt der Robi in das Magazin auf einen Startpunkt (ganz Rechts), stellt das Vakuum ein und startet einen Suchlauf bis zum Endpunkt (ganz links im Magazin).

    Sobald ein Blech erreicht wird, meldet das Vakuumventil "Vakuum aufgebaut" und startet den Interrupt um mit dem Blech aus dem Magazin zu fahren.

    Diese Pposition wird immer gespeichert, damit der Robi beim nächsten Anfahren 10mm vor dem letzten "Abholpunkt" startet.

    Sollte kein Blech vorhanden sein, fährt der Robi bis zum Ende des Magazins, gibt der SPS durch, dass das Magazin leer ist, schaltet Vakuum ab und fährt aus dem Magazin.


    Ein zusätzlicher Interrupt mit einem Bauteilsensor am Sauger soll verhindern, dass die Bleche verbogen werden, falls sich das Vakuum nicht aufbaut.

    Das ist so gelöst, dass dieser nach einer gewissen Zeit (wenn Blech 3 sek. erkannt und kein Vakuum aufgebaut) auslöst. Der Robi bleibt dann stehen und wartet auf Beseitigung des Bleches (kann man von Bedienerseite herausnehmen) oder Vakuum aufgebaut.


    Folgendes sollte noch eingebracht werden:

    Anstelle des stehens bei dem zusätzlichen Interrupt soll der Roboter 10mm zurück fahren, seinen Suchwinkel um ca.5° (Foto -> Winkel ) ändern und sich wieder Richtung Endpunkt begeben.


    Problem:

    Ich habe das schon versucht im Interrupt zu lösen. Das klappt mit Relativbewegungen aber nur bedingt. Sobald der Interrupt auslöst, fährt der Robi 10mm zurück, dreht sich um die 5° meldet dann aber eine Störung (weis nicht mehr genau welche das war) und kann den Endpunkt mit seiner veränderten Position nicht anfahren...

    Habt ihr eine Idee wie ich das noch lösen könnte? Es handelt sich um den Interrupt "Anhalten".


    Hier mal ein grober Auszug aus dem aktuellen Quellcode:

  • Schritt für Schritt zum Roboterprofi!
  • Im Interrupt einen Merker setzen, den im Hauptprogramm nach Suchlauf() auswerten, wenn gesetzt, Startposition (und evtl. Endposition) um den Winkel anpassen, aber nur Kopien der Positionen verwenden, und das Spiel von vorne beginnen. Abbruchkriterium nicht vergessen, also noch einen Zähler einbauen.

  • Hi Hermann,


    ich merke schon ich habe mich etwas falsch ausgedrückt, aber danke für deinen Denkansatz. Vielleicht bekomme ich damit trotzdem was hin.


    Generell geht es immer nur um ein Blech. Wenn der Robi es nicht schafft das Blech zu holen sollte er den Winkel um 5° ändern, zurück fahren und nochmal versuchen das Blech zu holen bzw. Vakuum aufzubauen. Danach nochmal, falls es wieder nicht funktioniert.
    Nach 2 Versuchen gibt's nen Abbruch (der ist aber kein Problem :zwink:).


    Mit "pos_aktuell = $POS_ACT" werte ich sowieso nur den "X-Wert" der Position aus, somit wird der Winkel beim nächsten Anfahren nicht übernommen. Soll er ja auch nicht. Denn das nächste Blech, wenn er das eine dann geschafft hat soll wieder normal angefahren werden.


    Das Problem im Moment besteht im Weitermachen nach dem "DEF Anhalten ()" wenn nicht RESUME benutzt wird. Dann will er nämlich die Fahrt, die durch den Interrupt "Anhalten" im "Suchlauf ()" unterbrochen wurde einfach wieder fortsetzen. Das funktioniert, wenn er stehen bleibt, aber nicht, wenn sich seine Position auf einmal verändert. Muss ich die SLIN_endpos dann nochmal neu aufrufen? Denke das liegt daran, dass er sich die Interrupt-Position merkt und nach dem Interrupt da wieder weiter machen möchte, aber ja nicht kann, wenn er da nicht mehr steht:denk:?

    • Hilfreich

    Ich hab das schon verstanden, vielleich habe ich das nicht ausführlich genug erklärt.

    Sollte prinzipiell in etwa so funktionieren:


    Es fehlt noch das Abbruchkriterium für Magazin leer. Das gefunden könnte man auch durch eine Abfrage des Vakuums ersetzen.

    Während der Fahrt auf die Endpos bleibt die Orientierung aber nicht konstant, wenn das gewünscht ist, ganz am Anfang noch die Endpos auf einen temporären Punkt kopieren, diesen zufahren und im Interrupt auch den Offset draufschlagen.

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