Problème de délai d'attente lors du retour à l'origine de Klipper
Description du problème
Une erreur de délai d'attente de communication se produit lors du retour à l'origine :
Error during homing z: Communication timeout during homing
Ce problème est courant lors du retour à l'origine de l'axe Z avec plusieurs MCU. Si la charge de l'ordinateur hôte est élevée pendant le processus de retour à l'origine, ou si la réponse de communication entre plusieurs MCU est instable, un délai d'attente peut être déclenché.
- Assurez-vous que Klipper est installé correctement et peut être démarré.
- Assurez-vous que l'utilisateur actuel est l'utilisateur d'installation de Klipper.
- Assurez-vous que les chemins dans les commandes ci-dessous correspondent au système réel.
- Avant de modifier le code source de Klipper ou d'ajouter des scripts, il est recommandé de sauvegarder les fichiers concernés.
- Ajuster le délai d'attente
- Gérer KlipperScreen
- Diagnostiquer les interférences électromagnétiques
Méthode 1 : Ajuster le délai d'attente
Cette méthode modifie directement le fichier source mcu.py de Klipper. Elle est uniquement recommandée pour confirmer le problème de délai d'attente lors du retour à l'origine. Cette modification peut être écrasée après une mise à jour de Klipper ; une fois le problème résolu ou la vérification terminée, il est recommandé de restaurer la valeur par défaut.
Sauvegardez d'abord le fichier original :
cp ~/klipper/klippy/mcu.py ~/klipper/klippy/mcu.py.bak
Modifiez TRSYNC_TIMEOUT dans Klipper :
sed -i 's/TRSYNC_TIMEOUT = [0-9.]*$/TRSYNC_TIMEOUT = 0.05/' ~/klipper/klippy/mcu.py
Redémarrez le service Klipper :
sudo systemctl restart klipper
Vérifiez le paramètre actuel :
grep "TRSYNC_TIMEOUT =" ~/klipper/klippy/mcu.py
Pour restaurer la valeur par défaut :
sed -i 's/TRSYNC_TIMEOUT = [0-9.]*$/TRSYNC_TIMEOUT = 0.025/' ~/klipper/klippy/mcu.py
sudo systemctl restart klipper
Si vous devez restaurer le fichier de sauvegarde :
cp ~/klipper/klippy/mcu.py.bak ~/klipper/klippy/mcu.py
sudo systemctl restart klipper
Méthode 2 : Gérer KlipperScreen
En désactivant temporairement KlipperScreen pour libérer des ressources système, réduisez la probabilité de déclencher un délai d'attente de communication pendant le retour à l'origine.
Cette méthode ajoute gcode_shell_command.py, un répertoire de scripts et une configuration de macro. Assurez-vous que le système actuel autorise l'utilisation de shell commands et que les chemins des scripts correspondent au chemin d'installation réel.
Télécharger les fichiers nécessaires
Système standard :
git clone https://cnb.cool/3dmellow/public/klipper-klipperscreen-manager
curl -# -L --retry 3 --retry-delay 2 -o ~/klipper/klippy/extras/gcode_shell_command.py https://raw.githubusercontent.com/dw-0/kiauh/master/kiauh/extensions/gcode_shell_cmd/assets/gcode_shell_command.py
Système FlyOS-FAST :
cd /data
git clone https://cnb.cool/3dmellow/public/klipper-klipperscreen-manager
curl -# -L --retry 3 --retry-delay 2 -o /data/klipper/klippy/extras/gcode_shell_command.py https://raw.githubusercontent.com/dw-0/kiauh/master/kiauh/extensions/gcode_shell_cmd/assets/gcode_shell_command.py
Définir les permissions des scripts
Système standard :
cd ~/klipper-klipperscreen-manager
chmod +x ~/klipper-klipperscreen-manager/scripts/*.sh
Système FlyOS-FAST :
cd /data/klipper-klipperscreen-manager
chmod +x /data/klipper-klipperscreen-manager/scripts/*.sh
Créer un fichier de configuration
- Créez un fichier
klipper_macros.cfgdans le répertoire de configuration de Klipper. - Ajoutez ce qui suit en haut du fichier
printer.cfg:
[include klipper_macros.cfg]
Configurer les commandes macro
Ajoutez le contenu suivant dans klipper_macros.cfg. Remplacez /data/klipper-klipperscreen-manager/scripts/ par le chemin réel du script.
[gcode_shell_command disable_klipperscreen]
command: sh /data/klipper-klipperscreen-manager/scripts/disable_klipperscreen.sh
timeout: 5.0
verbose: True
[gcode_shell_command enable_klipperscreen]
command: sh /data/klipper-klipperscreen-manager/scripts/enable_klipperscreen.sh
timeout: 5.0
verbose: True
[gcode_macro RESTART_KlipperScreen]
variable_time: 60
gcode:
{% set wait_time = params.TIME|default(printer["gcode_macro RESTART_KlipperScreen"].time)|int %}
{action_respond_info("Temps d'attente : %s secondes" % wait_time)}
RUN_SHELL_COMMAND CMD=disable_klipperscreen PARAMS={wait_time}
[gcode_macro ENABLE_KlipperScreen]
gcode:
{action_respond_info("Démarrage immédiat de KlipperScreen")}
RUN_SHELL_COMMAND CMD=enable_klipperscreen
Utilisation
Désactiver temporairement KlipperScreen :
RESTART_KlipperScreen
Spécifier un temps d'arrêt, par exemple 120 secondes :
RESTART_KlipperScreen TIME=120
Démarrer manuellement KlipperScreen immédiatement :
ENABLE_KlipperScreen
Cette méthode libère des ressources système en désactivant temporairement l'interface KlipperScreen, réduisant ainsi la charge CPU et donc les délais d'attente de communication pendant le retour à l'origine.
Méthode de restauration
Si vous n'utilisez plus cette méthode, vous pouvez la restaurer dans l'ordre :
- Supprimez ou commentez
[include klipper_macros.cfg]dansprinter.cfg. - Supprimez les configurations liées à
disable_klipperscreen,enable_klipperscreen,RESTART_KlipperScreen,ENABLE_KlipperScreendansklipper_macros.cfg. - Supprimez le répertoire de scripts téléchargé.
Système standard :
rm -rf ~/klipper-klipperscreen-manager
Système FlyOS-FAST :
rm -rf /data/klipper-klipperscreen-manager
Si aucune autre fonctionnalité du système ne dépend de gcode_shell_command.py, vous pouvez également supprimer ce fichier. Avant de le supprimer, assurez-vous qu'aucune autre macro n'utilise RUN_SHELL_COMMAND.
Méthode 3 : Diagnostiquer les interférences électromagnétiques
La cause matérielle la plus courante des délais d'attente lors du retour à l'origine est l'interférence électromagnétique (EMI). Pendant le retour à l'origine, plusieurs moteurs d'axe se déplacent simultanément, et les signaux de commande PWM à fort courant génèrent un champ électromagnétique puissant. Si les câbles de communication CAN ou USB sont proches des câbles de moteur ou de chauffe, le signal d'interférence se couple aux lignes de communication, provoquant des retards de communication légers ou des déconnexions graves déclenchant un délai d'attente.
Caractéristiques des délais d'attente lors du retour à l'origine causés par les interférences électromagnétiques :
- Intermittence : ne se produit pas à chaque fois, fonctionne parfois bien, parfois mal.
- Lié au mouvement : généralement déclenché lors du retour à l'origine ou de mouvements rapides, tout est normal à l'arrêt.
- Récupération après redémarrage : après une remise sous tension, la connexion redevient normale, mais le problème réapparaît lors de l'impression ou du retour à l'origine.
Points clés du diagnostic
Avant de réorganiser les câbles CAN/USB, d'ajuster le blindage, d'activer la résistance de terminaison ou de mesurer la résistance CANH-CANL, éteignez complètement l'imprimante et débranchez l'alimentation. Ne débranchez pas, ne modifiez pas les câbles, ne mesurez pas la résistance et ne touchez pas aux bornes d'alimentation sous tension.
1. Disposition du câblage
Séparez les câbles de communication CAN/USB des câbles de moteur, de chauffe et de lit chauffant :
- Maintenez une distance d'au moins 2-3 cm dans la chaîne porte-câbles
- Évitez de faire courir les câbles parallèlement aux câbles de forte puissance, préférez le croisement
- Les câbles CAN doivent être des paires torsadées (pas de torsion supérieur à quelques centimètres)
2. Mise à la terre du blindage
Si vous utilisez des câbles blindés :
- Mettez à la terre une seule extrémité du côté de l'ordinateur hôte, le blindage du côté de la carte outil/MCU doit rester flottant et non connecté
- Ne mettez pas à la terre les deux extrémités – cela créerait une boucle de masse, introduisant des interférences
- Le point de mise à la terre du blindage doit de préférence être connecté à la broche GND marquée sur la carte mère ou la carte outil ; si aucune indication claire n'est fournie, contactez le service après-vente pour confirmation. Ne démontez pas l'alimentation vous-même et ne modifiez pas le fil de terre du secteur.
3. Résistance de terminaison
- Le bus CAN doit avoir exactement deux résistances de terminaison de 120Ω à ses deux extrémités
- Les résistances de terminaison doivent être installées aux extrémités physiques du bus, généralement via un cavalier sur la carte, un interrupteur DIP ou une interface de terminaison prête à l'emploi ; ne les modifiez pas vous-même au milieu du câble
- Mettez d'abord hors tension avant d'opérer. Mesurez la résistance entre CANH-CANL avec un multimètre ; elle doit normalement être d'environ 60Ω (deux résistances de 120Ω en parallèle)
4. Mise à la terre de la machine
- Assurez-vous que l'imprimante utilise une prise à trois trous conforme et utilisez de préférence le point de mise à la terre fourni par le fabricant
- Ne démontez pas l'alimentation vous-même, ne modifiez pas le fil de terre du secteur et ne touchez pas aux bornes d'alimentation exposées ; si vous devez traiter la mise à la terre, contactez le service après-vente ou un électricien professionnel
- Le châssis métallique d'une machine non mise à la terre agit comme une grande antenne, captant le bruit ambiant et amplifiant les interférences
5. Méthode de vérification
Test temporaire pour déterminer si les interférences sont la cause racine :
# Réduire la vitesse d'impression et le courant moteur
SET_VELOCITY_LIMIT VELOCITY=50
# Ou réduire temporairement le courant du driver de 30% pour tester
SET_TMC_CURRENT STEPPER=stepper_x CURRENT=0.5
Si le délai d'attente lors du retour à l'origine disparaît après avoir réduit la vitesse/le courant, il est pratiquement certain qu'il s'agit d'un problème d'interférence électromagnétique et il faut optimiser le câblage et la mise à la terre conformément aux points ci-dessus.
Pour plus de détails sur le diagnostic des interférences, veuillez consulter Dépannage des erreurs CAN - Un nœud du bus CAN ne répond pas.