CNC-programmeren onder de knie: G-code & M-code essenties
De afkorting CNC in de term CNC-machine staat voor Computer Numerical Control. Meestal, als we aan CNC-bewerking denken, verbeelden we ons het CNC-werktuig, maar eigenlijk vertegenwoordigen moderne CNC-machines een bredere term. Industriële robots en sommige computergecontroleerde meetmachines zijn ook CNC-machines.
Het was het jaar 1952, door de behoefte aan precieze bewerking van onderdelen in de luchtvaartindustrie, toen John T. Parsons, in samenwerking met IBM (International Business Machines Corporation) en MIT (Massachusetts Institute of Technology), de eerste CNC-freesmachine ontwikkelde. Vanaf toen is slimmere industriële productie wijdverspreid en is CNC-bewerking beschikbaar gekomen voor alle industrieën, samen met de opkomst en het gebruik van CNC-programmeertalen – G-code en M-code.
Wat zijn G-code en M-code?
Tijdens de 70-jarige geschiedenis van de ontwikkeling van CNC-machines zijn verschillende programmeertalen, niet alleen G-code en M-code, gebruikt voor hun programmering. Zo werd de baanbrekende machine van Parsons in het begin geprogrammeerd met behulp van gegolfde banden, en later, in 1956, werd een speciale programmeertaal (APT programmeertaal) ontwikkeld voor CNC-bewerking.
RS-274 of beter bekend als G-code, waar dit artikel ook over gaat, werd in hetzelfde decennium gecreëerd. G-code is ontwikkeld uit de APT-programmeertaal die data bevatte over de locatie of geometrie van de frees (gereedschap), en andere niet-geometrische machinefuncties zoals spindelsnelheid, koeling, etc. RS-274 functies (G- en M-codes) overerven de basis van de APT-programmeertaal met kleine aanpassingen die programma's korter en handiger hebben gemaakt voor de machinebesturingseenheid.
| APT | G- en M-codes |
|---|---|
| GO TO {X, Y, Z} | G1, G2, G3 {X, Y, Z} |
| FEDRAT | F |
| SPINDLE CW / CCW | S M3 / M4 |
| COOLNT ON / OFF | M8 M9 |
| FINI | M30 |
De RS-274 programmeertaal wordt vaak "G-code" genoemd omdat het voornamelijk bestaat uit G-functies (G-codes). Maar het bevat ook even belangrijke M-functies (M-codes). Daarom is het nodig deze termen te definiëren, namelijk de volgende vragen duidelijk en direct te beantwoorden:
- Wat zijn G-codes?
- Wat zijn M-codes?
- Wat zijn de verschillen tussen G-code en M-code?
Wat zijn G-codes?
G-code, oftewel G-functies, verschillend van M-code, is primair gerelateerd aan het definiëren van geometrie. Het is duidelijk dat "G" in de naam "G-code" het woord "Geometry" betekent. Dus G-codes zouden functies omvatten voor het selecteren van het coördinatensysteem, werkvlak, programmeereenheden, het instellen van de programmamodus (absoluut of incrementeel), gereedschapsbeweging in snelle en werkmodus, etc.
Wat zijn M-codes?
M-codes of M-functies verwijzen naar functies gerelateerd aan machinebediening. Men kan zeggen dat "M" in de term "M-code" het woord "Machine" betekent. Meestal kunnen in CNC-machineprogrammering de volgende functies in deze functies opgenomen worden: Hoofdspindel in- of uitschakelen, Koeling in- of uitschakelen, automatische gereedschapswisseling, etc.
Wat zijn de verschillen tussen G-code en M-code?
Zoals we hebben gepresenteerd, verwijzen G-codes strikt naar de geometrie van het bewerkingsproces van een onderdeel, en M-codes naar individuele functies op de machine. Men kan zeggen dat de G-codes tonen "Hoe het gereedschap zich beweegt ten opzichte van het werkstuk" en de M-codes "Wat de machine doet in het bewerkingsproces".
Naast de hoofdfuncties van G-code en M-code in de RS-274 programmeertaal, zijn er talrijke hulpfuncties:
- X, Y, Z – positioneringspuntcoördinaten
- I, J, K – coördinaten van de afstand tussen het startpunt en het cirkelcentrum ("CC" in de volgende voorbeelden)
- F – interpolatiesnelheid
- S – spindelsnelheid
- T – gereedschapsnummer
- H – gereedschapshoogte-offsetnummer
- D – gereedschapsstraal-offsetnummer
Lijst van basis G-codes
| Hoofdfuncties | Omschrijving | Hulpfuncties |
|---|---|---|
| G0 | Snelle positionering (lineair) | X, Y, Z |
| G1 | Lineaire interpolatie | X, Y, Z, F |
| G2 | Cirkelinterpolatie kloksgewijs | X, Y, Z, I, J, K, F |
| G3 | Cirkelinterpolatie tegen de klok in | X, Y, Z, I, J, K, F |
VOORBEELD 1:
De zin in G-code: G1 X10 Y50 F100
Uitleg: Gereedschap gaat lineair naar gewenst punt (Coördinaten: X=10 mm, Y=50 mm) met een snelheid van 100 millimeter per seconde.
De zin in G-code: G2 X10 Y50 I10 J40 F100
Uitleg: Gereedschap gaat cirkelvormig (kloksgewijs) naar gewenst punt (Coördinaten: X=10 mm, Y=50 mm) met een snelheid van 100 millimeter per seconde; Cirkelcentrumpositie relatief tot startpunt: +10 mm op X-as en +40 mm op Y-as.
De zin in G-code: G02 X50 Y10 I40 J-10 F75
Uitleg: Gereedschap gaat cirkelvormig (kloksgewijs) naar gewenst punt (Coördinaten: X=50 mm, Y=10 mm) met een snelheid van 75 millimeter per seconde; Cirkelcentrumpositie relatief tot startpunt: +40 mm op X-as en -10 mm op Y-as.
| Hoofdfunctie | Omschrijving | Hulpfuncties |
|---|---|---|
| G17 | Selecteer XY als werkvlak | / |
| G18 | Selecteer ZX als werkvlak | / |
| G19 | Selecteer YZ als werkvlak | / |
| G20 | Eenheden: inches (inch) | / |
| G21 | Eenheden: millimeters (mm) | / |
| G41 | Gereedschapsstraalcompensatie – links | D, X, Y, Z |
| G42 | Gereedschapsstraalcompensatie – rechts | D, X, Y, Z |
| G40 | Gereedschapsstraalcompensatie – uit | / |
| G43 | Gereedschapshoogte-offsetcompensatie | H, Z |
| G49 | Gereedschapshoogte-offsetcompensatie – uit | / |
| G54 | Machinecoördinatensysteem | / |
| G55 | Werkcoördinatensystemen | / |
| G56 | Werkcoördinatensystemen | / |
| G57 | Werkcoördinatensystemen | / |
| G58 | Werkcoördinatensystemen | / |
| G59 | Werkcoördinatensystemen | / |
VOORBEELD 2:
Zin in G-code: G21 G17 G55
Uitleg: Programmeereenheden instellen op millimeters; XY-werkvlak selecteren; G55-coördinatensysteem selecteren.
Zin in G-code: G43 H1 Z100
Uitleg: Gereedschapshoogte-offsetcompensatie instellen op H1 ("H1" is een positie waar de waarde van de gereedschapshoogte opgeslagen is in het geheugen van de CNC-machine) en een nieuwe positie aannemen (Coördinaat: Z=100 mm).
Zin in G-code: G41 D1 X15
Uitleg: Linker gereedschapsstraalcompensatie instellen op D1 ("D1" is een positie waar de waarde van de gereedschapsstraal opgeslagen is in het geheugen van de CNC-machine) en een nieuwe positie aannemen (Coördinaat: X=15 mm); Terwijl het gereedschap naar de gewenste positie gaat, beweegt het langzaam naar links, zodat wanneer het gereedschap de gewenste positie bereikt, de gereedschapsstraalcompensatie voltooid is.
Zin in G-code: G40 G49
Uitleg: Gereedschapsstraalcompensatie annuleren; Gereedschapshoogte-offsetcompensatie annuleren.
| Hoofdfunctie | Omschrijving | Hulpfuncties |
|---|---|---|
| G90 | Absoluut programmeren: Coördinaten relatief tot werkcoördinatensysteem | / |
| G91 | Incrementeel programmeren: Coördinaten relatief tot het coördinatensysteem in de huidige positie | / |
Lijst van basis M-codes
| Hoofdfunctie | Omschrijving | Hulpfuncties |
|---|---|---|
| M00 | Programmastop | / |
| M03 | Spindel Aan (Kloksgewijs) | S |
| M04 | Spindel Aan (Tegen de klok in) | S |
| M05 | Spindel Uit | / |
| M06 | Automatische gereedschapswisseling | T |
| M08 | Koeling Aan | / |
| M09 | Koeling Uit | / |
| M30 | Einde van programma | / |
| M98 | Subprogramma oproep | "Subprogramma naam" |
| M99 | Terugkeer uit subprogramma | / |
Hoe een CNC-machine programmeren
CNC-programmering is alfanumerieke opmaak van data (G- en M-codes) over de geometrie en technologie van onderdelen die op zo'n machine verwerkt moeten worden, maar ook een andere programmering, die ze meestal door machinefabrikanten wordt uitgevoerd.
CNC-machines programmeren met G-code is voornamelijk zin-gebaseerd, wat te zien is in eerdere voorbeelden waar de uitleg van G-functies werd gedaan als het interpreteren van de zinnen van een programma geschreven in G-code. Er zijn verschillende methoden van CNC-programmering, namelijk het genereren van G- en M-codes:
- Handmatige programmering,
- Programmeren in werking (op de machine) en
- Programmeren met CAD (Computer-Aided Design) / CAM (Computer-Aided Manufacturing) systemen.
Handmatige programmering
Bij handmatige CNC-programmering schrijft een programmeur, gebaseerd op zijn eigen kennis en ervaring alsook beschikbare informatie over machines, gereedschappen, machine-accessoires, bewerkingsmodi, programmeerinstructies toepassend, handmatig de geometrische en technologische informatie die nodig is om het alfanumerieke programma te voltooien. Handmatige programmering kan georganiseerd worden als de volgende basisactiviteiten:
- Bewerkings-, baserings- en gereedschapsplannen definiëren,
- Geometrische informatie vertalen met werkplaats tekening, voor routeplanningsdoeleinden
- Gereedschappen, en ze rangschikken in blokken volgens bewerkingsvolgorde,
- Programma's schrijven en voltooien in de vorm van programmaformulier (G-code) en
- Overdracht van informatie van het programmaformulier naar het geheugen van de besturingseenheid
Programmeren in werking (Shopfloor programming)
Om de methode van CNC-programmering constant te verbeteren, alsmede de wens om de programmering op de machine zelf te plaatsen, voor nog grotere en gemakkelijkere toepassingen van CNC, hebben sommige fabrikanten besturingseenheden aangeboden die ze ondersteunen bij programmeren direct op de machine zelf. Hoewel vanaf het begin van de toepassing van CNC er de mogelijkheid was van directe programmering op de machine in de zogenaamde MDI (Manual Data Input) modus, vertegenwoordigt programmeren in werking een volledig nieuwe programmeermethode.
Bij deze methode heeft de besturingseenheid, die het ondersteunt, geïntegreerde additionele functies die klassieke programmering met G-code vermijden. Programmeren hier komt neer op interactieve dialoog tussen de operator en de besturingseenheid, via toetsenbord en grafische gebruikersinterface, die eenvoudige bewerkingscontouren alsook getypte cycli voor bewerking kan genereren. De besturingseenheid voert op basis van ingevoerde vragen de benodigde gereedschapspadberekeningen uit en genereert automatisch een G-code.
Programmeren met CAD/CAM-systemen
De geometrie van de onderdelen, gebruikt bijvoorbeeld in de luchtvaart, militair en andere industrieën, is erg complex met tweedegraadsoppervlakken, die mehrachsige bewerking vereisen (3-as, 4-as en 5-as CNC-bewerking). Complexe programma's voor de bewerking van dergelijke oppervlakken vereisen verschillende duizenden blokken (zinnen) wier handmatige schrijven erg moeilijk en tijdrovend is. Daarom was het nodig om computers te gebruiken voor technologische voorbereiding, namelijk programmering van CNC-machines voor de bewerking van de bovengenoemde onderdelen op basis van G-code en M-code.
CAD/CAM-programmering kan geclassificeerd worden als computer-CNC-programmering. De integratie van CAD en CAM heeft geleid tot verbeteringen in NC-programmering, met name wat betreft programmeringsvereenvoudiging. Nu hoeft de programmeur niet meer na te denken over het definiëren van geometrie, dat doet de CAD/CAM-software. Wat voor de programmeur overblijft is dat hij door actieve interactie met het systeem in het programma, andere technische informatie toevoegt zoals grepen, baseren, klemmen, snijgereedschappen en bewerkingsmodi. Het moet benadrukt worden dat er een integratie is van CAD/CAM en CAPP (Computer Aided Process Planning), wat een oplossing ontwikkelt voor deze eisen ook.
Dit is hoe de procedure voor het programmeren van een machine in een CAD/CAM-omgeving eruitziet:
- Modelleren van CAD-modellen,
- Bewerkingsplanning met behulp van beschikbare CAM-strategieën voor bewerking en berekenen van gereedschapspaden en verkrijgen van CL (Cutter Location) bestand,
- Gereedschapspadsimulatie en materiaalverwijderingssimulatie voor programmaverificatie en detectie van mogelijke fouten en botsingen,
- Na-bewerking van het CL-bestand en verkrijgen van de G-code met behulp van de postprocessor voor de geselecteerde machine,
- De G-code overdragen naar de besturingseenheid. Gereedschappen en werkstukken voorbereiden. Het werkstuk op de machine baseren,
- Bewerkingscondities en modi controleren, snelheden en versnellingen controleren, die de bewerkingskwaliteit aanzienlijk kunnen beïnvloeden en
- Bewerking van een werkstuk op een machine.
Conclusie
Hoewel er vandaag programmeermethoden zijn die geen kennis van G- en M-functies vereisen (Programmeren in werking en CAD/CAM CNC-programmering), moet een programmeur ze kennen, omdat een speciale situatie soms vereist dat programmering handmatig wordt gedaan. Het positieve is dat de programmeertaal G- en M-codes universeel gezegd kan worden, wat betekent dat het kennen van de G- en M-codes alle CNC-machines kan programmeren, met minimale syntaxisverschillen die erg snel onder de knie zijn als u de basis van G- en M-codes kent. Bent u bezorgd over het vinden van een professionele CNC-programmeur voor uw ontwerp? Maak u geen zorgen, WayKen is een fabrikant met meer dan 20 jaar ervaring in de CNC-bewerkingsindustrie, met geavanceerde productietechnologie en ervaren CNC-ingenieurs, klaar om uw productontwerpbehoeften te vervullen. Vraag vandaag nog een direct aanbod aan!
CNC machine
- CNC Machines: Productie Boosteren, Kosten Snijden, Precisie Garanderen
- G- en M-codes beheersen: een uitgebreide gids voor CNC-programmering
- G-code vs M-code begrijpen: Belangrijkste verschillen voor CNC-operators
- G- en M-Codes Onder de Knie: De Ultieme CNC-Programmeerhandleiding
- CNC G-codes uitgelegd: essentiële gids voor CNC programmeurs
- CNC canned cycli: voordelen & nadelen voor efficiënte bewerking
- CNC-programmeren onder de knie krijgen: principes, toepassingen en G-code expertise
- CNC-programmeren onder de knie krijgen: bewezen technieken & insider-strategieën
- Hurco CNC Handleidingen Downloaden – Programmeren, Onderhoud & Veiligheid Gidsen (Gratis)
- Fanuc G71 Ruwdraaicyclus: CNC-draaibank codevoorbeeld
- CNC Programmering Basis: Stapsgewijze Tutorials & Voorbeeldcode