有一个情景:地面控制中心A向火星车B发一个控制指令,执行一个重要动作(转弯等)。B收到后执行,应答给A,A收到后更新“动作已执行”的状态。
那么就有些问题啊
1.假如通讯不稳定,就是说A收不到B的应答,那么B收到指令后执行了,但是A就不会更新状态。
2.就算采用重发机制,A还是有可能无法收到应答,那么A怎么还是无法知道动作执行了没有。
3.就算B先应答给A确认一下,A再发一次执行指令,那么第二次发的这个指令有可能B没收到,那么A还是显示已执行状态,而B实际没有执行。
4.就算B收到A的第二次指令后再执行,那么B有可能执行出错啊,那其实还是没有执行。
。。。反正这种情况理论上有多种可能。
协议做得再好,也要物理链路传输啊,地球到火星这么远的宇宙空间,谁知道有谁什么东西会干扰这个通讯的,那火星车状态跟地球不一致,那不很容易掉沟?
通讯双方就算不停应答,也总得有一方要先停止这个对话啊。
这中情况如果在一些工业场合,会造成很严重的事故的。不知道是怎么解决的?
讨论讨论啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
理论上各种环境都有啊,我们要讨论如果环境不够好,能怎么办?
卫星:我也是看运气啊,运气不好也会丢。
对,像电力行业,绝对不能出错啊。
简单说说是怎么保证的啊。0.3s对于一些事故来说,还是很长吧,毕竟电那么快。。
人家厂家 是这样来做的:
每一条 远控指令 都需要 编排上 序列码
这样才 便于 远端的执行器 反馈应答。。
例如:xx年yy月zz日hh小时mm分钟ss秒 执行某某 序列码 nnn1
这样的指令 发出之后:5倍传输延迟 没有收到 应答:nnn1已收到。
控制中心 就需要 重复 发送 刚才的指令:但是序列码 变为 nnn2
继续等待 5倍传输延迟,如果收到了 远端应答: nnn2 已收到,
就接着 发送 —— nnn2 执行 的 命令 ;同样 等待 5倍 传输延迟 ,
执行结果或者执行预备 应该被控制中心收到,否则 之前的
两步 都作废 。重新再来 。。。
地球上,相对简单,传输可靠,延迟也不大 。。。
一周热门 更多>