首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在UART上广播和获取数据

在UART上广播和获取数据
EN

Stack Overflow用户
提问于 2017-07-09 09:21:16
回答 2查看 432关注 1票数 0

我有一台计算机(用作服务器)和几块带有Atmega微控制器的板,类似于:

计算机连接到UART & RS485 (使用USBRS485转换器)上的板卡(我有导致I不能使用ModBus的限制)。我希望通过总线从服务器广播一个消息,并从每个板子中获取ID (板ID是4位数字)。

当董事会接收到广播消息,并试图发送自己的ID和服务器收到一些假ID,我认为这与碰撞问题,当所有的董事会想要一次发送数据。

在我搜索了这个问题之后,我找到了一种方法,在每个板中放置一个常量,这样可以为发送数据节省一个特殊的延迟,并且当板接收到广播消息发送ID时,这样做很好,而且我看不到碰撞,但有一些问题:

  1. 可以是两个板的延迟号相同。
  2. 少数板子的好办法。
  3. 当要在总线上安装板时,额外的处理程序。

任何人都知道这个问题,并能帮助我更好地解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-10 17:11:52

你在你的问题中提到了Modbus,尽管你的一些其他陈述似乎偏离了它(比如4位的设备编号,Modbus只有1-255)。此外,Modbus 不支持对广播消息的响应。因此,我对您是否实际使用Modbus表示怀疑。

您可以使用的一个方案(在MA网络中经典地使用)是:

  1. 一旦接收到广播,让客户端根据其站点ID扫描总线的响应时间框架。如果您的客户能够看到响应,请让它等待一个最小的总线时间(模块需要根据当前总线定时回答广播消息的时间+主机确认广播答案的往返时间)加上基于其模块ID的额外时间,然后返回(1)
  2. 如果客户端看到总线在指定时间内无人使用,则发回广播答复。
  3. 让主程序以尽可能短的消息确认来自此客户端的广播响应。
  4. 如果发送广播响应的客户端没有收到正确的ack,请返回(1)

这不是100%的安全和绝对不符合Modbus规范,但可以工作。

代码语言:javascript
运行
复制
* is a transmission, - is a "wait"

****  (Bus master broadcast)

    --------- station 100 waits 100ms
    ------------------ station 200 waits 200ms
             **** Station 100 sends broadcast response
                ------------------ station 200 sees bus active and waits another 200ms
                 *** master acknowledges broadcast response of 100
                    ------------------ station 200 sees bus active again and waits 200ms from last seen activity
                                      **** Station 200 has seen bus quiet for 200ms and sends broadcast response
                                          *** master acks brc response of 200

这可能需要相当长的时间,并且需要根据广播响应和响应ack的传输时间精细地调整等待时间,但可以工作,实际上在许多CSMA/CD网络中都是这样实现的。

票数 1
EN

Stack Overflow用户

发布于 2017-07-09 15:59:02

这可能需要更长的时间,但这里有另一种方法。首先,设计您的协议,以便每个命令包含(或可以包含)一个ID,并且板只响应其ID的命令。然后,在您的主机上,您将遍历每个可能的ID,并向每个ID发送一个简单的命令。如果你得到一个回应,你知道有一个板有那个ID,如果你在一段时间后没有得到回应,你就知道那里没有板。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44994868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档