Dynamische Werkzeuglängenmessung
21 Feb 2021 12:24 #199598
by paul303
Dynamische Werkzeuglängenmessung was created by paul303
Ich habe mir mit einigen Code-Schnipseln aus dem Web ein Werkzeugwechsel-Macro gebastelt. Über die Variable <ToolDidFirst> wird gesteuert, ob der Antastvorgang mit dem Referenzwerkzeug erfolgt oder ob die Werkzeuglänge angepasst werden soll. Ich nutze dies mit gmoccapy. Hierbei verschiebe ich jeweils das G54 Koordinatensystem, da ich mit G43.1 nur Probleme unter gmoccapy hatte.
Das tool-job-begin.ngc macro wird hierbei durch m600 aufgerufen, tool-change.ngc ist mit m6 verknüpft. das funktioniert soweit ganz gut innerhalb meiner ersten Tests. Sporadisch tritt folgender Fehler auf: "es ist derzeit nicht möglich in den Auto Modus zu wechseln" "unbekannte O-Wort-Nummer"
Hier sind die Makros:
CONFIGURATION PARAMETERS
)
#<_ProbeX> = 3 ( machine X coordinate of switch/touch-off plate )
#<_ProbeStartZ> = -140 ( machine Z coord to move to before starting probe, longest tool should not touch switch at this Z )
#<_ProbeDistance> = -69 ( Suchweg für den Probe)
#<_ProbeRetract> = 2 ( small distance to retract before approaching switch/touch-off plate second time)
#<_ProbeRetractSpeed> = 500 (wie schnell ich vom Messtaster runter fahre)
#<_ProbeFeed1> = 500 ( feed rate for touching switch/touch-off plate first time )
#<_ProbeFeed2> = 50.0 ( feed rate for touching switch/touch-off plate second time )
#<_ToolChangeX> = 200.0 ( machine X coordinate to pause at for manual tool changing )
(
Init
)
O100 if [EXISTS[#<_ToolDidFirst>] EQ 0 ]
#<_ToolDidFirst> = 0
O100 endif
G49 ( clear tool length compensation prior to saving state if this is first time )
M5 (stop spindle)
G54
G90 G0
G53 Z0 (ganz hoch im Maschinenkoord.)
G53 X[#<_ToolChangeX>] (Wechsel X Position)
M6 (Toolchange aufrufen T[#<_selected_tool>])
G53 G0 X[#<_ProbeX>] (to probe switch)
G53 G0 Z[#<_ProbeStartZ>] (to probe Start height)
(
Referenzieren
)
O200 if [ #<_ToolDidFirst> EQ 0 ]
G91 (inc modus)
G38.2 Z[#<_ProbeDistance>] F[#<_ProbeFeed1>] (messen grob)
G1 Z[#<_ProbeRetract>] F[#<_ProbeRetractSpeed>] (frei fahren)
G38.2 Z[#<_ProbeRetract>*-1.25] F[#<_ProbeFeed2>] (messen fein)
#<_ToolZRef>=[#5063+#5223] (G53 Referenzlänge speichern)
;(debug, Referenz: #<_ToolZRef>)
G1 Z5.0 F[#<_ProbeRetractSpeed>] (frei fahren)
G90 G0
G53 Z0 (wieder hoch)
G54 (zu G54 zurück)
#<_ToolDidFirst> = 1 (referenzieren abgeschlossen)
O200 else
(
Werkzeuglänge verrechnen
)
G91 (inc modus)
G38.2 Z[#<_ProbeDistance>] F[#<_ProbeFeed1>] (messen grob)
G1 Z[#<_ProbeRetract>] F[#<_ProbeRetractSpeed>] (frei fahren)
G38.2 Z[#<_ProbeRetract>*-1.25] F[#<_ProbeFeed2>] (messen fein)
#<_ToolZ>=[#5063+#5223] (G53 dynamisch messen)
;(debug, Messpunkt: #<_ToolZ>)
#<_ToolDiff>=[#<_ToolZ>-#<_ToolZRef>] (Differenz der Messungen)
;(debug, Differenz: #<_ToolDiff>)
#<_ToolOffset>=[#5223+#<_ToolDiff>] (Berechnung des Offsets)
;(debug, Offset: #<_ToolOffset>)
G1 Z5.0 F[#<_ProbeRetractSpeed>] (frei fahren)
G90 G0
G53 Z0 (wieder hoch)
G10 L2 P1 Z[#<_ToolOffset>] (passt G54 an)
G54 (neues G54)
O200 endif
O<tool-change> endsub
M2
O<tool-job-begin> SUB
Das tool-job-begin.ngc macro wird hierbei durch m600 aufgerufen, tool-change.ngc ist mit m6 verknüpft. das funktioniert soweit ganz gut innerhalb meiner ersten Tests. Sporadisch tritt folgender Fehler auf: "es ist derzeit nicht möglich in den Auto Modus zu wechseln" "unbekannte O-Wort-Nummer"
Hier sind die Makros:
CONFIGURATION PARAMETERS
)
#<_ProbeX> = 3 ( machine X coordinate of switch/touch-off plate )
#<_ProbeStartZ> = -140 ( machine Z coord to move to before starting probe, longest tool should not touch switch at this Z )
#<_ProbeDistance> = -69 ( Suchweg für den Probe)
#<_ProbeRetract> = 2 ( small distance to retract before approaching switch/touch-off plate second time)
#<_ProbeRetractSpeed> = 500 (wie schnell ich vom Messtaster runter fahre)
#<_ProbeFeed1> = 500 ( feed rate for touching switch/touch-off plate first time )
#<_ProbeFeed2> = 50.0 ( feed rate for touching switch/touch-off plate second time )
#<_ToolChangeX> = 200.0 ( machine X coordinate to pause at for manual tool changing )
(
Init
)
O100 if [EXISTS[#<_ToolDidFirst>] EQ 0 ]
#<_ToolDidFirst> = 0
O100 endif
G49 ( clear tool length compensation prior to saving state if this is first time )
M5 (stop spindle)
G54
G90 G0
G53 Z0 (ganz hoch im Maschinenkoord.)
G53 X[#<_ToolChangeX>] (Wechsel X Position)
M6 (Toolchange aufrufen T[#<_selected_tool>])
G53 G0 X[#<_ProbeX>] (to probe switch)
G53 G0 Z[#<_ProbeStartZ>] (to probe Start height)
(
Referenzieren
)
O200 if [ #<_ToolDidFirst> EQ 0 ]
G91 (inc modus)
G38.2 Z[#<_ProbeDistance>] F[#<_ProbeFeed1>] (messen grob)
G1 Z[#<_ProbeRetract>] F[#<_ProbeRetractSpeed>] (frei fahren)
G38.2 Z[#<_ProbeRetract>*-1.25] F[#<_ProbeFeed2>] (messen fein)
#<_ToolZRef>=[#5063+#5223] (G53 Referenzlänge speichern)
;(debug, Referenz: #<_ToolZRef>)
G1 Z5.0 F[#<_ProbeRetractSpeed>] (frei fahren)
G90 G0
G53 Z0 (wieder hoch)
G54 (zu G54 zurück)
#<_ToolDidFirst> = 1 (referenzieren abgeschlossen)
O200 else
(
Werkzeuglänge verrechnen
)
G91 (inc modus)
G38.2 Z[#<_ProbeDistance>] F[#<_ProbeFeed1>] (messen grob)
G1 Z[#<_ProbeRetract>] F[#<_ProbeRetractSpeed>] (frei fahren)
G38.2 Z[#<_ProbeRetract>*-1.25] F[#<_ProbeFeed2>] (messen fein)
#<_ToolZ>=[#5063+#5223] (G53 dynamisch messen)
;(debug, Messpunkt: #<_ToolZ>)
#<_ToolDiff>=[#<_ToolZ>-#<_ToolZRef>] (Differenz der Messungen)
;(debug, Differenz: #<_ToolDiff>)
#<_ToolOffset>=[#5223+#<_ToolDiff>] (Berechnung des Offsets)
;(debug, Offset: #<_ToolOffset>)
G1 Z5.0 F[#<_ProbeRetractSpeed>] (frei fahren)
G90 G0
G53 Z0 (wieder hoch)
G10 L2 P1 Z[#<_ToolOffset>] (passt G54 an)
G54 (neues G54)
O200 endif
O<tool-change> endsub
M2
Please Log in or Create an account to join the conversation.
21 Feb 2021 12:26 #199600
by paul303
Replied by paul303 on topic Dynamische Werkzeuglängenmessung
Kann mir jemand helfen? Ich finde die Ursache für den Fehler nicht.
Please Log in or Create an account to join the conversation.
Time to create page: 0.069 seconds