Voersnelheden optimaliseren voor circulaire G-code-bewerkingen
Eerder besprak deze rubriek een kwestie met betrekking tot de benodigde voersnelheid voor circulaire bewegingen bij een constante contoursnelheid – specifiek bij interne bogen of externe bogen wanneer verwijdert materiaal gebalanceerd is rond de te bewerken contour (bijv. afwerkfrezen en near-net-shapes). Het grootteverschil tussen het centrumlijnpad van een frees en het werkstukpad vereist het verhogen van de lineaire voersnelheid voor externe circulaire bewegingen en het verlagen ervan voor interne circulaire bewegingen om een constante contoursnelheid te bereiken.
Ik toonde vorige maand een methode om de vereiste aangepaste voersnelheid voor circulaire bewegingen te bepalen. Maar het handmatig uitvoeren van de bijbehorende berekeningen is vervelend, vooral als je deze techniek regelmatig of voor diverse werkstukstraalformaten toepast. Zolang je straalcompensatie gebruikt en de geprogrammeerde coördinaten het werkstukpad weerspiegelt, kan de operator de freesstraal in een straalcompensatie-offsetregister invoeren.
Bij rechtsdraaiende frezen helpt de toestand van straalcompensatie (G41-gereedschap links, G42-gereedschap rechts) bepalen of een gegeven circulair commando een interne of externe straal bewerkt. Elke G02 (kloksgewijs boog) wanneer het gereedschap aan de linkerkant van bewerkte oppervlakken is (G41) zal een externe boog zijn. Elke G03 (tegen de klok in) zal een interne boog zijn. Het omgekeerde geldt wanneer het gereedschap aan de rechterkant is (G42). Met FANUC Custom Macro kan een programma de freesstraalwaarde uit het offsetregister en de huidige toestand van straalcompensatie (G41 of G42) benaderen.
Ik heb twee door de gebruiker gedefinieerde G-code custom macro's gemaakt die circulaire bewegingen uitvoeren met de aangepaste voersnelheid, genaamd G102 (voor kloksgewijs) en G103 (voor tegen de klok in). Ik programmeerde ze op dezelfde manier als G02 en G03 (hoewel ze niet modaal zijn). Elke zal de werkstukstraal (gespecificeerd door het R-woord in het G102- of G103-commando) vergelijken met de straal van het centrumlijnpad van de frees (berekend met de freesstraal uit het offsetregister en de werkstukstraal). Vervolgens berekenen ze de aangepaste voersnelheid op basis van de eerder getoonde methode en voeren ze het circulaire commando uit met G02 en G03 met de aangepaste voersnelheid.
Wat zijn de door de gebruiker gedefinieerde G-code programma's?
Hier zijn de twee door de gebruiker gedefinieerde G-code programma's:
- O9010 (G102, kloksgewijs boogprogramma)
- #1=#4109 (Huidige F-woord behouden)
- IF[#9NE#0]THEN#1=#9 (Test of nieuwe voersnelheid)
- IF[#9EQ#0]THEN #9=#1 (Geen nieuwe voersnelheid, behoud huidige)
- #2=[#_OFSDG[#4107]] (Offsetwaarde benaderen)
- IF[#4007EQ41]GOTO5 (G41 conditie, externe boog)
- IF[#4007EQ42]GOTO10 (G42 conditie, interne boog)
- #3000=100 (CRC COMP MOET GEBRUIKT WORDEN)
- N5 (Extern)
- #3=#9*[#18+#2]/#18 (Externe voersnelheid)
- GOTO75
- N10 (Intern)
- #3=#9*[#18-#2]/#18 (Interne voersnelheid)
- N75G02X#24Y#25R#18F#3
- F#1
- M99
- O9011 (G103, tegen-de-klok-in boogprogramma)
- #1=#4109 (Huidige F-woord behouden)
- IF[#9NE#0]THEN#1=#9
- IF[#9EQ#0]THEN #9=#1
- #2=[#_OFSDG[#4107]]
- IF[#4007EQ41]GOTO5
- IF[#4007EQ42]GOTO10
- #3000=100 (CRC COMP MOET GEBRUIKT WORDEN)
- N5 (Interne boog)
- #3=#9*[#18-#2]/#18 (Externe voersnelheid)
- GOTO75
- N10 (Externe boog)
- #3=#9*[#2+#18]/#18 (Interne voersnelheid)
- N75G03X#24Y#25R#18F#3
- F#1
- M99
Om deze programma's te laten werken als door de gebruiker gedefinieerde G-codes, wijzig twee FANUC-parameters (bij huidige FANUC CNC's zijn dat parameters 6051 en 6052 voor ons voorbeeld). Na het instellen van parameter 6051 op 102 en 6052 op 103, zal de CNC programma O9010 uitvoeren wanneer het G102 ziet en programma O9011 wanneer het G103 ziet.
Hier is een voorbeeldprogramma voor testdoeleinden. Het is ook een custom macro-programma, zodat de gerelateerde variabelen gemakkelijk gewijzigd kunnen worden. Voordat je dit programma draait, moet je de waarde in het straalcompensatie-geometrie-offsetregister (D-register voor offset 1 in dit voorbeeld) instellen op de freesstraal.
Overigens, als het straalcompensatie-offsetregister op nul staat, zal de machine het werkstukpad gebruiken. De cyclus tijd komt dan bijna overeen met de situatie waarin een waarde voor de freesstraal in het offsetregister staat. De enige tijd dat afstand gerelateerd is aan de lengte van de beweging, is tijdens het instellen van straalcompensatie. Dit bevestigt dat constante contoursnelheid werkt zoals het hoort.
- O0041
- (G41 / G102, Externe bogen)
- #100=0.25 (Hoekstraal)
- #101=10.0 (voersnelheid)
- #102=1.5 (X-lengte)
- #103=1.5 (Y-lengte)
- T01M06
- G40G00X-1.5Y-.5
- G43H01Z-0.5
- G01G41D01X0F10.0
- G01Y[#103-#100]F#101
- G102X#100Y#103R#100
- G01X[#102-#100]
- G102X#102Y[#103-#100]R#100
- G01Y#100
- G102X[#102-#100]Y0R#100
- G01X#100
- G102X0Y#100R#100
- G00G40X-1.5Y-0.8
- M30
Let op dat G102 net als G02 geprogrammeerd is: met X, Y en R. Lokale variabelen #24 (X), #25 (Y) en #18 (R) worden dienovereenkomstig ingesteld. Het roept programma O9010 aan, wat zal:
- Lokale variabele #1 instellen op de momenteel actieve voersnelheid (zodat deze na de circulaire beweging hersteld kan worden)
- Als een voersnelheid in het G102-commando gespecificeerd is, #1 dienovereenkomstig instellen
- Zorgen dat de voersnelheid (indien in G102 opgenomen) behouden blijft
- De huidige straalcompensatie-offsetwaarde opslaan in lokale variabele #2
- Uitvoeren vanaf regel N5 als een G41-conditie bestaat (externe boog)
- Uitvoeren vanaf regel N10 als een G42-conditie bestaat (interne boog)
- Een alarm genereren als straalcompensatie niet momenteel ingesteld is
- De externe boog voersnelheid berekenen indien van toepassing
- De interne boog voersnelheid berekenen indien van toepassing
- Het circulaire commando uitvoeren met G02
- De voersnelheid herstellen naar wat het was voor de circulaire beweging
Bijna identieke technieken worden gebruikt met programma O9011.
Industrieel materiaal
- Raspberry Pi GPIO onder de knie: Een PIR-bewegingsensor interfacen op B+/Model 2
- Hoe de HC‑SR501 PIR-bewegingsensor aan te sluiten, kalibreren en programmeren met een Raspberry Pi
- Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino
- SIM800L GPRS Module Integreren met Arduino via AT-commando's
- Android-bewegingsdetectiecamera bestuurd door Arduino MCU
- Basil Street Pizza Vending werkt samen met Arcus Servo Motion voor landelijke uitrol
- Voedsnelheid vs. Snijsnelheid: De cruciale CNC-bewerkingsparameters onder de knie krijgen
- Fortune International Vturn-40: Krachtige draaibank met hoge voedsnelheid voor zware snijoperaties
- Lineaire Bewegingstechnologie: Precisieoplossingen voor Automatisering
- Ineos Styrolution & Polystyvert bundelen krachten voor circulaire economie van polystyreen
- Introductie van Hexpol’s Dryflex Circular TPE – Duurzame oplossingen voor auto-interieurs