From 28884f05d0fbf257cbe6c4fa1cd208c25ff62b03 Mon Sep 17 00:00:00 2001 From: zkk Date: Wed, 7 May 2025 09:20:14 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20=E6=96=B0=E5=A2=9E=E5=BC=80=E9=97=A8=E6=A3=80?= =?UTF-8?q?=E6=B5=8B=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- printer_config/D1000/1.1/door_detect.cfg | 1 + printer_config/D1000/base.cfg | 125 +++++++++++++----- printer_config/D600Pro2/1.1/door_detect.cfg | 1 + printer_config/D600Pro2/base.cfg | 138 ++++++++++++++------ printer_config/F430NX/base.cfg | 58 +++++--- printer_config/module/door_detect.cfg | 32 +++++ 6 files changed, 260 insertions(+), 95 deletions(-) create mode 120000 printer_config/D1000/1.1/door_detect.cfg create mode 120000 printer_config/D600Pro2/1.1/door_detect.cfg create mode 100644 printer_config/module/door_detect.cfg diff --git a/printer_config/D1000/1.1/door_detect.cfg b/printer_config/D1000/1.1/door_detect.cfg new file mode 120000 index 00000000..7f384b92 --- /dev/null +++ b/printer_config/D1000/1.1/door_detect.cfg @@ -0,0 +1 @@ +../../module/door_detect.cfg \ No newline at end of file diff --git a/printer_config/D1000/base.cfg b/printer_config/D1000/base.cfg index ee778b15..4276e197 100644 --- a/printer_config/D1000/base.cfg +++ b/printer_config/D1000/base.cfg @@ -9,6 +9,10 @@ filename: ~/printer_data/config/config_variables.cfg [exclude_object] +[board_pins] +aliases: + DOOR_PIN=PC5 + [gcode_arcs] resolution: 1.0 @@ -103,14 +107,16 @@ position_min: -4 homing_speed: 10 second_homing_speed: 1 homing_retract_dist: 2.0 +step_pulse_duration: 0.000005 [heater_bed] heater_pin: PD12 sensor_type: Generic 3950 sensor_pin: PC0 max_power: 1.0 -min_temp: 0 -max_temp: 130 +min_temp: -20 +max_temp: 100 +overshoot: 10 # control: pid # pid_kp: 17.22 # pid_ki: 0.9 @@ -127,8 +133,9 @@ heater_pin:PD15 max_power:1.0 sensor_type: Generic 3950 sensor_pin:PC3 -min_temp: 0 -max_temp: 70 +min_temp: -20 +max_temp: 60 +overshoot: 10 pwm_cycle_time: 0.3 # control: pid # pid_kp: 30.68 @@ -246,8 +253,9 @@ max_extrude_only_accel: 1000.0 max_extrude_cross_section:5 heater_pin: tool:PC6 max_power: 1.0 -min_temp: 0 -max_temp: 435 +min_temp: -20 +max_temp: 420 +overshoot: 20 min_extrude_temp: 180 pressure_advance: 0.03 pressure_advance_smooth_time:0.040 @@ -295,8 +303,9 @@ max_extrude_only_accel: 1000.0 max_extrude_cross_section:5 heater_pin: tool:PC7 max_power: 1.0 -min_temp: 0 -max_temp: 435 +min_temp: -20 +max_temp: 420 +overshoot: 20 min_extrude_temp: 180 pressure_advance: 0.032 pressure_advance_smooth_time:0.040 @@ -363,7 +372,10 @@ gcode: [gcode_macro T0] gcode: - {% set filament_insert = printer["filament_switch_sensor extruder"].filament_detected|default(False) %} + {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} + {% set filament_insert = True if client.filament_sensor|default("") == "" + else True if not printer[client.filament_sensor].enabled + else printer[client.filament_sensor].filament_detected|default(False) %} {% set printing = printer.print_stats.state == "printing" %} {% if filament_insert or printing == False %} SET_SERVO SERVO=switch_nozzle angle=135 @@ -390,7 +402,10 @@ gcode: {% set y_offset = sv.nozzle_y_offset_val|default(0)|float %} {% set z_offset = sv.nozzle_z_offset_val|default(0)|float %} {% set x_offset = x_offset - 59 %} - {% set filament_insert = printer["filament_switch_sensor extruder1"].filament_detected|default(False) %} + {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} + {% set filament_insert = True if client.filament_sensor1|default("") == "" + else True if not printer[client.filament_sensor1].enabled + else printer[client.filament_sensor1].filament_detected|default(False) %} {% set printing = (printer.print_stats.state == "printing") %} {% if filament_insert or printing == False %} SET_SERVO SERVO=switch_nozzle angle=135 @@ -654,13 +669,14 @@ gcode: [gcode_macro _USER_PAUSE] gcode: - {% set extruderTools = [('extruder', 'last_extruder_temp'), - ('extruder1', 'last_extruder1_temp')] %} + {% set heaters = [('extruder', 'last_extruder_temp'), + ('extruder1', 'last_extruder1_temp'), + ('heater_bed', 'last_bed_temp')] %} {% set act = printer.gcode_move.gcode_position %} SAVE_VARIABLE VARIABLE=power_resume_z VALUE={act.z} - {% for extruder_name, name in extruderTools %} - {% set temp = printer[extruder_name].target if extruder_name in printer else 0 %} - {% set restore = False if printer[extruder_name] == '' + {% for heater, name in heaters %} + {% set temp = printer[heater].target if heater in printer else 0 %} + {% set restore = False if printer[heater] == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE={name} VALUE="{{'restore': restore, 'temp': temp}}" {% endfor %} @@ -711,6 +727,10 @@ gcode: {% set extruder_info = [ {'index': 0, 'name': 'last_extruder_temp'}, {'index': 1, 'name': 'last_extruder1_temp'}] %} + {% set value = printer["gcode_macro RESUME"]["last_bed_temp"].temp %} + {% if value != 0 %} + M190 S{value} + {% endif %} {% set temperature = "last_extruder_temp" if printer.toolhead.extruder == "extruder" else "last_extruder1_temp" %} {% set value = printer["gcode_macro RESUME"][temperature].temp %} {% if printer[printer.toolhead.extruder].temperature < value-3 %} @@ -770,11 +790,28 @@ gcode: {% endif %} {% endif %} +[gcode_macro _REAPPLY_OFFSET] +gcode: + {% set re_extruder = printer['gcode_macro RESUME'].resume_extruder|default("extruder") %} + {% set svv = printer.save_variables.variables %} + {% set x_offset = svv.nozzle_x_offset_val|default(0)|float %} + {% set y_offset = svv.nozzle_y_offset_val|default(0)|float %} + {% set z_offset = svv.nozzle_z_offset_val|default(0)|float %} + {% set x_offset = x_offset - 59 %} + {% set is_extruder = printer.toolhead.extruder == "extruder" %} + + {% if printer.toolhead.extruder!= re_extruder %} + SET_GCODE_OFFSET Z={0 if is_extruder else z_offset} MOVE=1 + SET_GCODE_OFFSET Y={0 if is_extruder else y_offset} + SET_GCODE_OFFSET X={0 if is_extruder else x_offset} + {% endif %} + [gcode_macro RESUME] description: Resume the actual running print rename_existing: RESUME_BASE variable_last_extruder_temp: {'restore': False, 'temp': 0} variable_last_extruder1_temp: {'restore': False, 'temp': 0} +variable_last_bed_temp: {'restore': False, 'temp': 0} variable_restore_idle_timeout: 0 variable_idle_state: False variable_filament_state: "" @@ -786,28 +823,41 @@ gcode: {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set do_resume = False %} {% set runout = True %} - ##### end of definitions ##### - _FILAMENT_UPDATE - _RESUME_EXTRUDER AUTOSHIFT={autoshift} - _EXTRUDER_TEMPERATURE_HANDLE + {% macro resume_action() %} + _FILAMENT_UPDATE + _RESUME_EXTRUDER AUTOSHIFT={autoshift} + _EXTRUDER_TEMPERATURE_HANDLE - {% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config - else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder - #### Printer comming from timeout idle state #### - {% if printer.idle_timeout.state|upper == "IDLE" or idle_state or autoshift %} - SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False + {% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config + else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder + #### Printer comming from timeout idle state #### + {% if printer.idle_timeout.state|upper == "IDLE" or idle_state or autoshift %} + SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False + {% endif %} {% if last_extruder_temp.restore or last_extruder1_temp.restore %} - # we need to use the unicode (\u00B0) for the ° as py2 env's would throw an error otherwise - {client.user_temp_macro|default("")} + { client.user_temp_macro|default("") } {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% endif %} - #### Printer comming out of regular PAUSE state #### - {% elif can_extrude %} - {% set do_resume = True %} + _ACT_RESUME DO_RESUME={ do_resume } + {% endmacro %} + {% if printer['gcode_button _door_detection'] %} + {% set sv = printer.save_variables.variables %} + {% set door_function = sv.door_detect|default("Disabled") %} + {% set door_state = printer['gcode_button _door_detection'].state|default('released')|lower %} + + {% if door_function == 'Pause Print' and door_state == 'released' %} + RESPOND TYPE=command MSG="action:prompt_begin" + RESPOND TYPE=command MSG="action:prompt_text Please close the door and click Resume to proceed." + RESPOND TYPE=command MSG="action:prompt_footer_button Ok|RESPOND TYPE=command MSG=action:prompt_end" + RESPOND TYPE=command MSG="action:prompt_show" + {% else %} + { resume_action() } + {% endif %} + {% else %} + { resume_action() } {% endif %} - _ACT_RESUME DO_RESUME={do_resume} [gcode_macro _ACT_RESUME] gcode: @@ -826,6 +876,7 @@ gcode: {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} + _REAPPLY_OFFSET SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE="None" {% else %} {% set msg = "Left" if printer.toolhead.extruder == "extruder" else "Right" %} @@ -928,9 +979,9 @@ gcode: RUN_SHELL_COMMAND CMD=_CLEAR_PLR SAVE_VARIABLE VARIABLE=last_file VALUE='"{ filename }"' SAVE_VARIABLE VARIABLE=filepath VALUE='"{ filepath }"' - {% set zero_vars = ['power_resume_x', 'power_resume_y', 'power_resume_z'] %} + {% set zero_vars = ['power_resume_position', 'power_resume_line'] %} {% for var in zero_vars %} - SAVE_VARIABLE VARIABLE={var} VALUE=0 + SAVE_VARIABLE VARIABLE={var} VALUE=0 {% endfor %} SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False @@ -946,9 +997,9 @@ gcode: {% 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(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 filepath = params.GCODE_FILE|default(sv.filepath)|string %} + {% set last_file = filepath.split('/')[-1] %} {% 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 %} @@ -958,7 +1009,7 @@ gcode: SET_STEPPER_ENABLE STEPPER=stepper_z ENABLE=1 G4 P300 M118 Recovery in progress, please wait - RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\" \"{z_offset_total}\"" + RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_offset_total}" SDCARD_PRINT_FILE FILENAME=.plr/"{last_file}" SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False @@ -1140,4 +1191,6 @@ gcode: [gcode_macro _NOZZLE_XY_OFFSET_CALIBRATE] gcode: RUN_SHELL_COMMAND CMD=fetch_assets PARAMS="\"Gcode\" \"D1000HS\" \"NozzleAglin.zip\"" - SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode" \ No newline at end of file + SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode" + +[include module/*.cfg] diff --git a/printer_config/D600Pro2/1.1/door_detect.cfg b/printer_config/D600Pro2/1.1/door_detect.cfg new file mode 120000 index 00000000..7f384b92 --- /dev/null +++ b/printer_config/D600Pro2/1.1/door_detect.cfg @@ -0,0 +1 @@ +../../module/door_detect.cfg \ No newline at end of file diff --git a/printer_config/D600Pro2/base.cfg b/printer_config/D600Pro2/base.cfg index b28c7c23..1c7fa12b 100644 --- a/printer_config/D600Pro2/base.cfg +++ b/printer_config/D600Pro2/base.cfg @@ -9,6 +9,10 @@ filename: ~/printer_data/config/config_variables.cfg [exclude_object] +[board_pins] +aliases: + DOOR_PIN=PC5 + [gcode_arcs] resolution: 1.0 @@ -103,14 +107,16 @@ position_min: -4 homing_speed: 10 second_homing_speed: 1 homing_retract_dist: 2.0 +step_pulse_duration: 0.000005 [heater_bed] heater_pin: PD12 sensor_type: Generic 3950 sensor_pin: PC0 max_power: 1.0 -min_temp: 0 -max_temp: 130 +min_temp: -20 +max_temp: 100 +overshoot: 10 # control: pid # pid_kp: 59.368 # pid_ki: 1.656 @@ -127,8 +133,9 @@ heater_pin:PD15 max_power:1.0 sensor_type: Generic 3950 sensor_pin:PC3 -min_temp: 0 -max_temp: 80 +min_temp: -20 +max_temp: 70 +overshoot: 10 pwm_cycle_time: 0.3 # control: pid # pid_kp: 30.68 @@ -246,8 +253,9 @@ max_extrude_only_accel: 1000.0 max_extrude_cross_section:5 heater_pin: tool:PC6 max_power: 1.0 -min_temp: 0 -max_temp: 435 +min_temp: -20 +max_temp: 420 +overshoot: 20 min_extrude_temp: 180 pressure_advance: 0.03 pressure_advance_smooth_time:0.040 @@ -295,8 +303,9 @@ max_extrude_only_accel: 1000.0 max_extrude_cross_section:5 heater_pin: tool:PC7 max_power: 1.0 -min_temp: 0 -max_temp: 435 +min_temp: -20 +max_temp: 420 +overshoot: 20 min_extrude_temp: 180 pressure_advance: 0.032 pressure_advance_smooth_time:0.040 @@ -363,7 +372,10 @@ gcode: [gcode_macro T0] gcode: - {% set filament_insert = printer["filament_switch_sensor extruder"].filament_detected|default(False) %} + {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} + {% set filament_insert = True if client.filament_sensor|default("") == "" + else True if not printer[client.filament_sensor].enabled + else printer[client.filament_sensor].filament_detected|default(False) %} {% set printing = printer.print_stats.state == "printing" %} {% if filament_insert or printing == False %} SET_SERVO SERVO=switch_nozzle angle=135 @@ -390,7 +402,10 @@ gcode: {% set y_offset = sv.nozzle_y_offset_val|default(0)|float %} {% set z_offset = sv.nozzle_z_offset_val|default(0)|float %} {% set x_offset = x_offset - 59 %} - {% set filament_insert = printer["filament_switch_sensor extruder1"].filament_detected|default(False) %} + {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} + {% set filament_insert = True if client.filament_sensor1|default("") == "" + else True if not printer[client.filament_sensor1].enabled + else printer[client.filament_sensor1].filament_detected|default(False) %} {% set printing = (printer.print_stats.state == "printing") %} {% if filament_insert or printing == False %} SET_SERVO SERVO=switch_nozzle angle=135 @@ -417,7 +432,7 @@ gcode: [gcode_macro PROBE_SERVO_CLOSE] gcode: - SET_SERVO SERVO=probe_servo angle=130 + SET_SERVO SERVO=probe_servo angle=170 G4 P2000 [gcode_macro _START_PRINT_BASE] @@ -538,12 +553,18 @@ gcode: {% set do_z = 'Z' in params|string %} {% if do_x %} + SET_STEPPER_ENABLE STEPPER=stepper_x ENABLE=1 + G4 P300 {% set homing_cmd = 'X ' %} {% endif %} {% if do_y %} + SET_STEPPER_ENABLE STEPPER=stepper_y ENABLE=1 + G4 P300 {% set homing_cmd = homing_cmd + 'Y ' %} {% endif %} {% if do_z %} + SET_STEPPER_ENABLE STEPPER=stepper_z ENABLE=1 + G4 P300 {% if 'x' not in printer.toolhead.homed_axes|lower or 'y' not in printer.toolhead.homed_axes|lower %} {% set homing_cmd = 'X Y Z' %} {% else %} @@ -551,6 +572,10 @@ gcode: {% endif %} {% endif %} {% if not homing_cmd %} + SET_STEPPER_ENABLE STEPPER=stepper_x ENABLE=1 + SET_STEPPER_ENABLE STEPPER=stepper_y ENABLE=1 + SET_STEPPER_ENABLE STEPPER=stepper_z ENABLE=1 + G4 P300 C28 _ACTIVATE_DEFAULT_EXTRUDER {% else %} @@ -645,13 +670,14 @@ gcode: [gcode_macro _USER_PAUSE] gcode: - {% set extruderTools = [('extruder', 'last_extruder_temp'), - ('extruder1', 'last_extruder1_temp')] %} + {% set heaters = [('extruder', 'last_extruder_temp'), + ('extruder1', 'last_extruder1_temp'), + ('heater_bed', 'last_bed_temp')] %} {% set act = printer.gcode_move.gcode_position %} SAVE_VARIABLE VARIABLE=power_resume_z VALUE={act.z} - {% for extruder_name, name in extruderTools %} - {% set temp = printer[extruder_name].target if extruder_name in printer else 0 %} - {% set restore = False if printer[extruder_name] == '' + {% for heater, name in heaters %} + {% set temp = printer[heater].target if heater in printer else 0 %} + {% set restore = False if printer[heater] == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE={name} VALUE="{{'restore': restore, 'temp': temp}}" {% endfor %} @@ -702,6 +728,10 @@ gcode: {% set extruder_info = [ {'index': 0, 'name': 'last_extruder_temp'}, {'index': 1, 'name': 'last_extruder1_temp'}] %} + {% set value = printer["gcode_macro RESUME"]["last_bed_temp"].temp %} + {% if value != 0 %} + M190 S{value} + {% endif %} {% set temperature = "last_extruder_temp" if printer.toolhead.extruder == "extruder" else "last_extruder1_temp" %} {% set value = printer["gcode_macro RESUME"][temperature].temp %} {% if printer[printer.toolhead.extruder].temperature < value-3 %} @@ -761,11 +791,28 @@ gcode: {% endif %} {% endif %} +[gcode_macro _REAPPLY_OFFSET] +gcode: + {% set re_extruder = printer['gcode_macro RESUME'].resume_extruder|default("extruder") %} + {% set svv = printer.save_variables.variables %} + {% set x_offset = svv.nozzle_x_offset_val|default(0)|float %} + {% set y_offset = svv.nozzle_y_offset_val|default(0)|float %} + {% set z_offset = svv.nozzle_z_offset_val|default(0)|float %} + {% set x_offset = x_offset - 59 %} + {% set is_extruder = printer.toolhead.extruder == "extruder" %} + + {% if printer.toolhead.extruder!= re_extruder %} + SET_GCODE_OFFSET Z={0 if is_extruder else z_offset} MOVE=1 + SET_GCODE_OFFSET Y={0 if is_extruder else y_offset} + SET_GCODE_OFFSET X={0 if is_extruder else x_offset} + {% endif %} + [gcode_macro RESUME] description: Resume the actual running print rename_existing: RESUME_BASE variable_last_extruder_temp: {'restore': False, 'temp': 0} variable_last_extruder1_temp: {'restore': False, 'temp': 0} +variable_last_bed_temp: {'restore': False, 'temp': 0} variable_restore_idle_timeout: 0 variable_idle_state: False variable_filament_state: "" @@ -777,29 +824,41 @@ gcode: {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} {% set do_resume = False %} {% set runout = True %} - ##### end of definitions ##### - _FILAMENT_UPDATE - _RESUME_EXTRUDER AUTOSHIFT={autoshift} - _EXTRUDER_TEMPERATURE_HANDLE + {% macro resume_action() %} + _FILAMENT_UPDATE + _RESUME_EXTRUDER AUTOSHIFT={autoshift} + _EXTRUDER_TEMPERATURE_HANDLE - {% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config - else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder - - #### Printer comming from timeout idle state #### - {% if printer.idle_timeout.state|upper == "IDLE" or idle_state or autoshift %} - SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False + {% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config + else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder + #### Printer comming from timeout idle state #### + {% if printer.idle_timeout.state|upper == "IDLE" or idle_state or autoshift %} + SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False + {% endif %} {% if last_extruder_temp.restore or last_extruder1_temp.restore %} - # we need to use the unicode (\u00B0) for the ° as py2 env's would throw an error otherwise - {client.user_temp_macro|default("")} + { client.user_temp_macro|default("") } {% set do_resume = True %} {% elif can_extrude %} {% set do_resume = True %} {% endif %} - #### Printer comming out of regular PAUSE state #### - {% elif can_extrude %} - {% set do_resume = True %} + _ACT_RESUME DO_RESUME={ do_resume } + {% endmacro %} + {% if printer['gcode_button _door_detection'] %} + {% set sv = printer.save_variables.variables %} + {% set door_function = sv.door_detect|default("Disabled") %} + {% set door_state = printer['gcode_button _door_detection'].state|default('released')|lower %} + + {% if door_function == 'Pause Print' and door_state == 'released' %} + RESPOND TYPE=command MSG="action:prompt_begin" + RESPOND TYPE=command MSG="action:prompt_text Please close the door and click Resume to proceed." + RESPOND TYPE=command MSG="action:prompt_footer_button Ok|RESPOND TYPE=command MSG=action:prompt_end" + RESPOND TYPE=command MSG="action:prompt_show" + {% else %} + { resume_action() } + {% endif %} + {% else %} + { resume_action() } {% endif %} - _ACT_RESUME DO_RESUME={do_resume} [gcode_macro _ACT_RESUME] gcode: @@ -818,6 +877,7 @@ gcode: {client.user_resume_macro|default("")} _CLIENT_EXTRUDE RESUME_BASE VELOCITY={params.VELOCITY|default(sp_move)} + _REAPPLY_OFFSET SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=change_runout VALUE="None" {% else %} {% set msg = "Left" if printer.toolhead.extruder == "extruder" else "Right" %} @@ -920,9 +980,9 @@ gcode: RUN_SHELL_COMMAND CMD=_CLEAR_PLR SAVE_VARIABLE VARIABLE=last_file VALUE='"{ filename }"' SAVE_VARIABLE VARIABLE=filepath VALUE='"{ filepath }"' - {% set zero_vars = ['power_resume_x', 'power_resume_y', 'power_resume_z'] %} + {% set zero_vars = ['power_resume_position', 'power_resume_line'] %} {% for var in zero_vars %} - SAVE_VARIABLE VARIABLE={var} VALUE=0 + SAVE_VARIABLE VARIABLE={var} VALUE=0 {% endfor %} SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False @@ -938,9 +998,9 @@ gcode: {% 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(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 filepath = params.GCODE_FILE|default(sv.filepath)|string %} + {% set last_file = filepath.split('/')[-1] %} {% 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 %} @@ -950,7 +1010,7 @@ gcode: SET_STEPPER_ENABLE STEPPER=stepper_z ENABLE=1 G4 P300 M118 Recovery in progress, please wait - RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\" \"{z_offset_total}\"" + RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_offset_total}" SDCARD_PRINT_FILE FILENAME=.plr/"{last_file}" SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False @@ -1132,4 +1192,6 @@ gcode: [gcode_macro _NOZZLE_XY_OFFSET_CALIBRATE] gcode: RUN_SHELL_COMMAND CMD=fetch_assets PARAMS="\"Gcode\" \"D600Pro2HS\" \"NozzleAglin.zip\"" - SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode" \ No newline at end of file + SDCARD_PRINT_FILE FILENAME=".PresetModel/NozzleAglin.gcode" + +[include module/*.cfg] diff --git a/printer_config/F430NX/base.cfg b/printer_config/F430NX/base.cfg index a16495cc..0b30881f 100644 --- a/printer_config/F430NX/base.cfg +++ b/printer_config/F430NX/base.cfg @@ -48,7 +48,7 @@ square_corner_velocity: 5.0 speed: 100 horizontal_move_z: 7 mesh_min: 34.6,17.4 -mesh_max: 420, 300 +mesh_max: 420, 290 probe_count: 5,4 mesh_pps: 2,2 fade_end: 5 @@ -65,7 +65,7 @@ full_steps_per_rotation: 200 endstop_pin: ^PC10 position_min: -20 position_endstop: -20 -position_max: 475 +position_max: 400 homing_speed: 100 homing_retract_dist: 10 step_pulse_duration:0.0000025 @@ -152,8 +152,9 @@ heater_pin: PD12 sensor_type: Generic 3950 sensor_pin: PC0 max_power: 1.0 -min_temp: 0 -max_temp: 150 +min_temp: -20 +max_temp: 140 +overshoot: 10 # control: pid # pid_kp: 40.673 # pid_ki: 0.837 @@ -170,8 +171,9 @@ heater_pin: PD15 max_power: 1.0 sensor_type: Generic 3950 sensor_pin: PC3 -min_temp: 0 -max_temp: 80 +min_temp: -20 +max_temp: 70 +overshoot: 10 # control: pid # pid_kp: 30.68 # pid_ki: 0.21 @@ -203,7 +205,7 @@ kick_start_time: 1.0 pin: PC6 max_power: 0.8 heater: -stepper: stepper_x, stepper_z, dual_carriage +stepper: stepper_x, stepper_z, dual_carriage idle_speed: 0.5 [delayed_gcode INIT_LIGHT] @@ -298,8 +300,9 @@ max_extrude_only_accel: 1000.0 max_extrude_cross_section:5 heater_pin: L_tool:PA8 max_power: 1.0 -min_temp: 0 +min_temp: -20 max_temp: 450 +overshoot: 20 min_extrude_temp: 150 pressure_advance: 0.032 pressure_advance_smooth_time:0.040 @@ -391,8 +394,9 @@ max_extrude_only_accel: 1000.0 max_extrude_cross_section:5 heater_pin: R_tool:PA8 max_power: 1.0 -min_temp: 0 +min_temp: -20 max_temp: 450 +overshoot: 20 min_extrude_temp: 150 pressure_advance: 0.032 pressure_advance_smooth_time:0.040 @@ -442,7 +446,10 @@ gcode: [gcode_macro T0] gcode: - {% set filament_insert = printer["filament_switch_sensor extruder"].filament_detected|default(False) %} + {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} + {% set filament_insert = True if client.filament_sensor|default("") == "" + else True if not printer[client.filament_sensor].enabled + else printer[client.filament_sensor].filament_detected|default(False) %} {% set printing = printer.print_stats.state == "printing" %} {% if filament_insert or printing == False %} {% if "x" not in printer.toolhead.homed_axes %} @@ -490,7 +497,10 @@ gcode: {% set y_offset = svv.nozzle_y_offset_val|default(0)|float %} {% set z_offset = svv.nozzle_z_offset_val|default(0)|float %} - {% set filament_insert = printer["filament_switch_sensor extruder1"].filament_detected|default(False) %} + {% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %} + {% set filament_insert = True if client.filament_sensor1|default("") == "" + else True if not printer[client.filament_sensor1].enabled + else printer[client.filament_sensor1].filament_detected|default(False) %} {% set printing = (printer.print_stats.state == "printing") %} {% if filament_insert or printing == False %} {% if "x" not in printer.toolhead.homed_axes %} @@ -838,13 +848,14 @@ gcode: [gcode_macro _USER_PAUSE] gcode: - {% set extruderTools = [('extruder', 'last_extruder_temp'), - ('extruder1', 'last_extruder1_temp')] %} + {% set heaters = [('extruder', 'last_extruder_temp'), + ('extruder1', 'last_extruder1_temp'), + ('heater_bed', 'last_bed_temp')] %} {% set act = printer.gcode_move.gcode_position %} SAVE_VARIABLE VARIABLE=power_resume_z VALUE={act.z} - {% for extruder_name, name in extruderTools %} - {% set temp = printer[extruder_name].target if extruder_name in printer else 0 %} - {% set restore = False if printer[extruder_name] == '' + {% for heater, name in heaters %} + {% set temp = printer[heater].target if heater in printer else 0 %} + {% set restore = False if printer[heater] == '' else True if params.RESTORE|default(1)|int == 1 else False %} SET_GCODE_VARIABLE MACRO=RESUME VARIABLE={name} VALUE="{{'restore': restore, 'temp': temp}}" {% endfor %} @@ -864,6 +875,10 @@ gcode: {% set extruder_info = [ {'index': 0, 'name': 'last_extruder_temp'}, {'index': 1, 'name': 'last_extruder1_temp'}] %} + {% set value = printer["gcode_macro RESUME"]["last_bed_temp"].temp %} + {% if value != 0 %} + M190 S{value} + {% endif %} {% set temperature = "last_extruder_temp" if printer.toolhead.extruder == "extruder" else "last_extruder1_temp" %} {% set value = printer["gcode_macro RESUME"][temperature].temp %} {% for info in extruder_info %} @@ -980,6 +995,7 @@ description: Resume the actual running print rename_existing: RESUME_BASE variable_last_extruder_temp: {'restore': False, 'temp': 0} variable_last_extruder1_temp: {'restore': False, 'temp': 0} +variable_last_bed_temp: {'restore': False, 'temp': 0} variable_restore_idle_timeout: 0 variable_idle_state: False variable_resume_dual: False @@ -1146,9 +1162,9 @@ gcode: RUN_SHELL_COMMAND CMD=_CLEAR_PLR SAVE_VARIABLE VARIABLE=last_file VALUE='"{ filename }"' SAVE_VARIABLE VARIABLE=filepath VALUE='"{ filepath }"' - {% set zero_vars = ['power_resume_x', 'power_resume_y', 'power_resume_z'] %} + {% set zero_vars = ['power_resume_position', 'power_resume_line'] %} {% for var in zero_vars %} - SAVE_VARIABLE VARIABLE={var} VALUE=0 + SAVE_VARIABLE VARIABLE={var} VALUE=0 {% endfor %} SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False @@ -1164,9 +1180,9 @@ gcode: {% 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(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 filepath = params.GCODE_FILE|default(sv.filepath)|string %} + {% set last_file = filepath.split('/')[-1] %} {% 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 %} @@ -1176,7 +1192,7 @@ gcode: SET_STEPPER_ENABLE STEPPER=stepper_z ENABLE=1 G4 P300 M118 Recovery in progress, please wait - RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_height} \"{last_file}\" \"{z_offset_total}\"" + RUN_SHELL_COMMAND CMD=_POWER_LOSS_RECOVERY PARAMS="{z_offset_total}" SDCARD_PRINT_FILE FILENAME=.plr/"{last_file}" SAVE_VARIABLE VARIABLE=was_interrupted VALUE=False diff --git a/printer_config/module/door_detect.cfg b/printer_config/module/door_detect.cfg new file mode 100644 index 00000000..bbafd803 --- /dev/null +++ b/printer_config/module/door_detect.cfg @@ -0,0 +1,32 @@ +[gcode_button _door_detection] +pin: DOOR_PIN +press_gcode: +release_gcode: + {% set sv = printer.save_variables.variables %} + {% set door_function = sv.door_detect|default("Disabled") %} + {% if door_function != "Disabled" %} + M118 Printer door is opening! + {% endif %} + _DOOR_DETECTION_HANDLE STATUS='open' + +[gcode_macro _DOOR_DETECTION_HANDLE] +gcode: + {% set sv = printer.save_variables.variables %} + {% set door_function = sv.door_detect|default("Disabled") %} + {% set status = params.STATUS|default("close") %} + {% set printing_state = printer.print_stats.state %} + {% if status=='open' and printing_state == 'printing' %} + {% if door_function == 'Emergency Stop' %} + M112 + {% elif door_function == 'Pause Print' %} + PAUSE + {% endif %} + {% endif %} + +[gcode_macro _DOOR_START_PRINT_BASE] +description: Call handle door is open when starting to print +gcode: + RESPOND TYPE=command MSG="action:prompt_begin" + RESPOND TYPE=command MSG="action:prompt_text Printer door is opened. Please close the door and then start printing." + RESPOND TYPE=command MSG="action:prompt_footer_button Ok|RESPOND TYPE=command MSG=action:prompt_end" + RESPOND TYPE=command MSG="action:prompt_show"