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

TEST_SPEED macro not compatible with latest klipper #119

Open
Arakon opened this issue Mar 16, 2024 · 3 comments
Open

TEST_SPEED macro not compatible with latest klipper #119

Arakon opened this issue Mar 16, 2024 · 3 comments

Comments

@Arakon
Copy link

Arakon commented Mar 16, 2024

Due to the Klipper change from ACCEL_TO_DECEL to minimum_cruise_ratio, the TEST_SPEED macro fails halfways through with error Error on 'SET_VELOCITY_LIMIT VELOCITY=600.0 ACCEL=16000.0 ACCEL_TO_DECEL=': unable to parse .

@tastyratz
Copy link

I just came here to say the same thing.

The specific piece that was deprecated: printer.configfile.settings.printer.max_accel_to_decel

It's related to this pull Klipper3d/klipper#6418

and can be read about more in the discussion here:
https://klipper.discourse.group/t/proportional-acceleration-control/3970

@Clane87
Copy link

Clane87 commented Apr 6, 2024

[gcode_macro TEST_SPEED]
gcode:
# Speed
{% set speed = params.SPEED|default(printer.configfile.settings.printer.max_velocity)|int %}
# Iterations
{% set iterations = params.ITERATIONS|default(5)|int %}
# Acceleration
{% set accel = params.ACCEL|default(printer.configfile.settings.printer.max_accel)|int %}
# Bounding inset for large pattern (helps prevent slamming the toolhead into the sides after small skips, and helps to account for machines with imperfectly set dimensions)
{% set bound = params.BOUND|default(20)|int %}
# Size for small pattern box
{% set smallpatternsize = SMALLPATTERNSIZE|default(20)|int %}

# Large pattern
    # Max positions, inset by BOUND
    {% set x_min = printer.toolhead.axis_minimum.x + bound %}
    {% set x_max = printer.toolhead.axis_maximum.x - bound %}
    {% set y_min = printer.toolhead.axis_minimum.y + bound %}
    {% set y_max = printer.toolhead.axis_maximum.y - bound %}

# Small pattern at center
    # Find X/Y center point
    {% set x_center = (printer.toolhead.axis_minimum.x|float + printer.toolhead.axis_maximum.x|float ) / 2 %}
    {% set y_center = (printer.toolhead.axis_minimum.y|float + printer.toolhead.axis_maximum.y|float ) / 2 %}
    
    # Set small pattern box around center point
    {% set x_center_min = x_center - (smallpatternsize/2) %}
    {% set x_center_max = x_center + (smallpatternsize/2) %}
    {% set y_center_min = y_center - (smallpatternsize/2) %}
    {% set y_center_max = y_center + (smallpatternsize/2) %}

# Save current gcode state (absolute/relative, etc)
SAVE_GCODE_STATE NAME=TEST_SPEED

# Output parameters to g-code terminal
{ action_respond_info("TEST_SPEED: starting %d iterations at speed %d, accel %d" % (iterations, speed, accel)) }

# Home and get position for comparison later:
    M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
    G28
    # QGL if not already QGLd (only if QGL section exists in config)
    {% if printer.configfile.settings.quad_gantry_level %}
        {% if printer.quad_gantry_level.applied == False %}
            QUAD_GANTRY_LEVEL
            G28 Z
        {% endif %}
    {% endif %} 
    # Move 50mm away from max position and home again (to help with hall effect endstop accuracy - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/24)
    G90
    G1 X{printer.toolhead.axis_maximum.x-50} Y{printer.toolhead.axis_maximum.y-50} F{30*60}
    M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
    G28 X Y
    G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60}
    G4 P1000 
    GET_POSITION

# Go to starting position
G0 X{x_min} Y{y_min} Z{bound + 10} F{speed*60}

# Set new limits
SET_VELOCITY_LIMIT VELOCITY={speed} ACCEL={accel}

{% for i in range(iterations) %}
    # Large pattern diagonals
    G0 X{x_min} Y{y_min} F{speed*60}
    G0 X{x_max} Y{y_max} F{speed*60}
    G0 X{x_min} Y{y_min} F{speed*60}
    G0 X{x_max} Y{y_min} F{speed*60}
    G0 X{x_min} Y{y_max} F{speed*60}
    G0 X{x_max} Y{y_min} F{speed*60}
    
    # Large pattern box
    G0 X{x_min} Y{y_min} F{speed*60}
    G0 X{x_min} Y{y_max} F{speed*60}
    G0 X{x_max} Y{y_max} F{speed*60}
    G0 X{x_max} Y{y_min} F{speed*60}

    # Small pattern diagonals
    G0 X{x_center_min} Y{y_center_min} F{speed*60}
    G0 X{x_center_max} Y{y_center_max} F{speed*60}
    G0 X{x_center_min} Y{y_center_min} F{speed*60}
    G0 X{x_center_max} Y{y_center_min} F{speed*60}
    G0 X{x_center_min} Y{y_center_max} F{speed*60}
    G0 X{x_center_max} Y{y_center_min} F{speed*60}
    
    # Small patternbox
    G0 X{x_center_min} Y{y_center_min} F{speed*60}
    G0 X{x_center_min} Y{y_center_max} F{speed*60}
    G0 X{x_center_max} Y{y_center_max} F{speed*60}
    G0 X{x_center_max} Y{y_center_min} F{speed*60}
{% endfor %}

# Restore max speed/accel to their configured values
SET_VELOCITY_LIMIT VELOCITY={printer.configfile.settings.printer.max_velocity} ACCEL={printer.configfile.settings.printer.max_accel}

# Re-home and get position again for comparison:
    M400 # Finish moves - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/66
    G28 # This is a full G28 to fix an issue with CoreXZ - https://github.com/AndrewEllis93/Print-Tuning-Guide/issues/12
    # Go to XY home positions (in case your homing override leaves it elsewhere)
    G90
    G0 X{printer.toolhead.axis_maximum.x-1} Y{printer.toolhead.axis_maximum.y-1} F{30*60}
    G4 P1000 
    GET_POSITION

# Restore previous gcode state (absolute/relative, etc)
RESTORE_GCODE_STATE NAME=TEST_SPEED

@SuhbatDaRobot
Copy link
Contributor

Hi guys, this issue has been fixed after my fix got merged. Please check the latest build after the merge of issue #120.

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

No branches or pull requests

4 participants