Skip to main content

CAN 通信错误

”socketcan write failed: No buffer space available (os error 105)”

原因: CAN TX 缓冲区溢出 - 发送消息太快。

解决方案 1:增加控制周期

解决方案 2:增加 TX 队列长度

解决方案 3:停止其他 CAN 发送程序

解决方案 4:减少反馈请求频率


”CAN interface not found”

原因: CAN 接口未配置或未启动。

解决方案

预期输出:

“Permission denied on /dev/ttyACM0”

原因: 用户没有访问串口的权限。

解决方案 1:加入 dialout 组(永久)

解决方案 2:临时权限(临时)


电机响应问题

state = None

原因: 还没收到反馈帧。

解决方案:实现重试循环

检查清单


”Mode switch timeout”

原因: 电机未响应模式切换命令。

解决方案 1:验证电机 ID

解决方案 2:检查电机状态

解决方案 3:先清除错误

解决方案 4:增加超时时间


”Motor not moving”

原因: 电机未使能、模式错误或命令未发送。

检查清单


错误码参考

达妙状态码

错误处理代码


导入错误

”ImportError: cannot import name ‘Controller’”

原因: 包未安装或 ABI 库缺失。

解决方案


”AbiLoadError: Failed to load libmotor_abi”

原因: ABI 共享库找不到或不兼容。

解决方案


性能问题

CPU 使用率过高

原因 1:紧凑循环无休眠

原因 2:过度轮询


定时不稳定

解决方案


调试技巧

启用详细日志

检查 CAN 流量

使用 CLI 测试

隔离问题


获取帮助

如果问题持续:

1. 检查文档

2. 收集信息

3. 报告问题时包含

  • 完整错误消息
  • 代码片段
  • 系统信息
  • CAN 配置
  • 电机型号和厂商

下一步