CNC-työstökoneiden ohjelmoitavat toiminnot on jaettu kahteen luokkaan:
Yhtä luokkaa käytetään ohjaamaan työkalun rataa, eli kunkin syöttöakselin liikettä, kuten lineaari-/ympyräinterpolointi, syöttöohjaus, koordinaattijärjestelmän origon siirtymä ja muunnos, mittayksikön asetus, työkalun siirtymä ja korjaus jne. Tätä funktioluokkaa kutsutaan valmistelufunktioiksi, jotka koostuvat G-kirjaimesta ja kahdesta numerosta, jotka tunnetaan myös nimellä G--koodit.
Toista toimintoluokkaa kutsutaan aputoiminnoiksi, joita käytetään täydentämään ohjelman suorittamisen ohjausta, karan ohjausta, työkalun ohjausta, apulaitteiden ohjausta jne. Näistä aputoiminnoista Tx x:ää käytetään työkalun valintaan ja Sx xxx:ää karan kierrosluvun ohjaamiseen. Muut toiminnot toteutetaan M--koodeilla, jotka koostuvat M-kirjaimesta ja kahdesta numerosta.
1. Yleisesti käytetyt G-koodifunktiot
G00-paikannus (nopea liike)
G01 Lineaarinen interpolointi (syöttönopeus)
G02 Myötäpäivään ympyräinterpolointi
G03 Vastapäivään ympyräinterpolointi
G04 Tauko, tarkka pysäytys
G09 Tarkka pysäytys
G17 Valitse X/Y-taso
G18 Valitse Z/X-taso
G19 Valitse Y/Z-taso
G27 Return and Check Reference Point
G28 Paluu referenssipisteeseen
G29 Paluu referenssipisteestä
G30 Paluu toiseen vertailupisteeseen
G40 Peruuta työkalun sädekorjaus
G41 Vasemman työkalun sädekorjaus
G42 Oikean työkalun sädekorjaus
G43 työkalun pituuskompensointi +
G44-työkalun pituuskompensaatio -
G49 Peruuta työkalun pituuskompensaatio
G52 Aseta paikallinen koordinaattijärjestelmä
G53 Valitse koneen koordinaattijärjestelmä
G54 Valitse työkappaleen koordinaattijärjestelmä 1
G55 Valitse työkappaleen koordinaattijärjestelmä 2
G56 Valitse työkappaleen koordinaattijärjestelmä 3
G57 Valitse työkappaleen koordinaattijärjestelmä 4
G58 Valitse työkappaleen koordinaattijärjestelmä 5
G59 Valitse työkappaleen koordinaattijärjestelmä 6
G60 yksisuuntainen-paikannus
G61 Tarkka pysäytystila
G64 Leikkaustila
G65 Makroohjelman kutsu
G66 Modaalinen makroohjelman kutsu
G67 Peruuta modaalinen makroohjelmakutsu
G73 Syvän reiän porauksen kiinteä työkierto
G74 Käänteinen kierrekierre
G76 Hienoporaus kiinteä työkierto
G80 Peruuta kiinteä työkierto
G81 Kiinteä poraus
G82 Kiinteä poraus
G83 syvän reiän porauksen kiinteä työkierto
G84 Kierteitysjakso
G85 Kiinteä poraus
G86 Tylsä kiinteä sykli
G87 Käänteinen poraus kiinteä työkierto
G88 poraus kiinteä työkierto
G89 poraus kiinteä työkierto
G90 absoluuttisen arvon komentotila
G91 Inkrementaalisen arvon komentotila
G92 Työkappaleen nollapisteen asetus
G98 Kiinteä työkierto Paluu alkupisteeseen
G99 Kiinteä työkierto Paluu R-pisteeseen
2. Yleisesti käytetyt M-koodifunktiot
M00 Ohjelman tauko
M01 Ehdollinen ohjelma Pysäytys
M02 Ohjelman loppu
M03 Karan kierto eteenpäin
M04 Karan käänteinen kierto
M05 Karan pysäytin
M06 Tool Exchange
M08 Jäähdytys päällä
M09 Jäähdytys pois
M18 Karan suuntauksen peruutus
M19 Karan suunta
M29 jäykkä kierteitys
M30 Ohjelma päättyy ja palaa ohjelman otsikkoon
M98-alirutiinin kutsu
M99-alirutiinin lopetus palautus/toista suoritus
3. Yhteinen aritmetiikka
Lisäys: #i=#j + #k
Vähennys: #i=#j - #k
Kertominen: #i=#j * #k
Jako: #i=#j / #k
Sini: #i=SIN[#j]
Arkiini: #i=ASIN[#j]
Kosini: #i=COS[#j]
Käänteinen kosini: #i=ACOS[#j]
Tangentti: #i=TAN[#j]
Arktangentti: #i=ATAN[#j]
Neliöjuuri: #i=SQRT[#j]
Absoluuttinen arvo: #i=ABS[#j]
Pyöristys: #i=ROUND[#j]
Kokonaisluvun pyöristys: #i=KORJAA[#j]
Kokonaisluvun pyöristys alaspäin: #i=FUP[#j]
Luonnollinen logaritmi: #i=LN[#j]
Eksponentiaalinen funktio: #i=EXP[#j]
TAI: #i=#j TAI #k
XOR: #i=#j X TAI #k
JA: #i=# JA #k
Muunna BCD:stä BIN:ksi: #i=BIN[#j]
Muunna BIN:stä BCD:ksi: #i=BCD[#j]
4. Loogiset operaattorit
EQ: Yhtä
NE: Ei yhtä suuri kuin
GT: Suurempi kuin
GE: Suurempi tai yhtä suuri kuin
LT: Vähemmän kuin
LE: Pienempi tai yhtä suuri kuin
5. Ohjelman siirto ja silmukat
Ehdoton siirto: GOTO
Ehdollinen siirto: JOS [ehdollinen lauseke]
JOS [ehdollinen lauseke] GOTO n, jos ehto täyttyy, siirry ohjelman segmenttiin n
JOS [ehdollinen lauseke] NIIN, esim.: JOS [#I=#J] NIIN #K=0
6. Silmukkalausekkeet
WHILE [ehdollinen lauseke] Dom (m=1,2,,3)
…
Jos ehto täyttyy, suorita ohjelma Domista ENDm:iin (kunnes ehto ei enää täyty); muussa tapauksessa suorita ohjelma sen jälkeen





