This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Makro zum Gewindefräsen
#1
Einige haben schon nachgefragt.
Ich habe mal ein Makro für G84 geschrieben.

Unterstützt werden Gewindewirbler (nur 1 Gang) und mehrgängige Gewindefräser.

Mit einem Gewindewirbler kann man halt alle möglichen Gewinde Fräsen, mit einem mehrgängigen halt nur Gewinde mit der Steigung des Fräsers.
Dafür sind mehrgängige Fräser viel schneller, weil u.U. nur eine Umdrehung gefräst wird.

Unterstützt wird Innengewinde/Außengewinde, Linksgewinde und Rechtsgewinde.

Als Werkzeug muss ein Gewindewerkzeug ausgewählt werden, und es müssen zu dem Werkzeug noch ein paar Zusatzdaten eingegeben werden.

D1 = virtueller Spitzendurchmesser minus H1 (Höhendreieck), dieser Durchmesser wird vom Hersteller meist angegeben (Bei M3 z.B. 2.3 oder 2.35mm)
L1 = die vermessene Länge (Wenn mit G43 gearbeitet wird)
D2 = Steigung des Fräsers (Gewindewirbler = 0, Mehrgangfräser Steigung, z.B. M3 = 0.5)
L2 = Anzahl der Gänge (Gewindewirbler = 1, Mehrgangfräser 2- xx)
Durch diese Daten erkennt das Makro welcher Fräser benutzt wird und stellt alles automatisch ein.


G84 Parameters (i.e. for M3):
  Z = untere Tiefe des Gewindes
  R = Rückzugsebene
  Q = Oberkante Gewinde
  J =  nominaler Durchmesser (3mm=M3)
  K = Steigung (0,5mm)
  H = 0 = Innengewinde 1= Außengewinde
  F = Vorschub
  I = 0 = Rechtsgewinde 1=Linksgewinde

Aufruf von G84:

G84 X0 Y0 Z-5 R2 Q0 J3 K0.5 H0 I0 F160

Würde an Position XY 0,0 ein Rechts-Innen-Gewinde fräsen beginnend bei Z=0 und einer Tiefe von 5mm mit einer Steigung von 0,5mm und den Fräser auf 2mm zurückziehen.


Das Makro:

#NAME G84.txt #LABEL "Gewindefraesen"
(c) Ingolf Tippner, 09/2021
Gewindefräsen mit Gewindewirblern oder Mehrzahnfräsern

ToDo:
Gewindebohren (Unterscheidung durch Tool)

Tool-Einstellungen:
#922 Typ des Werkzeugs muss 11 (Tapdrill) sein
#923 D=Dia1 ist der Durchmesser des Werkzeuges (virtueller Spitzendurchmesser minus H1)
#926 Length2 ist Anzahl Zähne (1 bei Wirbler, 2..x bei Mehrzahnfräsern)
#924 Dia2 ist der Pitch (0 bei Wirbler)

Parameters (i.e. for M3):
  Z = lower end depth/start depth
  R = Rückzugsebene
  Q = Oberkante Gewinde
  J = Diameter nominal (3mm=M3)
  K = Pitch (0,5mm)
  H = 0 = inner threading 1= outer threading
  F = Vorschub
  I = 0 = Rechtsgewinde 1=Linksgewinde

%
#1=Z (Merke die Tiefe)
#2=0 (Seitlicher Versatz)
#3=0 (Anzahl Durchgänge)
#5=0 (Akku)
#6=J
#7=K
#8=Q
#9=X
#10=Y
#11=0 (Sicherheitsabstand seitlich bei AG)
#12=0 (H-Dreieck)
#13=0 (Kernbohrung Spitzenwert)
#14=0 (Äußerer Spitzenwert)
#15=0 (Kerndurchmesser Außengewinde)

