CAN网络配置与ID搜索
使用前注意
- 将 UTOR 或已刷 CAN 桥接固件的主板通过 USB 连接至上位机。
- 请通过网络登录上位机后台, 不要使用串口。
- 若使用 FlyOS-FAST 系统, 则无需配置 CAN(系统已预设为 1M 速率, 1024 缓存)。
检查上位机是否支持 CAN
若使用 FLY 上位机可跳过此步骤。
执行以下命令检测内核 CAN 支持:
sudo modprobe can && echo "内核支持CAN" || echo "内核不支持CAN"
若显示“内核支持CAN”, 则可继续配置。
配置 CAN0
⚠️ 此操作将覆盖原有 CAN0 配置, 完成后需重启系统。
FAST 系统无需执行!
根据系统类型选择对应配置方式:
- 普通Linux系统
- 树莓派系统
普通 Linux 系统
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
500K 速率配置:
将上述命令中的 1000000 改为 500000 即可。
树莓派系统
创建网络配置文件(可修改 BitRate 值):
sudo tee /etc/systemd/network/99-can.network > /dev/null <<'EOF'
[Match]
Name=can*
[CAN]
BitRate=1000000
RestartSec=100ms
EOF
创建链接配置文件(缓存不建议修改):
sudo tee /etc/systemd/network/99-can.link > /dev/null <<'EOF'
[Match]
OriginalName=can*
[Link]
TxQueueLength=1024
EOF
最后重启设备:
sudo reboot
搜索CAN ID的指令
- 普通上位机搜索指令
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0 - FLY上位机搜索指令
python3 ~/klipper/scripts/canbus_query.py can0 - 如果出现ID并在最后面的
Application:显示Klipper则代表此ID可以直接使用 - 如果出现ID并在最后面的
Application:显示CANBOOT或者Katapult则代表需要刷固件才可以使用Loading...
报错提示
- 下方是常见的报错
- OSError: [Errno 19] No such device
- can.CanError: Failed to transmit: [Errno 100] Network is down
- can.CanError: Failed to transmit: [Errno 105] No buffer space available
- 第一种是上位机找不到CAN设备(刷了USB桥接固件的主板或者UTOC)
- 第二种是上位机没有进行或者配置错了CAN0
- 第三总是上位机缓存不足或者系统问题等导致缓存崩溃
- 第二点与第三点可以看配置CAN0, 重新配置即可
搜索工具板 ID 指南与故障排查
1. 检查与配置 CAN 速率
工具板固件的 CAN 通信速率必须与上位机(主机)的配置完全一致, 否则设备将无法被发现。
操作步骤:
- 在主机终端中运行以下命令, 查看 CAN0 接口的当前状态:
ip -details link show can0 - 在输出信息中, 确认两个关键参数:
bitrate: 当前的 CAN 通信速率(例如1000000表示 1Mbps)。TxQueueLength: 发送队列长度/缓存大小(例如1024)。
下图为命令输出的示例, 请重点核对红框内的 bitrate 参数是否与您的设备设置匹配:
Loading...
2. 排除系统 ID 占用
如果工具板已刷入 Klipper 固件, 并且其 ID 已被写入主机配置文件 (printer.cfg), 则该 ID 会被系统占用而无法在搜索中显示。
解决方法:
- 临时注释或删除
printer.cfg中关于该工具板的所有配置段落。 - 执行修改后, 必须将机器完全关机并断开电源约 10 秒钟, 再重新上电。
3. 验证 CAN 总线终端电阻
- 一个稳定的 CAN 总线网络必须在物理线路的两端安装
120Ω的终端电阻 - 必须保证CAN-H与CAN-L在断电情况下使用万用表测量阻值处于
60Ω左右
检查方法:
- 务必在整机断电的情况下操作。
- 使用万用表的电阻档, 测量主板 CAN 接口或工具板上的 CAN-H 与 CAN-L 引脚之间的阻值。
- 正确的总线阻值应约为 60Ω(两个
120Ω电阻并联的结果)。若测量值偏差过大(如开路或仅120Ω), 则表明接线或终端电阻配置有误。
各设备配置规则:
| 设备类型 | 终端电阻要求 | 操作说明 |
|---|---|---|
| CAN 工具板 | 需要 120Ω 终端电阻 | 通过板载的跳线帽或拨码开关启用。 |
| 主板 CAN 接口 | 需要 120Ω 终端电阻 | 通过板载的跳线帽或拨码开关启用。 |
| UTOC 类转换模块 | 已内置 120Ω 电阻 | 无需再启用其他终端电阻。 |
Loading...