G-code: Difference between revisions
m (1 revision imported) |
m (Text replacement - "$" to " {{edutechwiki}}") |
||
Line 233: | Line 233: | ||
[[Category: RapMan]] | [[Category: RapMan]] | ||
[[Category: Hardware]] | [[Category: Hardware]] | ||
{{edutechwiki}} |
Latest revision as of 01:21, 10 April 2021
Introduction
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.”
See also
- 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)
Arduino g-codes
- 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
Code | Explanation | Example |
---|---|---|
G0 | Rapid Motion in X, Y, and Z axes. | G0 X10.0 Y20.0 Z1.15 |
G1 | Coordinated Motion in X, Y, and Z axes with speed F mm/minute. | G1 X10.0 Y20.0 Z1.15 F960.0 |
G2 | Arc – Clockwise (Not used by Skienforge) | |
G3 | Arc - Counter (Clockwise Not used by Skienforge) | |
G4 | Dwell Time | G4 S20 |
G20 | Inches as units used | G20 |
G21 | Millimetres as units used | G21 |
G28 | Go Home (far left) | G28 |
G90 | Absolute Positioning | G90 |
G92 | Set current as home | G92 |
M101 | Turn extruder on (forward/filament in). | M101 |
M102 | Turn extruder on Reverse (Still to add) | |
M103 | Turn extruder off. | M103 |
M104 | Set target temperature to 245.0 C. | M104 S245 |
M105 | Custom code for temperature reading. Not used | |
M106 | Turn fan on. | M106 |
M107 | Turn fan off. | M107 |
M108 | Set Extruder speed to S value/10 = 40rpm. | M108 S400 |
M220 | Turn off AUX V1.0.5 | M220 |
M221 | Turn on AUX V1.0.5 | M221 |
M222 | Set speed of fast XY moves | M222 |
M223 | Set speed of fast Z moves | M223 |
M224 | Enable extruder during fast moves | M224 |
M225 | Enable extruder during fast moves | M225 |
M226 | Pause RapMan as if pause button pressed | M226 |
Typical file headers produced by the Skeinforge program
G21 | millimeter system selection | |
G90 | absolute distance mode | |
G28 | Return to home position | |
M222 S800 | Manually added to file. Set speed of fast XY moves. Default value 500 -V1.0.5 | |
M223 S768 | Manually added to file. Set speed of fast Z moves. Default value 500 -V1.0.5 | |
M103 | Turn extruder OFF. | |
M105 | Custom code for temperature reading – not used by RapMan | |
M104 S247.0 | Set temperature to 247.0 DegC. | |
G1 X0.0 Y0.0 Z0.0 F480.0 | example of linear interpolation at speed 480 | |
M101 | Turn extruder ON. | |
Main | code follows | ..... |
Example code
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.
G90
G21
M103
M105
M113 S1.0
M104 S255.0
G1 X-8.64 Y-69.23 Z0.84 F60.0
M101
M108 S595.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
M103
M108 S350.0
G1 X0.36 Y-63.63 Z2.72 F960.0
M101
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
M103
G1 X1.15 Y-62.86 Z2.72 F960.0
M101
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:
G90
G21
M113 S1.0
M108 S380.0
M104 S210
M101
M103
M108 S380.0
M106
M103
G1 X40.96 Y-19.95 Z0.2 F869.59
M101
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.
Remarks
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.
Links
Content of this article has been taken from EduTechWiki (en) or EduTechWiki (fr) at the date indicated in the history. DKS was the main founder and main contributor of EduTechWiki. If you cite this page you also must cite and credit EduTechWiki, according to the CC BY-NC-SA license. View the pageinfo-toolboxlink for this article.