People know Grbl, LinuxCNC, Math, Vectric CNC and much more. A lot of G code is shared/known/standarized between this software, but at some point, a software implements a new functionality that is very specific and needs to create new G code or some manufacturers add or modify some G code for their CNC machines. This is good and bad, new features they are always good, but if there are no standards behind it, everything tends to be messy and lose compatibility.
Ultimate CNC then focuses on reading the G-code and handling it. If Ultimate CNC reads a G-code that it does not recognize, it just sends it to your connected device. To be compatible, if Ultimate CNC add support for new G-codes, them will be converted
to another G-codes just using the most basic motion modes, it's: G00, G01, G02...
Remember, that the G-code language is not standardized, that is, each CNC software can use a specific G-code and even, some manufacturers add or modify some G codes for their CNC machines. If you want to use your own firmware based on Grbl, be careful, if you load a G-code program that use some 3rd party G-code, Ultimate CNC shows you a pop-up alarm when running and vice versa, you will have the same problem.
Grbl follows the LinuxCNC standard, but Grbl runs on a small microcontroller and cannot implement all G-codes. Ultimate CNC from the beginning decided never to modify firmwares to add new G-code, because it was meant to be generic with existing devices. Also, in the case of Grbl, it has implemented some fantastic firmware for CNC machines and it works surprisingly well. So we decided to create an end-user software to expand the functionalities by converting new G-codes to G-codes using most basic modes of movement.
If you're using other devices, that implement complex G-code, this way work too, because the "new" G-code is converted to the most basic motion modes.
|G0||Coordinated Motion at Rapid Rate|
|G1||Coordinated Motion at Feed Rate|
|G2 G3||Coordinated Helical Motion at Feed Rate|
|G17 - G19.1||Plane Select|
|G20||Units of Measure: Inches|
|G21||Units of Measure: Millimeters|
|G28 - G28.1||Go to Predefined Position|
|G30 - G30.1||Go to Predefined Position|
|G38.2 - G38.5||Probing|
|G43||Use Tool Length Offset from Tool Table|
|G43.1||Dynamic Tool Length Offset|
|G49||Cancel Tool Length Offset|
|G52||Local Coordinate System Offset|
|G53||Move-in Machine Coordinates|
|G54-G59.3||Select Coordinate System (1 - 9)|
|G80||Cancel Motion Modes|
|G90||Distance Mode: Absolute Positioning|
|G91||Distance Mode: Incremental Positioning|
|G90.1 G91.1||Arc Distance Mode|
|G92||Coordinate System Offset|
|G92.1||Cancel G92 Offsets|
|G93||Feed Mode: Inverse Time|
|G94||Feed Modes: Feed per minute|
|M5||Stop the spindle|
|M7||Turn mist coolant on (disabled by default)|
|M8||Turn flood coolant on|
|M9||Turn all coolant off|
The list of the supported G-codes will change, we planned to add support for more codes in the future.
|G82||Drilling Cycle with Dwell|
|M6||Manual Tool Change|
|M2/M30||Program end. Run, start the G-Code Program.|
|M100/M109||User Defined Commands. Your scripts for Milling (M2/M30)|
|M110/M119||User Defined Commands. Your scripts for Drilling|
|M120/M199||User Defined Commands. Run your scripts|