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.
## V1.7.0 Update Content
## V1.7.1 Update Content
**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.
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.
2. Fixed the bug that printing cannot be paused during printing.
1. Optimized the resume printing function.
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.

Binary file not shown.

Binary file not shown.

View File

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

View File

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

View File

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

View File

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

View File

@@ -205,15 +205,50 @@ gcode:
_CG28
M204 S10000
{% if (printer.gcode_move.position.y) > 305 %}
G1 X82 Y324 F6000
G1 X82.5 Y324 F6000
G1 X95
{% else %}
G1 X82 F12000
G1 X82.5 F12000
G1 Y310 F12000
G1 Y324 F600
G1 X95 F6000
{% 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
[gcode_macro PRINT_START]
gcode:
@@ -247,139 +282,11 @@ gcode:
SAVE_VARIABLE VARIABLE=runout_{i} VALUE=0
G4 P100
{% endfor %}
SAVE_VARIABLE VARIABLE=extrude_state VALUE=-1
{% if printer.save_variables.variables.enable_box == 1 %}
{% set last_load_slot = printer.save_variables.variables.last_load_slot|default("slot-1") %}
{% set value_t = printer.save_variables.variables["value_t" ~ extruder]|default("slot" ~ extruder) %}
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %}
{% 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
BOX_PRINT_START EXTRUDER={extruder} HOTENDTEMP={hotendtemp}
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 %}
EXTRUSION_AND_FLUSH HOTEND={hotendtemp}
{% endif %}
{% endif %}
M106 S0
@@ -746,41 +653,19 @@ gcode:
{% if printer['pause_resume'].is_paused|int == 1 %}
{% if printer.save_variables.variables.box_count >= 1 %}
{% if printer.save_variables.variables.enable_box == 1 %}
{% set retry_val = printer.save_variables.variables.retry_step %}
{% 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
TRY_RESUME_PRINT
{% 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 %}
M118 Printer resume failed
{% endif %}
{% endif %}
{% else %}
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %}
RESUME_PRINT
{% endif %}
{% endif %}
{% else %}
{% if printer['hall_filament_width_sensor'].Diameter > 0.5 %}
RESUME_PRINT
M118 Printer resume failed
{% endif %}
{% endif %}
{% endif %}

Submodule klipper updated: ff035227c2...4bb7c63379