Test läuft, muss die Anfangskoordinaten noch ein bisschen ändern, da die Positionen bei verschiedenen Winkeln in y-Achse weglaufen.
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=-90LIN 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.
-
das wäre große Klasse. Ich versuche es derweil weiter
-
Der Ursprung von Base_Data[1] liegt bei 0° Schwenkwinkel in der linken unteren Ecke des Blockes.
-
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
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_VERSCHbase_versch=$nullframe
base_versch.c=blockangle ;Drehwinkel einbeziehen
base_c=base_b:base_verschbase_versch=$nullframe
base_versch.y=blocklevel-1200 ;Bauteilhöhe und Versatz einbeziehen
base_d=base_c:base_verschbase_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=1LIN 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 angefahrenHat irgendwer ne Idee woran das liegen könnte?
-
wow, großartige Antwort! Vielen Dank dafür!
-
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.
-
hättest Du eine Idee, wie ich das realisieren könnte?
-
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? -
Super, danke für die schnelle Hilfe! Werd das ausprobieren, sobald die Anlage wieder frei ist
Schönes Wochenende!