APP下发指令后机器人没反应故障时,怎么定位问题
APP下发指令后机器人没反应故障时是典型“系统联调故障定位”场景。
APP 下发指令 → 机器人没反应。
你如果是测试或者工程师,千万不能上来就猜“程序有问题”。
要按链路拆解。
我给你一个标准排查逻辑 —— 链路分层定位法。
一、先画出完整指令链路
APP 控制机器人,实际链路是这样的:
手机APP↓云服务器↓网络通道(MQTT / HTTPS / WebSocket)↓机器人通讯模块↓控制系统↓执行模块(电机)
只要其中任何一环断了,就会“没反应”。所以第一步:
不猜原因,先拆链路。
二、第一层:APP 侧确认
1️⃣ 指令是否真的发出?
-
APP日志是否记录发送成功?
-
是否有返回 ACK(确认回执)?
-
是否报网络错误?
如果连服务器都没发成功,
那机器人肯定没反应。
三、第二层:云端确认
如果APP显示发送成功:
要查云端:
-
是否收到指令?
-
是否转发成功?
-
是否有设备离线记录?
很多问题在这里:
-
设备掉线
-
心跳超时
-
Token失效
-
鉴权失败
四、第三层:网络链路
机器人是否在线?
看:
-
是否保持心跳包
-
是否断网
-
WiFi信号强度
-
是否 NAT 穿透失败
远程控制失败,80% 是网络问题。
五、第四层:机器人端日志
如果指令已经到达机器人:
要看机器人日志:
-
是否收到指令?
-
是否解析成功?
-
是否进入控制状态机?
-
是否被安全机制拦截?
例如:
-
当前电量过低,禁止启动
-
当前处于错误状态
-
正在OTA升级
-
被物理按键锁定
很多时候:
不是没反应,而是“被逻辑拦截”。
六、第五层:执行层问题
如果控制系统已经下发执行指令,
但电机不动:
可能是:
-
电机驱动板故障
-
电机过流保护
-
保险丝断
-
主控板异常
这属于硬件层面。
七、如何高效定位?
工程上通常做三件事:
1️⃣ 全链路日志追踪
给每条指令一个 ID:
-
APP 发出 → 记录 ID
-
云端转发 → 记录 ID
-
机器人接收 → 记录 ID
-
执行完成 → 记录 ID
如果某个环节断了,
ID 就消失在那里。
这叫:
链路追踪(Trace ID)
2️⃣ 分层抓包
-
手机抓包
-
服务器日志
-
机器人串口日志
-
网络抓包
3️⃣ 本地直连测试
绕开云端:
-
直接局域网控制
-
看是否响应
如果本地能控制,远程不能,
那问题就在云端或公网。
八、工程思维总结
定位原则:
1️⃣ 先确认是否发出
2️⃣ 再确认是否到达
3️⃣ 再确认是否执行
4️⃣ 最后确认是否物理层动作
永远从外到内排查。
夜雨聆风
