Snapmaker 2 A350 10W Job Speed Issue

Snapmaker 2 A350 10W
Firmware: Snapmaker2_V1.20.3
Lightburn: 1.6.03
Using Lightburn Marlin Machine Configuration

Project configuration:
100mmx100mm NWT
Image: 3000mm/min, 40%
Speed in MOVE tab 1000mm/min
Run FRAME to verify position
Start job
Job takes 2:03:14

Exactly same project, except:
Project configuration:
100mmx100mm NWT
Image: 3000mm/min, 40%
Speed in MOVE tab 3000mm/min
Run FRAME to verify position
Start job
Job takes 1:17:16

It seems that the job speed is somehow being ignored and interacting with the
speed set in the MOVE tab after running Frame.

Thoughts?

Interesting, but I do not think the Move window Speed field is factored into the processing of the output program. I just did a simple test and could not duplicate your finding.

I suspect you changed something else, maybe accidentally. Can you upload two copies of your Lightburn file, one each with the Move settings you describe?

I’ve been wrestling with this issue since last year, it does seem really odd and I agree that the move speed shouldn’t affect the job speed, but it does work for my situation.
here is a copy of my post from Nov. of last year in the Snapmaker Forum:

I changed the power on all layers to 1% for testing purposes, left the speed settings the same as in the original project. Ran the job with only one object of the array selected, ran fine in 7min, 18sec.
Went to run it exactly the same after the first one finished. Didn’t change a single thing, same object, just clicked Start and it took 18 min. to run, this would have seriously over burned the job.

Here is the start and end of the Gcode from both runs, Good and Bad:

GOOD:

Initial run, Get Position, Set Origin, click Start:

Waiting for connection…
ok
X:0.00 Y:0.00 Z:0.00 E:0.00 Count X:11280 Y:9560 Z:32580 B:0
ok
X:0.00 Y:0.00 Z:0.00 E:0.00 Count X:11280 Y:9560 Z:32580 B:0
ok
Project loaded in 75 milliseconds

Starting stream
M106 P0 S255
M3 S0
G21
G90
M8
M05
G0 X247.74 Y9.341 F3000
G0 Z0
Layer #2
G91
G1 X0.042 I S2.5
G1 X-0.083Y0.1 I S0
G1 X-0.072 I S2.5
G1 X-0.081Y0.1 I S0
set air pump switch: open
G1 X0.075 I S2.5
G1 X-0.048Y0.1 I S0
G1 X-0.088 I S2.5
G1 X-0.042Y0.1 I S0
.
.
.
M05
G0 X232.687 Y71.709 F3000
G1 X232.552 Y72.063F900 I S2.5
G1 X232.249 Y72.724
G1 X231.864 Y73.341
.
.
.
G1 X232.792 Y71.761
G1 X232.717 Y71.71
G1 X232.687
M9
M05
G90
M5
G0 Z330 F6000
set air pump switch: close
Stream completed in 7:18
close Laser control

BAD:

Subsequent run, same object, just clicked Start

Starting stream
M106 P0 S255
M3 S0
G21
G90
M8
M05
G0 X247.74 Y9.341 F3000
G0 Z0
Layer #2
G91
G1 X0.042 I S2.5
G1 X-0.083Y0.1 I S0
G1 X-0.072 I S2.5
.
.
.
M05
G0 X232.687 Y71.709 F3000
G1 X232.552 Y72.063F900 I S2.5
G1 X232.249 Y72.724
G1 X231.864 Y73.341
.
.
.
G1 X232.792 Y71.761
G1 X232.717 Y71.71
G1 X232.687
M9
M05
G90
M5
G0 Z330 F6000
set air pump switch: close
Stream completed in 18:00
close Laser control

I do not know what this means. What is ā€œIā€? S0=laser off, S2.5=laser on. Is your power setting 2.5%?

Without knowing what was cropped out of the code, it is hard to tell if something changed between the two runs.

Considering you had both GCode runs, is it safe to assume you do not run the laser directly from Lightburn?

The reason is; G0 and G1 store speeds separately. By the snippets you posted, it looks like you have an engrave and a cut layer with different speeds. It also looks like you’re using ā€œMarlinā€ as the code base.

Initially, G0 speed is set to F3000 before it says layer #2

G0 X247.74 Y9.341 F3000
However, there’s no speed setting F line on the first G1,

G1 X0.042 I S2.5

This tells me your first engrave is set to F3000, so lightburn assumes (since your whitespace scan is also F3000) that it’s going to keep that speed, so it doesn’t put one on the G1 line.

So when it swaps to the cut layer, we see it sets a speed of F900 on G1 (I assume it’s a new cut layer or slower engrave as it follows an M05

M05
G0 X232.687 Y71.709 F3000
G1 X232.552 Y72.063F900 I S2.5

So now your speeds are set;
G0 = F3000
G1 = F900

So subsequent runs, since there’s no other G1 speed changes, keeps that speed. So now your original engrave is running at the speed of the cut section. Also this would explain why framing might have a change as well; if framing uses G1 it’ll set G1 to your move tab speed, but then it’s never updated in the program from the explanation above.

You can maybe mitigate this by using a whitespace scan of say, F2999, so your engrave speed of F3000 is different, Lightburn will be forced to put in a new speed change. Just make sure they’re different, and Lightburn will plop a proper F change on your G1.

3 Likes

The laser is run directly from Lightburn, USB, Buffered

I’ll give it a try, setting FWS to 2999, I had it set to 3000.
And yes, I’m using the Lightburn Marlin profile.

@Colin Maybe give this a read through and see about forwarding the idea of outputting F# to the first G1 move regardless of if the speeds match moving forward?

I thought these machines were moving towards GRBL flavour? Is that Marlin profile still the best one for Snapmaker2_V1.20.3?

I notice on this site the Snapmaker 2.0 20W and 40W device profiles now appear to be GRBL - based: Using Ray/Artisan/2.0 with LightBurn | Snapmaker Wiki

I laid it out in a post on another thread;

The 2.0 and Artisan are running Marlin, whereas the Ray is running GRBL. However, they must have taken points from my old guides and made their profiles as GRBL since it works fine (except the GRBL specific commands naturally)

Despite being Marlin, I’ve always used GRBL as the device in Lightburn for my 2.0. It’s also how I’ve stated to setup the machine in my guides as well.

Ah ok, that’s good to know.

In that case, I’m curious to know why the ā€˜SnapMaker (Marlin)’ device type would not be the first choice for running these (non-GRBL) Snapmaker devices?

Put another way, why is the GRBL control still preferable for you even though many of the buttons in LightBurn will not interact as expected?..presumably this would include get/set position, user origin etc. and what you noted in your post.

In that post you also mentioned the inline power function, which is available… but I’m just not sure if anybody is actively using it with the SnapMaker (Marlin) device. If there are any issues then it would be great to overcome them and consolidate the ā€˜SnapMaker (Marlin)’ as the recommended device to use for the (non-GRBL) Snapmaker. Appreciate your input!

1 Like

Thanks for this detail, it looks like the feed rate on the G1 could indeed be getting carried from the previous cut layer, even though the G0 had changed the feedrate, so I’ve raised a question with the dev team. TBH I didn’t realise G1 and G0 could have individually-carried feeds, must be a Marlin thing.

1 Like

G0 should run at the machine’s maximum possible speed, without any reference to the G1 feedrate, but early on Marlin used the same code for both commands. This was due to running in an ATMega 328 with a whopping 32 kB of code space, but AFAICT they’re now stuck with it, because backwards compatibility.

The LinuxCNC doc explains how those commands should work:

G0 Rapid Move

G1 Linear Move

Back in the day, G0 did not produce ā€œcoordinatedā€ motion and could proceed at the maximum speeds of the individual axes without maintaining a straight line, but that could produce surprising results on a CNC machine with clamps & vises holding an irregular object to the table. :frowning_face:

1 Like

I don’t know about others, such as Snapmaker themselves, but I use it because;
1: It works fine, why change and break what works for me.
2: Generates leaner code, saves a little on size and thus speed by trimming unused I indicators and such.
2b: Also doesn’t generate a thumbnail, which seems to break the serial connection (though I don’t use USB)
3: I don’t use any of the button functions, so the macros being wrong doesn’t affect me at all. I have a full repeatable origin setup so I don’t worry about having to move and set origins, etc. Any movement I need I can do via console. (Power user syndrome? :upside_down_face: )

I use it all the time, but since it’s a standard in GRBL, I hardly think about actively switching it as seen in your screenshot. I recently did a depth engrave with an A250T 10W + grayscale inline.

Is a Marlin thing. Normally G0 is just rapid machine max on a CNC platform, but in Marlin, it can be set differently, which can be a good thing, or a bad thing as seen above.