Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot set Z speed independently #1154

Closed
martinbudden opened this issue May 15, 2021 · 8 comments
Closed

Cannot set Z speed independently #1154

martinbudden opened this issue May 15, 2021 · 8 comments
Labels

Comments

@martinbudden
Copy link

This is the same bug as prusa3d#2945 for which I have submitted a PR in PrusaSlicer , but not had a reply.

Describe the bug
The z travel speed is the same as the xy travel speed, so when the xy travel speed is high, you get z-banding or even z-axis skipping.

I have a fix for this and so this bug report is just to see if you are interested in the fix - if so I will submit the PR. I'm also happy to submit it for review without any expectation that it will be accepted.

For reference, the PrusaSlicer PR is here prusa3d#6369

@supermerill
Copy link
Owner

Do you think it has any consequences on a print profile?
Isn't it more useful on the printer machine limits tab?

@supermerill supermerill added awaiting response Further information is requested problem labels May 20, 2021
@balkin
Copy link

balkin commented May 26, 2021

@supermerill Hi! I'm not the TS but we just had a discussion about this issue and I'm willing to let you know what I've found. Here's a fragment of code generated by slic3r++, actually prusa does exactly the same:

;LAYER_CHANGE
;Z:0.2
;HEIGHT:0.2
; custom gcode: before_layer_gcode
;LAYER:0
M117 INDICATOR-Layer0
; custom gcode end: before_layer_gcode

G1 Z0.200000 F7200.000 ; move to next layer (0)

(see the last line)

Perhaps G1 Z0.200000 F7200.000 is really not very beautiful. Although I'm perfectly fine with the superslicer's gcode, my printer's firmware ignores velocities greater than upper limit of my printer.
Maybe instead of using travel_speed for Z velocity you could use machine_max_feedrate_z?

@supermerill
Copy link
Owner

Maybe instead of using travel_speed for Z velocity you could use machine_max_feedrate_z?

Maybe, or i can create a machine_z_travel_speed next to it.
I'll have to see if it's useful to create an other one. I have some 3D-path that may want to use a slow machine_max_feedrate_z, and travel that want to use a fast machine_z_travel_speed

@balkin
Copy link

balkin commented May 26, 2021

I'm using klipper (and it ignores 120mm/s on z movements), but probably some firmwares may not ignore it.

