G-kod

G-kod  - villkorlig namngivning av programmeringsspråket för enheter med numerisk kontroll (CNC). Skapad av Electronic Industries Alliance i början av 1960 -talet . Den slutliga utvecklingen godkändes i februari 1980 som RS274D-standard. ISO - kommittén godkände G-koden som ISO 6983-1:2009, USSR State Committee for Standards  - som GOST 20999-83 [1] . I sovjetisk teknisk litteratur kallas G-koden för ISO 7-bitarskoden (ISO 7-bitars), detta beror på att G-koden kodades på ett 8-spårs hålband i ISO 7 -bitkod (designad för att representera CNC-information i form av en maskinkod på samma sätt som AEG- och PC8C-koderna), det åttonde spåret användes för paritet.

Tillverkare av CNC-system använder som regel maskinkontrollmjukvaran för vilken bearbetningsprogrammet är skrivet (av operatören) som meningsfulla kontrollkommandon, använder G-kod som en grundläggande delmängd av programmeringsspråket, utökar den efter eget gottfinnande [ 2] .

G-Code är också standardspråket som används av många 3D-skrivarmodeller för att styra utskriftsprocessen. GCODE-filer kan öppnas med olika 3D-utskriftsprogram som Simplify3D, GCode Viewer och även med en textredigerare eftersom deras innehåll är ren text.

Programstruktur

Grundläggande strukturkrav

Ett program skrivet med G-kod har en stel struktur. Alla kontrollkommandon kombineras till ramar  - grupper som består av ett eller flera kommandon. Blocket avslutas med ett radmatningstecken (CR/LF) och kan valfritt ha ett explicit nummer som börjar med bokstaven N, förutom det första programblocket och kommentarer. Detta nummer är i huvudsak en blocketikett och behöver inte vara ökande i programmet eller vara på varandra följande heltal, det är viktigt att numret inte upprepas i programmet, till exempel är det tillåtet:

... N200 G0 n100x0 x5y4 ...

I de flesta moderna kodtolkare är det acceptabelt att använda gemener och stora bokstäver i programkoden, som i exemplet.

Mellanslag i ramraden ignoreras, så ramkommandona kan skrivas tillsammans.

Den första (och i vissa fall även den sista) ramen innehåller bara ett valfritt <%>-tecken. Programmet avslutas med kommandona M02 eller M30.

Programkommentarer sätts inom parentes. Kommentaren kan placeras både på en separat rad och var som helst i ramen bland kommandona. Det är inte tillåtet att markera som kommentar flera rader omgivna av ett par parenteser.

Elementära kommandon i varje ram exekveras samtidigt, så ordningen på kommandona i ramen är inte strikt specificerad, men det antas traditionellt att de förberedande kommandona specificeras först (till exempel valet av planet för cirkulär interpolation, hastigheter för rörelse längs axlarna, etc.), sedan inställningen av koordinaterna för rörelsen, sedan urvalsbearbetningslägena och tekniska kommandon.

Det maximala antalet elementära kommandon och koordinattilldelningar i en ram beror på den specifika tolken av maskinstyrningsspråket, men för de flesta populära tolkarna (kontrollställen) överstiger det inte 6.

Koordinater specificeras genom att ange axeln följt av det numeriska värdet för koordinaten. Heltals- och bråkdelen av koordinattalet separeras med en decimalkomma. Det är acceptabelt att utelämna obetydliga nollor eller lägga till dem. Dessutom är det i de allra flesta tolkar acceptabelt att inte lägga till en decimalkomma till heltal. Till exempel: Y0.5 och Y.5, Y77, Y77. och Y077.0.

Det finns så kallade modala och icke-modala kommandon. Modala kommandon ändrar någon parameter/inställning och denna inställning påverkar alla ytterligare exekverade block i programmet tills de ändras av nästa modala kommando eller avbryts. Modala kommandon inkluderar till exempel verktygshastigheter, spindelvarvtalsreglering, kylvätsketillförsel etc. Icke-modala kommandon är endast effektiva inom sitt innehållande block. Icke-modala kommandon inkluderar till exempel spindelacceleration och retardationskommandon.

Maskinens kodtolkare (kontrollställ) kommer ihåg värdet på de angivna parametrarna och inställningarna tills de ändras av nästa modala kommando eller det tidigare inmatade modala kommandot avbryts, så det är inte nödvändigt att ange i varje ram, till exempel , verktygets hastighet.

Beskrivning och anrop av subrutiner

Språket tillåter multipel exekvering av en en gång inspelad sekvens av kommandon och verktygsrörelser, anropade från olika delar av programmet, till exempel skära många hål i ett arkämne med samma komplexa kontur, placerade på olika platser i den framtida delen. I det här fallet beskriver subrutinens kropp banan för verktyget för att skära ett hål, och programmet anropar subrutinen upprepade gånger från olika ställen. I subrutinens kropp anges verktygsrörelser i relativa koordinater - koordinater som beskriver verktygsbanan vid bearbetning av ett hål, övergången till ett relativt koordinatsystem (ibland kallas ett sådant koordinatsystem <inkrementellt>) utförs av G91 kommandot i början av subrutinkroppen, och återgången till det absoluta koordinatsystemet genom G90-kommandot är i slutet av subrutinkroppen. I ett inkrementellt system tolkas kommandon för verktygsrörelse som inkrement, till exempel:

g90 x5 ( tilldelning av absolut koordinatsystem, efter exekvering av detta block blir maskinens x-koordinat 5 ) g91 x10 ( inkrementell koordinatsystemtilldelning, efter exekvering av detta block blir maskinens x-koordinat 15 ) x-15 ( efter exekvering av detta block kommer X-axelns maskinkoordinat att bli 0, eftersom det inkrementella koordinatsystemet specificerat av modalkommandot g91 fortfarande är aktivt )

Subrutinens kropp måste beskrivas före kommandot för programmets slut - M30, men det är tillåtet att lokalisera subrutinen efter kommandot M02 - programmets slut och ha ett namn som börjar med bokstaven O med siffror på subrutinnumret, till exempel O112. I slutet av subrutinens kropp placeras kommandot för att återgå till huvudprogrammet, M99.

I programmet anropas subrutinen av kommandot M98, vilket indikerar den obligatoriska parametern för subrutinnamnet P. Det är inte tillåtet att matcha namnen på subrutinerna inom samma program. Exempel på subrutinanrop O112: M98 P112 . När du anropar en subrutin är det möjligt att ange antalet subrutinanrop genom att lägga till en valfri parameter L, t.ex. anropa subrutin 112 två gånger: M98 P112 L2 , vilket till exempel kan vara användbart när du ska beskriva utförandet av den andra efterbehandlingen pass efter första grovbearbetningspasset. Om parametern L utelämnas anropas subrutinen en gång.

Styrmjukvaran för vissa maskiner eller vissa G-kodtolkare tillåter att subrutiner anropas av linjenumret (block) i programmet, för detta används M97-kommandot med P-parametern som anger radnumret (etiketten), till exempel, M97 P321 L4  - anropar subrutinen med start fyra gånger märkt N321. Den sålunda bildade subrutinen bör som vanligt avslutas med M99-instruktionen - en återgång till det anropande programmet.

Inkapsling av subrutiner är tillåtet, det vill säga en annan subrutin kan anropas från en subrutin. Det maximala antalet tillåtna kapslingsnivåer beror på implementeringen av den specifika G-kodtolkaren.

Ett exempel på ett program för att skära 2 rektangulära hål 10 × 20 mm, ökade med diametern på pinnfräsen, med koordinaterna för de nedre vänstra hörnen av hålen x=57, y=62 och x=104, y=76 i ett arkämne 5 mm tjockt med ett anrop till en subrutin som beskriver skärning av ett hål ... (Programsektion) G00 X57 Y62 (X, Y-positionering till 1:a hålet) M98 P112 (Skärning av 1:a hålet) G00 X104 Y76 (X, Y-positionering till 2:a hålet) M98 P112 (Skärning av 2:a hålet) ... M02 (programslut) ... (Subrutinkropp) O112 (Subrutinetikett nummer 112) G00 Z1 (Inmatningsverktyg 1 mm ovanför arbetsstyckets yta vid tomgång) G01 F40 Z-5.5 (Verktyget sänker sig till ett djup av -5,5 mm i arbetsstycket med en hastighet av 40 mm /min) G91 (Byt till relativt koordinatsystem, i detta system X=0, Y=0 först) G01 F20 X10 (Klipp första sidan av rektangeln med 20 mm/min) Y20 (Klipp andra sidan av rektangeln med hastighet 20 mm/min ) X-10 (Skärning av den 3:e sidan av en rektangel med en hastighet av 20 mm/min. Eftersom det inkrementella koordinatsystemet är aktiverat, anges återgången av verktyget till startpunkten före subrutinanropet som ett koordinatinkrement, här -10.) Y -20 (Skär 4:e sidan av rektangeln med 20 mm/min) G90 (Växla till absolut koordinatsystem, återställ nuvarande koordinater till det relativa systemet) G00 Z5 (Höj verktyget 5 mm över arbetsstyckets yta vid tomgång) M99 (Återgå till anropsprogrammet eller subrutinen) ... M30 (Slutet av den tolkade programkoden. Efter att ha utfört detta kommando ställs blocknummerpekaren på 1:a raden i programmet och programkörningen stoppas)

Sammanfattning kodtabell

De viktigaste (kallas förberedande i standarden) språkkommandon börjar med bokstaven G (en förkortning för ordet Allmänt ):

Förberedande (grundläggande) kommandon
Koder Beskrivning
G00-G03 Verktygspositionering
G17-G19 Byta arbetsplan (XY, ZX, YZ)
G20-G21 Inte standardiserad
G40-G44 Storlekskompensation för olika delar av verktyget (längd, diameter)
G53-G59 Byte av koordinatsystem
G80-G85 Borrning, borrning, tappningscykler
G90-G91 Växla koordinatsystem (absolut, relativ)

Tabell över grundläggande kommandon

Team Beskrivning Exempel
G00 [3] Snabb rörelse av verktyget (tomgång). Ett torrt drag interpolerar inte nödvändigtvis draget linjärt på samma sätt som ett G01- kommando . I vissa tolkar, när ett rörelsekommando utförs längs flera axlar samtidigt, bearbetas rörelsen längs axlarna med maximal hastighet, så linjär rörelse från startpunkten till slutpunkten tillhandahålls inte, så du kan inte göra delbearbetningsrörelser när detta modala kommando är aktivt. G0 X0 Y0 Z100.
G01 Linjär interpolation, modalt kommando. Verktyget (arbetskroppen) rör sig längs ett rakt linjesegment från startpunkten med koordinater tills kommandot utförs till punkten med de koordinater som anges i kommandot, rörelsehastigheten anges här eller tidigare av modalkommandot F. I detta fallet är rörelsehastigheten relaterad till rörelsehastigheterna längs axlarna som

 — koordinera inkrement mellan ramar;  - hastigheter längs axlarna.

G01X0. Y0. Z100. F200.
G02 Medurs cirkulär interpolation, modalt kommando. Verktyget rör sig längs en cirkelbåge i medurs riktning från startpunkten med koordinater tills kommandot utförs till en punkt med koordinaterna specificerade i kommandot, rörelsehastigheten anges i detta kommando av parameter F, radien för bågen specificeras av parameter R, eller genom att specificera koordinaterna för bågens centrum med parametrarna I - (centrumförskjutning längs X-axeln relativt den initiala X-koordinaten), J - (centrumförskjutning längs Y-axeln i förhållande till initial Y-axeln) koordinat), K - (centrumförskjutning längs Z-axeln i förhållande till den initiala Z-koordinaten) i förhållande till verktygets initiala koordinater. För att specificera det plan i vilket cirkulär interpolation ska utföras, måste planet för cirkulär interpolation först specificeras (i samma eller i ett annat preliminärt block) med modalkommandot G17 (XY-plan), eller G18 (XZ-plan), eller G19 (YZ-plan). Rörelsehastigheten anges av det modala F-kommandot. G02 G17 X15. Y15. R5. F200.
eller
G02 G17 X20. Y15. I-50. J-60.
G03 Cirkulär interpolation moturs. Parametrar och åtgärd är samma som G02-kommandot. G03X15. Y15. R5. F200.
G04 Programexekveringsfördröjning, hur fördröjningsvärdet ställs in beror på implementeringen av styrsystemet, P ställer vanligtvis pausen i millisekunder, X i sekunder. I vissa tolkar anger P en paus i sekunder och X-parametern används inte i detta kommando. I vissa tolkar är det också möjligt att ställa in en fördröjning med U-parametern. G04 P500 eller G04 X.5
G10 Växla det absoluta koordinatsystemet. I exemplet kommer ursprunget för koordinaterna att vara vid punkten 10, 10, 10 av de gamla koordinaterna. G10x10. Y10. Z10.
G15 Övergång till polärt (cylindriskt) koordinatsystem. I detta system anger X-parametern radien och Y-parametern anger vinkeln i grader. Om det absoluta koordinatsystemet ( G90 ) är aktiverat, kommer ursprunget för de polära koordinaterna att vara vid de aktuella koordinaterna 0; 0, om det inkrementella koordinatsystemet är aktiverat, kommer origo att vara vid den punkt som nåddes under behandlingen av den föregående ramen. G15X15. Y22.5
G16 Upphävande av det polära koordinatsystemet G16X15. Y22.5
G17 Välja ett XY-arbetsplan G17
G18 Välja ett ZX-arbetsplan G18
G19 Välja YZ arbetsplan G19
G20 Tumläge G90 G20
G21 Driftläge i metriskt system G90 G21
G22 Aktivera den inställda gränsen för rörelser (Verktyget kommer inte att överskrida sin gräns) G22 G01 X15. Y25.
G28 Återgå till referenspunkten G28 G91 Z0 Y0
G30 Z-axellyft till verktygsbytespunkt G30 G91 Z0
G40 Avbryt verktygsradiekompensering G1 G40 X0. Y0. F200.
G41 Kompensera verktygsradien till vänster om verktygsbanan G41X15. Y15. D1 F100.
G42 Kompensera verktygsradien till höger om verktygsbanan G42X15. Y15. D1 F100.
G43 Kompensera verktygslängden positivt. Används främst vid verktygsbyte. G43X15. Y15. Z100. H1 S1000 M3
G44 Kompensera verktygslängden i negativ riktning. Åtgärden liknar G43. G44X15. Y15. Z4. H1 S1000 M3
G49 Avbryt verktygslängdkompensationen G49Z100.
G50 Återställ alla skalningsfaktorer till 1,0 G50
G51 Skala tilldelning. I exemplet zoomar du ut på x-axeln 10 gånger. Efter detta modala kommando kommer alla rörelser och X-koordinater som anges i kommandona att multipliceras med en skalfaktor på 0,1 och resultatet kommer att tolkas som den nödvändiga rörelsen. Om du ställer in skalfaktorn längs någon axel (eller längs valfri axel) lika med -1, kommer den efterföljande rörelsen att speglas längs denna axel (eller axlar där skalfaktorn är -1). G51 X.1
eller G51 X-1
G53 Övergång till maskinkoordinatsystemet. G53 G0 X0. Y0. Z0.
G54-G59 Byt till operatörsdefinierat koordinatsystem G54 G0 X0. Y0. Z100.
G61-G64 Växla exakt stopp/konstant hastighet
G68 Rotera koordinaterna till önskad vinkel G68 X0 Y0 R45.
G70 Longitudinell efterbehandlingscykel G70 P10 Q15.
G71 Flerpassage längsgående grovsvarvningscykel G71 P10 Q15. D.5 U.2 W.5
G80 Avbryt cykler med borrning, borrning, gängning, etc. G80
G81 Borrcykel G81 X0 Y0. Z-10. R3. F100.
G82 Dwell cykel G82X0. Y0. Z-10. R3. P100 F100.
G83 Intermittent borrcykel (med periodiskt fullständigt tillbakadragande av borren). Parameter Z indikerar det totala borrdjupet från ytan (Z=0), R är höjden på verktygsutgången över ytan för spånborttagning och även ändläget efter att borrningen är avslutad, Q är mängden penetration av en av flera penetrationer vid borrning, F är matningshastigheten (valfritt, i avsaknad av denna parameter bestäms hastigheten av den tidigare inställda hastigheten i G1-kommandot. G83 Z-20 R1 Q2 f20
G84 Träningscykel G95 G84 M29 X0. Y0. Z-10. R3 F1.411
G90 Inställning av de absoluta koordinaterna för banans referenspunkter G90 G1X0.5. Y0,5. F10.
G91 Inställning av koordinater inkrementellt i förhållande till koordinaterna för den senast inmatade referenspunkten, verktygsrörelsen i detta koordinatsystem anges som inkrement G91 G1X4. Y5. F100.
G94 F (matning) - i mm/min-format G94 G80 Z100. F75.
G95 F (matning) - i mm/varv-format G95 G84 X0. Y0. Z-10. R3 F1.411
G99 Efter varje cykel, dra dig inte tillbaka till <passeringspunkt> G99 G91 X10. K4.

Teknikkodtabell

Språkets tekniska kommandon börjar med bokstaven M (en förkortning för ordet Diverse  - ytterligare). Inkluderar åtgärder som:

Hjälpkommandon (teknologiska).
Koden Beskrivning Exempel
M00 Avbryt driften av maskinen tills <start>-knappen på kontrollpanelen trycks in, det så kallade <ovillkorliga tekniska stopp> G0 X0 Y0 Z100 M0
M01 Pausa maskinen tills <start>-knappen trycks in om stoppbekräftelseläget är aktiverat. Om detta läge är inaktiverat ignoreras kommandot. Används för initial verifiering (felsökning) av koden. G0 X0 Y0 Z100 M1
M02 Slut på programmet, utan återställning av modala funktioner. Ramnummerpekaren ändras inte. M02
M03 Starta spindelrotationen medurs M3 S2000
M04 Starta spindelrotationen moturs M4 S2000
M05 Stoppa spindelrotationen M5
M06 Byt verktyg T15 M6
M07 Aktivera ytterligare kylning M3 S2000 M7
M08 Slå på huvudkylningen. Ibland är det inte tillåtet att använda mer än en M-kod på en rad (som i exemplet), M13 och M14 används för detta M3 S2000 M8
M09 Stäng av kylningen G0 X0 Y0 Z100 M5 M9
M13 Slå på kylningen och rotera spindeln medurs samtidigt S2000 M13
M14 Slå på kylningen och rotera spindeln moturs samtidigt S2000 M14
M17 Återgå från subrutin eller makro (samma som M99) M17
M48 Tillåt överstyrande matningshastighet
M49 Inaktivera Feedrate Override
M25 Manuellt verktygsbyte M25
M97 Lanseringen av en subrutin som finns i samma program (där P är blocknumret, i exemplet kommer övergången att göras till linjen med etiketten N25), implementeras inte i alla tolkar , förmodligen bara på HAAS-maskiner M97 P25
M98 Starta en subrutin som är skild från huvudprogrammet (där P är subrutinens nummer, i exemplet kommer övergången att göras till program O1015) M98 P1015
M99 Slut på subrutinen och hoppa till det anropande programmet M99
M30 Slut på programmet, med återställning av modala funktioner och ändring av blocknummerpekaren till början av programmet. M30

Kommandoalternativ

Kommandoparametrar ställs in med latinska bokstäver

Koden Beskrivning Exempel
X Flytta verktyget till en specificerad punkt med en specificerad X-axelkoordinat vid arbete i ett absolut koordinatsystem (se G90) eller specificering av förskjutningar i förhållande till en punkt som nåddes i föregående block vid arbete i ett inkrementellt koordinatsystem (se G91) G0 X100 Y0 Z0
Y Liknar X på Y-axeln G0 X0 Y100 Z0
Z Liknar X på Z-axeln G0 X0 Y0 Z100
P När det används i ett subrutinanropskommando (M98) - specificerar numret på den anropade subrutinen med namnet efter bokstaven O, till exempel, kommer P301 att anropa subrutinen med etiketten O301. När det används i ett fördröjningskommando (G04), specificerar uppehållstiden i millisekunder. G04 P500;

M98 R301

O Subrutinetikett med angivet nummer O301
F Verktygets linjära hastighet.

För fräsmaskiner är detta tum per minut (IPM) eller millimeter per minut (mm/min),

För svarvar är detta tum per varv (IPR) eller millimeter per varv (mm/varv). Valet av måttenheter, tum eller millimeter, görs med kommandona G20 och G21.

G1 G91 X10 F100
S Spindelhastighet i varv per minut. S3000 M3
T Ange verktygsnumret i ett verktygsbyteskommando. Indikeras vanligtvis före M6-kommandot. T1 M6
R Verktygets indragningsavstånd i repetitiva bearbetningscykler såsom intermittent djuphålsborrning (G81-G89) eller bågredie i cirkulära verktygsrörelseinterpolationer (G02, G03). G81 Z-20 R2 eller

G2 G91 X12,5 R12,5

D Vald verktygsradiekompensationsparameter G1 G41 D1 X10. F150.
L Antalet subrutinanrop, antalet makroanrop eller antalet cykler i upprepade X_Y_R_-operationer är parametrarna som skickas till makrot M98 L82 P10 eller G65 L82 P10 X_Y_R_
jag Anger förskjutningen längs X-axeln för bågens centrumkoordinat vid cirkulär interpolering av verktygsrörelsen (se G02, G03). Bågens centrumkoordinater längs axlarna anges som en förskjutning i förhållande till startpunkten (nådd i föregående bildruta). Interpolationsplanet (planet som är parallellt med det givna koordinatplanet indikeras av kommandona G17, G18, G19. G03 X10 Y10 I10 J0 F10
J Liknar I-parametern för Y-axeln. G03 X10 Y10 I0 J10 F10
K Liknar I-parametern för Z-axeln. G03 X10 Y10 I0 K0 F10

Exempel

Ett exempel på gravering av bokstaven W till ett djup av 2 mm, inskrivet i en rektangel 40 × 30 mm, (se figur) på en konventionell vertikal CNC-fräsmaskin i ett plåtämne. Pinnfräsdiameter 2 mm [4] :

% (programstartetikett, valfritt) (Z-axeln är inställd så att vid Z=0 berör verktyget ytan på arbetsstycket) O200 (programetikett, tillval) G21 G40 G49 G53 G80 G90 G17 (Säkerhetssträng.) (Maskinens eller tolkens tillstånd bestäms av historiken, eller inställt på något initialt tillstånd vid start, och dessa inställningar kan orsaka oönskade och oväntade åtgärder, så det är nödvändigt att återställa maskinen med hjälp av "säkerhetssträngen". ) (G21 - val av det metriska systemet med enheter - millimeter,) (G40 - Avbryter automatisk verktygsradiekompensation.) (G49 - Avbryter automatisk verktygslängdkompensation.) (G53 - avbryter ytterligare koordinatsystem som kan ha angetts tidigare, skiftat i förhållande till det ursprungliga och överför maskinen till huvudkoordinatsystemet.) (G80 - Avbryter alla konserverade cykler som borrcykler och deras parametrar.) (G90 - översätts till ett absolut koordinatsystem.) (G17 - XY cirkulärt interpolationsplan är valt.) G0 F300 (Ställ in verktygets tomgångsvarvtal i mm/min) M3 S500 (Aktivera spindelrotation medurs och ställ in spindelhastigheten till 500 rpm) G4 P2000 (Fördröjning 2 sekunder för att snurra upp spindeln) X0 Y30 Z5 (Verktyg för att peka med koordinater X= 0 Y=30 Z=5 vid tomgång) G1 Z-2 F40 (sänkning i arbetsstycket till ett djup av 2 mm med en hastighet av 40 mm/min) G1 F20 X10 Y0 (fräsning av den första delen av bokstaven W vid en hastighet 20 mm/min) X20 Y30 (fräsning av den andra sektionen av W med 20 mm/min) X30 Y0 (fräsning av den 3:e sektionen av W med 20 mm/min) X40 Y30 (fräsning av den 4:e sektionen av W med hastighet 20 mm/min) G0 Z5 (drag tillbaka verktyg 5 mm över arbetsstyckets yta med en hastighet av 300 mm/min) M5 (avstängning av spindelrotation) M30 (programslut och tolkad kod slut)

Se även

Anteckningar

  1. GOST 20999-83. Numeriska styranordningar för metallbearbetningsutrustning. Kodningsinformation för styrprogram . Hämtad 21 augusti 2021. Arkiverad från originalet 21 augusti 2021.
  2. CNC G-koder Definitioner Exempel Program Programmering Inlärningsträning (länk ej tillgänglig) . Hämtad 9 februari 2008. Arkiverad från originalet 12 oktober 2007. 
  3. Många kodtolkare tillåter att den inledande nollan utelämnas i G00-G09-kommandon, t ex G1 istället för G01
  4. Subrutin G-Code (inte tillgänglig länk) . Tillträdesdatum: 2 januari 2016. Arkiverad från originalet 17 januari 2016. 

Länkar