G-koodisyntaksia noudattava CNC-ohjelma koostuu matalan tason toiminnoista joita kutsutaan lauseiksi (block). Lauseet puolestaan rakentuvat sanoista (code). Sanat ovat joko "valmistelevia" G-koodeja tai "sekalaisia" M-koodeja.
G-koodisyntaksi on lähes rakenteeton sillä mitään ohjelmakontrollin ohjausrakenteita kieleen ei kuulu. Aliohjelmakutsu käyttäen M-koodisanoja on olemassa mutta ei juuri muuta.
G-koodi on tulkattua koodia siinä mielessä, että kooditulkki jäsentää aina yhden kokonaisen lauseen kerrallaan ja optimoi sisällön suorituksen ennen sen käynnistämistä. Lotan Fanuc-ohjain toimii siten, että lauseessa mahdollisesti olevista ristiriitaisista käskysanoista viimeksi kirjoitettu jää voimaan ja toteutetaan.
On erityisesti syytä tiedostaa, lähes kaikki G-koodisanat ovat modaalisia eli ne jäävät voimaan kunnes samaan modaaliryhmään kuuluva toinen koodi astuu niiden tilalle. Samoin lauseesta puuttuva argumentti saa sen arvon joka sillä on viimeksi ollut jossain aikaisemmassa lauseessa. Näin ollen muuttumatonta argumenttia ei tarvitse toistaa lause lauseelta.
|
A CNC program that follows G-code syntax consists of low-level functions called blocks. Sentences, in turn, are built from words (code). The words are either "preparatory" G-codes or "Miscellaneous" M-codes.
The G-code syntax is almost unstructured because no program control controls are included in the language. A subroutine call using M codewords exists but little else.
G-code is interpreted code in the sense that the code interpreter always parses one whole sentence at a time and optimizes the execution of the content before it is launched. Lota's Fanuc controller works in such a way that the last of the conflicting command words in a sentence remains valid and executed.
In particular, it should be noted that almost all G codewords are "modal", meaning that they remain in effect until another code belonging to the same modal group replaces them. Similarly, an argument that is missing from a sentence gets the value it last had in an earlier sentence. Therefore, the unchanged argument does not need to be repeated sentence by sentence.
|
Esimerkki yksinkertaisesta NC-lauseesta:
N001 G01 X500.000 Y60.000 Z0.000 M03
Rivinumero 001; koordinoitu liike työstönopeudella koordinaatteihin XYZ samalla käynnistäen kara pyörimään myötäpäivään
Esimerkki modaalisesta NC-lauseesta:
G01 X500. Y60. Z0. M03
X510.
X520.
Koordinoitu liike työstönopeudella koordinaatteihin 500/60/0, sen jälkeen 510/60/0 ja 520/60/0 koska G01 on modaalinen.
|
Example of a simple NC block:
N001 G01 X500.000 Y60.000 Z0.000 M03
Line number 001; coordinated movement at machining speed to XYZ coordinates while starting the spindle to rotate clockwise
Example of a modal NC block:
G01 X500. Y60. Z0. M03
X510.
X520.
Coordinated movement at machining speed to coordinates 500/60/0, then 510/60/0 and 520/60/0 because G01 is modal.
|
Lotan tunnistamat G-koodisanat
Useimmat G-koodilauseet muodostuvat valmistelevasta G-koodista, sekä siihen liittyvistä yhdestä tai useammasta argumentista. Lauseissa käytetään myös "sekalaisia" M-koodisanoja ohjaamaan koneen toimintoja päälle ja pois.
Koska useimmat G-koodisanat ovat modaalisia, usein riittää pelkkä argumenttien mainitseminen läskylauseessa, jolloin voimassa oleva modaalinen käsky toistetaan kyseisillä argumenteilla. Tästä edellä yksinkertainen esimerkki.
G-koodisanojen argumentit
Argumentti |
Ohjaa koodeja |
Toiminto
|
P_ |
--- |
Lyhennetty asemakoordinaatin esitystapa. Sama kuin X_ Y_ Z_ missä _ tarkoittaa koordinaatin numeroarvoa. Myös vaihtoehtoiset koordinaatit kuten IJK, UVW jne.
|
X, Y, Z |
Modaali 01 koodit |
Paikkakoordinaatit liikettä varten
|
A, B, C |
Modaali 01 koodit |
Kulmakoordinaatit X, Y, Z-akselien ympäri tapahtuvaa kiertoa varten (4. akseli)
|
I, J, K |
G02, G03 |
Suhteelliset paikkakoordinaatit ympyränkaaren keskipisteen sijoitamiseksi
|
U, V, W |
Modaali 01 koodit |
X, Y, Z-akselien suuntaiset suhteelliset paikkakoordinaatit liikettä varten
|
S |
M03, M04 |
Karan kierosluvun ohjearvo
|
F |
Modaali 01 koodit |
Syöttöliikkeen nopeus mm/min
|
H |
Modaali 01 koodit |
Työkalun pituus- ja sädekompensointi
|
T |
--- |
Työkalun valinta
|
R |
modaali 09 koodit
G02, G03
|
Liikkeen paluutaso katkoporauksessa ja vastaavissa
Säteen määrittely ympyräinterpolaatiossa
|
Q |
Modaali 09 koodit |
Porauksen askelsyvyys katkoporauksessa tms
|
P |
G04 |
Taukoaika ms
|
N |
--- |
Lauseen rivinumero (ei pakollinen)
|
|
G-code words recognized by Lota
Most G-code statements consist of a preparatory G-code, and one or more arguments associated with it. The sentences also use "Miscellaneous" M-code words to control the machine functions on and off.
Since most G codewords are modal, it is often sufficient to simply mention the arguments in the statement statement, in which case the valid modal statement is repeated with those arguments. A simple example of this above.
G codeword arguments
Argument |
Control codes |
Function
|
P_ |
--- |
Abbreviated position coordinate format. Same as X_ Y_ Z_ where _ is the numeric value of the coordinate. Also alternative coordinates such as IJK, UVW, etc.
|
X, Y, Z |
Modal 01 codes Position coordinates for motion
|
A, B, C |
Modal 01 codes Angular coordinates for rotation about the X, Y, Z axes (4th axis)
|
I, J, K |
G02, G03 |
Relative position coordinates to position the center of the arc
|
U, V, W |
Modal 01 codes Relative position coordinates along the X, Y, Z axes for motion
|
S |
M03, M04 |
Spindle speed setpoint
|
F |
Modal 01 codes Feed speed mm / min
|
H |
Modal 01 codes Tool length and radius compensation
|
T |
--- |
Tool selection
|
R |
modal 09 codes
G02, G03
|
The return level of the movement in break drilling and the like
Radius definition in circular interpolation
|
Q |
Modal 09 codes Drilling step depth in break drilling, etc.
|
P |
G04 |
Pause time ms
|
N |
--- |
Sentence line number (optional)
|
Varsinaiset G-koodisanat
G-koodi |
Modaaliryhmä |
Toiminto
|
G00 |
01 |
Pikaliike annettuihin koordinaatteihin
|
G01 |
01 |
Koordinoitu liike työstönopeudella annettuihin koordinaatteihin
|
G02 |
01 |
Ympyräinterpolaatio myötäpäivään
|
G03 |
01 |
Ympyräinterpolaatio vastapäivään
|
G04 |
00 |
Tauko
|
G05 |
00 |
Suurnopeussyklillä koneistus
|
G09 |
00 |
Täsmällinen paikoitus
|
G15 |
17 |
Polaarikoordinaattimoodin peruutus
|
G16 |
17 |
Polaarikoordinaatimoodin asetus
|
G17 |
02 |
XY-tason asetus ympyräinterpolaatioon
|
G18 |
02 |
ZX-tason asetus ympyräinterpolaatioon
|
G19 |
02 |
YZ-tason asetus ympyräinterpolaatioon
|
G20 |
06 |
Mittayksiköt tuumina
|
G21 |
06 |
Mittayksiköt milleinä
|
G22 |
00 |
Esimerkki
|
G23 |
00 |
Esimerkki
|
G27 |
00 |
Kotiasemaan ajon tarkistus
|
G28 |
00 |
Ajo kotiasemaan
|
G29 |
00 |
Paluu kotiasemasta
|
G30 |
00 |
Paluu 2. kotiasemaan
|
G31 |
00 |
Toiminnon ohitus
|
G33 |
01 |
Kierteitys
|
G39 |
00 |
Nurkan kierto ympyräinterpolaation avulla
|
G40 |
07 |
Työkalun säteen kompensoinnin peruutus
|
G41 |
07 |
Työkalun säteen kompensointi vasemmalle
|
G42 |
07 |
Työkalun säteen kompensointi oikealle
|
G43 |
08 |
Työkalun pituuskompensointi summaten (+ suuntaan)
|
G44 |
08 |
Työkalun pituuskompensointi vähentäen (- suuntaan)
|
G45 |
00 |
Työkaluoffsetin kasvatus
|
G46 |
00 |
Työkaluoffsetin vähennys
|
G47 |
00 |
Työkaluoffsetin 2x kasvatus
|
G48 |
00 |
Työkaluoffsetin 2x vähennys
|
G49 |
08 |
Työkalun pituuskompensoinnin peruutus
|
G50 |
11 |
Skaalauksen peruutus
|
G51 |
11 |
Skaalauksen asetus
|
G52 |
00 |
Työkoordinaatiston siirto
|
G53 |
00 |
Liikkeen referointi konekoordinaatteihin
|
G54 |
14 |
Työkoordinaatiston 1 valinta
|
G55 |
14 |
Työkoordinaatiston 2 valinta
|
G56 |
14 |
Työkoordinaatiston 3 valinta
|
G57 |
14 |
Työkoordinaatiston 4 valinta
|
G58 |
14 |
Työkoordinaatiston 5 valinta
|
G59 |
14 |
Työkoordinaatiston 6 valinta
|
G60 |
00 |
Yksisuuntainen paikoitus
|
G61 |
15 |
Tarkka pysäytystila
|
G62 |
15 |
Automaattinen nurkan ohitustila
|
G63 |
15 |
Kierteitystila
|
G64 |
15 |
Leikkuutyöstötila
|
G65 |
12 |
Makrokäsky, makrokutsu
|
G66 |
12 |
Kustom-makron modaalinen kutsu
|
G67 |
12 |
Kustom-makron modalisen kutsun peruutus
|
G68 |
16 |
Koordinaatiston kierto
|
G69 |
16 |
Koordinaatiston kieron peruutus
|
G73 |
09 |
Katkoporaus-työkierto 1
|
G74 |
09 |
Vastakierteitys-työkierto
|
G76 |
09 |
Tarkkuusavarrus
|
G80 |
09 |
Työkierron peruutus
|
G81 |
09 |
Pisteporaus-työkierto
|
G82 |
09 |
Vastaporaus-työkierto
|
G83 |
09 |
Katkoporaus-työkierto 2
|
G84 |
09 |
Kierteitys-työkierto
|
G85 |
09 |
Avarrustyökierto
|
G86 |
09 |
Avarrustyökierto
|
G87 |
09 |
Vasta-avarrustyökierto
|
G88 |
09 |
Avarrustyökierto
|
G89 |
09 |
Avarrustyökierto
|
G90 |
03 |
Absoluuttikoordinaattien valinta
|
G91]] |
03 |
Suhteellisten koordinaattien valinta
|
G92 |
00 |
Absoluuttikoordinaatiston origon asetus
|
G94 |
05 |
Syöttö yks/minuutti
|
G95 |
05 |
Syöttö yks/karan kierros
|
G96 |
13 |
Vakio-pintanopeussäätö päälle
|
G97 |
13 |
Vakio-pintanopeussäätö pois päältä
|
G98 |
10 |
Työkierrossa välipaluu alkupisteen tasalle
|
G99 |
10 |
Työkierrossa välipaluu R-koordinaatin tasalle
|
Lotan tunnistamat M-koodisanat
M-koodi |
Toiminto
|
M00 |
Pakollinen tauko. Ohjelma pysähtyy tähän kunnes käyttäjä painaa [CYCLE START] jolloin ohjelma jatkaa
|
M01 |
Ehdollinen tauko. Sama kuin edellä, mutta vain mikäli paneelin [OPT STOP] on painettuna aktiiviseksi
|
M02 |
Ohjelman lopetus. Suoritus päättyy ja ohjelma kuitataan ajetuksi.
|
M03 |
Kara liikkeelle myötäpäivään. Kara lähtee pyörimään nopeudella joka on aiemmin asetettu argumentilla S
|
M04 |
Kara liikkeelle vastapäivään.
|
M05 |
Kara seis.
|
M06 |
Työkalun vaihto - suorituskäsky. Edeltävä valinta käyttäen käskysanaa T toteutetaan tällä toiminnolla.
|
M08 |
Leikkuuneste päälle. Edellytää, että paneelissa on valittu (COOLANT) [CLNT AUTO] aktiiviseksi
|
M09 |
Leikkuuneste pois
|
M19 |
Karan orientointi. Kiertää karan asentoon jossa työkalun vaihto tapahtuu. Samaa asentoa käytetään mm. vasta-avarruksessa jne
|
M29 |
Jäykkä kierteitystila päälle
|
M30 |
Ohjelman lopetus ja paluu alkuun
|
M40 |
4. akselin lukitus
|
M41 |
4. akselin vapautus
|
M94 |
Akselin peilauksen peruutus
|
M95 |
X-akselin peilaus
|
M96 |
Y-akselin peilaus
|
M98 |
Aliohjelman kutsu
|
M99 |
Aliohjelmasta paluu
|
|