Überschleifen zwischen Unterprogrammen?

  • Ich habe mir für den Kuka KR30L16 mit KR C2 Steuerung ein paar Unterprogramme geschrieben, um Bewegungen in der XY-Hauptebene schneller programmieren zu können. Sie arbeiten jeweils mit LIN_REL oder CIRC_REL.


    Mein Problem bezieht sich nun auf folgenden Programmausschnitt.
    m_hoch fährt den Robi in Z-Achse hoch und mit minus runter.
    m_dreh_y dreht um die Y-Achse.
    m_vor fährt den Robi entlang der X-Achse.
    Das CHAR als zweiter Parameter dient in einer Switch-Anweisung jeweils als Parameter für den Überschleifmodus und der letzte Parameter ist für den Überschleifweg etc. gedacht.


    Ausgerichtet wird das Tool (Schweißpistole) vorher so, dass sie etwa 60mm über der Schweißbahn senkrecht nach unten steht. Um mein Unterprogramm m_dreh_y zu testen, wollte ich nun den Robi runterfahren lassen und die Schweißpistole im 30° Winkel nach vorne "stechen" lassen --> Stechendes Schweißen...


    Habe verschiedene Überschleifmodi gewählt, hätte es gerne so, dass der Robi die Schweißpistole bereits auf dem Weg nach "unten" dreht, daher Überschleifen mit C_DIS 50 oder eben C_VEL 100, aber der Bewegungssatz in m_dreh_y wird erst durchgeführt, wenn m_hoch abgeschlossen ist...


    Zwischen m_hoch und m_vor klappt das Überschleifen prima, aber mit der Umorientierung von m_dreh_y klappts nicht wirklich. Habt ihr da vielleicht ne Idee?


    Hauptprogramm:
    ...
    m_hoch(-50,"v",100)
    m_dreh_y(-30,"o",5)
    m_vor(1000,"n",0)
    ...




    ;FOLD m_hoch
    GLOBAL DEF m_hoch(height:IN,cont:IN,value:IN)
    REAL height,value
    CHAR cont
    FRAME ZP
    ZP=$NULLFRAME
    ZP.Z=height


    SWITCH cont
    CASE "d","D"
    $APO.CDIS=value
    LIN_REL ZP C_DIS
    CASE "v","V"
    $APO.CVEL=value
    LIN_REL ZP C_VEL
    CASE "o","O"
    $APO.CORI=value
    LIN_REL ZP C_ORI
    DEFAULT
    LIN_REL ZP
    ENDSWITCH


    END
    ;ENDFOLD




    ;FOLD m_dreh_y
    GLOBAL DEF m_dreh_y(winkel:IN,cont:IN,value:IN)
    REAL winkel, value
    CHAR cont
    FRAME ZP
    ZP=$NULLFRAME
    ZP.B=winkel


    SWITCH cont
    CASE "d","D"
    $APO.CDIS=value
    LIN_REL ZP C_DIS
    CASE "v","V"
    $APO.CVEL=value
    LIN_REL ZP C_VEL
    CASE "o","O"
    $APO.CORI=value
    LIN_REL ZP C_ORI
    DEFAULT
    LIN_REL ZP
    ENDSWITCH
    END
    ;ENDFOLD




    ;FOLD m_vor
    GLOBAL DEF m_vor(length:IN,cont:IN,value:IN)
    REAL length, value
    CHAR cont
    FRAME ZP
    ZP=$NULLFRAME
    ZP.X=length


    SWITCH cont
    CASE "d","D"
    $APO.CDIS=value
    LIN_REL ZP C_DIS
    CASE "v","V"
    $APO.CVEL=value
    LIN_REL ZP C_VEL
    CASE "o","O"
    $APO.CORI=value
    LIN_REL ZP C_ORI
    DEFAULT
    LIN_REL ZP
    ENDSWITCH


    END
    ;ENDFOLD

  • Schritt für Schritt zum Roboterprofi!
  • Ach ich glaub ich habs selber gefunden, Überschleifen beginnt ja frühestens auf der hälfte der Strecke.
    Überschleifen gleich von anfang an ist nicht möglich oder?

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