繁体   English   中英

RS485:简单可靠的协议

[英]RS485: simple and reliable protocol

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

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

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

  1. 目标正确接收了这两个帧(请求和响应),并且事务结束没有问题。
  2. 从机未收到来自主机的请求(校验和错误)。 超时后,主机再次发送请求。 没问题。
  3. 主服务器未收到从服务器的响应(校验和错误)。 超时后,主机可以再次发送请求。

恕我直言,最后一种情况是有问题的。 从设备无法理解第二个请求是否与第一个请求完全相同,因此它将处理两次请求。 如果请求是“将电动机移动两步”,“自上次请求以来已按下开关,请给我”,“切换继电器”等等,会发生什么?

我认为最简单的“请求/响应”协议不能很好地工作,除非应用程序级别知道该协议的局限性,并且避免两次发送都危险的请求。

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

我在寻找类似的东西时,最近在这里遇到了HDLC 它的运行模式可能满足您的需求。 您描述的是正常响应模式(NRM):仅从主服务器请求/响应。 您可以使用开放源HDLC成帧器作为协议的基础。 我正在考虑自己使用此功能,但似乎仍有相当一部分留给项目开发人员实施。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM