This commit is contained in:
whb0514
2025-08-06 14:12:07 +08:00
parent f2778023df
commit ec595fc903
9 changed files with 70 additions and 173 deletions

View File

@@ -9,15 +9,15 @@ QIDI PLUS4 is a 3D printer that uses Klipper as its foundation. This repository
For convenience, QIDI provides version-specific packaged files. Please download the necessary compressed package file prefixed with "PLUS4." Select the appropriate branch for download, with each branch name reflecting the corresponding version. For convenience, QIDI provides version-specific packaged files. Please download the necessary compressed package file prefixed with "PLUS4." Select the appropriate branch for download, with each branch name reflecting the corresponding version.
## V1.7.0 Update Content ## V1.7.1 Update Content
**Note:** **Note:**
After updating, the Klipper configuration file will be replaced. The previous configuration file will be backed up as `printer_{datetime}.cfg`, printer recalibration will be required. After updating, the Klipper configuration file will be replaced. The previous configuration file will be backed up as `printer_{datetime}.cfg`, printer recalibration will be required.
If you have a multi-color box, it is recommended to disconnect the box power supply. After the firmware update is completed, connect the multi-color box again, and the box will automatically update the firmware If you have a multi-color box, it is recommended to disconnect the box power supply. After the firmware update is completed, connect the multi-color box again, and the box will automatically update the firmware
1. Support multi-color printing related functions. 1. Optimized the resume printing function.
2. Fixed the bug that printing cannot be paused during printing. 2. Optimized the error message for material wrapping during printing.
## The online update version will be uploaded later. If you have already updated this version earlier, please ignore the online update prompt. ## The online update version will be uploaded later. If you have already updated this version earlier, please ignore the online update prompt.

Binary file not shown.

Binary file not shown.

View File

@@ -57,6 +57,7 @@ target_max_temp: 90
[verify_heater heater_box1] [verify_heater heater_box1]
max_error: 400 max_error: 400
check_gain_time: 600 check_gain_time: 600
is_box_heter: True
[temperature_sensor heater_temp_a_box1] [temperature_sensor heater_temp_a_box1]
sensor_type: NTC 100K MGB18-104F39050L32 sensor_type: NTC 100K MGB18-104F39050L32
@@ -70,15 +71,17 @@ sensor_pin: mcu_box1:PC2
min_temp: -100 min_temp: -100
max_temp: 130 max_temp: 130
[controller_fan heater_fan_a_box1] [box_heater_fan heater_fan_a_box1]
pin: mcu_box1:PA4 pin: mcu_box1:PA4
heater: heater_box1 heater: heater_box1
heater_temp: 35
stepper: stepper:
idle_timeout: 60 idle_timeout: 60
[controller_fan heater_fan_b_box1] [box_heater_fan heater_fan_b_box1]
pin: mcu_box1:PA5 pin: mcu_box1:PA5
heater: heater_box1 heater: heater_box1
heater_temp: 35
stepper: stepper:
idle_timeout: 60 idle_timeout: 60

View File

@@ -57,6 +57,7 @@ target_max_temp: 90
[verify_heater heater_box2] [verify_heater heater_box2]
max_error: 400 max_error: 400
check_gain_time: 600 check_gain_time: 600
is_box_heter: True
[temperature_sensor heater_temp_a_box2] [temperature_sensor heater_temp_a_box2]
sensor_type: NTC 100K MGB18-104F39050L32 sensor_type: NTC 100K MGB18-104F39050L32
@@ -70,15 +71,17 @@ sensor_pin: mcu_box2:PC2
min_temp: -100 min_temp: -100
max_temp: 130 max_temp: 130
[controller_fan heater_fan_a_box2] [box_heater_fan heater_fan_a_box2]
pin: mcu_box2:PA4 pin: mcu_box2:PA4
heater: heater_box2 heater: heater_box2
heater_temp: 35
stepper: stepper:
idle_timeout: 60 idle_timeout: 60
[controller_fan heater_fan_b_box2] [box_heater_fan heater_fan_b_box2]
pin: mcu_box2:PA5 pin: mcu_box2:PA5
heater: heater_box2 heater: heater_box2
heater_temp: 35
stepper: stepper:
idle_timeout: 60 idle_timeout: 60

View File

