Vorschuboptimierung für kreisförmige G-Code-Operationen
Zuvor diskutierte diese Kolumne ein Problem beim Vorschub für Kreisbewegungen bei konstanter Konturgeschwindigkeit – speziell bei Innen- oder Außenbögen, wenn abgetragenes Material symmetrisch um den bearbeiteten Kontur verläuft (Schlichtfräsen, Near-Net-Shape). Der Größenunterschied zwischen Fräser-Mittelpunktsbahn und Werkstückoberflächenbahn erfordert Erhöhung des linearen Vorschubs für äußere Kreisbewegungen und Verringerung für innere, um konstante Konturgeschwindigkeit zu erreichen.
Letzten Monat zeigte ich eine Methode zur manuellen Berechnung des modifizierten Vorschubs. Aber manuelles Rechnen ist mühsam, besonders bei regelmäßiger Nutzung oder verschiedenen Werkstückradien. Solange Werkzeugradius-Korrektur (CRC) genutzt wird und programmierte Koordinaten die Werkstückbahn widerspiegeln, kann der Bediener den Fräsradius im CRC-Versatzregister hinterlegen.
Bei Rechtsfräsern bestimmt CRC-Zustand (G41 Werkzeug links, G42 Werkzeug rechts), ob ein Kreisbefehl inneren oder äußeren Radius bearbeitet. Jeder G02 (Uhrzeigersinn) bei G41 (Werkzeug links der bearbeiteten Flächen) = äußerer Bogen. Jeder G03 (Gegen-Uhrzeigersinn) = innerer Bogen. Bei G42 umgekehrt. Mit FANUC Custom Macro kann ein Programm CRC-Wert aus Versatzregister und aktuellen CRC-Zustand (G41/G42) abrufen.
Ich erstellte zwei benutzerdefinierte G-Code-Custom-Macros für Kreisbewegungen mit angepasstem Vorschub: G102 (Uhrzeigersinn) und G103 (Gegen-Uhrzeigersinn). Programmiert wie G02/G03 (nicht modal). Jeder vergleicht Werkstückradius (R-Wort in G102/G103) mit Fräser-Mittelpunktsbahnradius (berechnet aus Fräserradius aus Versatzregister und Werkstückradius). Dann berechnet modifizierten Vorschub per vorheriger Methode und führt Kreisbefehl mit G02/G03 und modifiziertem Vorschub aus.
Die benutzerdefinierten G-Code-Programme
O9010 (G102, Uhrzeigersinn-Bogen) #1=#4109 (Aktuelles F-Wort behalten) IF[#9 NE #0] THEN #1=#9 (Test: neuer Vorschub?) IF[#9 EQ #0] THEN #9=#1 (Kein neuer Vorschub → aktuellen behalten) #2=[#_OFSDG[#4107]] (Versatzwert abrufen) IF[#4007 EQ 41] GOTO5 (G41: äußerer Bogen) IF[#4007 EQ 42] GOTO10 (G42: innerer Bogen) #3000=100 (CRC COMP MUST BE USED) N5 (Äußerer Bogen) #3=#9*[#18+#2]/#18 (Äußerer Vorschub) GOTO75 N10 (Innerer Bogen) #3=#9*[#18-#2]/#18 (Innerer Vorschub) N75 G02 X#24 Y#25 R#18 F#3 F#1 (Vorschub zurücksetzen) M99 O9011 (G103, Gegen-Uhrzeigersinn) #1=#4109 IF[#9 NE #0] THEN #1=#9 IF[#9 EQ #0] THEN #9=#1 #2=[#_OFSDG[#4107]] IF[#4007 EQ 41] GOTO5 IF[#4007 EQ 42] GOTO10 #3000=100 (CRC COMP MUST BE USED) N5 (Innerer Bogen bei G41) #3=#9*[#18-#2]/#18 GOTO75 N10 (Äußerer Bogen bei G42) #3=#9*[#2+#18]/#18 N75 G03 X#24 Y#25 R#18 F#3 F#1 M99
Als benutzerdefinierte G-Codes nutzbar: Zwei FANUC-Parameter ändern (aktuelle FANUC: 6051 und 6052). Parameter 6051=102, 6052=103 → CNC führt O9010 bei G102, O9011 bei G103 aus.
Testprogramm (auch Custom Macro für einfache Variablenmodifikation). Vorab: Werkzeugradiuskompensations-Geometrieversatz (D-Register Offset 1) auf Fräserradius setzen.
Hinweis: Ist CRC-Versatzregister 0, nutzt Maschine Werkstückbahn. Zykluszeit fast identisch zu gesetztem Fräserradius. Einziger Unterschied: Weglänge während CRC-Einschaltbefehl. Bestätigt: konstante Konturgeschwindigkeit funktioniert.
O0041 (G41 / G102, Äußere Bögen) #100=0.25 (Eckenradius) #101=10.0 (Vorschub) #102=1.5 (X-Länge) #103=1.5 (Y-Länge) T01M06 G40 G00 X-1.5 Y-.5 G43 H01 Z-0.5 G01 G41 D01 X0 F10.0 G01 Y[#103-#100] F#101 G102 X#100 Y#103 R#100 G01 X[#102-#100] G102 X#102 Y[#103-#100] R#100 G01 Y#100 G102 X[#102-#100] Y0 R#100 G01 X#100 G102 X0 Y#100 R#100 G00 G40 X-1.5 Y-0.8 M30
G102 programmiert wie G02: X, Y, R. Lokale Variablen #24 (X), #25 (Y), #18 (R) werden gesetzt. Ruft O9010 auf, das:
- Aktuellen Vorschub in #1 speichert (Reset nach Kreisbewegung)
- Bei angegebenem Vorschub in G102: #1 aktualisieren
- Vorschub beibehalten
- Aktuellen CRC-Versatzwert in #2 speichern
- Bei G41: ab N5 (äußerer Bogen)
- Bei G42: ab N10 (innerer Bogen)
- Alarm wenn CRC nicht aktiv
- Äußeren Vorschub berechnen
- Inneren Vorschub berechnen
- Kreisbefehl mit G02 ausführen
- Vorschub auf Vor-Kreis-Wert zurücksetzen
Fast identische Technik bei O9011.
Industrielle Ausrüstung
- Raspberry Pi GPIO meistern: PIR-Bewegungsmelder an B+/Model 2 anschließen
- HC-SR501 PIR-Bewegungssensor an Raspberry Pi anschließen, kalibrieren und programmieren
- Ineos Styrolution & Polystyvert bündeln Kräfte für Kreislaufwirtschaft bei Polystyrol
- Hexpol stellt Dryflex Circular TPE vor – nachhaltige Lösungen für Automobilinterieurs
- Präzisen Herzfrequenz-Monitor mit Fotowiderstand und Arduino bauen
- SIM800L GPRS-Modul per AT-Befehle an Arduino anbinden
- Basil Street Pizza Vending kooperiert mit Arcus Servo Motion für landesweiten Rollout
- Fortune International Vturn-40: Leistungsstarke Drehmaschine mit hohem Vorschub für Schwerzerspanung
- Lineare Motionstechnologie: Präzisionslösungen für Automatisierung
- Vorschubgeschwindigkeit vs. Schnittgeschwindigkeit: Die wichtigsten CNC-Bearbeitungsparameter meistern