TooTall18T / tool_length_probe

Tool length probe subroutine for Probe Basic.
GNU General Public License v3.0
14 stars 3 forks source link

Fehler in Zeile 252 Überschreitung Achse/Gelenk Z #2

Closed Jensner closed 10 months ago

Jensner commented 1 year ago

Hallo,

zuerst einmal vielen Dank für diese tolle Routine. Ich bin absolut begeistert von dieser Funktion. Alles funktioniert perfekt, bis auf dieses eine Problem, welches ich einfach nicht gelöst bekomme.

Das Problem ist hier, dass ich oft (seltsamerweis nicht immer) bei der M600 Routine innerhalb eines Programms nach dem erfolgreichen Vermessen (quasi vor dem Rückweg zum Startpunkt) folgende Fehlermeldung bekomme: error Bewegung Linear in Zeile 252 würde pos. Anschlag von Achse/Gelenk Z überschreiten

Da in der angegebenen Zeile im Programmcode überhaupt keine Z-Anweisung steht, habe ich in der tool_touch_off.ngc nachgesehen und ich vermute es geht hier um die Zeile 252 G0 Z[#<stop_position_z>]

Soweit ich das verstanden habe, bezieht sich das Problem auf den Abschnitt (nicht als code, da sonst kein Zeilenumbruch) +++++++++++++++++++++++++++++++++++ ;-21- Return to hold position and choose pause ;Runs only in automatic mode. o<140> if [# EQ 1] o<141> if [# EQ 1] ;(debug,x:# / y:# / z:#) G0 X[#] Y[#] G0 Z[#] o<141> endif ++++++++++++++++++++++++++++++++++

Die entsprechenden Variablen werden in diesem Abschnitt befüllt ++++++++++++++++++++++++++++++++++ ;-5- Save the stop position and coordinate system of the cnc program

= #5420 ;current X position in the current coordinate system

= #5421 ;current Y position in the current coordinate system

= #5422 ;current Z position in the current coordinate system

= 0 ;Stores the current Z position in the current coordinate system, will be set later

+++++++++++++++++++++++++++++++++

Wenn ich mir die linuxcnc.var ansehe, existieren diese Variablen jedoch überhaupt nicht.

Habe ich da irgend etwas übersehen, sind das irgendwelche dynamischen Variablen oder stelle ich mich evtl. nur zu dumm?

Vielen Dank schon mal Gruß Jens

TooTall18T commented 1 year ago

Hallo Jens,

lässt sich der Fehler reproduzieren, oder ist er bei gleichem Wechsel sporadisch? Ich meine wenn Stoppposition und der Wechsel von Werkzeug A auf B gleich sind?

Wenn du in der Zeile ";(debug,x:# / y:# / z:#)" das Semikolon entfernst, bekommst du ein Hinweisfenster mit der Position zu der die Maschine fahren möchte.

Du könntest mal den Debugmode (# = 1) einschalten und das Ergebnis hier rein kopieren. Schreib mir auch dabei wo die Anschläge deiner Z-Achse in Absoluterrichtung liegen (Z+/-). Ist die Maschine zu dem Zeitpunkt in "G43" Modus (Werkzeuglängenkompensation)?

Mit den infos kann ich das mal nachstellen und gucken wo es klemmt.

MfG

Jensner commented 1 year ago

Hallo,

Dein Tipp mit der debug-Zeile war schon mal Gold wert!

Beim Werkzeugwechsel aus einem Fräsprogramm heraus fährt ja die Z-Achse bis zur max. Position nach oben, dann wird X + Y des Tasters angefahren und die Messung durchgeführt. (Wie schon geschrieben funktioniert die Messung selbst perfekt) Nach der Messung fährt die Z-Achse wieder auf Max und erst anschließend erscheint der Fehler.

Dank der Debug-Meldung ist nun nachvollziehbar, dass nach dem Anfahren von Z-Max zwar die korrekten X+Y Werte anzeigt, beim Z-Wert jedoch der Z-Maxwert + der Offset-Wert addiert werden. Wenn Z-Offset positiv ist, würde logischerweise der Z-Fahrweg überschritten und die Fehlermeldung ist korrekt. (Somit erklärt sich dann auch, warum der Fehler immer nicht immer auftritt, sondern wohl nur wenn der Offset positiv ist)

Die Frage ist nun, woher rührt dieser Berechnungsfehler, denn eigentlich müsste er ja den Ursprungs-Z-Wert + Offset nehmen und nicht den max-Z-Wert + Offset?

Hier mal das Logfile bei Fehler +++++++++++++++++++++++++++ Log file for the subroutine "tool_touch_off.ngc" Version 3.0 from TooTall18T Fast: 0.000000 FAST.var: 350.000000 Slow: 0.000000 SLOW.var: 150.000000 Zmax travel: 0.000000 ZMAX TRAVEL.var: 25.000000 XY max travel: 0.000000 XY MAX TRAVEL.var: 0.000000 spindle_zero_height: 0.000000 SPINDLE ZERO HEIGHT.var: 50.000000 Retract: 0.000000 RETRACT.var: 2.000000 Back: 1.000000 tool touch z coodrs: -153.688323 tool table: 1.000000 tool min dis: 10.000000 Brake: 2.000000 Automatic: 1.000000 Parameters: -1.000000 Old tool: 0.000000 / New tool: 13.000000 Offset_Z: 174.482180 +++++++++++++++++++++++++++

Viele Grüße und vielen Dank für Deine Hilfe Jens

TooTall18T commented 1 year ago

Hallo Jens,

die Log-Datei ist so aber nicht vollständig. Nach dem Log zu urteilen wird der Punkt ";-11- Tool change" bereits nicht mehr ausgeführt. Da müssten aber noch vier weitere Werte kommen. Old tool length: Probe start pos: max travel: New tool length:

Ich kann sehen, dass dein Werkzeugtaster bei -153.68mm liegt. Wie weit kann deine Z-Achse gesamt runter? In welchem Koordinatensystem arbeitest du (G54)? Wie sind die Koordinaten (mit G43) bei dem du den M600 ausführst und es dann zu einem Fehler kommt?

MfG

Jensner commented 1 year ago

Hallo,

ich habe heute nochmal die gesamte Routine neu implementiert. Alle Dateien neu herunter geladen und nach Anleitung installiert, sowie die Parametrierung entsprechend durchgeführt. Beim alten LOG wurde "Olt tool" als 0.0000 angezeigt, weil ich hier mal etwas modifiziert hatte um das gleiche Tool auch mehrfach testen zu können. Der Grund ist, dass ich ab und an leichte Probleme mit meiner Z-Achse (Schrittverluste) habe und daher auch gerne die Option einer Mehrfach-Vermessung des gleichen Werkzeugs hätte. (Dies ist jedoch jetzt erst einmal wieder auf Deine Original-Datei umgestellt)

Trotz alle dem ereilt mich ab und an wieder dieser Fehler. Meine Z-Achse bewegt sich grundsätzlich immer ins Negative (Wenn ich am oberen Referenzpunkt Nulle, kann ich ohne Fräser und ohne Taster auf ca. -180 mm fahren) Evtl. ist das auch ein Problem...

Bei der letzten Fehlermeldung gab es dieses Log: +++++++++++++++++ Log file for the subroutine "tool_touch_off.ngc" Version 3.0 from TooTall18T Fast: 0.000000 FAST.var: 300.000000 Slow: 0.000000 SLOW.var: 50.000000 Zmax travel: 0.000000 ZMAX TRAVEL.var: 20.000000 XY max travel: 0.000000 XY MAX TRAVEL.var: 0.000000 spindle_zero_height: 0.000000 SPINDLE ZERO HEIGHT.var: 60.000000 Retract: 0.000000 RETRACT.var: 1.000000 Back: 1.000000 tool touch z coodrs: -155.586662 tool table: 1.000000 tool min dis: 15.000000 Brake: 2.000000 Automatic: 1.000000 Parameters: -1.000000 Old tool: 15.000000 / New tool: 13.000000 Offset_Z: 178.317466 +++++++++++++++++

(Tool 15 ist ein D=6mm - 75mm langer Schaftfräser - Länge unter Halter ca. 50mm / Tool 13 ein D=3,175mm - Länge unter Halter ca. 30mm)

Wenn ich hier die Parameter "tool touch z coodrs: -155.586662" und "Offset_Z: 178.317466" anschaue, passt das auf jeden Fall nicht zusammen. tool touch z coodrs ist korrekt, aber Offset_Z ist in diesem Zusammenhang widersinnig..

Bei der Gelegenheit nochmal die Frage, wo wird denn die Variable #5422 abgespeichert? Ist das eine temporäre Variable oder wir diese woanders, als in der linuxcnc.var abgelegt? Dort gibt es nämlich keine 54xx Variablen.

Sorry nochmal für den Aufwand und vielen Dank für Deine Unterstützung. Gruß Jens

TooTall18T commented 1 year ago

Hi Jens,

Die Variable #5422 ist eine LinuxCNC Variable, die wird nicht in der .var gespeichert. Nur die Variablen 31-5000 landen in der Datei.

Ich habe gerade keine lauffähige Maschine, daher muss ich mir mal was basteln damit ich es simulieren kann. "Offset_Z" kommt mir aber auch etwas zu groß vor. Und auch hier ist das Log unvollständig. Wenn die Routine erst bei der Fahrt zum Stopppunkt abbricht sollten die oben geschriebenen Werte in der Log stehen.

MfG

TooTall18T commented 1 year ago

Hi Jens,

ich habe mir jetzt alles nochmal angesehen.

Der Wert für "Offset_Z:" kann schon so hoch sein (178.317466). Es ist die Distant zwischen der Position an der der "M600" ausgelöst wurde und dem oberen Nullpunkt (G53 Z0), ohne Werkzeug. In deinem Fall dann sehr weit unten.

Da ich jetzt nicht weiß wo du den M600 auslöst, gehe ich erst mal davon aus, dass der Wert stimmt. Du wechselst von Fräser 15 (ca. 50mm) auf Fräser 13 (ca. 30mm). Der T15 ist dabei (G53) 228.317466mm tief (-178.317466mm-50mm). Abstand vom oberen Nullpunkt bis Fräserspitze. Du wechselst auf T13 und die Maschine will wieder auf 228.317466mm runter fahren, kann es aber nicht. Du hast geschrieben, dass du nur 180mm mit der Z-Achse nach unten fahren kannst. Somit ist mit dem T13 bei 210mm Schluss (-180-30). Dies heißt, dass die Fehlermeldung berechtigt wäre.

Arbeitest du da zur Zeit so tief und meine Einschätzung ist richtig?

MfG

Jensner commented 1 year ago

Hi,

vielen Dank für deine Unterstützung. Tatsächlich ist es völlig unerheblich von welcher Ausgangsposition ich den M600 aufrufe. Der Fehler kommt auch (nur eben leider nicht immer), wenn ich nur ganz knapp unter dem oberen Anschlag der Z-Achse bin oder auch mittig. Das verwirrt mich ja eben auch so. Ich finde hier keine wirklich Logik dahinter.

Aktuell habe ich ohnehin Probleme mit Schrittverlusten auf meiner Z-Achse und muss hier erstmal eine Lösung finden. Dafür werde ich wohl nochmal eine komplett neue Konfig erstellen und evtl. erledigt sich das Problem ja auch gleich mit. Die Hoffnung stirbt zuletzt ;o)

Ich melde mich dann nochmal, wenn ich das Problem mit den Schrittverlusten behoben habe und der Fehler mit dem Werkzeuglängentaster weiterhin bestehen sollte.

Vielen Dank erstmal für Deine Hilfe. Gruß Jens

TooTall18T commented 10 months ago

Hat sich erledigt.