Beiträge von Sydekum-Automation

    Hallo Micky,
    vielen Dank für den Tipp. Leider kann ich die Funktion reltcp nicht nutzen, da sie von der Steuerung nicht erkannt wird. Muss ich die Funktion erst irgendwo selber deklarieren oder ist es eine System Funktion.
    Gruss

    Hallo zusammen,
    ich greife das Thema PoseMult hier noch einmal auf.
    Ich muss einen bestehenden Greifer an einem unserer Roboter um 30° drehen, da sich die Zwischenplatte geanderg hat. Nun möchte ich nicht unbedingt alle Punkte neu teachem, sondern die 30° verschiebung einmal auf die alten Greiferkoordinaten rechnen lassen. Dann sollte es ja eigentlich wieder passen mit den alten Positionen.
    Jetzt habe ich hier PoseMult gelesen, komme aber dasmit der Umsetzung des Befehls, bzw. dem genauen Aufbau nicht ganz zurecht.


    Bei dem anderen Problem ging es um eine 180° Drehung der Stoßrichtung. Daher auch 1/-1, korrekt?
    Wenn ich jetzt aber 30° oder ähnlich drehen will, benötige ich ja einen Umrechnungsfaktor oder?


    Für Tipps wäre ich sehr dankbar. Gruss

    Lösung 1: Setz dir Trigger mit Positions Bits. Dann kannst mit einer Case Anweisung von deinem Setzt/Abholpunkt über die einzelnen Zwischenpositionen Frei fahren.


    Lösung 2: Betrachte deine Achstellung des Roboters und fahre eine Achse nach der anderen frei (feste Werte), ist der Roboter in einem sicheren Arbeitsbereich, kannst du ihn direkt in Home fahren lassen.


    Lösung 3: Speichere dir die aktuelle Position mit $Act_Pos in eine E6Pos und fahre auf feste XYZ Werte um aus deiner SPGM zu fahren.


    Alle drei Lösungen können bei richtiger Umsetzung funktionieren, benötigen aber Zeit und evtl. zusätzliche Informationen über den Greiferstatus, das Vakuum, die Blasluft und ob der Greifer an der SPGM angedockt ist.Wichtig ist, das du bei einer automatischen Homefahrt, dir Gedanken darüber machen musst, was passiert wenn der Roboter von Hand bewegt wurde!

    Ich kann es leider nicht testen, aber probiere mal ONEKEYREPEAT/ONEKEYREPEATMINUS
    Dies steht in der DOKU dazu:
    ONKEYREPEAT Name des Skripts, das ausgeführt wird, wenn die
    Taste mit der PLUS-Funktion länger gedrückt
    wird
    Das Skript wird bis zum Loslassen der Taste wiederholt
    ausgelöst. Die Zeitabstände werden dabei
    immer geringer.


    ONKEYREPEATMINUS Name des Skripts, das ausgeführt wird, wenn die
    Taste mit der MINUS-Funktion länger gedrückt
    wird
    Das Skript wird bis zum Loslassen der Taste wiederholt
    ausgelöst. Die Zeitabstände
    Gruss

    Soweit ich weiß, wird UserTech nicht zyklisch durchlaufen?! Das würde dein Problem erklaeren.Ich hatte mal ein aehnliches Problem und habe dann aber die eigentliche Verarbeitung in der sps.sub gelegt. Dann wird halt dein Symbol wird dann halt nicht sofort geaendert, sondern erst beim naechsten Tastendruck. Hilft das weiter? Gruss

    Hallo ihr drei,
    danke für die Tipps.
    @run03 - Also Continue wird bzw. ist schon mit in dem Programm eingebracht, führt aber nicht zu dem gewünschten Erfolg.
    Loipe - deine Lösung sieht gut aus, werde es später gleich testen! :supi:
    Sven - die Erfahrung mit den Continues und den Schleifen habe ich auch schon gemacht, dachte aber immer das es ein Fehler von mir sei... :waffen100:


    Ich habe gestern abend das ganze noch einmal mit Continue und SLIN probiert, wenn ich nur Achse 7 drehe, sieht es schon flüssiger aus. Dann wollte ich den Roboter mit verfahren lassen um zu sehen, ob er den Z Offset sauber mit der Ovalen Kontur verfährt. Ergebnis, die 7 Achse dreht an manchen Stellen wieder langsamer und ruckeliger. Ich denke das hat mit der math. Kopplung zu tun, sehe ich das richtig?!


    Dieser Teil funktioniert nicht:


    iNrStart_TMP=0


    IF iNrStart_TMP==1 THEN
    xOval[1]=xIstpos
    ELSE
    xOval[ iNrStart_TMP]=xOval[ iNrStart_TMP-1]
    ENDIF


    Null ist kein gültiger Feldindex. Zudem ist die Punktberechnung schnell, das es immer zwei Punkte von einem Bezugspunkt abzieht.

    Hi zusammen,
    ich stehe vor einem Problem und finde gerade keine Lösung dafür. Vielleicht weis der eine oder andere ja eine Richtung in die ich es versuchen kann.


    Zu meinem Problem:


    Ich habe einen Ovalen Dorn an einer 7 Achse, den ich mit einer als TCP vorhandenen Rolle abfahren muss. Da ich den Dorn nicht teachen kann (unterschiedliche Durchmesser), habe ich aus dem CAD 99 Werte für die Errechnung des Dornumfangs bekommen.
    Diese Schreibe ich mir mit den Werten für den Drehwinkel, Radius und Werkzeugneigung in ein Array:


    DECL DornDaten Dornposition[99]
    Dornposition[1]={rDornWinkelStart 0.0,rDornWinkelNeigungStart 0.0,rDornZOffset 0.0}


    Wennich nun den Dorn einmal Rundherum abfahren möchte, habe ich bisher folgenden Idee gehabt:


    iNrStart_TMP=0
    iNrEnde_TMP=99


    LOOP


    xOval1=xIstpos
    xOval1.X=xOval1.X;+500
    xOval1.Z=xOval1.Z;+DornPosition[iNrStart_TMP].rDornZOffset
    xOval1.B=xOval1.B;+DornPosition[iNrStart_TMP].rDornWinkelNeigungStart
    xOval1.E1=xOval1.E1-DornPosition[iNrStart_TMP].rDornWinkelStart


    LIN xOval1 C_DIS


    ;-- Pruefe ob alle Punkte abgefahren wurden:
    IF (iNrStart_TMP==iNrEnde_TMP) THEN
    EXIT
    ELSE
    iNrStart_TMP=iNrStart_TMP+1
    ENDIF


    ;-- Berechnung des anzufahrenden Punkts:
    xOval2=xIstpos ; xLeerpos
    xOval2.X=xOval2.X;+500
    xOval2.Z=xOval2.Z;+DornPosition[iNrStart_TMP].rDornZOffset
    xOval2.B=xOval2.B;+DornPosition[iNrStart_TMP].rDornWinkelNeigungStart
    xOval2.E1=xOval2.E1-DornPosition[iNrStart_TMP].rDornWinkelStart


    LIN xOval2 C_DIS


    ;-- Pruefe ob alle Punkte abgefahren wurden:
    IF (iNrStart_TMP==iNrEnde_TMP) THEN
    EXIT
    ELSE
    iNrStart_TMP=iNrStart_TMP+1
    ENDIF


    ENDLOOP


    Die Punkte werden alle angefahren und soweit so gut. Allerdings ist es halt wie zu erwarten so, das die Bewegung bei jedem Punkt kurz Stopp. Ich habe also keinen flüssigen Umlauf an der 7 Achse, sondern mehr ein takten. Mit PTP Bewegungen und ca. 100% Verschleifen funktioniert es, aber das ist für die Bearbeitung zu ungenau.


    Grund für den Aufbau ist der, es wird nicht immer komplett umlaufend gearbeitet, sondern auch mal bei z.B.: 200° Drewinkel begonnen. Dazu habe ich mir also eine Suchfunktion im sps.sub gebaut, die mir dann für den Winkel, den entsprechenden z Offset zurück schickt. Das ist dann mein xOval1. Von diesem Punkt aus berechne ich dann so lange, bis mein Endpunkt oder die max. Umdrehung erreicht wurde.


    Hat jemand von euch eine Idee, wie ich die Auflösung besser gestalten kann, so das die Punkte/Bahn schon im Voraus bekannt ist?!


    Vielen Dank!

    Der Fanuc ist mit einem Safety Bumper ausgestattet. Der UR bezieht seine Sicherheit aus 2 Prozessoren, die permanent den Strom überwachen und im Fehlerfall auslösen.


    Das hatte ich ja schon gesagt. Wir haben es damals probiert, höhere Geschwindigkeiten zu fahren, aber welche Systemvariablen dazu verändert wurden weiß ich leider nicht mehr.

    soweit ich weiß ja... In den Technischen Daten steht es ja auch so drin. Wobei der Große auf Grund der Gesamtmasse eh nicht kollaborierend eingesetzt werden darf (in Deutschland). Mein letzter Stand von Ende 2015. Kann sich zwischenzeitlich geändert haben.

    Das müsste annähernd die max Geschwindigkeit sein. Da es sich um einen Leichtbauroboer handelt, der hauptsächlich für Kollab entwickelt wurde, ist 1m/s schon ziemlich schnell.
    Ich bin der Meinung, das wir Ihn damals etwas schneller bekommen haben (hinter dem Schutzzaun!) aber wie schnell genau weiß ich leider auch nicht mehr. Über das normale BP ist glaube ich auch keine Höhere Geschwindigkeit einstellbar.
    Bitte korrigiert mich wenn ich hier falsch liege!
    Gruss