优化双头打印时断电续打可能出现的异常问题

This commit is contained in:
张开科 2024-11-15 10:36:38 +08:00
parent 35572fdf47
commit 55e60aecd2
4 changed files with 61 additions and 36 deletions

View File

@ -432,7 +432,7 @@ gcode:
M191 S{CHAMBER_TEMP}
{% endif %}
G92 E0
M117 Printing star...
M117 Printing start...
[gcode_macro END_PRINT]
gcode:
@ -790,9 +790,9 @@ gcode:
########################################
[delayed_gcode _CHECK_POWER_LOSS_RECOVERY]
initial_duration: 3.5
initial_duration: 1
gcode:
{% set was_interrupted = printer.save_variables.variables.was_interrupted | string %}
{% set was_interrupted = printer.save_variables.variables.was_interrupted | default(False) | string %}
{% set enable_recovery = printer.save_variables.variables.power_loss_recovery | default(Ture) | string %}
{% if enable_recovery != "False" and was_interrupted == "True" %}
RESPOND TYPE=command MSG="action:prompt_begin "
@ -805,7 +805,7 @@ gcode:
[gcode_shell_command _CLEAR_PLR]
command: sh /home/klipper/klipper/scripts/clear_plr.sh
timeout: 5.
verbose: True
verbose: False
[gcode_macro _CLEAR_LAST_FILE]
gcode:
@ -823,20 +823,26 @@ gcode:
[gcode_shell_command _POWER_LOSS_RECOVERY]
command: /home/klipper/klipper/scripts/plr.sh
timeout: 420.
verbose: True
verbose: False
[gcode_macro _RESUME_INTERRUPTED]
gcode:
{% set sv = printer.save_variables.variables %}
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
{% set park_dz = client.custom_park_dz|default(2.0)|abs %}
RESPOND TYPE=command MSG="action:prompt_end"
SET_GCODE_OFFSET Z=0 MOVE=0
{% set z_height = params.Z_HEIGHT|default(printer.save_variables.variables.power_resume_z)|float %}
{% set is_paused = printer.save_variables.variables.power_loss_paused|default(False) %}
{% set last_file = params.GCODE_FILE|default(printer.save_variables.variables.last_file)|string %}
{% set z_offset = park_dz if is_paused else 0 %}
M118 Initiating recovery of the last print task
RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\" \"{z_offset}\""
{% set z_height = params.Z_HEIGHT|default(sv.power_resume_z)|float %}
{% set is_paused = sv.power_loss_paused|default(False) %}
{% set last_file = params.GCODE_FILE|default(sv.last_file)|string %}
{% set hotend = sv.power_resume_extruder|default("extruder")%}
{% set z_offset = sv.nozzle_z_offset_val|default(0)|float %}
{% set z_offset_total = park_dz if is_paused else 0 %}
{% if hotend == "extruder1" %}
{% set z_offset_total = z_offset_total + z_offset %}
{% endif %}
M118 Recovery in progress, please wait
RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\" \"{z_offset_total}\""
SDCARD_PRINT_FILE FILENAME=.plr/"{last_file}"
SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False

View File

