Aller au contenu

Messages recommandés

Posté(e) (modifié)

Bonjour à tous

J'ai libéré mes X Max 3 et tourne sur Klipper 0.12 actuellement

J'essaye d'améliorer mes macros PAUSE RESUME (déjà non standard) pour couper les ventilateurs lors de la mise en pause et les redémarrer à la vitesse définie lors de l'arrêt à la reprise.

Donc passage par une variable définie lors de la macro PAUSE et récupération lors de la macro RESUME, comme c'est déjà le cas pour la température de la buse.

Voici la macro PAUSE

[gcode_macro PAUSE]
description: Pause the actual running print
rename_existing: PAUSE_BASE
gcode:
##### get user parameters or use default #####
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
{% set idle_timeout = client.idle_timeout|default(0) %}
{% set temp = printer[printer.toolhead.extruder].target if printer.toolhead.extruder != '' else 0 %}
{% set restore = False if printer.toolhead.extruder == ''
else True if params.RESTORE|default(1)|int == 1 else False %}
{% set partfan_speed = printer.partfan if printer.partfan != '' else 0 %}
{% set filterfan_speed = printer.filterfan if printer.filterfan != '' else 0 %}
{% set sidefan_speed = printer.sidefan if printer.sidefan != '' else 0 %}
##### end of definitions #####
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_temp VALUE={temp}
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_extruder_restore VALUE={restore}
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_partfan_speed VALUE={partfan_speed}
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_filterfan_speed VALUE={filterfan_speed}
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=last_sidefan_speed VALUE={sidefan_speed}
# set a new idle_timeout value
{% if idle_timeout > 0 %}
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=restore_idle_timeout VALUE={printer.configfile.settings.idle_timeout.timeout}
SET_IDLE_TIMEOUT TIMEOUT={idle_timeout}
{% endif %}
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=True
M104 S0
M106 S0
M106 P2 S0
M106 P3 S0
SFS_DISABLE
PAUSE_BASE
{client.user_pause_macro|default("")}
_TOOLHEAD_PARK_PAUSE_CANCEL {rawparams}

Et la partie de la macro RESUME

[gcode_macro RESUME]
description: Resume the actual running print
rename_existing: RESUME_BASE
variable_last_extruder_temp: 0
variable_last_extruder_restore: False
variable_last_partfan_speed: 0
variable_last_filterfan_speed: 0
variable_last_sidefan_speed: 0
variable_restore_idle_timeout: 0
variable_idle_state: False
gcode:
##### get user parameters or use default #####
{% set client = printer['gcode_macro _CLIENT_VARIABLE']|default({}) %}
{% set velocity = printer.configfile.settings.pause_resume.recover_velocity %}
{% set sp_move = client.speed_move|default(velocity) %}
{% set runout_resume = True if client.runout_sensor|default("") == "" # no runout
else True if not printer[client.runout_sensor].enabled # sensor is disabled
else printer[client.runout_sensor].filament_detected %} # sensor status
{% set can_extrude = True if printer.toolhead.extruder == '' # no extruder defined in config
else printer[printer.toolhead.extruder].can_extrude %} # status of active extruder
{% set do_resume = False %}
{% set prompt_txt = [] %}
##### end of definitions #####
#### Printer comming from timeout idle state ####
{% if printer.idle_timeout.state|upper == "IDLE" or idle_state %}
SET_GCODE_VARIABLE MACRO=RESUME VARIABLE=idle_state VALUE=False
{% if last_extruder_restore %}
# we need to use the unicode (\u00B0) for the ° as py2 env's would throw an error otherwise
RESPOND TYPE=echo MSG='{"Restoring \"%s\" temperature to %3.1f\u00B0C, this may take some time" % (printer.toolhead.extruder, last_extruder_temp) }'
M109 S{last_extruder_temp}
M106 S{last_partfan_speed}
M106 P2 S{last_sidefan_speed}
M106 P3 S{last_filterfan_speed}
{% set do_resume = True %}
{% elif can_extrude %}
{% set do_resume = True %}
{% else %}

En lançant la macro PAUSE, j'obtiens une erreur lors de l'évaluation de la variable partant_speed

!! Unable to parse '' as a literal: invalid syntax (, line 0)

Donc à priori c'est que la variable qui doit être un décimal n'est pas du bon format.

Si je spécifie que c'est la valeur de objet set partfan_speed = printer.partfan.value, j'obtiens une erreur bloquante lors du démarrage de Klipper

!! Error evaluating 'gcode_macro PAUSE:gcode': jinja2.exceptions.UndefinedError: 'extras.gcode_macro.GetStatusWrapper object' has no attribute 'partfan'

Pourtant dans le guide de référence des états

output_pin¶

Les informations suivantes sont disponibles dans les objets output_pin nom_de_la_sortie :

value : la "valeur" de la broche, telle que définie par une commande SET_PIN.

Et le printer.cfg définit les ventilateurs de la X Max 3 comme des output_pin et non pas des fan.

J'ai essayé avec la syntaxe complète : printer[printer.partfan].value sans succès. Impossible de récupérer la valeur numérique de la sortie du ventilateur.

Si quelqu'un a une idée ....

Modifié (le) par V3DP
  • V3DP changed the title to Qidi X Max 3 - Problèmes de mise en pause de l'impression
Posté(e)

Salut,

Pas vraiment d'idées 😞, d'autant plus que mes ventilateurs ne sont pas déclarés en [output_pin …], mais en [fan_generic …]

#################################################
#                      Fans                     #
#################################################

############### Side fan (auxiliary) ############
#[output_pin fan2] # => auxiliary_cooling_fan
#pin: PA8
#pwm: True
#cycle_time: 0.0100
#hardware_pwm: false
#value: 0.00
#scale: 255
#shutdown_value: 0.0

[fan_generic auxiliary_cooling_fan]
pin: PA8
shutdown_speed: 0.0
cycle_time: 0.0100
hardware_pwm: false
kick_start_time: 0.100
off_below: 0.0
#
# use via SET_FAN_SPEED FAN=auxilary_fan SPEED=value

################### Chamber fan ################
## Ventilateur extraction air interne via filtre à charbon actif
#[output_pin fan3] # => chamber_circulation_fan
#pin:PC9
#pwm: True
#cycle_time: 0.0100
#hardware_pwm: false
#value: 0.0
#scale: 255
#shutdown_value: 0.0

[fan_generic chamber_circulation_fan]
pin: PC9
shutdown_speed: 0.0
cycle_time: 0.0100
hardware_pwm: false
kick_start_time: 0.100
off_below: 0.0
#
# use via SET_FAN_SPEED FAN=exhaust_fan SPEED=valeur

################### Parts fan ##################
## FAN0  refroidissement filament (buse)
#[output_pin fan0]
#pin: MKS_THR:gpio2
#pwm: True
#cycle_time: 0.0100
#hardware_pwm: false
#value: 0
#scale: 255
#shutdown_value: 0.0

[fan_generic cooling_fan]
pin: MKS_THR:gpio2
max_power: 1.0
shutdown_speed: 0.0
cycle_time: 0.0100
hardware_pwm: false
kick_start_time: 0.100
off_below: 0.0
# use via SET_FAN_SPEED FAN=cooling_fan SPEED=value

@Savate, une idée ?

Posté(e)
il y a une heure, fran6p a dit :

Salut,

Pas vraiment d'idées 😞, d'autant plus que mes ventilateurs ne sont pas déclarés en [output_pin …], mais en [fan_generic …]

Merci @fran6p

Oui, c'est plus simple dans ce cas, car la propriété speed est décrite. Un printer.fan.speed remonte la valeur 

Par contre je ne sais pas si cela continuerait à fonctionner avec l'écran d'origine flashé avec FreeDi. J'ai suivi le GitHub de Phil1988 pour la configuration du printer.cfg pour que ça fonctionne avec l'écran flashé

 

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...