You should never use a feed rate of zero to start a command with. Theoretically, the other way around would work as the feed rate specified in the command is the feed rate at the end of the operation, but that is theoretically; if you look into the Marlin Firmware sources you will find the following C-code for the G0
and G1
commands in the function void gcode_get_destination()
:
if (parser.linearval('F') > 0)
feedrate_mm_s = MMM_TO_MMS(parser.value_feedrate());
From the first code line you read that the value for the feed rate is only parsed as the value is larger than 0
. As there is no prior code shown or feed rate set, the command will not be executed.
Some extra information from G0 & G1: Move describing the usage of the feed rate:
Most RepRap firmwares do subtle things with feedrates.
G1 F1500 ; Set feedrate to 1500mm/m
G1 X50 Y25.3 E22.4 ;
Move and extrude In the above example, we first set the feedrate to
1500mm/m, then move to 50mm on X and 25.3mm on Y while extruding
22.4mm of filament between the two points.
G1 F1500 ; Feedrate 1500mm/m
G1 X50 Y25.3 E22.4 F3000 ; Accelerate to 3000mm/m
However, in the above example, we set a
feedrate of 1500 mm/m, then do the same move, but accelerating to 3000
mm/m. Everything stays synchronized, so extrusion accelerates right
along with X and Y movement.