@@ -57,6 +57,7 @@ target_max_temp: 90
[verify_heater heater_box3] [verify_heater heater_box3]
max_error: 400 max_error: 400
check_gain_time: 600 check_gain_time: 600
is_box_heter: True
[temperature_sensor heater_temp_a_box3] [temperature_sensor heater_temp_a_box3]
sensor_type: NTC 100K MGB18-104F39050L32 sensor_type: NTC 100K MGB18-104F39050L32
@@ -70,15 +71,17 @@ sensor_pin: mcu_box3:PC2
min_temp: -100 min_temp: -100
max_temp: 130 max_temp: 130
[controller_fan heater_fan_a_box3] [box_heater_fan heater_fan_a_box3]
pin: mcu_box3:PA4 pin: mcu_box3:PA4
heater: heater_box3 heater: heater_box3
heater_temp: 35
stepper: stepper:
idle_timeout: 60 idle_timeout: 60
[controller_fan heater_fan_b_box3] [box_heater_fan heater_fan_b_box3]
pin: mcu_box3:PA5 pin: mcu_box3:PA5
heater: heater_box3 heater: heater_box3
heater_temp: 35
stepper: stepper:
idle_timeout: 60 idle_timeout: 60

View File

@@ -57,6 +57,7 @@ target_max_temp: 90
[verify_heater heater_box4] [verify_heater heater_box4]
max_error: 400 max_error: 400
check_gain_time: 600 check_gain_time: 600
is_box_heter: True
[temperature_sensor heater_temp_a_box4] [temperature_sensor heater_temp_a_box4]
sensor_type: NTC 100K MGB18-104F39050L32 sensor_type: NTC 100K MGB18-104F39050L32
@@ -70,15 +71,17 @@ sensor_pin: mcu_box4:PC2
min_temp: -100 min_temp: -100
max_temp: 130 max_temp: 130
[controller_fan heater_fan_a_box4] [box_heater_fan heater_fan_a_box4]
pin: mcu_box4:PA4 pin: mcu_box4:PA4
heater: heater_box4 heater: heater_box4
heater_temp: 35
stepper: stepper:
idle_timeout: 60 idle_timeout: 60
[controller_fan heater_fan_b_box4] [box_heater_fan heater_fan_b_box4]
pin: mcu_box4:PA5 pin: mcu_box4:PA5
heater: heater_box4 heater: heater_box4
heater_temp: 35
stepper: stepper:
idle_timeout: 60 idle_timeout: 60

View File

