@mfs12 @wilriker I am still seeing very inconsistent behaviour when using M291, especially with messages not being displayed on the PanelDue. Often for information type messages via S0 or S1, that indicate the printer is currently heating or loading or similar.
I upgraded to PanelDue Firmware 3.3 before I did the following tests (I am on 3.3 for both RRF and DWC on my Duet 3 Mini 5+ in standalone mode):
Note: All macros are initiated from the PanelDue
1. M291 S3, followed by M291 S0
M291 P"BED and EXTRUDER will be heated before the procedure starts! Press OK to start or CANCEL to abort!" S3 R"Z OFFSET CALIBRATION"
M291 P"Heating..." S0 R"Z OFFSET CALIBRATION"
Both messages show on DWC and PanelDue.
2. M291 S3, followed by M291 S1
M291 P"BED and EXTRUDER will be heated before the procedure starts! Press OK to start or CANCEL to abort!"
M291 P"Heating..." S1 R"Z OFFSET CALIBRATION"
Only the second message shows on both PanelDue and DWC, the first message is completely ignored.
3. M291 S3, followed by M291 S2
M291 P"BED and EXTRUDER will be heated before the procedure starts! Press OK to start or CANCEL to abort!"
M291 P"Heating..." S2 R"Z OFFSET CALIBRATION"
Only the second message shows on both PanelDue and DWC, the first message is completely ignored.
4. M291 S3, followed by some additional steps, followed by M291 S0
M291 P"BED and EXTRUDER will be heated before the procedure starts! Press OK to start or CANCEL to abort!" S3 R"Z OFFSET CALIBRATION" ; requires user input to continue
; preparation
M104 S230 ; set extruder temperature to 230C
M140 S70 ; set bed temperature to 70C
if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed ; if not all axes are homed
G28 ; home all axes
else ; if all axes are homed
G1 Z{sensors.probes[0].diveHeight} F360 ; move Z axis to probe dive height
M561 ; clear any bed transform
M290 R0 S0 ; clear babystepping
G90 ; absolute positioning
G1 X{(move.axes[0].min + move.axes[0].max)/2} Y{(move.axes[1].min + move.axes[1].max)/2} ; move X and Y axis to their center
G1 Z5 ; move Z axis 5mm above the bed
M564 S0 H0 ; allow movement beyond axis limits defined in config.g
M291 P"Heating..." S0 R"Z OFFSET CALIBRATION" ; message to confirm heating
G10 P0 S230 ; wait for extruder temperature to reach 230C
M190 S70 ; wait for bed temperature to reach 70C
M400 ; wait for current moves to finish
The first message shows on both PanelDue and DWC, the second message only in DWC.
5. M291 S3, followed by some additional steps, followed by M291 S1
M291 P"BED and EXTRUDER will be heated before the procedure starts! Press OK to start or CANCEL to abort!" S3 R"Z OFFSET CALIBRATION" ; requires user input to continue
; preparation
M104 S230 ; set extruder temperature to 230C
M140 S70 ; set bed temperature to 70C
if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed ; if not all axes are homed
G28 ; home all axes
else ; if all axes are homed
G1 Z{sensors.probes[0].diveHeight} F360 ; move Z axis to probe dive height
M561 ; clear any bed transform
M290 R0 S0 ; clear babystepping
G90 ; absolute positioning
G1 X{(move.axes[0].min + move.axes[0].max)/2} Y{(move.axes[1].min + move.axes[1].max)/2} ; move X and Y axis to their center
G1 Z5 ; move Z axis 5mm above the bed
M564 S0 H0 ; allow movement beyond axis limits defined in config.g
M291 P"Heating..." S1 R"Z OFFSET CALIBRATION" ; message to confirm heating
G10 P0 S230 ; wait for extruder temperature to reach 230C
M190 S70 ; wait for bed temperature to reach 70C
M400 ; wait for current moves to finish
The first message shows on both PanelDue and DWC, the second message only in DWC.
6. M291 S3, followed by some additional steps, followed by M291 S2
M291 P"BED and EXTRUDER will be heated before the procedure starts! Press OK to start or CANCEL to abort!" S3 R"Z OFFSET CALIBRATION" ; requires user input to continue
; preparation
M104 S230 ; set extruder temperature to 230C
M140 S70 ; set bed temperature to 70C
if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed ; if not all axes are homed
G28 ; home all axes
else ; if all axes are homed
G1 Z{sensors.probes[0].diveHeight} F360 ; move Z axis to probe dive height
M561 ; clear any bed transform
M290 R0 S0 ; clear babystepping
G90 ; absolute positioning
G1 X{(move.axes[0].min + move.axes[0].max)/2} Y{(move.axes[1].min + move.axes[1].max)/2} ; move X and Y axis to their center
G1 Z5 ; move Z axis 5mm above the bed
M564 S0 H0 ; allow movement beyond axis limits defined in config.g
M291 P"Heating..." S2 R"Z OFFSET CALIBRATION" ; message to confirm heating
G10 P0 S230 ; wait for extruder temperature to reach 230C
M190 S70 ; wait for bed temperature to reach 70C
M400 ; wait for current moves to finish
The first message only shows in DWC, the second message shows on PanelDue and DWC.
This makes it really difficult to create self-explanatory macros for our users as we aim for them to be able to navigate the printer completely from the display on the printer. Without consistent messages I am not sure how to do that though.
Am I still missing an aspect of M291?