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 配置
- 电机型号和厂商