@@ -205,15 +205,50 @@ gcode:
_CG28 _CG28
M204 S10000 M204 S10000
{% if (printer.gcode_move.position.y) > 305 %} {% if (printer.gcode_move.position.y) > 305 %}
G1 X82 Y324 F6000 G1 X82.5 Y324 F6000
G1 X95 G1 X95
{% else %} {% else %}
G1 X82 F12000 G1 X82.5 F12000
G1 Y310 F12000 G1 Y310 F12000
G1 Y324 F600 G1 Y324 F600
G1 X95 F6000 G1 X95 F6000
{% endif %} {% endif %}
[gcode_macro EXTRUSION_AND_FLUSH]
gcode:
{% set hotendtemp = params.HOTEND|int %}
MOVE_TO_TRASH
M109 S{hotendtemp}
M83
G1 E1 F50
G1 E28.13 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E-2 F1800
{% for i in range(1,5) %}
M106 S255
M400
G4 P6000
CLEAR_FLUSH
M106 S60
G1 E34.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E-2 F1800
{% endfor %}
M106 S255
M400
G4 P6000
CLEAR_FLUSH
M106 S60
# Excute when start printing, prior to gcode file # Excute when start printing, prior to gcode file
[gcode_macro PRINT_START] [gcode_macro PRINT_START]
gcode: gcode:
@@ -247,139 +282,11 @@ gcode:
SAVE_VARIABLE VARIABLE=runout_{i} VALUE=0 SAVE_VARIABLE VARIABLE=runout_{i} VALUE=0
G4 P100 G4 P100
{% endfor %} {% endfor %}
SAVE_VARIABLE VARIABLE=extrude_state VALUE=-1
{% if printer.save_variables.variables.enable_box == 1 %} {% if printer.save_variables.variables.enable_box == 1 %}
{% set last_load_slot = printer.save_variables.variables.last_load_slot|default("slot-1") %} BOX_PRINT_START EXTRUDER={extruder} HOTENDTEMP={hotendtemp}
{% set value_t = printer.save_variables.variables["value_t" ~ extruder]|default("slot" ~ extruder) %} M400
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %} EXTRUSION_AND_FLUSH HOTEND={hotendtemp}
{% if last_load_slot != value_t and last_load_slot != "slot-1" %}
CUT_FILAMENT
MOVE_TO_TRASH
M109 S{hotendtemp}
EXTRUDER_UNLOAD SLOT={last_load_slot}
M83
G1 E18 F300
T{extruder}
G1 E1 F50
G1 E28.13 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E-2 F1800
{% for i in range(1,5) %}
M106 S255
M400
G91
G1 X-3 F60
G1 X3 F60
G90
CLEAR_FLUSH
M106 S60
G1 E34.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E-2 F1800
{% endfor %}
{% elif last_load_slot == value_t and printer.save_variables.variables.slot_sync == "slot-1" %}
MOVE_TO_TRASH
M109 S{hotendtemp}
T{extruder}
M83
G1 E1 F50
G1 E28.13 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E-2 F1800
{% for i in range(1,5) %}
M106 S255
M400
G91
G1 X-3 F60
G1 X3 F60
G90
CLEAR_FLUSH
M106 S60
G1 E34.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E-2 F1800
{% endfor %}
{% endif %}
{% else %}
{% if last_load_slot != "slot-1" %}
MOVE_TO_TRASH
M109 S{hotendtemp}
M400
EXTRUDER_UNLOAD SLOT={last_load_slot}
T{extruder}
M83
G1 E1 F50
G1 E28.13 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E-2 F1800
{% for i in range(1,5) %}
M106 S255
M400
G91
G1 X-3 F60
G1 X3 F60
G90
CLEAR_FLUSH
M106 S60
G1 E34.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E-2 F1800
{% endfor %}
{% else %}
MOVE_TO_TRASH
M109 S{hotendtemp}
T{extruder}
M83
G1 E1 F50
G1 E28.13 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E8.73 F611
G1 E0.97 F50
G1 E-2 F1800
{% for i in range(1,5) %}
M106 S255
M400
G91
G1 X-3 F60
G1 X3 F60
G90
CLEAR_FLUSH
M106 S60
G1 E34.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E10.8 F611
G1 E1.2 F50
G1 E-2 F1800
{% endfor %}
{% endif %}
{% endif %}
{% endif %} {% endif %}
{% endif %} {% endif %}
M106 S0 M106 S0
@@ -746,41 +653,19 @@ gcode:
{% if printer['pause_resume'].is_paused|int == 1 %} {% if printer['pause_resume'].is_paused|int == 1 %}
{% if printer.save_variables.variables.box_count >= 1 %} {% if printer.save_variables.variables.box_count >= 1 %}
{% if printer.save_variables.variables.enable_box == 1 %} {% if printer.save_variables.variables.enable_box == 1 %}
{% set retry_val = printer.save_variables.variables.retry_step %} TRY_RESUME_PRINT
{% if retry_val == None %}
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %}
RESUME_PRINT
{% else %}
{% if printer.save_variables.variables.is_tool_change == 1 %}
RESUME_PRINT
{% endif %}
{% endif %}
{% else %}
{% if (retry_val.startswith('QDE_004_002')
or retry_val.startswith('QDE_004_003')
or retry_val.startswith('QDE_004_004')
or retry_val.startswith('QDE_004_005')
or retry_val.startswith('QDE_004_006')
or retry_val.startswith('QDE_004_009')) %}
TRY_MOVE_AGAIN
{% else %}
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %}
RESUME_PRINT
{% else %}
{% if printer.save_variables.variables.is_tool_change == 1 %}
RESUME_PRINT
{% endif %}
{% endif %}
{% endif %}
{% endif %}
{% else %} {% else %}
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %} {% if printer['hall_filament_width_sensor'].Diameter > 0.5 %}
RESUME_PRINT RESUME_PRINT
{% else %}
M118 Printer resume failed
{% endif %} {% endif %}
{% endif %} {% endif %}
{% else %} {% else %}
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %} {% if printer['hall_filament_width_sensor'].Diameter > 0.5 %}
RESUME_PRINT RESUME_PRINT
{% else %}
M118 Printer resume failed
{% endif %} {% endif %}
{% endif %} {% endif %}
{% endif %} {% endif %}

Submodule klipper updated: ff035227c2...4bb7c63379