@ -432,7 +432,7 @@ gcode:
M191 S{CHAMBER_TEMP}
{% endif %}
G92 E0
M117 Printing star...
M117 Printing start...
[gcode_macro END_PRINT]
gcode:
@ -783,9 +783,9 @@ gcode:
########################################
[delayed_gcode _CHECK_POWER_LOSS_RECOVERY]
initial_duration: 3.5
initial_duration: 1
gcode:
{% set was_interrupted = printer.save_variables.variables.was_interrupted | string %}
{% set was_interrupted = printer.save_variables.variables.was_interrupted | default(False) | string %}
{% set enable_recovery = printer.save_variables.variables.power_loss_recovery | default(Ture) | string %}
{% if enable_recovery != "False" and was_interrupted == "True" %}
RESPOND TYPE=command MSG="action:prompt_begin "
@ -798,7 +798,7 @@ gcode:
[gcode_shell_command _CLEAR_PLR]
command: sh /home/klipper/klipper/scripts/clear_plr.sh
timeout: 5.
verbose: True
verbose: False
[gcode_macro _CLEAR_LAST_FILE]
gcode:
@ -816,20 +816,26 @@ gcode:
[gcode_shell_command _POWER_LOSS_RECOVERY]
command: /home/klipper/klipper/scripts/plr.sh
timeout: 420.
verbose: True
verbose: False
[gcode_macro _RESUME_INTERRUPTED]
gcode:
{% set sv = printer.save_variables.variables %}
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
{% set park_dz = client.custom_park_dz|default(2.0)|abs %}
RESPOND TYPE=command MSG="action:prompt_end"
SET_GCODE_OFFSET Z=0 MOVE=0
{% set z_height = params.Z_HEIGHT|default(printer.save_variables.variables.power_resume_z)|float %}
{% set is_paused = printer.save_variables.variables.power_loss_paused|default(False) %}
{% set last_file = params.GCODE_FILE|default(printer.save_variables.variables.last_file)|string %}
{% set z_offset = park_dz if is_paused else 0 %}
M118 Initiating recovery of the last print task
RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\" \"{z_offset}\""
{% set z_height = params.Z_HEIGHT|default(sv.power_resume_z)|float %}
{% set is_paused = sv.power_loss_paused|default(False) %}
{% set last_file = params.GCODE_FILE|default(sv.last_file)|string %}
{% set hotend = sv.power_resume_extruder|default("extruder")%}
{% set z_offset = sv.nozzle_z_offset_val|default(0)|float %}
{% set z_offset_total = park_dz if is_paused else 0 %}
{% if hotend == "extruder1" %}
{% set z_offset_total = z_offset_total + z_offset %}
{% endif %}
M118 Recovery in progress, please wait
RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\" \"{z_offset_total}\""
SDCARD_PRINT_FILE FILENAME=.plr/"{last_file}"
SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False

View File

@ -558,7 +558,7 @@ gcode:
M191 S{CHAMBER_TEMP}
{% endif %}
G92 E0
M117 Printing star...
M117 Printing start...
[gcode_macro END_PRINT]
gcode:
@ -946,9 +946,9 @@ gcode:
########################################
[delayed_gcode _CHECK_POWER_LOSS_RECOVERY]
initial_duration: 3.5
initial_duration: 1
gcode:
{% set was_interrupted = printer.save_variables.variables.was_interrupted | string %}
{% set was_interrupted = printer.save_variables.variables.was_interrupted | default(False) | string %}
{% set enable_recovery = printer.save_variables.variables.power_loss_recovery | default(Ture) | string %}
{% if enable_recovery != "False" and was_interrupted == "True" %}
RESPOND TYPE=command MSG="action:prompt_begin "
@ -961,7 +961,7 @@ gcode:
[gcode_shell_command _CLEAR_PLR]
command: sh /home/klipper/klipper/scripts/clear_plr.sh
timeout: 5.
verbose: True
verbose: False
[gcode_macro _CLEAR_LAST_FILE]
gcode:
@ -979,20 +979,26 @@ gcode:
[gcode_shell_command _POWER_LOSS_RECOVERY]
command: /home/klipper/klipper/scripts/plr.sh
timeout: 420.
verbose: True
verbose: False
[gcode_macro _RESUME_INTERRUPTED]
gcode:
{% set sv = printer.save_variables.variables %}
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
{% set park_dz = client.custom_park_dz|default(2.0)|abs %}
RESPOND TYPE=command MSG="action:prompt_end"
SET_GCODE_OFFSET Z=0 MOVE=0
{% set z_height = params.Z_HEIGHT|default(printer.save_variables.variables.power_resume_z)|float %}
{% set is_paused = printer.save_variables.variables.power_loss_paused|default(False) %}
{% set last_file = params.GCODE_FILE|default(printer.save_variables.variables.last_file)|string %}
{% set z_offset = park_dz if is_paused else 0 %}
M118 Initiating recovery of the last print task
RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\" \"{z_offset}\""
{% set z_height = params.Z_HEIGHT|default(sv.power_resume_z)|float %}
{% set is_paused = sv.power_loss_paused|default(False) %}
{% set last_file = params.GCODE_FILE|default(sv.last_file)|string %}
{% set hotend = sv.power_resume_extruder|default("extruder")%}
{% set z_offset = sv.nozzle_z_offset_val|default(0)|float %}
{% set z_offset_total = park_dz if is_paused else 0 %}
{% if hotend == "extruder1" %}
{% set z_offset_total = z_offset_total + z_offset %}
{% endif %}
M118 Recovery in progress, please wait
RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\" \"{z_offset_total}\""
SDCARD_PRINT_FILE FILENAME=.plr/"{last_file}"
SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False

