According to Wikipedia, “G-Code, or preparatory code or function, are functions in the Numerical control programming language. The G-codes are the codes that position the tool and do the actual work, as opposed to M-codes, that manages the machine; T for tool-related codes. S and F are tool-Speed and tool-Feed, and finally D-codes for tool compensation.”
- Grbl a low cost alternative to parallel-port-based motion control for CNC milling that accepts g-code.
- Slicers and user interfaces for 3D printers
- Skeinforge for RapMan (A popular slicer program for RepRap and other machines)
- See G-code page at RepRap wiki.
List of G-codes for the Rapman
This is a g-code page for the RapMan printer.
List of RapMan G-code (thanks to Bits from Bytes blog: RapMan special codes
|Rapid Motion in X, Y, and Z axes.
|G0 X10.0 Y20.0 Z1.15
|Coordinated Motion in X, Y, and Z axes with speed F mm/minute.
|G1 X10.0 Y20.0 Z1.15 F960.0
|Arc – Clockwise (Not used by Skienforge)
|Arc - Counter (Clockwise Not used by Skienforge)
|Inches as units used
|Millimetres as units used
|Go Home (far left)
|Set current as home
|Turn extruder on (forward/filament in).
|Turn extruder on Reverse (Still to add)
|Turn extruder off.
|Set target temperature to 245.0 C.
|Custom code for temperature reading. Not used
|Turn fan on.
|Turn fan off.
|Set Extruder speed to S value/10 = 40rpm.
|Turn off AUX V1.0.5
|Turn on AUX V1.0.5
|Set speed of fast XY moves
|Set speed of fast Z moves
|Enable extruder during fast moves
|Enable extruder during fast moves
|Pause RapMan as if pause button pressed
Typical file headers produced by the Skeinforge program
|millimeter system selection
|absolute distance mode
|Return to home position
|Manually added to file. Set speed of fast XY moves. Default value 500 -V1.0.5
|Manually added to file. Set speed of fast Z moves. Default value 500 -V1.0.5
|Turn extruder OFF.
|Custom code for temperature reading – not used by RapMan
|Set temperature to 247.0 DegC.
|G1 X0.0 Y0.0 Z0.0 F480.0
|example of linear interpolation at speed 480
|Turn extruder ON.
Lines 1-12 from a Duplo-compatible block with a vertical hand on top (6.4cm X 6.4 cm x 13.5cm). The file has 79009 lines (!) and prints at medium speed/quality.
G1 X-8.64 Y-69.23 Z0.84 F60.0
G1 X-8.64 Y5.87 Z0.84 F200.0
G1 X-4.32 Y5.87 Z0.84 F200.0
G1 X-4.32 Y-69.23 Z0.84 F200.0
Lines 1057 and forward
G1 X0.36 Y-63.63 Z2.72 F960.0
G1 X0.36 Y-63.64 Z2.72 F1200.0
G1 X63.64 Y-63.64 Z2.72 F1200.0
G1 X63.64 Y-0.36 Z2.72 F1200.0
G1 X0.36 Y-0.36 Z2.72 F1200.0
G1 X0.36 Y-62.91 Z2.72 F1200.0
G1 X1.15 Y-62.86 Z2.72 F960.0
G1 X1.14 Y-62.86 Z2.72 F1200.0
G1 X1.14 Y-56.39 Z2.72 F1200.0
G1 X2.64 Y-56.39 Z2.72 F1200.0
G1 X2.64 Y-55.61 Z2.72 F1200.0
G1 X1.14 Y-55.61 Z2.72 F1200.0
G1 X1.14 Y-40.39 Z2.72 F1200.0
Recovery from printing abortion
Printing stopped at line 299941 after 3 days of printing. I mean I had the printer on hold sometimes (ESC), but it was a 24 job. Anyhow, big low down, but I decided that I must recover from this without super glue, i.e. leave the object on the print bed and restart.
If you don't know where it crashed, e.g. if the board did reset: Run skeinforge again but make a change in the Analyze->Skeinview tool:
- Change Mouse Mode to Display Line. You then can identify both the layer and the spot where it stops in this tool. Then click on a drawing it will display the g-code line...
Now if you were printing a tall object, the problem is that the rapman always expects to be able to home in order to find x,y,z = 0. If you have a "real" print it can't, since raising the print bed will destroy a 14cm high print for example.
I tried all sorts of things fiddling with G90 and G92 codes, but did not mange to restart g-code where the printer left.
G90 G92 X0 Y0 Z-142 or G90 G92 X0 Y0 Z142
So I came up with a typical bricoleur solution :(
- Fix the g-code to start at z=0
- Fool the printer to believe that it is at z=0
Here are the two steps:
(1) Fixing the g-code file
Normally, you should write a script (argl for stupid end-user programmers) that replaces all the Z values. E.g. Z142.2 should become 0 or 0.2. In my case I was lucky since I just print vertically. So I decided to restart at 14cm and not 14.2cm (makes it higher, but that's fine).
GCode where it stopped:
G1 X-90.5 Y68.33 Z142.2 F960.0
So I went to start of the 140mm series and killed all the lines from beginning to there. Then I used three Regexps with a text editor (emacs) to change:
Z14\(.\)\(..\) by Z\1\2 Z15\(.\)\(..\) by Z1\1\2 Z16\(.\)\(..\) by Z2\1\2
Then of course, the g-code must have a header. Resulting g-code start:
G1 X40.96 Y-19.95 Z0.2 F869.59
G1 X39.55 Y-18.93 Z0.2 F960.0
G1 X36.66 Y-17.64 Z0.2 F960.0
If your object is flat, you can stop here, else read on ....
(2) Fool the printer
a) Move the print head next to a top level point NEXT to home. Path toward -X (left) must be unobstructed. Then align it, i.e. make it touch the top.
b) Move it to the left a bit, and switch off.
c) Switch on. Then position the print head about 1mm below the point where you want to restart. This can be a bit less or more. You can see how much you go down on the control panel. I.e. press the Z+ button and move the print board up.
d) Switch off
e) Hold you finger on the Z switch (grey box which is usually touched by the long 6cm bolt. Run the file and release after 1-2 seconds, i.e. the print bed should move down again by 1mm.
f) Now the printer will move to Xmax/Ymin. If it barely scratches the print when it moves you are fine. If it is too high or too low, then repeat from (c). Took me about 4 attempts to get this right.
I REALLY think that rapman firmware should include a control code to recover more easily e.g. Some g-code that says:
- Home to X=0 and Y=0 (but leave Z ALONE)
- Read from the G-code file the current Z-position (e.g. Z=142.2)
- Then just print ....
There is a plan for future firmware to fix this. See this post by Ian - 22:22, 2 April 2010 (UTC).
I did manage to print this stronghold, see the Doblo factory article.