Configuration du réseau CAN et recherche d'ID
Cet article traite de la configuration du réseau CAN, de la vérification de l'état de CAN0, de la recherche d'UUID CAN et du dépannage des erreurs CAN courantes.
Scénarios d'application :
- Utilisation d'un module USB vers CAN tel que UTOC pour connecter une carte outil CAN.
- Utilisation d'une carte mère avec firmware pont USB vers CAN flashé pour connecter une carte outil CAN.
- La carte mère ou la carte outil dispose d'un firmware CAN flashé, nécessité de rechercher l'UUID CAN.
- Klipper affiche des erreurs liées à CAN0, à l'UUID CAN ou au réseau CAN.
Précautions avant utilisation
- Connectez l'UTOC ou la carte mère avec firmware pont CAN flashé à l'ordinateur hôte via USB.
- Veuillez vous connecter à l'arrière-plan de l'ordinateur hôte via le réseau, n'utilisez pas de connexion série.
- Le système FlyOS-FAST a prédéfini CAN0 avec un débit de 1M et un cache de 1024. La configuration manuelle de CAN0 n'est généralement pas nécessaire.
- Le débit CAN dans le firmware de la carte outil et de la carte mère doit être identique à celui de CAN0 de l'ordinateur hôte.
- Des résistances de terminaison sont nécessaires aux deux extrémités du bus CAN. Les problèmes de câblage, de résistance et d'alimentation peuvent empêcher la recherche d'ID.
Câblage CAN et résistances de terminaison
Le câblage et les résistances de terminaison sont les sources les plus courantes de problèmes sur le réseau CAN.
Avant de vérifier l'ordre des fils CAN-H/CAN-L, les connecteurs, le sertissage, les cavaliers de résistance de terminaison ou les interrupteurs DIP, veuillez éteindre complètement l'imprimante et débrancher l'alimentation. Ne débranchez pas les câbles CAN, ne réglez pas les cavaliers et ne mesurez pas les résistances sous tension.
Vérification du câblage
- Après avoir coupé l'alimentation, confirmez que CAN-H est connecté à CAN-H et CAN-L à CAN-L.
- Après avoir coupé l'alimentation, vérifiez les câbles CAN, les connecteurs et les points de sertissage pour vous assurer qu'il n'y a pas de rupture, de desserrage ou de mauvais contact.
- Si vous utilisez un UTOC, utilisez un câble USB en bon état pour le connecter à l'ordinateur hôte.
- Si vous utilisez une carte mère avec pont USB vers CAN, assurez-vous que le firmware pont USB vers CAN a été flashé sur cette carte mère.
- Remontez soigneusement le faisceau de câbles et le boîtier avant de remettre sous tension, puis vérifiez si le périphérique CAN est reconnu par le système.
Vérification des résistances de terminaison
Chaque extrémité du bus CAN nécessite une résistance de terminaison de 120Ω. Après avoir complètement coupé l'alimentation de l'appareil, utilisez un multimètre pour mesurer la résistance entre CAN-H et CAN-L.
| Valeur mesurée | Interprétation |
|---|---|
Environ 60Ω | Normal, les deux résistances de terminaison sont correctement connectées |
Environ 120Ω | Généralement, une seule extrémité a une résistance de terminaison, ou il y a une coupure de fil |
Environ 40Ω | Il peut y avoir une résistance de terminaison supplémentaire, veuillez vérifier les nœuds intermédiaires |
Environ 140Ω | Il peut y avoir une inversion CAN-H / CAN-L ou une anomalie de ligne |
La mesure des résistances de terminaison doit être effectuée hors tension complète. Une opération sans coupure complète de l'alimentation peut entraîner des lectures inexactes et peut également endommager l'équipement.
Vérifier si l'ordinateur hôte prend en charge CAN
Les ordinateurs hôtes FLY peuvent ignorer cette étape.
Exécutez la commande suivante pour détecter la prise en charge du CAN par le noyau :
sudo modprobe can && echo "Le noyau prend en charge CAN" || echo "Le noyau ne prend pas en charge CAN"
Si le message Le noyau prend en charge CAN s'affiche, vous pouvez continuer la configuration. S'il indique qu'il n'est pas pris en charge, il est recommandé de remplacer par une image système prenant en charge SocketCAN.
Vérifier si le périphérique CAN est reconnu
Avant de configurer ou de rechercher un ID CAN, il est conseillé de confirmer que l'ordinateur hôte a reconnu l'UTOC ou le périphérique CAN à pont USB.
Exécutez :
lsusb
Interprétation des résultats :
- Voir
1d50:606f: Le périphérique est reconnu par le système, vous pouvez continuer à configurer ou rechercher un ID CAN. - Message
lsusbintrouvable : Veuillez d'abord installerusbutils. - Ne pas voir
1d50:606f: Vérifiez le câble USB, l'UTOC, le firmware du pont USB vers CAN et l'alimentation. - Plusieurs
1d50:606f: Il est recommandé de ne conserver qu'un seul périphérique pont CAN pour éviter plusieurs sources CAN0 simultanées.
Installation de usbutils :
sudo apt-get update
sudo apt-get install usbutils
Ce n'est qu'après que le système a reconnu le périphérique pont CAN que la configuration ultérieure de CAN0 et la recherche d'ID CAN ont un sens.
Configuration de CAN0
Cette opération remplace la configuration existante de CAN0 et nécessite un redémarrage du système après exécution. Le système FlyOS-FAST n'a pas besoin d'effectuer cette étape.
Déterminer le mode de gestion réseau
Différents systèmes utilisent différents modes de gestion réseau. Avant de configurer CAN0, vous devez confirmer quel service gère le réseau sur le système actuel. N'utilisez pas plusieurs méthodes pour configurer le même can0, sinon la configuration pourrait ne pas être prise en compte, être perdue après un redémarrage ou entraîner un état anormal de CAN0.
Exécutez la commande suivante pour vérifier l'état des services réseau courants :
systemctl is-active NetworkManager
systemctl is-active systemd-networkd
systemctl is-active networking
Vous pouvez également continuer à vérifier les fichiers de configuration et l'état des périphériques :
ls /etc/network/interfaces /etc/network/interfaces.d/ 2>/dev/null
networkctl list 2>/dev/null
nmcli device status 2>/dev/null
Choisissez la méthode de configuration en fonction des résultats :
| Résultat | Explication | Suggestion de choix |
|---|---|---|
networking affiche active et /etc/network/interfaces.d/ existe | Courant sur les systèmes Debian, Armbian, etc. | Utiliser ifupdown |
systemd-networkd affiche active, networkctl list voit des périphériques réseau | Le réseau est géré par systemd-networkd | Utiliser systemd-networkd |
NetworkManager affiche active, nmcli device status voit des périphériques réseau | Le réseau est géré par NetworkManager | N'utilisez pas directement les deux configurations ci-dessous, traitez d'abord selon le plan NetworkManager du système actuel |
Plusieurs services affichent active | Le système peut avoir une gestion réseau hybride | Confirmez d'abord quel service gère réellement can0, puis choisissez la méthode correspondante |
Si vous ne pouvez pas déterminer la méthode utilisée par le système actuel, consultez d'abord la documentation de l'image système ou du fabricant de l'ordinateur hôte. Les ordinateurs hôtes FLY et le système FlyOS-FAST ne nécessitent généralement pas de configuration manuelle de CAN0.
Écrire la configuration de CAN0
Après avoir confirmé le mode de gestion réseau, choisissez la configuration correspondante en fonction du système réel.
- ifupdown
- systemd-networkd
ifupdown
Convient aux systèmes Debian, Armbian, etc. qui utilisent /etc/network/interfaces.d/ pour la gestion réseau. Configuration de débit 1M :
sudo /bin/sh -c "cat > /etc/network/interfaces.d/can0" << EOF
allow-hotplug can0
iface can0 can static
bitrate 1000000
up ifconfig \$IFACE txqueuelen 1024
pre-up ip link set can0 type can bitrate 1000000
pre-up ip link set can0 txqueuelen 1024
EOF
Pour un débit de 500K, remplacez 1000000 par 500000 dans la commande ci-dessus avant de l'exécuter.
systemd-networkd
Convient aux systèmes utilisant systemd-networkd pour la gestion réseau. Configuration de débit 1M :
Créez le fichier de configuration réseau :
sudo tee /etc/systemd/network/99-can.network > /dev/null <<'EOF'
[Match]
Name=can*
[CAN]
BitRate=1000000
RestartSec=100ms
EOF
Créez le fichier de configuration de lien :
sudo tee /etc/systemd/network/99-can.link > /dev/null <<'EOF'
[Match]
OriginalName=can*
[Link]
TxQueueLength=1024
EOF
Pour un débit de 500K, remplacez BitRate=1000000 par BitRate=500000.
Après la configuration, redémarrez l'appareil :
sudo reboot
Confirmation de l'état de CAN0
Après le redémarrage, exécutez :
ip -details link show can0
Vérifiez principalement les éléments suivants :
bitrate: Vitesse de communication CAN, par exemple1000000signifie 1M.qlenoutxqueuelen: Longueur de la file d'attente d'envoi, recommandée à1024.
Si le message indique que can0 est introuvable, vous pouvez d'abord exécuter :
ip link
lsusb
dmesg | grep -i can
Causes courantes :
- L'UTOC n'est pas reconnu par le système, ou le câble USB ne fournit que de l'alimentation.
- La carte mère n'a pas le firmware pont USB vers CAN flashé.
- Le fichier de configuration CAN0 n'est pas pris en compte, ou le système n'a pas été redémarré.
- L'image système ne prend pas en charge SocketCAN.
Recherche d'ID CAN
Avant de rechercher, assurez-vous que le périphérique est dans un état pouvant être recherché :
- Si l'UUID de ce périphérique a été écrit dans
printer.cfget est connecté normalement par Klipper, la commande de recherche peut ne pas lister à nouveau ce périphérique. - Avant de rechercher, vous pouvez commenter temporairement la section de configuration
[mcu]correspondante, enregistrer puis redémarrer Klipper. - Mettez le périphérique hors tension pendant environ 10 secondes, puis remettez-le sous tension, avant d'exécuter la commande de recherche.
Pour un ordinateur hôte standard, exécutez :
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
Pour un ordinateur hôte FLY, exécutez :
python3 ~/klipper/scripts/canbus_query.py can0
Interprétation des résultats :
Application: Klipper: Cet ID peut être directement écrit dansprinter.cfgpour utilisation.Application: CANBOOTouApplication: Katapult: Le périphérique est toujours dans le programme de démarrage, il faut d'abord flasher le firmware Klipper.- Aucun ID trouvé : Vérifiez d'abord CAN0, l'ordre des fils, les résistances de terminaison, l'alimentation et le mode de communication du firmware selon l'« Ordre de dépannage si aucun ID trouvé » ci-dessous.
Méthode de remplissage de l'ID CAN
- Ouvrez l'interface web de l'imprimante, trouvez
printer.cfgdans la configuration du menu de gauche. - Insérez l'UUID trouvé après
canbus_uuid:dans la section de configuration[mcu]correspondante. - Lors de l'utilisation d'une connexion CAN, ne conservez pas à la fois
serial:etcanbus_uuid:dans la même section[mcu]. - Enregistrez et redémarrez Klipper.
Exemple de remplissage pour firmware CAN :
[mcu]
canbus_uuid: xxxxxxxxxxxx
Le firmware USB utilise serial:, le firmware CAN utilise canbus_uuid:. Si vous passez d'un firmware USB à un firmware CAN, vous devez supprimer ou commenter l'ancien serial:.
Les ID dans la documentation sont des exemples. L'ID de chaque carte mère ou carte outil est différent, veuillez remplir l'ID réellement trouvé.
Dépannage des erreurs CAN : Si CAN0 et l'ID CAN sont correctement configurés mais que des anomalies de communication persistent, veuillez vous référer à Dépannage des erreurs CAN.