If that helps, here are my settings from the gcode file:
; allow_empty_layers = 0
; avoid_crossing_not_first_layer = 1
; avoid_crossing_perimeters = 0
; avoid_crossing_perimeters_max_detour = 0
; bed_custom_model = C:\\Program Files\\Ultimaker Cura 4.6\\resources\\meshes\\ulti_steel_platform.stl
; bed_custom_texture = 
; bed_shape = 0x0,200x0,200x200,0x200
; bed_temperature = 105
; before_layer_gcode = ;LAYER:[layer_num]\n
; between_objects_gcode = 
; bottom_fill_pattern = monotonic
; bottom_solid_layers = 5
; bottom_solid_min_thickness = 0
; bridge_acceleration = 1000
; bridge_angle = 0
; bridge_fan_speed = 100
; bridge_flow_ratio = 35%
; bridge_overlap = 100%
; bridge_speed = 25
; bridge_speed_internal = 150%
; bridged_infill_margin = 200%
; brim_ears = 1
; brim_ears_detection_length = 1
; brim_ears_max_angle = 125
; brim_ears_pattern = concentric
; brim_inside_holes = 0
; brim_offset = 0
; brim_width = 6
; brim_width_interior = 0
; chamber_temperature = 0
; clip_multipart_objects = 0
; color_change_gcode = M600
; complete_objects = 0
; complete_objects_one_skirt = 0
; complete_objects_sort = object
; cooling = 1
; cooling_tube_length = 5
; cooling_tube_retraction = 91.5
; curve_smoothing_angle_concave = 0
; curve_smoothing_angle_convex = 0
; curve_smoothing_cutoff_dist = 2
; curve_smoothing_precision = 0
; default_acceleration = 3000
; default_filament_profile = ""
; default_print_profile = 
; deretract_speed = 35
; disable_fan_first_layers = 3
; dont_support_bridges = 1
; draft_shield = 0
; duplicate_distance = 6
; end_filament_gcode = "; Filament-specific end gcode \n;END gcode for filament\n"
; end_gcode = M104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\n{if layer_z < max_print_height}G1 Z{z_offset+min(layer_z+10, max_print_height)} F240{endif} ; Move print head up\nG1 X0 Y0 F5000;\nM84 X Y Z E ; disable motors
; enforce_full_fill_volume = 1
; ensure_vertical_shell_thickness = 0
; exact_last_layer_height = 0
; external_infill_margin = 150%
; external_perimeter_cut_corners = 0%
; external_perimeter_extrusion_spacing = 
; external_perimeter_extrusion_width = 0
; external_perimeter_fan_speed = -1
; external_perimeter_overlap = 100%
; external_perimeter_speed = 45
; external_perimeters_first = 0
; external_perimeters_hole = 1
; external_perimeters_nothole = 1
; external_perimeters_vase = 0
; extra_loading_move = -2
; extra_perimeters = 1
; extra_perimeters_odd_layers = 0
; extra_perimeters_overhangs = 0
; extruder_clearance_height = 50
; extruder_clearance_radius = 60
; extruder_colour = #FF0000
; extruder_fan_offset = 0%
; extruder_offset = 0x0
; extruder_temperature_offset = 0
; extrusion_axis = E
; extrusion_multiplier = 1
; extrusion_spacing = 
; extrusion_width = 110%
; fan_always_on = 0
; fan_below_layer_time = 30
; fan_kickstart = 0
; fan_percentage = 0
; fan_speedup_overhangs = 1
; fan_speedup_time = -0.5
; feature_gcode = 
; filament_colour = #FF00FF
; filament_cooling_final_speed = 3.4
; filament_cooling_initial_speed = 2.2
; filament_cooling_moves = 4
; filament_cooling_zone_pause = 0
; filament_cost = 0
; filament_density = 0
; filament_diameter = 1.75
; filament_dip_extraction_speed = 70
; filament_dip_insertion_speed = 33
; filament_enable_toolchange_part_fan = 0
; filament_enable_toolchange_temp = 0
; filament_load_time = 0
; filament_loading_speed = 28
; filament_loading_speed_start = 3
; filament_max_speed = 0
; filament_max_volumetric_speed = 0
; filament_max_wipe_tower_speed = 0
; filament_melt_zone_pause = 0
; filament_minimal_purge_on_wipe_tower = 15
; filament_notes = ""
; filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6"
; filament_settings_id = "ABS Winbo"
; filament_shrink = 100.25%
; filament_skinnydip_distance = 31
; filament_soluble = 0
; filament_spool_weight = 0
; filament_toolchange_delay = 0
; filament_toolchange_part_fan_speed = 50
; filament_toolchange_temp = 200
; filament_type = ABS
; filament_unload_time = 0
; filament_unloading_speed = 90
; filament_unloading_speed_start = 100
; filament_use_fast_skinnydip = 0
; filament_use_skinnydip = 0
; filament_vendor = (Unknown)
; filament_wipe_advanced_pigment = 0.5
; fill_angle = 45
; fill_angle_increment = 0
; fill_density = 25%
; fill_pattern = honeycomb
; fill_smooth_distribution = 10%
; fill_smooth_width = 50%
; fill_top_flow_ratio = 100%
; first_layer_acceleration = 1500
; first_layer_bed_temperature = 105
; first_layer_extrusion_spacing = 
; first_layer_extrusion_width = 150%
; first_layer_flow_ratio = 100%
; first_layer_height = 0.2
; first_layer_infill_speed = 30
; first_layer_size_compensation = 0
; first_layer_speed = 20
; first_layer_temperature = 245
; full_fan_speed_layer = 0
; gap_fill = 1
; gap_fill_min_area = 100%
; gap_fill_overlap = 100%
; gap_fill_speed = 30
; gcode_comments = 1
; gcode_flavor = klipper
; gcode_label_objects = 1
; gcode_precision_e = 5
; gcode_precision_xyz = 3
; high_current_on_filament_swap = 0
; hole_size_compensation = 0
; hole_size_threshold = 100
; hole_to_polyhole = 0
; hole_to_polyhole_threshold = 0.01
; host_type = octoprint
; infill_acceleration = 3000
; infill_anchor = 0
; infill_anchor_max = 0
; infill_connection = connected
; infill_connection_bottom = connected
; infill_connection_solid = connected
; infill_connection_top = connected
; infill_dense = 0
; infill_dense_algo = autosmall
; infill_every_layers = 1
; infill_extruder = 1
; infill_extrusion_spacing = 
; infill_extrusion_width = 0
; infill_first = 0
; infill_only_where_needed = 0
; infill_overlap = 35%
; infill_speed = 75
; interface_shells = 0
; ironing = 0
; ironing_angle = -1
; ironing_flowrate = 15%
; ironing_spacing = 0.1
; ironing_speed = 15
; ironing_type = top
; layer_gcode = 
; layer_height = 0.1
; machine_limits_usage = time_estimate_only
; machine_max_acceleration_e = 10000,5000
; machine_max_acceleration_extruding = 3000,1250
; machine_max_acceleration_retracting = 3000,1250
; machine_max_acceleration_travel = 1500,1250
; machine_max_acceleration_x = 3000,1000
; machine_max_acceleration_y = 3000,1000
; machine_max_acceleration_z = 100,200
; machine_max_feedrate_e = 120,120
; machine_max_feedrate_x = 300,200
; machine_max_feedrate_y = 300,200
; machine_max_feedrate_z = 2,12
; machine_max_jerk_e = 5,2.5
; machine_max_jerk_x = 10,10
; machine_max_jerk_y = 10,10
; machine_max_jerk_z = 0.3,0.4
; machine_min_extruding_rate = 0,0
; machine_min_travel_rate = 0,0
; max_fan_speed = 40
; max_layer_height = 0.35
; max_print_height = 270
; max_print_speed = 120
; max_speed_reduction = 90%
; max_volumetric_speed = 0
; milling_after_z = 200%
; milling_extra_size = 150%
; milling_post_process = 0
; milling_speed = 30
; milling_toolchange_end_gcode = 
; milling_toolchange_start_gcode = 
; min_fan_speed = 25
; min_layer_height = 0.08
; min_length = 0.035
; min_print_speed = 10
; min_skirt_length = 0
; min_width_top_surface = 200%
; model_precision = 0.0001
; no_perimeter_unsupported_algo = none
; notes = 
; nozzle_diameter = 0.6
; only_one_perimeter_top = 1
; only_one_perimeter_top_other_algo = 0
; only_retract_when_crossing_perimeters = 1
; ooze_prevention = 0
; output_filename_format = UlTiSS_{print_time}_{filament_type[0]}_[input_filename_base]_n{nozzle_diameter[0]}_l{layer_height}.gcode
; over_bridge_flow_ratio = 100%
; overhangs_reverse = 0
; overhangs_reverse_threshold = 250%
; overhangs_speed = 100%
; overhangs_width = 75%
; overhangs_width_speed = 50%
; parking_pos_retraction = 92
; pause_print_gcode = M601
; perimeter_acceleration = 3000
; perimeter_bonding = 0%
; perimeter_extruder = 1
; perimeter_extrusion_spacing = 
; perimeter_extrusion_width = 0
; perimeter_loop = 0
; perimeter_loop_seam = rear
; perimeter_overlap = 100%
; perimeter_speed = 45
; perimeters = 3
; physical_printer_settings_id = UlTiSteel
; post_process = 
; print_extrusion_multiplier = 100%
; print_retract_length = -1
; print_retract_lift = -1
; print_settings_id = 0.1 x 3 perimeters
; print_temperature = 0
; printer_model = 
; printer_notes = 
; printer_settings_id = Nozzle 0.6 - BaRoN
; printer_technology = FFF
; printer_variant = 
; printer_vendor = 
; raft_layers = 0
; remaining_times = 0
; resolution = 0
; retract_before_travel = 0.5
; retract_before_wipe = 70%
; retract_layer_change = 0
; retract_length = 4
; retract_length_toolchange = 10
; retract_lift = 0
; retract_lift_above = 0
; retract_lift_below = 0
; retract_lift_first_layer = 0
; retract_lift_top = "All surfaces"
; retract_restart_extra = 0
; retract_restart_extra_toolchange = 0
; retract_speed = 35
; seam_angle_cost = 100%
; seam_position = aligned
; seam_travel_cost = 100%
; silent_mode = 0
; single_extruder_multi_material = 0
; single_extruder_multi_material_priming = 1
; skirt_distance = 3
; skirt_extrusion_width = 0
; skirt_height = 1
; skirts = 0
; slice_closing_radius = 0.049
; slowdown_below_layer_time = 10
; small_perimeter_max_length = 20
; small_perimeter_min_length = 6
; small_perimeter_speed = 30
; solid_fill_pattern = rectilineargapfill
; solid_infill_below_area = 70
; solid_infill_every_layers = 0
; solid_infill_extruder = 1
; solid_infill_extrusion_spacing = 
; solid_infill_extrusion_width = 0
; solid_infill_speed = 50
; spiral_vase = 0
; standby_temperature_delta = -5
; start_filament_gcode = "; Filament gcode\nSET_PRESSURE_ADVANCE ADVANCE=0.4\n"
; start_gcode = G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S[first_layer_temperature] ; set extruder temp\nM140 S[first_layer_bed_temperature] ; set bed temp\nM190 S[first_layer_bed_temperature] ; wait for bed temp\nM109 S[first_layer_temperature] ; wait for extruder temp\nG28 ; home all\nG1 Z2 F240\nG1 X2 Y2 F3000\nG1 Z0.25 F240\nG92 E0.0\nG1 Y50 E10 F500.0 ; intro line\nG1 X2.3 F5000\nG1 Y2 E10 F500.0 ; intro line\nG92 E0.0
; start_gcode_manual = 0
; support_material = 1
; support_material_angle = 0
; support_material_auto = 1
; support_material_buildplate_only = 1
; support_material_contact_distance_bottom = 0.2
; support_material_contact_distance_top = 0.2
; support_material_contact_distance_type = filament
; support_material_enforce_layers = 2
; support_material_extruder = 1
; support_material_extrusion_width = 0
; support_material_interface_contact_loops = 0
; support_material_interface_extruder = 1
; support_material_interface_layers = 5
; support_material_interface_pattern = concentric
; support_material_interface_spacing = 0.1
; support_material_interface_speed = 50%
; support_material_pattern = rectilinear
; support_material_solid_first_layer = 1
; support_material_spacing = 1
; support_material_speed = 45
; support_material_synchronize_layers = 0
; support_material_threshold = 45
; support_material_with_sheath = 1
; support_material_xy_spacing = 0.9
; temperature = 245
; template_custom_gcode = 
; thin_perimeters = 1
; thin_perimeters_all = 0
; thin_walls = 1
; thin_walls_merge = 1
; thin_walls_min_width = 33%
; thin_walls_overlap = 50%
; thin_walls_speed = 30
; threads = 12
; thumbnails = 32x32,220x124
; thumbnails_color = #018aff
; thumbnails_custom_color = 0
; thumbnails_with_bed = 1
; time_estimation_compensation = 100%
; tool_name = ""
; toolchange_gcode = 
; top_fan_speed = -1
; top_fill_pattern = monotonic
; top_infill_extrusion_spacing = 
; top_infill_extrusion_width = 0
; top_solid_infill_speed = 30
; top_solid_layers = 5
; top_solid_min_thickness = 0
; travel_speed = 120
; use_firmware_retraction = 0
; use_relative_e_distances = 0
; use_volumetric_e = 0
; variable_layer_height = 1
; wipe = 1
; wipe_advanced = 0
; wipe_advanced_algo = linear
; wipe_advanced_multiplier = 60
; wipe_advanced_nozzle_melted_volume = 120
; wipe_extra_perimeter = 0
; wipe_into_infill = 0
; wipe_into_objects = 0
; wipe_tower = 0
; wipe_tower_bridging = 10
; wipe_tower_brim = 150%
; wipe_tower_no_sparse_layers = 0
; wipe_tower_rotation_angle = 0
; wipe_tower_width = 60
; wipe_tower_x = 180
; wipe_tower_y = 140
; wiping_volumes_extruders = 70,70
; wiping_volumes_matrix = 0
; xy_inner_size_compensation = 0
; xy_size_compensation = 0
; z_offset = 0
; z_step = 0.005
; BEGIN DISPLAYLAYERPROGRESS SETTINGS
; DisplayLayerProgress_layerIndicatorProcessed = true
; END   DISPLAYLAYERPROGRESS SETTINGS
```

And actually the second layer is exactly the same:
```;LAYER_CHANGE
;Z:0.3
;HEIGHT:0.1
; custom gcode: before_layer_gcode
;LAYER:1
M117 INDICATOR-Layer1
; custom gcode end: before_layer_gcode

@Objectstop robocar - Helly.stl id:0 copy 0
M204 S3000 ; adjust acceleration
G1 Z0.300000 F7200.000 ; move to next layer (1)

@martinbudden
Copy link
Author

Sorry the delay in replying.

Maybe instead of using travel_speed for Z velocity you could use machine_max_feedrate_z?

That was my initial idea, however, from the (limited) discussion on the PrusaSlicer fork, there seemed a reluctance to use machine_max_feedrate_z for this purpose.

Also, machine_max_feedrate_z is not directly accessible by GCodeWriter, so it would certainly be a more complicated PR to do it this way.

My feeling is that an additional option of travel_speed_z is more likely to get accepted as a PR for the PrusaSlicer.

Note that Marlin (unlike Klipper, it seems) definitely does not honour the value of machine_max_feedrate_z, so the z feedrate does need to be limited by the slicer.

@supermerill supermerill removed the awaiting response Further information is requested label Jun 2, 2021
@supermerill
Copy link
Owner

I'm ok for a pr to add travel_speed_z

@martinbudden
Copy link
Author

OK, I'll get my PR from PrucaSlicer moved over here.

@martinbudden
Copy link
Author

Shouldn't this be closed now?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants