G-kood

**G-kood** on programmeerimiskeel, mis on automatiseeritud tööpingile käskude edastamise keel. G-koodis on defineeritud lõikeriista trajektoor, selle liikumise kiirus jpm. G-koodi kasutatakse erinevate tööpinkide tööle seadistamiseks, näiteks treipingi, freespingi, 3D-printeri, mõõteriistade jpm seadistamiseks.

## Rakendused
Esimest korda rakendati arvprogrammjuhtimist 1950. aastate lõpus. Hiljem on seda oluliselt täiustatud. Esimene standard USA-s kinnitati 1960. aastatel. Lõplik versioon standardist RS-274-D kinnitati 1980. aastal. Teistes riikides kasutatakse teistsuguseid standardeid, näiteks ISO 6983 on sagedasti kasutatav standard, aga mitmed Euroopa riigid kasutavad teisi standardeid. Näiteks Saksamaal kasutatakse DIN 66025 standardit.

Erinevad tööpinkide tootjad on loonud G-koodist variatsioone ja täiendanud seda iseseisvalt. Tööpinkide operaatorid peavad olema teadlikud eri tootjate tööpinkide eripäradest.

1970.–1990. aastatel proovisid mitmed arvprogrammjuhitavate tööpinkide tootjad lahendada ühilduvusprobleeme, luues standardeid Fanuci tööpinkide kontrolleritele. Euroopas domineeris arvprogrammjuhitavate tööpinkide turul Siemens. Alates 2010. aastast pole ühilduvuse probleemid enam aktuaalsed, seda seetõttu, et enamik raalprojekteerimise programme konverteerivad mudeli vajadusel G-koodiks, mis on tööpingile loetav.

Mõned arvprogrammjuhitavad tööpingid kasutavad „kõnekeelset“ programmeerimist, mis peidab G-koodi kasutaja eest või ei kasuta seda üldse. Mõned populaarsed näited: Okuma Advanced One Touch (AOT), Southwestern Industriesi ProtoTRAK, Mazaki Mazatrol, Hurco Ultimax ja Winmax, Haasi Intuitive Programming System (IPS), ja Mori Seiki CAPS kõnekeelne programm.

## Spetsiifilised koodid
G-koodid, mida kutsutakse ka ettevalmistavateks koodideks, on CNC programmis kõik sõnad, mis algavad tähega G. Lihtsustatult on see kood, mis ütleb masinale, mis tüüpi operatsiooni sooritada, näiteks:

* kiire liikumine (lõike operatsioonide vahel lõikeriista transportimine võimalikult kiiresti);
* kontrollitud sirgjooneline või kaarjas ettenihe;
* kontrollitud liikumiste seeria, mille tulemuseks võib olla ava puurimine, toorikule kindla dimensiooni andmine või tooriku serva töötlemine;
* lõiketera parameetrite defineerimine, näiteks nihe;
* koordinaatsüsteemi vahetamine.

Lisaks eelpool mainitule on veel mitmeid koode.

On etteheidetud, et termin G-kood on ebatäpne, sest täht „G“ on üks vähestest koodis kasutatavatest sümbolitest. G-koodis on kasutusel kõik inglise keelse tähestiku sümbolid. Täht „G“ viitab ainult vähestele koodidele, mida kasutatakse arvprogrammjuhtimises, näiteks G00, G01, G28.

### Tähtadressaat
Mõningaid tähtadressaate kasutatakse ainult freesimisel ja osa ainult treimisel, kuid enamikku kasutatakse mõlemat liiki tööpinkidel. Paksus kirjas välja toodud tähtadressaadid on arvprogrammjuhtimise koodis enim kasutatavad adressaadid.

### Nimekiri levinumatest treimise ja freesimise G-koodi käskudest Fanuci ja teistel sarnase disainiga kontrolleritel
**Märkus**: **Modaalsed** käsud jäävad aktiivseks kuni asendamiseni või tühistamiseni. **Mittemodaalsed** käsud täidetakse vaid korra käsu edastamisel.

### Nimekiri treimise ja freesimise M-koodi käskudest

## Programmeerimiskeskkonnad

G-koodi programmeerimiskeskkonnad on arenenud koos tavaliste programmeerimiskeskkonnadadega. Alates koodi kirjutamisest paberile või nende sisselöömine perfolintidesse, tänapäeval genereeritakse G-kood CADi ja CAMi abil erinevates K-koodi redaktorites. G-koodi redaktorid, mis sarnanevad XML-redaktoritega, kasutavad värve, taandeid ja teisi vahendeid, et abistada kasutajaid mida tavaliste tekstiredaktoritega teha ei saa. G-koodi redaktorid on analoogsed integreeritud arenduskeskkondadele, mida kasutatakse tavalises programmeerimises.

G-koodi programmeerimisel on toimunud kaks suurt muudatust:

* Käsitsi programmeerimise (ehk kood kirjutati inimese poolt kas paberile või hiljem ka arvutisse) asendamine CAM tarkvara süsteemidega, mis genereerib G-koodi automaatselt vastavalt genereeritud tööriistarajale, mida mööda toimub lõikus.

* Algselt kirjutati programmi sisse kuidas peaks töötlemine toimuma, kuid see vahetati välja süüsteemiga, mis muudab koodi vastavalt parameetritele. Ehk selle asemel, et kirjutada väärtused koodi sisse, valitakse väärtused vastavalt parameetritele ja soovitud tulemusele.

Parameetriline CNC programm kasutab kasutajatele arusaadavaid muutuja nimesi, operaatoreid, tsükli struktuure, samamoodi nagu tava programmeerimiskeeled selleks, et koguda informatsiooni. Vanemad käsitsi kirjutatud koodid suutsid kirjeldada kindlaid juhtumeid arvuliselt, kuid tänapäeva kood suudab kirjeldada olukordi, mis kehtivad paljudel juhtudel.

Pikka aega on üritatud masinate ja tööriistade sisse ehitada võimekust teha asju, milleks varem on vaja läinud kontrollerit. Varem on seda üritatud teha läbi DAC-1 ja APT, mis on CAM-i ja CAD-i eelkäijad. Kuid need osutusid väga kalliks, tänu sellele said neid endale lubada vaid suured firmad, ja väiksemad firmad pidid ilma nende abita hakkama saama. Nad pidid kasutama lihtsamid süüsteeme, mis suutsid punktist punkti liikuda või kirjutama koodi käsitsi, nii kirjutati pikalt koodi kuni tulid CAD/CAM süsteemid. Tänu sellele on ka arenenud freesimis- ja treimismasinad. Näiteks on kasutusele võetud rohkemate telgedega masinad ja masinad mis suudavad teha freesi ja treipingi tööd. CAD/CAM süsteemid tõid endaga kaasa käsitsi koodi kirjutamise väljasuremise, kuna koodid on muutunud keerulisemaks ja pikkemaks. Hoolimata sellest on vajalik arusaam, kuidas erinevad pingid töötavad, et nende tööd optimeerida, ja väga spetsiifiliste lõigete tekemiseks on vaja, et spetsialist teeks vajalike muudatusi. Arvutite poolt genereeritud K-koodidel on ka puudusi, näiteks genereeritud koodid on pikemad ja seega on ka failid suuremad, vanematel pinkidel võib tekkida probleeme, kuna nende mälumaht pole piisav, lisaks võib genereeritud koodiga detaili töötlemine võtta kauem aega, kui tegemist on suurema koogusega detailidega võib vaja mina, et kogenud operaator optimeeriks koodi, et detailid kiiremini valmis saaks.

## Viited