Zurückfahren auf $pos_int, also LIN $pos_int sollte dann etwas genauer sein.
"zurücksetzen": $Cycflag[5]=false oder $Cycflag[5]=true
Zurückfahren auf $pos_int, also LIN $pos_int sollte dann etwas genauer sein.
"zurücksetzen": $Cycflag[5]=false oder $Cycflag[5]=true
Nö, musst Du nicht. Es reicht die Deklaration in Zeile 4. Das $cycflag wird so lange ausgewertet, bis eine neue Zuweisung wie in Zeile 3 oder 4 programmiert ist. Da ist halt nach dem Zurücksetzen des Programms die Auswertung des $cycflag true. Schadet ja nicht, solange es vor der entscheidenden Bewegung auch mal auf false geht. Nach dem Durchlauf würde ich es evtl. schon auf false setzen, es reicht aber auch den Interrupt abzuschalten. Das ist halt mal wieder Geschmackssache.
Ich habe aktuell Probleme die gespeichterte Position $POS_INT wieder anzufahren.
Dabei ging ich wie folgt vor:
Ich habe eine andere Position E6POS hergenommen und mit copy&paste in das .dat file kopiert. Dann habe ich einfach den Namen geändert. Denn ich gehe davon aus dass alle Werte dann überschrieben werden:
DECL E6POS ZLoch={X 124.358315,Y 146.740753,Z 377.216431,A 89.8801193,B -0.0398053862,C -179.512924,S 6,T 27,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
Abspeicherung der Position in der .src Datei
Dann habe ich versucht die Position mit LIN anzufahren:
Aber da sehe ich dass dies irgend eine andere Position angefahren wird die nicht übereinstimmt mit der Position wo der Interrupt ausgelöst wurde. Somit stimmt die Position nicht. Ich verstehe nicht warum die Position bei &Pos_INT nicht genau wieder angefahren wird. Vermutlich mache ich beim abspeichern der Position $POS_INT was falsch.
oder da wo du versuchst es anzufahren hast du falsches tool und base angewählt.
das kann man aus dem Codeschnipsel da nicht erkennen der gesamte code wäre hier hilfreicher.
So isses.
Die Zeile zloch=$pos_int gehört auf jeden Fall in die Interrupt Routine.
oder da wo du versuchst es anzufahren hast du falsches tool und base angewählt.
das kann man aus dem Codeschnipsel da nicht erkennen der gesamte code wäre hier hilfreicher.
Stimmt habe eine Neue LIN Bewegung angelegt und da war einfach ein anderes tool und base ausgewählt. Ich dacht immer dass diese die gleichen wären wenn ich in meinem Program drin bin. Auf jeden Fall hat es geklappt.
Sorry dass ich dich nicht weiter "betreuen" konnte. Ich war beruflich im Ausland mit ohne Internet...
Aber dir wurde ja offensichtlich geholfen.
Die Annahme, dass man durch Aneinanderreihung von Halb(!)kreisen eine Spirale bekäme ist erfahrungsgemäß leider Selbstbetrug und führt zu nichts.
Die Diagonale von links unten nach rechts oben in Deinem Bild sind Eckpunkte, die durch geschwindigkeitsabhängiges Überschleifen verzerrt werden. Die der Diagonale von links oben nach rechts unten sind tatsächliche Hilfspunkte auf Halbkreisbahnen.
Für "echtere" Spiralen empfiehlt sich die Berechnung in höherer Auflösung (12 pro Umdrehung ist erfahrungsgemäß nicht schlecht, man denke an das Zifferblatt einer Uhr) mit fortlaufender Abstandsanpassung gemäß der gewünschten Spiralfunktion, und die Bewegungsanweisung dann als LIN mit C_DIS, wobei man daran denken sollte, dass die echte Spirale dadurch etwas kleiner wird als die berechnete.
Grüße,
Michael
Oder am besten gleich einen Splineblock nur mit SPL füllen und die Zielpunkte so brrechnen, dass sie auf der Spirale liegen. Dann gibt es das Einschnüren nicht.
Fubini
Hi dann aber mehr als 12 punkte berechen sonst hast ein Dodekagon spirale
Gruß Loipe
DEF SPIRAL(min_r:in, max_r:in,w_schritt:in,r_schritt:in)
DECL REAL min_r,max_r,w_schritt, r_schritt, winkel, radius
DECL FRAME ursprung, punkt
$APO.CDIS=100
winkel = 0
radius = min_r
ursprung = $POS_ACT
punkt = $nullframe
LIN ursprung
WHILE radius<max_r
winkel = winkel + 360/w_schritt
radius = radius + r_schritt/w_schritt
punkt.x = radius*cos(winkel)
punkt.y = radius*sin(winkel)
LIN ursprung:punkt C_DIS
ENDWHILE
Alles anzeigen
es geht ohne Spline und vor-berechnen...
und zB:
PTP P1
SPIRAL(10,150,36,20)
36 punke per 360deg = 10deg schritt
mehr schritte gewunscht? einfach parameter anpassen (mit 360 bedeuted 1deg schritt):
SPIRAL(10,150,360,20)
Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können