Plasma cutting arc trouble

Hey everyone,

I’m now a proud builder of an MPCNC plasma cutting “table”.

[attachment file=110887]

But i kicked some problems.

First sketch my situation.

I use Ramps 1.4 with arduino Mega and the marlin firmware from V1-engineering

I make drawing (save as .DXF) → Use sheetcam to generate the G-code (i adapted a post-processor myself) → Use repetier to run the G-code.

Straight lines and large arcs/circles are not a problem.

[attachment file=110886]


G92 X0 Y0 Z0
G00 Z10.00
X28.77 Y47.13
M106 S255
G04 S0.3
G01 X28.77 Y47.13 Z1.50 F150.0
G03 X29.0 Y49.8 I-1.2 J1.5 F1200.0
X29.0 Y49.8 I-2.6 J-3.2 F800.0
M106 S0
G00 X29.04 Y49.83 Z10.00
X28.13 Y61.35
M106 S255
G04 S0.3
G01 X28.13 Y61.35 Z1.50 F150.0
G03 X28.4 Y64.1 I-1.2 J1.5 F1200.0
X28.4 Y64.1 I-2.0 J-2.4 F1200.0
M106 S0
G00 X28.39 Y64.05 Z10.00
X10.56 Y43.58
M106 S255
G04 S0.3
G01 X10.56 Y43.58 Z1.50 F150.0
G03 X10.8 Y46.3 I-1.2 J1.5 F1200.0
X10.8 Y46.3 I-2.3 J-2.8 F1200.0
M106 S0
G00 X10.82 Y46.29 Z10.00
X9.41 Y21.68
M106 S255
G04 S0.3
G01 X9.41 Y21.68 Z1.50 F150.0
G03 X10.2 Y24.3 I-0.9 J1.7 F1200.0
X10.2 Y24.3 I-1.6 J-2.0 F1200.0
M106 S0
G00 X10.17 Y24.28 Z10.00
X13.62 Y9.63
M106 S255
G04 S0.3
G01 X13.62 Y9.63 Z1.50 F150.0
G03 X14.7 Y11.0 I-0.1 J1.2 F1200.0
X14.7 Y11.0 I-1.0 J-1.3 F900.0
M106 S0
G00 X14.70 Y10.99 Z10.00
X30.95 Y27.24
M106 S255
G04 S0.3
G01 X30.95 Y27.24 Z1.50 F150.0
G03 X30.8 Y29.9 I-1.5 J1.3 F1200.0
X29.1 Y31.0 I-4.3 J-5.0 F1200.0
X30.8 Y29.9 I-2.6 J-6.1 F2000.0
M106 S0
G00 X30.75 Y29.95 Z10.00
X32.69 Y87.13
M106 S255
G04 S0.3
G01 X32.69 Y87.13 Z1.50 F150.0
G03 X32.6 Y89.8 I-1.4 J1.3 F1200.0
X30.9 Y91.0 I-6.1 J-6.7 F1200.0
X32.6 Y89.8 I-4.5 J-7.9 F2000.0
M106 S0
G00 X32.56 Y89.84 Z10.00
X47.29 Y100.72
M106 S255
G04 S0.3
G01 X47.29 Y100.72 Z1.50 F150.0
G03 X47.4 Y98.0 I1.4 J-1.3 F1200.0
G02 X48.7 Y96.5 I-7.4 J-8.0 F1200.0
X50.9 Y90.0 I-8.7 J-6.5 F2000.0
G01 X50.90 Y20.00 Z1.50 F2000.0
G02 X30.0 Y-0.9 I-20.9 J0.0 F2000.0
G01 X0.00 Y-0.90 Z1.50 F2000.0
G02 X-0.9 Y-0.0 I0.0 J0.9 F2000.0
G01 X-0.90 Y95.00 Z1.50 F2000.0
G02 X5.0 Y100.9 I5.9 J0.0 F2000.0
G01 X40.00 Y100.90 Z1.50 F2000.0
G02 X47.4 Y98.0 I0.0 J-10.9 F2000.0
M106 S0
G00 X47.40 Y98.00 Z10.00
X0.00 Y0.00
M106 S0 M30

But when using smaller holes or fillets, the machine is doing strange things.

I tested so many things, but now i found out that when there are two arc commandos (like G3 and G2) after each other, this makes a problem. It does only the first line and the second arc, it ignores and moves on to the next line. So many times it does the lead in arc, but then it refuses to cut the circle. Sometimes it does, sometimes is doesnt.(See picture)

[attachment file=“110888”]

Can somebody explain and try to help finding a solution?

Also why is it slowing down so much in arcs/circles?

Kind regards,



Your gcode is not correctly formatted for Marlin. Look at my crown gcode for a clean example.

The blue toolpath in Sheetcam means that a rule is being applied. Check to see what that rule is, it’s probably slowing feedrate based on small shape, which is a good thing for small circles. The machine is not rigid enough to keep high feedrates for such small shapes, but most machines have this issue.

On my Lowrider, I have a ruleset that slows feedrate to 60% when hole size is less than 0.5" diameter. Works pretty well.

What gauge material is this and what plasma cutter do you have? 2000 mm/min (~79 ipm) is pretty slow for what appears to be 14 ga? You could either adjust your cut amperage, or speed up your feedrate to get cleaner cuts.

Hi, thanks for the reply.

I know most non-machinist software (like Cura) don’t generate G02 (arcs) but they generate a lot of G01 (lines). Sheetcam does not and uses arc commando’s.

I have a hypertherm Powermax 45. Sheet metal is 3mm. The 2000mm/m is indeed slow for this thickness, but i tried with slower feed to check if the machine would do the small circles. I use the settings from the hypertherm manual. I don’t really care about the quality of the cut (i can tweak a lot in sheetcam and i know an MPCNC has it’s limits). But i do care about the right execution of G-code.


That the code is modal or non modal is not the problem, i tried it last weekend but its the same. It’s also strange that the problem only appears at some holes. I will try modality tomorow again just to be sure.

Hrmph… the forum ate my post. Maybe I edited it too much…

I was just reformatting the gcode again because I do that sort of silly thing.

You’re right, though. It’s not every hole. It feels like it’s either a modality issue, or your gcode sender is skipping/missing lines. Are you running anything else on your Repetier Host PC? Is there any reason it would be dropping commands?

Is there anything suspicious in the repetier logs?

The gcode for your first cut looks like this:

M106 S255
G04 S0.3
G01 X28.77 Y47.13 Z1.50 F150.0
G03 X29.0 Y49.8 I-1.2 J1.5 F1200.0
X29.0 Y49.8 I-2.6 J-3.2 F800.0
M106 S0

The line highlighted red is not a valid command for Marlin’s flavor of gcode. I’m not sure if it’s valid for any machine but I won’t assume.

It appears that the G01 is plunging downward (from Z=3.8 to Z=1.5), and then the G03 is the lead-in, and then the line that starts with “X29…” is supposed to be another arc cut, probably also supposed to be G03.

I don’t know sheetcam, but if you’re experimenting with settings or post, it’s much easier to check if you have any lines starting with “X”. Even if you have to resort to trial-and-error, you should be able to get close without wasting a ton of metal and time.

That’s what he was talking about with modal and non modal gcode. Modal gcode assumes the same command with the new parameters. But if you look at his samples, sometimes it works. Frankly, unless you really, really need to squeeze a few more bytes out of your storage and/or processor, I’d stick to non modal code, and be explicit about each command.

Also, I couldn’t find documentation that Marlin for sure handles modal code.

1 Like

Oh, I see. That modal/non modal bit went over my head. You were already talking about the absence of a G-something command on those lines.

Marlin does implement modal code in recent versions if compiled with the correct defines set. (GCODE_MOTION_MODES in configuration_adv.h) I also implemented “parenthese” comments for compatibility (enabled with the PAREN_COMMENTS define)

Ok, as i thought and as some of you described, marlin is indeed working with modal codes. So that’s not the problem.

Because I really want to get it working good, i installed bCNC and uploaded the GRBL firmware ( .

The machine is moving, but here is an new problem. It does the circles, only not is it should. Only one of the Y motors and only one of the X-motors are moving. So the gantry gets twisted by making the holes.Just like the X and Y axis are not cloned.

The outer contour went good.

/Edit: Did some of you tested my code example on your machine?

The “modal” code is quite new and disabled by default, so you code probably won’t work on our machines.

What configuration do you use ? Do you use endstops ? Single or dual ? what controller board/drivers do you use ? how are the steppers linked to it (if no dual endstops, in series ? parellel ? )

if dual endstops are you sure the steppers aren’t overheating ?


Sorry, didn’t read about switching to GRBL, in which case I’m quite sure I can’t help you :stuck_out_tongue_winking_eye:


Hi, problem solved (or avoided).

Even with GRBL (and bCNC) i had some problems, on small holes, only one of the 2 X en Y motors were running. It looked like the axis were not cloned. So i dug further, and found a solution in sheetcam itself. It’s possible to cut down an arc (G02/G03) in small straight lines (G01).

So when i’m now exporting the code is makes a lot of G01. So the problem whit slowing down in arcs/circles is also solved now. It cut’s on an even speed around the whole contour.

Now, i am going to install the dual end stops to make it square automatically. I want to switch back to repetier, so i took a brand new (so i can switch back easily to grbl) arduino mega (china clone) installed the Marlin firmware on it that i had before. I can connect with repetier (at baudrate 115200) but it is not moving at all when I use manual jog or run a program. Anybody an idea what is causing this issue?


Some progress pics:

[attachment file=111589]

I quickly a tumbler out of a paint can on my lathe. Put some stone in it and let it run about 15min.

[attachment file=111587]

Parts come out very nice.

[attachment file=111588]

When the project is done and working well (easy, nice and quick) i definitely want to share it, so others can use my experience.

1 Like

Check your power. That’s usually the issue if you can connect, but not move the steppers.

1 Like

Hi, i checked the power supply, everything ok.

Repetier gives the folowing command line: No start signal detected, forcing start.

Connection problem solved.

I had to instal the CH340 driver for the arduino clone (see instructions: )


I understand you switched to GRBL here but I get similar behavior with Marlin on Rambo with dual end stops (stock from V1 Eng.). Luckily the arcs are very small so not much twist occurred before I found out what was going on.

Would be nice not to have to rely on breaking arcs into small lines… If anyone has a Marlin workaround for this that would be much appreciated.

A snippet of my gcode is:

G0 Z2.0000

G0 X188.1863 Y131.9185 Z2.0000

G1 X188.1863 Y131.9185 Z-1.5000 F480.00

G2 X188.6505 Y130.7977 Z-1.5000 I-1.1208 J-1.1208 F480.00

G1 X188.6505 Y-0.8700 Z-1.5000 F480.00

G2 X187.0655 Y-2.4550 Z-1.5000 I-1.5850 J0.0000 F480.00

G1 X-6.1600 Y-2.4550 Z-1.5000 F480.00

G2 X-7.7450 Y-0.8700 Z-1.5000 I0.0000 J1.5850 F480.00

G1 X-7.7450 Y130.7977 Z-1.5000 F480.00

G2 X-6.1600 Y132.3827 Z-1.5000 I1.5850 J-0.0000 F480.00

G1 X187.0655 Y132.3827 Z-1.5000 F480.00

G2 X188.1863 Y131.9185 Z-1.5000 I-0.0000 J-1.5850 F480.00

Interesting thread. I was seeing quite similar behavior on mine while using the laser. G-code created with Estlcam. So the solution lies probably in the G-code generator.

Try increasing the junction deviation and reflash, Double it. Let me know if this works.

1 Like