RS485:简单可靠的协议

时间:2013-10-23 15:29:23

标签: networking embedded protocols network-protocols rs485

我正在尝试为2线RS485总线设计一个简单可靠的主/从协议。

总线上的所有节点都有一个唯一的地址。一个节点是主节点,它是唯一能够开始通信的节点。在主服务器向它们发送请求之前,所有其他节点都不能发送任何内容。

我正在考虑简单的“请求/响应”协议:主服务器向从服务器发送请求并等待其答案。之后,M向另一个奴隶发送请求。 可能会发生三种情况。

  1. 目的地正确接收了两个帧(请求和响应),事务结束没有问题。
  2. 从站不接收来自主站的请求(校验和错误)。超时后,主设备再次发送请求。没问题。
  3. 主站未收到来自从站的响应(校验和错误)。超时后,主人可以再次发送请求。
  4. 恕我直言,最后一个场景是有问题的。从属设备无法理解第二个请求是否与第一个请求完全相同,因此它会处理请求两次。如果请求是“将电机移动两步”,“如果自上次请求后开关是预先设置的,请给我”,“切换继电器”,等等会发生什么?

    我认为最简单的“请求/响应”协议不能很好地工作,除非应用程序级别知道协议的限制并避免在传输两次时发生危险的请求。

    你有一些简单可靠的协议吗?我不想重新发明轮子。

1 个答案:

答案 0 :(得分:0)

我最近遇到了HDLC,因为我正在寻找类似的东西。它具有可满足您需求的操作模式。正常响应模式(NRM)就是您所描述的:仅来自主站的请求/响应。您可以使用open source HDLC framer作为协议的基础。我正在考虑自己使用它,但似乎仍有相当数量留给项目开发人员实施。

This是我遇到的答案,它指向了HDLC的方向。