A typical line of (depositing) G-code seems to set a maximum speed (
F), a new position to move to (
Z) and a new extrusion distance (giving a filament distance for the move). The
F is common for the line of code, and I understand gives a maximum for the
XYZE combined speed.
My question is: "How is the extrusion rate synchronised to the movement distance and speed?"
The G-code doesn't seem to have enough information to deal with this, but I've tried looking at a Marlin configuration file and don't see anything obvious there.
To take a really basic example: A 30 mm long single filament, layer height 0.2 mm and width 0.4 mm. A basic slicer will assume 0.2x0.4x30 mm³ total volume, but for each mm of travel you want 0.2x0.4x1 mm³ to be extruded. How is it ensured that this happens regardless of travel speed, without say more being extruded in the first half of travel than the second or vice versa?
It feels like this is dealt with somewhere in the firmware but I don't know where to look. A 'worked' example for a desktop printer or as much detail as you dare would be absolutely perfect. If it helps, I am generally using either an ANet A8 or Ultimaker 3 with the CURA slicer using Marlin-based firmware.