Beiträge von Bastico

    jetzt hab ich es:
    Block_Thickness=blockthickness/10.0
    Block_Level=1200-blocklevel/10.0
    Block_Angle=blockangle/10.0
    BASE_DATA[16]=CALCFRAME(BASE_DATA[1],0 , Block_Level ,Block_Thickness ,0 ,0 ,0)
    BASE_DATA[16]=CALCFRAME(BASE_DATA[16],0 ,-Offset_Axis_1 ,-Offset_Axis_2-Block_Thickness ,0 ,0 ,0)
    BASE_DATA[16]=CALCFRAME(BASE_DATA[16],0 ,0 ,0 ,0 ,0 , Block_Angle)
    BASE_DATA[16]=CALCFRAME(BASE_DATA[16],0 ,Offset_Axis_1 , Offset_Axis_2+Block_Thickness ,0 ,0 ,0)
    BAS(#Tool,1)
    BAS(#Base,16)
    BAS(#VEL_CP,0.5)
    BAS(#ACC_CP,50)



    PUNKT.X=-DistanceX/10.0
    PUNKT.Y=-DistanceY/10.0
    punkt.c=-90



    LIN PUNKT

    Kommando zurück, bei 0° passt die Position, je höher der Winkel wird um so größer wird die Abweichung (im Bereich von ca. 300mm je 10°) ich überprüfe die Rechenschritte nochmal

    Erstmal vielen Dank dafür! Auf dem Roboter selbst sieht es gar nicht so schlecht aus. Die Positionen werden richtig angefahren (inkl. Winkel!). Bis auf ein paar Vorzeichen und Syntaxfehler musste ich nicht viel korrigieren.

    Hallo IrrerPolterer,
    Im Anhang das Archiv und 2 Fotos: Bild 1 zeigt die Position des Roboters bei 0°, Bild 2 (ist leider nicht ganz aktuell) bei 10° - die Position in X Y und Z stimmt mittlerweile, nur der Winkel nicht.
    Das entsprechende Dat-File heißt Bstnd15.

    so, kurzes Update. Bin am Roboter und probiere ein bißchen rum:
    Wenn ich den Winkel der Base nicht ändere (0°) steht in $Base folgendes:
    X 2169
    Y 1307
    Z 991
    A -90
    B 0
    C 90


    ändere ich den Winkel jetzt auf 10° ändert sich auch $Base:
    X 2316
    Y 1307
    Z 855
    A -90
    B 0
    C 99
    Die Berechnung scheint also soweit richtig zu sein, bei 0° wird auch die richtige Position angefahren. Bei 10° stimmen die Werte von X, Y und Z soweit auch (und werden auch angefahren), nur wird das Werkzeug nicht entsprechend um 10° (hier 9° wegen Rundungsfehler) gekippt.
    Woran kann es liegen, dass der Winkel nicht angefahren wird?

    Bin Montag am Roboter und werde mich rantasten - muss an irgendeinem Winkel liegen, wenn ich nur die Y und Z berechne funktioniert es, kommt der Drehwinkel in Spiel passieren merkwürdige Dinge :denk:
    Danke für Deine Hilfe, ich gebe nächste Woche mal den Stand durch.

    sorry, hat mal wieder länger gedauert, bis ich mich dem Problem wieder widmen konnte. Denke schon, dass ich um die richtigen Winkel und in die richtige Richtung drehe, scheinbar ja aber nicht.
    Könntest Du mir mal dein Projekt aus der Simulation schicken, damit ich das mit meinem vergleichen kann um den Fehler zu finden?

    Danke schon mal,unten der Code, den ich verwende:


    DEF Go_to_XY_in_base()
    $TOOL = TOOL_DATA[1]
    $BASE = BASE_DATA[1]


    base_versch=$NULLFRAME
    base_versch.y=800
    base_versch.z=-84.1+blockthickness ;Bauteildicke und Offset Schwenkachse einbeziehen
    BASE_B=BASE_data[1]:BASE_VERSCH


    base_versch=$nullframe
    base_versch.c=blockangle ;Drehwinkel einbeziehen
    base_c=base_b:base_versch


    base_versch=$nullframe
    base_versch.y=blocklevel-1200 ;Bauteilhöhe und Versatz einbeziehen
    base_d=base_c:base_versch


    base_versch=$nullframe
    base_versch.z=84.1-blockthickness ;zurückrechnen
    base_versch.y=-800
    base_e=base_d:base_versch


    $base=base_e ;Base setzen


    PUNKT.X=DistanceX ;Koordinaten in X die auf der Base angefahren werden sollen
    PUNKT.Y=DistanceY ;Koordinaten in Y die auf der Base angefahren werden sollen


    $ov_pro=25
    $vel.cp=1


    LIN PUNKT ;Punkt anfahren

    nicht richtig heißt der Roboter versucht zu einer Position zu fahren, die weit entfernt von der Position ist, zu der er soll. Und das in X, Y, Z, A, B und C.
    Wo er wirklich hin will kann ich leider nicht nachvollziehen da die Punkte an Stellen liegen zu denen der Roboter nicht fahren kann (da sie hinter bzw. in dem Werkstück liegen).

    kurzes Update dazu: die Berechnung klappt ohne Probleme und die berechneten Werte sehen gut aus.
    Leider fährt der Roboter in dem Moment, in dem ein Winkel ins Spiel kommt, ganz merkwürdige Positionen an.
    Sprich: wenn der Winkel 0 ist stimmt die Base-Definition und die Positionen werden sauber angefahren
    Wenn der Winkel ungleich 0 ist stimmt die Base-Definition und die Positionen werden nicht richtig angefahren


    Hat irgendwer ne Idee woran das liegen könnte?

    Hallo,
    der Roboter soll nachher auf der Base verschiedene Punkte anfahren und dabei senkrecht auf der Ebene stehen. Das geht relativ einfach wenn die ganze Base gedreht ist und wir dann nur x und y Koordinaten (im Bezug auf die Base) austauschen und der Roboter die dann anfährt.
    Die Base wird nicht so häufig geändert, die Positionen des Roboters auf der Base dann schon.

    Hallo,
    ich stehe da gerade vor einem kleinen Problem, bei dem ich nicht weiterkomme: Wir haben Werkstücke, die in der Dicke variabel sind und mittels eines Gestells in der Höhe und im Drehwinkel verändert werden können. Drehwinkel, Höhe und die Dicke werden über die SPS vorgegeben und ich muss den Roboterflansch senkrecht über der Base positionieren.
    Habt ihr eine Idee, wie ich die Base ausrechnen kann? Im Anhang eine Skizze, die die Ausgangssituation hoffentlich etwas erläutert.


    Vielen Dank im Voraus!

    Hab meinen Fehler gefunden: $pos_act wird scheinbar erst beschrieben, wenn eine SAK-Fahrt gemacht wurde. Bis dahin meckert der Submitinterperter dann. Jetzt werden die Variablen erst zugewiesen, wenn die SAK-Fahrt gemacht wurde und alles läuft.

    Hallo Zusammen,
    ich stehe gerade vor einem Problem, bei dem ich nicht weiter komme: Ich möchte von $pos_act die X-, Y- und Z-Werte per Ethercat übertragen. Die Signale/Variablen sind soweit angelegt und funktionieren auch, jedoch schaffe ich es nicht die Werte zu zuordnen. Ich versuche in der sps.sub die Werte den Variablen per PositionX = $pos_act.x zu zuweisen, das sorgt aber nur dafür, dass der Submitinterpreter abschmiert.
    Habt Ihr evtl. eine Lösung dazu?