View File

@ -20,8 +20,7 @@ sed -i 's/Z\./Z0\./g' /home/klipper/plrtmpA.$$
z_pos=$(echo "${1} + ${3}" | bc)
cat /home/klipper/plrtmpA.$$ | sed -e '1,/Z'${1}'/ d' | sed -ne '/ Z/,$ p' | grep -m 1 ' Z' | sed -ne "s/.* Z\([^ ]*\).*/SET_KINEMATIC_POSITION Z=${z_pos}/p" > ${PLR_PATH}/"${plr}"
cat /home/klipper/plrtmpA.$$ | sed '/ Z'${1}'/q' | sed -ne '/\(M104\|M140\|M109\|M190\|M106\)/p' >> ${PLR_PATH}/"${plr}"
cat /home/klipper/plrtmpA.$$ | sed '/ Z'${1}'/q' | sed -ne '/\(M104\|M140\|M109\|M190\)/p' >> ${PLR_PATH}/"${plr}"
line=$(cat /home/klipper/plrtmpA.$$ | sed '/ Z'${1}'/q' | sed -n '/START_PRINT/p')
@ -71,17 +70,25 @@ echo 'G28 X Y' >> ${PLR_PATH}/"${plr}"
cat /home/klipper/plrtmpA.$$ | sed '/ Z'${1}'/q' | sed -ne '/\(ACTIVATE_COPY_MODE\|ACTIVATE_MIRROR_MODE\)/p' >> ${PLR_PATH}/"${plr}"
echo 'G1 X5' >> ${PLR_PATH}/"${plr}"
echo 'G1 Y5' >> ${PLR_PATH}/"${plr}"
cat /home/klipper/plrtmpA.$$ | sed -n '1,/Z'"${1}"'/p'| tac | grep -m 1 -o '^[T][01]' >> ${PLR_PATH}/"${plr}"
echo 'G91' >> ${PLR_PATH}/"${plr}"
echo 'G1 Z-5' >> ${PLR_PATH}/"${plr}"
echo 'G90' >> ${PLR_PATH}/"${plr}"
echo 'M106 S204' >> ${PLR_PATH}/"${plr}"
#tac /home/klipper/plrtmpA.$$ | sed -e '/ Z'${1}'[^0-9]*$/q' | tac | tail -n+2 | sed -ne '/ Z/,$ p' >> ${PLR_PATH}/"${plr}"
first_line=$(cat /home/klipper/plrtmpA.$$ |sed -e '1,/Z'${1}'/ d' | sed -ne '/ Z/,$ p' | grep -m 1 ' Z' | grep -E 'F[0-9]+' | sed -E 's/F[0-9]+/F3000/g')
if [ "${first_line}" = "" ];then
cat /home/klipper/plrtmpA.$$ | sed -e '1,/Z'${1}'/ d' | sed -ne '/ Z/,$ p' >> ${PLR_PATH}/"${plr}"
else
line=$(cat /home/klipper/plrtmpA.$$ | sed -e '1,/Z'${1}'/ d' | sed -ne '/ Z/,$ p' | grep -m 1 ' Z')
z_pos=$(echo "$line" | sed -n 's/.*Z\([0-9.]*\).*/\1/p')
if [[ ${1} != $z_pos ]]; then
first_line=$(cat /home/klipper/plrtmpA.$$ |sed -e '1,/Z'${1}'/ { /Z'${1}'/!d }' | sed -ne '/ Z/,$ p' | grep -m 1 ' Z' | grep -E 'F[0-9]+' | sed -E 's/F[0-9]+/F3000/g')
echo ${first_line} >> ${PLR_PATH}/"${plr}"
cat /home/klipper/plrtmpA.$$ | sed -e '1,/Z'${1}'/ { /Z'${1}'/!d }' | sed -ne '/ Z/,$ p' | tail -n +2 >> ${PLR_PATH}/"${plr}"
else
echo ${first_line} >> ${PLR_PATH}/"${plr}"
cat /home/klipper/plrtmpA.$$ | sed -e '1,/Z'${1}'/ d' | sed -ne '/ Z/,$ p' | tail -n +2 >> ${PLR_PATH}/"${plr}"
fi
fi
rm /home/klipper/plrtmpA.$$