我正在尝试为 2 线 RS485 总线设计一个简单可靠的主/从协议。
总线上的所有节点都有一个唯一的地址。一个节点是主节点,它是唯一能够开始通信的节点。在主节点向它们发送请求之前,所有其他节点都无法发送任何内容。
我在考虑简单的“请求/响应”协议:主机向从机发送请求并等待它的回答。之后,M 向另一个从站发送请求。可能会发生三种情况。
- 两个帧(请求和响应)都被目的地正确接收,事务结束没有问题。
- 从站没有收到来自主站的请求(校验和错误)。超时后,主机再次发送请求。没问题。
- 主站未收到从站的响应(校验和错误)。超时后,master 可以再次发送请求。
恕我直言,最后一种情况是有问题的。从站无法理解第二个请求是否与第一个完全相同,因此它处理了两次请求。如果请求是“将电机移动两步”、“在上次请求后是否按下开关”、“切换继电器”等等,会发生什么?
我认为最简单的“请求/响应”协议不能很好地工作,除非应用程序级别知道协议的限制并避免如果传输两次就会很危险的请求。
你有什么好的简单可靠的协议可以推荐吗?我不想重新发明轮子。