Fanuc Vision Userframe verschieben

  • Hey zusammen,


    ich habe ein Vision System von Fanuc und möchte hier drei Bilder machen, und aus den drei gefunden Positionen (Offsets) mein Userframe direkt verschieben, kann mir einer helfen, wie ich da vorgehe.

    Ich habe leider in den letzten Jahren überwiegend ABB gemacht und bin bisschen auf dem Holzweg gerade.


    Danke im Voraus

  • KUKA Handwerk
    Anzeige
  • Master-Userframe einmessen.
    Daten in ein Positionsregister (1) schreiben.
    Bezogen auf dieses Positionsregister (1) mit den Offsets ein Offest-Positionsregister (2) schreiben.

    Userframe=Positionsregister (2).
    Funktioniert auch mit Tool-Frames.

    Leider kann man Frames nicht so schön verschieben wie bei ABB, vor allem hat ABB zum Userframe noch das Objektframe.
    Aber da man die Werte eines Positionsregisters in ein Frame schreiben kann, geht es auch so.
    Anmerkung: Zwar kann man auch Userframe auch in ein Positionsregister schreiben, aber die Werte, die dann da drin stehen, keine Ahnung was der da macht, aber auf direktem Wege nicht verwendbar.

  • Master-Userframe einmessen.
    Daten in ein Positionsregister (1) schreiben.
    Bezogen auf dieses Positionsregister (1) mit den Offsets ein Offest-Positionsregister (2) schreiben.

    Userframe=Positionsregister (2).
    Funktioniert auch mit Tool-Frames.

    Hallo,

    ich würde die Thematik gerne nochmal aufgreifen.
    Derzeit bin ich an demselben Thema dran.
    Ich habe das Verfahren ausprobiert:

    19: !frame shift ;

    20: //PR[10:OLT-MasterFrame]=UFRAME[2:OLT-MasterFrame] ;

    21: CALL IRVSTRUNFIND("Vision Process"='FRAME_SHIFT') ;

    22: VISION GET_OFFSET 'FRAME_SHIFT' VR[1] JMP LBL[99] ;

    23: PR[8]=VR[1].OFFSET ;

    24: CALL INVERSE(8,9,10) ;

    25: PR[11,1:shift frame]=PR[10,1:MasterFrame]+PR[9,1:offset] ;

    26: PR[11,2:shift frame]=PR[10,2:MasterFrame]+PR[9,2:offset] ;

    27: PR[11,3:shift frame]=PR[10,3:MasterFrame]+PR[9,3:offset] ;

    28: PR[11,4:shift frame]=PR[10,4:MasterFrame]+PR[9,4:offset] ;

    29: PR[11,5:shift frame]=PR[10,5:MasterFrame]+PR[9,5:offset] ;

    30: PR[11,6:shift frame]=PR[10,6:MasterFrame]+PR[9,6:offset] ;

    31: UFRAME[3:OLT-ShiftFrame]=PR[11:shift frame] ;


    In PR[10] habe ich händisch mein Master-Frame eingetragen.
    Die Berechnung der Inversen mache ich, da die Offsetdaten des Vision-Process in Matrixform ausgespuckt werden.
    Nach Kontakt mit Fanuc hat man mir von dem ganzen VErfahren eher abgeraten, da die BErechnung der Inversen wohl oft fehlerhaft ist.
    Diese Erfahrung habe ich jetzt auch gemacht. Der Offset haut mir bei der VErschiebung komplett ab.

    Könnten Sie das Ganze für mich vielleicht etwas genauer erklären oder bestätigen, dass es oft schief geht?

    Vielen Dank vorab!
    Grüße

  • Ups! Wie sieht denn so ein Vision Positionsregister aus und was steht da drin? Wie ein Standard-Positionsregister?
    Frames nur nach X Y Z zu verschieben sollte kein Problem sein, aber wenn man Winkel verschiebt, dann funktioniert das nicht mit simpler Addition, da man im dreidimensionalen Raum verschiebt.
    Bei ABB gibt es dafür POSMULT (ohne Winkel) und POSEMULT (mit Winkel)

    Evtl. bestünde die Möglichkeit im Masterframe zu fahren mit Offset PR[9], also so:

    20: UFRAME_NUM=1 ;

    21:J P[2] 100% CNT100 Offset,PR[9:offset] ;

    22:J P[3] 100% CNT5 Offset,PR[9:offset] ;

    23:L P[4] 100mm/sec FINE Offset,PR[9:offset] ;


    Hier funktioniert das auch mit Winkeln, da der Roboter relativ zur geteachten Position nach PR 9 im dreidimensionalen Raum verfährt.

  • Hallo,
    danke für die schnelle Hilfe.
    So in etwa habe ich es vermutet. Konnte es aber nicht so ganz greifen.
    Dass eine einfache Addition so nicht funktioniert ist dann auch klar.
    Wie man aus dem ganzen eine vollständige Transformation in einer Fanuc-Steuerung bastelt ist mir aber leider auch nicht geläufig.


    Die Winkel sind hier tatsächlich das verfluchte.
    Es wird tatsächlich darauf hinauslaufen, dass man auf die Zielpunkte den Vision-Offset mit draufrechnen muss.
    Da es sich um viele Punkte handeln würde wäre eine Frame-Verschiebung "sauberer" gewesen.
    Das war meine Hoffnung.

  • Steht Dir Roboguide zur Verfügung, bzw. hat Robert den ASCII-Loader als Software-Option?
    Denn dann kannst Du in einem Offline-Editor (Notepad++ oder Ultra-Edit, Wordpad auch möglich) mit Suchen und Ersetzen die vielen Beweungsanweisung schneller mit der Offset-Verschiebung ergänzen ohne das händisch im Roboter zu hacken.

  • Nochmal Hallo,

    ich konnte da doch noch etwas erreichen und würde das gerne auch teilen entsprechend.
    Es gibt ein KAREL-Programm "MATRIX", das die Matritzenmultiplikation ausführen kann.
    Ich habe es implementiert und getestet.
    Erste Testergebnisse zeigen, dass der Frame schön verschoben wird.
    Da ich nur eine einfache Rechteckerkennung gemacht habe, die natürlich wegen der Symmetrie den Frame ab und zu um 180° dreht ist alles unter Vorbehalt :P
    Es sei beachet, dass beim Fanuc-Service mir jemand sagte: Finger weg.
    Also auf eigene Gefahr...:

    19: !frame shift ;

    20: !transfer master frame to PR ;

    21: PR[9:MasterMatrix]=UFRAME[2:MasterFrame] ;

    22: !store xyzwpr to PR to check if valid ;

    23: CALL INVERSE(9,10) ;

    24: CALL INVERSE(10,10) ;

    25: !get vision offset ;

    26: CALL IRVSTRUNFIND("Vision Process"='FRAME_SHIFT') ;

    27: VISION GET_OFFSET 'FRAME_SHIFT' VR[1] JMP LBL[99] ;

    28: !store offset in PR (matrix form) ;

    29: PR[8]=VR[1].OFFSET ;

    30: !matrix multiplication of offset and master frame;

    31: CALL MATRIX(8,9,11) ;

    32: !store matrix of result ;

    33: CALL INVERSE(11,12) ;

    34: !result of multiplication is the new frame ;

    35: UFRAME[3:ShiftFrame]=PR[11:ShiftFrame] ;


    Ein schönes Wochenende!

  • Steht Dir Roboguide zur Verfügung, bzw. hat Robert den ASCII-Loader als Software-Option?
    Denn dann kannst Du in einem Offline-Editor (Notepad++ oder Ultra-Edit, Wordpad auch möglich) mit Suchen und Ersetzen die vielen Beweungsanweisung schneller mit der Offset-Verschiebung ergänzen ohne das händisch im Roboter zu hacken.

    Das geht übrigens auch sehr viel einfacher auf dem Roboter selber.

    Im Editor: EDCMD->Replace->Motion modify->Insert option

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account
Sign up for a new account in our community. It's easy!
Register a new account
Sign in
Already have an account? Sign in here.
Sign in Now