Externe Achsen deaktivieren

  • Hallo an alle,
    ich stehe vor der folgenden Aufgabe: es soll ein Roboter mit zwei externen Rotationsachsen programmiert werden. Die beiden Achsen befinden sich auf einem Drehtisch, sodass sich immer nur eine von den beiden Achsen im Arbeitsbereich des Roboters befindet. Die andere befindet sich dann außerhalb der Roboterzelle zum Umrüsten auf ein neues Werkstück. Ansonsten ist es für den Roboter relativ egal, welche von den beiden Achsen gerade im Arbeitsbereich ist, da auf beiden die gleichen Teile bzw. die gleichen Arbeitsschritte zu erledigen sind. Ich hab hierzu einen Screenshot aus der Fanuc Doku angehangen, die Zelle ist fast identisch aufgebaut.
    Die beiden Achsen habe ich in jeweils einer eigenen Gruppe angelegt, sodass ich mit dem Roboter nun drei Bewegungsgruppen habe.


    Dazu habe ich nun einige Fragen, die ich leider nicht vollends ergoogeln konnte. Es geht mir hierbei um die Logik und nicht um das sichere Abschalten der Achse:
    1. Ist es möglich im Programm (bspw. durch das Setzen einer Variablen) eine von den Drehachsen zu deaktivieren bzw. die Fahrbefehle zu ignorieren?
    Ich habe hierzu bisher die Variable $SCR_GRP[1].AXISORDER gefunden. Es funktioniert auch, dass sich die Achse nicht bewegt, jedoch werden die hinterlegten Achsbefehle für die jeweilige Gruppe dennoch ausgeführt, sodass sich entsprechend nichts bewegt, weil sich die Achse nicht bewegt. Ich möchte im Grunde, dass der Fahrbefehl für die jeweilige Achse einfach ignoriert wird.


    2. Über die Gruppenmaskierung eines Programms ist es möglich, eine Gruppe zu ignorieren. Da ich jedoch die gleichen Bauteile auf beiden Achsen habe, möchte ich ungern zwei mal das gleiche Programm haben, nur mit unterschiedlichen Gruppenmaskierungen. Ist es aus dem Programm heraus möglich, eine Gruppenmaskierung einzuschalten?


    3. Meine aktuelle Lösung wäre nun das hin und herkopieren von PRs, wobei ich den Wert der zur Zeit nicht benötigten Achse einfach auf den aktuellen Wert (JPOS) setze. Diese Lösung finde ich jedoch ebenfalls nicht schön und umständlich, weil ein TouchUp so erschwert wird und ich die Achswinkel in zusätzlichen Registern abspeichern muss. Gibt es hier einen schöneren Weg, wenn 1. und 2. nicht möglich sind?


    Schönen Gruß, Maxim

  • ANZEIGE
  • Hallo oServer,
    Meiner Meinung nach währe es am saubersten für jeden Tisch ein eigenes Programm zu haben. Die beiden Tische werden nicht gleich aufgebaut sein sodass du immer nachteachen musst bei nur einem Programm. Kopiere das erstellte Programm und deaktiviere die inaktive Gruppe.
    Glaube das war Menü- utilitys- grp exchange

  • Hallo R47,


    danke für deine Antwort. Hab mir mit der Entscheidung noch etwas Zeit gelassen, aber leider nichts besseres gefunden. Werde es nun so machen, wie von dir vorgeschlagen.

  • Leider nicht. Bei Rechenanweisungen kann die Gruppenmaskierung (hierbei leider auch nicht indirekt über Register) angegeben werden, aber nicht bei Fahranweisungen.
    Man kann zwar, wie oben angegeben, $SCR_GRP.AXISORDER nutzen, um einzelne Achsen zu deaktivieren. Dies funktioniert nur leider nicht, wenn man der Achse einen Joint Speed Limit zuordnet, um die Achse sicher zu deaktivieren. Ich hatte hierzu schon eine Funktion geschrieben, die der nicht-aktiven Achse immer die aktuelle Position zugewiesen hat, bis ich die Safetyfunktionen aktiviert habe :???:

  • Vielleicht kannst du dir mit fallweise beschriebenen PR weiter helfen.


    Also du schreibst für dir die PR einfach dynamisch zusammen.


    G1 sollte ja immer gleich sein (position und pose vom roboter)


    Dann musst du halt unterscheiden welcher Drehtisch in der Zelle ist und schreibst die Zielwinkel dann in die G2 oder eben G3.
    Für den Drehtisch der draußen steht nimmst du einfach JPOS und schreibst das in G2 bzw. G3.


    Aber ich glaub da kannst dann vermutlich auch gleich 2 Pfade anlegen :D

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