VKRC2 Suchfahrt

  • hallo zusammen!


    Ich möchte ein ungenau Positioniertes Teil über eine Suchfahrt finden.
    Also der Roboter soll eine gerade Strecke von A nach B fahren und wenn Sensor 1 auslöst soll er sich die Pos merken und wenn Sensor 2 auslöst auch diese Pos merken. (Sensoren = Lichttaster)
    (nach Möglichkeit alles auf BASE bezogen speichern)


    Aus den beiden Positionen müsste ich mir dann die Verschiebung berechnen können.


    Kann mir eine ein Schlagwort (Befehl) nennen mit den dies gemacht wird oder über den ich im Handbuch weiter komme?



    (Steuerung: VKRC2 ED05)


    oder eventuell auch einen Bsp. Quellcode den ich mir auf meine Applikation zurecht biegen kann?



    Grüße Maik!

  • Schritt für Schritt zum Roboterprofi!
  • Im Kuka-Handbuch "Programmierung Experte" gibts dafür im Kapitel Interrupts ein Beispiel, dass dir da weiterhelfen wird. Weiß nicht, ob ich die Sachen hier reinkopieren darf...


    Gruß Bastian

  • Solche Suchfahrten realisier ich meistens über einen Interrupt. Dazu öffne ich ein Suchprogramm in dem die linearbewegung steht die so lange gefahren wird bis der Interrupt ausgelöst wird oder ein Maximalwert erreicht wird. Mit BRAKE F und RESUME in dem Interruptprogramm spring ich zurück ins Hauptprogamm im dem ich meine Berechnungen mache.

  • DEF INTERRUP ( )
    ;--------- Deklarationsteil ---------
    EXT BAS (BAS_COMMAND :IN,REAL :IN )
    DECL AXIS HOME
    INT I
    ;---------- Initialisierung ---------
    BAS (#INITMOV,0 ) ;Initialisierung von Geschwindigkeiten,
    ;Beschleunigungen, $BASE, $TOOL, etc.
    HOME={AXIS: A1 0,A2 -90,A3 90,A4 0,A5 30,A6 0}
    FOR I=1 TO 16
    $OUT[I]=FALSE ;alle Ausgaenge ruecksetzen
    ENDFOR
    INTERRUPT DECL 10 WHEN $IN[1]==TRUE DO SAVEPOS (1 )
    INTERRUPT DECL 11 WHEN $IN[2]==TRUE DO SAVEPOS (2 )
    ;------------- Hauptteil ------------
    PTP HOME ;SAK-Fahrt
    PTP {X 1320,Y 100,Z 1000,A -13,B 78,C -102}
    INTERRUPT ON ;alle Interrupts aktivieren
    LIN {X 1320,Y 662,Z 1000,A -13,B 78,C -102} ;Suchstrecke
    INTERRUPT OFF 10 ;Interrupt 10 ausschalten
    INTERRUPT OFF 11 ;Interrupt 11 ausschalten
    PTP HOME
    FOR I=1 TO 2
    IF $OUT[I] THEN
    LIN TEIL[I] ; erkanntes Teil anfahren
    $OUT[I]=FALSE
    PTP HOME
    ENDIF
    ENDFOR
    END
    ;----------- Interruptprogramm ----------
    DEF SAVEPOS (NR :IN ) ;Teil erkannt
    INT NR
    $OUT[NR]=TRUE ;Merker setzen
    TEIL[NR]=$POS_INT ;Position speichern
    END

  • Hallo Kiam,
    bei VKRC - Steuerungen funktioniert das über den Befehl "LIN SUCHEN" (im Handbuch beschrieben).
    Deine LIN POS ACT kannst du über den VW USER speichern.

    Gruß Bundy<br /><br />Erfahrung ist eine nützliche Sache.<br />Leider macht man sie immer erst kurz nachdem man sie brauchte...


  • Hallo Kiam,
    bei VKRC - Steuerungen funktioniert das über den Befehl "LIN SUCHEN" (im Handbuch beschrieben).
    Deine LIN POS ACT kannst du über den VW USER speichern.


    Ist richtig. Nur kannst du dann die Positionen nicht auswerten oder wieder anfahren. Das geht nur im VW-User

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