(Ueberpruefe das Werkzeug)
IF (#922<>11) THEN (falsches Werkzeug)
  PRINT "G84: Falsches Werkzeug gewählt."
  M2
ENDIF
IF (#926=0) THEN (no parameters set)
  PRINT "G84: Werkzeug Anzahl Zähne = 0"
  M2
ENDIF
IF (#926>1) & (K<>#924) THEN
  PRINT "G84: Steigung passt nicht zum Werkzeug."
  M2
ENDIF
IF (H<>0) THEN (outer threading)
  #11=(#6/2)+(#923+1.0)/2 (Versatz seitlich +0,5mm Luft)
  #12=#7*0.5*1.7320 (H=Steigung/2*sqrt(3)
  #14=#6+(#12/4)
  #13=#14-(2*#12)
  #15=#13+(#12/3)
  #2=(#15+#923)/2 (Fräsbahndurchmesser)
  (Berechnen der Anzahl Durchgänge)
  #3=(#8-#1)/#7  (Anzahl Gewindegänge, fraktional)

  IF #926=1 THEN (Wirbler, der muss alle Runden machen)
    #5=ROUND(#3)
    IF #5<#3 THEN
    #3=#3+1 (+1, weil wir keine halben Kreise machen)
    ENDIF
  ELSE (Mehrgang-Schneider)
    IF #926>=#3 THEN    (Fräser ist länger als benötigt)
    #3=2 (Ein Durchgang, 1x Schlichten)
    ELSE (Fräser ist kürzer als das benötigte Gewinde)
    #3=(#3-#926)+1    (Rest noch per Helix rausfahren)
    ENDIF
  ENDIF
  #3=ROUND(#3)

  G0 X=#9+#11 Y=#10
  G0 Z=R  (Außenkontour+Abstand, Sicherheitshöhe)
  IF I=1 THEN    (Linksgewinde)
    G0 Z=#1   (Absenken)
    G1 X=#9+#2 F=F   (seitliche Anfahrt)
    REPEAT=#3   (Helix nach oben, Steigung)
    G2 X=X Y=Y I=-#2 J0 Z=Z+K
    NEXT
  ELSE            (Rechtsgewinde)
    (Starthöhe berechnen)
    G0 Z=#1+(#3*#7)
    G1 X=#9+#2 F=F   (seitliche Anfahrt)
    REPEAT=#3   (Helix nach unten, Steigung)
    G2 X=X Y=Y I=-#2 J0 Z=Z-K
    NEXT
  ENDIF
  G1 X=#9+#11
  G0 Z=R  
  M99
ELSE (inner Threading)
  #2=(#6-#923)/2 (Versatz seitlich innerhalb Bohrung)
  (Berechnen der Anzahl Durchgänge)
  #3=(#8-#1)/#7  (Anzahl Gewindegänge, fraktional)

  IF #926=1 THEN (Wirbler, der muss alle Runden machen)
    #5=ROUND(#3)
    IF #5<#3 THEN
    #3=#3+1 (+1, weil wir keine halben Kreise machen)
    ENDIF
  ELSE (Mehrgang-Schneider)
    IF #926>=#3 THEN    (Fräser ist länger als benötigt)
    #3=2 (Ein Durchgang, 1x Schlichten)
    ELSE (Fräser ist kürzer als das benötigte Gewinde)
    #3=(#3-#926)+1    (Rest noch per Helix rausfahren)
    ENDIF
  ENDIF
 
  G0 X=#9 Y=#10 Z=R  (Zentrum der Bohrung, Sicherheitshöhe)
  IF I=0 THEN    (Rechtsgewinde)
    G0 Z=#1   (Absenken in Bohrung)
    G1 X=X+#2 F=F   (seitliche Anfahrt)
    REPEAT=#3   (Helix nach oben, Steigung)
    G3 X=X Y=Y I=-#2 J0 Z=Z+K
    NEXT
  ELSE            (Linksgewinde)
    G0 Z=Q       
    G1 X=X+#2 F=F   (seitliche Anfahrt)
    REPEAT=#3   (Helix nach unten, Steigung)
    G3 X=X Y=Y I=-#2 J0 Z=Z-K
    NEXT
  ENDIF
  G1 X=X-#2
  G0 Z=R  
  M99
ENDIF
M99




Simulation:
#1=Z (Merke die Tiefe)
#2=0 (Seitlicher Versatz zum Gewinde-DM)
#3=0 (Anzahl Durchgänge)
#5=0 (Akku)
#6=J
#7=K
#8=Q
#9=X
#10=Y
#11=0 (Sicherheitsabstand seitlich bei AG)
#12=0 (H-Dreieck)
#13=0 (Kernbohrung Spitzenwert)
#14=0 (Äußerer Spitzenwert)
#15=0 (Kerndurchmesser Außengewinde)

(Ueberpruefe das Werkzeug)
IF (#922<>11) THEN (falsches Werkzeug)
  PRINT "G84: Falsches Werkzeug gewählt."
  M2
ENDIF
IF (#926=0) THEN (no parameters set)
  PRINT "G84: Werkzeug Anzahl Zähne = 0"
  M2
ENDIF
IF (#926>1) & (K<>#924) THEN
  PRINT "G84: Steigung passt nicht zum Werkzeug."
  M2
ENDIF
IF (H<>0) THEN (outer Threading)
  #11=(#6/2)+(#923+1.0)/2 (Versatz seitlich +0,5mm Luft)
  #12=#7*0.5*1.7320 (H=Steigung/2*sqrt(3)
  #14=#6+(#12/4)
  #13=#14-(2*#12)
  #15=#13+(#12/3)
  #2=(#15+#923)/2 (Fräsbahndurchmesser)
  (Berechnen der Anzahl Durchgänge)
  #3=(#8-#1)/#7  (Anzahl Gewindegänge, fraktional)

  IF #926=1 THEN (Wirbler, der muss alle Runden machen)
    #5=ROUND(#3)
    IF #5<#3 THEN
    #3=#3+1 (+1, weil wir keine halben Kreise machen)
    ENDIF
  ELSE (Mehrgang-Schneider)
    IF #926>=#3 THEN    (Fräser ist länger als benötigt)
    #3=2 (Ein Durchgang, 1x Schlichten)
    ELSE (Fräser ist kürzer als das benötigte Gewinde)
    #3=(#3-#926)+1    (Rest noch per Helix rausfahren)
    ENDIF
  ENDIF
  #3=ROUND(#3)
  G0 X=#9+#11 Y=#10 Z=R  (Außenkontour+Abstand, Sicherheitshöhe)
  IF I=1 THEN    (Linksgewinde)
    G0 Z=#1   (Absenken)
    G1 X=#9+#2 F=F   (seitliche Anfahrt)
    REPEAT=#3   (Helix nach oben, Steigung)
    G2 X=X Y=Y I=-#2 J0 Z=Z+K
    NEXT
  ELSE            (Rechtsgewinde)
    (Starthöhe berechnen)
    G0 Z=#1+(#3*#7)
    G1 X=#9+#2 F=F   (seitliche Anfahrt)
    REPEAT=#3   (Helix nach unten, Steigung)
    G2 X=X Y=Y I=-#2 J0 Z=Z-K
    NEXT
  ENDIF
  G1 X=#9+#11
  G0 Z=R  
  M99
ELSE
  #2=(#6-#923)/2 (Versatz seitlich innerhalb Bohrung)
  (Berechnen der Anzahl Durchgänge)
  #3=(#8-#1)/#7  (Anzahl Gewindegänge, fraktional)

  IF #926=1 THEN (Wirbler, der muss alle Runden machen)
    #5=ROUND(#3)
    IF #5<#3 THEN
    #3=#3+1 (+1, weil wir keine halben Kreise machen)
    ENDIF
  ELSE (Mehrgang-Schneider)
    IF #926>=#3 THEN    (Fräser ist länger als benötigt)
    #3=2 (Ein Durchgang, 1x Schlichten)
    ELSE (Fräser ist kürzer als das benötigte Gewinde)
    #3=(#3-#926)+1    (Rest noch per Helix rausfahren)
    ENDIF
  ENDIF
 
  G0 X=#9 Y=#10 Z=R  (Zentrum der Bohrung, Sicherheitshöhe)
  IF I=0 THEN    (Rechtsgewinde)
    G0 Z=#1   (Absenken in Bohrung)
    G1 X=X+#2 F=F   (seitliche Anfahrt)
    REPEAT=#3   (Helix nach oben, Steigung)
    G3 X=X Y=Y I=-#2 J0 Z=Z+K
    NEXT
  ELSE            (Linksgewinde)
    G0 Z=Q       
    G1 X=X+#2 F=F   (seitliche Anfahrt)
    REPEAT=#3   (Helix nach unten, Steigung)
    G3 X=X Y=Y I=-#2 J0 Z=Z-K
    NEXT
  ENDIF
  G1 X=X-#2
  G0 Z=R  
  M99
ENDIF
M99
Reply
#2
Hallo
Ich hab mal eine Frage zum Gewindefräsen .Programm läuft für innengewinde wunderbar ,nur wenn ich ein aussengewinde fräsen möchte (P=1) fräst es immer ein innengewinde .Mach ich da irgend ein Fehler .Gruss Mathias
Reply
#3
Hallo Mathias,
ich habe den Thread oben mal korrigiert und noch das Außengewinde hinzugebaut.
Das war noch nicht implementiert.

Achtung: Der Parameter P hat sich jetzt in H geändert! Problem war, der Parameter P wurde nicht korrekt ausgewertet.
Jetzt sollte es klappen. Zumindest benutze ich es und habe gerade erst wieder ein M62x1 Innen und Außengewinde gemacht.
Reply
#4
Top Danke für deine schnelle Hilfe

Gruss Mathias
Reply
#5
Kein Problem. Dafür bin ich da Big Grin
Reply


Forum Jump: