Slicr Gcode - error or not
I've been looking at ways to change temperature within gcode files and have noticed that a gcode file exported from Slicr is 5 degrees C low on the extruder temperature versus what is set in the filament temperature settings.
It also produces a M104 S and a M109 S command for the temperature adjusting but I fail to see the purpose of both occurring together within lines of one another.
I confirmed this 5 degree low offset on the extruder temperature in the gcode by changing the filament temperature and exporting the gcode a few times, the gcode is always 5 degrees lower than in the filament settings, and yes I have accounted for different fist layer by setting all layers to the same setting for this testing.
I have confirmed that this 'offset' is identical to the --standby-temperature-delta setting (Temperature Variation under Ooze protection GUI) - this seems to be getting applied incorrectly, not when the printer enters an idle state but the opposite.
This is the gcode with a Temperature Variation of 20 Deg C and a filament temperature of 255
M190 S90 ; set bed temperature and wait for it to be reached
M104 S275 ; set temperature
G28 ; home all axes
G1 Z5 F5000 ; lift nozzle
M900 K45 ; Filament gcode
M109 S275 ; set temperature and wait for it to be reached
G21 ; set units to millimeters
G90 ; use absolute coordinates
M82 ; use absolute distances for extrusion
G92 E0 ; reset extrusion distance
G1 E-3.00000 F9000.00000 ; retract
G92 E0 ; reset extrusion distance
G1 Z0.200 F7200.000 ; move to next layer (0)
G1 X24.315 Y30.339 F7200.000 ; move to first skirt point
G1 E3.00000 F9000.00000 ; unretract
M204 S1000 ; adjust acceleration
G1 F3047.41
This is the same code with a setting Temperature Variation disabled.
M190 S90 ; set bed temperature and wait for it to be reached
M104 S255 ; set temperature
G28 ; home all axes
G1 Z5 F5000 ; lift nozzle
M900 K45 ; Filament gcode
M109 S255 ; set temperature and wait for it to be reached
G21 ; set units to millimeters
G90 ; use absolute coordinates
M82 ; use absolute distances for extrusion
G92 E0
enabling the Ooze protection causes the offset in Temperature Variation setting to be applied all the time.
The bed temperature is fine and exactly as entered.
So have I missed something or is this a defect in the gcode production code although I can't spot anything obvious in gcode.cpp or gcodewriter.cpp.