【问题标题】:Any higher level protocol over serial port communication ?任何更高级别的串行端口通信协议?
【发布时间】:2011-12-06 06:44:00
【问题描述】:

我们正在开设机器人课程,Xbee 是学生最喜欢的通信协议。在过去的两年里,我们帮助他们建立了大约 62 个不同的项目(还有 40 个正在筹备中)。

几乎所有项目都涉及向机器人发送不同类型的数据。有时它是一个 1 字节的命令,而有时它是一个需要解释的长字符串。有时,当一个 xbee 在广播模式下用于向多个特定机器人发送消息时,我们会面临解决机器人问题的问题。学生每次都用他们的创造力来解决这个问题。

我个人认为这是对轮子的再投资。我想知道是否存在用于串行端口通信的更高级别的协议建议,如果没有任何特定的协议设计,我想知道是否值得为学生需要设计一个。

【问题讨论】:

  • 这不是一个答案,但就个人而言,尤其是在 uni,我不喜欢在我要从事的项目中为我做太多的事情。学习解决这些通信问题可能是学习经验的一部分——我如何解决多节点广播通信?如果你去掉这方面,也许你的学生不会从你的课程中学到那么多。因为它是一袋钉子,我经常得到讲师的密码,只是把它放在垃圾箱里。这并不意味着你也会这样做;-)
  • 您是按照 ppp 的思路思考还是滑倒?
  • @RichColours 我同意你的观点,通过解决这些沟通问题,学生可以学到很多东西。一旦我下定决心设计这样的协议,学生们将自己合作和构建它。一旦开发出来,它将加快下一批的项目开发,也许这些批次将能够承担更具挑战性的问题,因为他们的前辈已经解决了一些问题。

标签: embedded communication spi xbee


【解决方案1】:

您是指系统的内部协议吗?如果是的话,嵌入式软件工程师通常倾向于推出他们自己的协议。他们中的大多数人都说它可以让他们做出最优化的系统。

这不是理想的方法。我同意你的观点,让学生学习好例子是有好处的。

不幸的是,我不知道任何适合机器人应用程序的协议栈。但我建议你尝试google's protocol buffer 系统,它能够简化构建协议引擎的大部分工作,并且它也适用于纯 c。

【讨论】:

  • 无论做什么我们都会开源。
【解决方案2】:

如果你想使用已经开放的标准协议,你可以实现 Modbus ASCII。

【讨论】:

  • 或 Modbus RTU,如果您想保持代码简单并减少带宽。我在不到一个工作日的时间内编写了一个占用空间小的 Modbus 服务器。规格在modbus.org免费提供
【解决方案3】:

Comli 是一种主/从协议,用于一些较旧的设备或无法使用以太网时。如果您询问,您可能可以从 ABB 获得规格 - 这已经不是什么秘密了。

也就是说,您可以在其之上放置一个 OPC 服务器/客户端架构,以获得更强大的通信,例如

+--------------+    +--------------+         +--------+
| OPC UA Client| -- | OPC UA Server| -comli- | Device |
+--------------+    +--------------+         +--------+

这将使您的 OPC UA 客户端协议独立,从而使事情变得更容易。

Modbus 是另一种经常使用的串行协议

我相信 OPC 会给你你想要的高级操作。

www.opcfoundation.org www.abb.com

PS。 OPC UA 与旧的 OLE 版本不同,因此与 COM/DCOM 无关

【讨论】:

    【解决方案4】:

    就像mjh2007说的,Modbus是标准的,开放的,简单的。我能看到的唯一问题是您是否希望机器人“快速”响应命令,因为串行 Modbus 使用超时来检测数据包的结尾。您可以通过忽略超时要求并在接收数据包时根据其功能代码和参数计算数据包的预期大小来解决此问题,然后您可以在收到最后一个字节并验证任何校验和后立即开始处理命令。 This page 提供了有关实施此类方案的更多详细信息。

    【讨论】:

      【解决方案5】:

      确保使用 XBee 模块的“传输显式”帧(类型 0x11)在 API 模式下运行,ATAO 设置为 1。您可以单播到网络上的特定机器人,而不是总是广播帧。在网状 ZigBee 网络上,您希望尽可能避免广播。

      我猜你要么使用“AT 模式”发送原始数据,要么使用 ATAO 设置为 0 的“API 模式”(有时称为“透明串行”)。

      如果您查看该帧类型 (0x11),您会看到接收方收到的 0x91 帧已经包含多个字段(源/目标端点、集群、配置文件 ID)。由于您不尝试进行 ZigBee 网络,因此您可以重新调整这些字段的用途。

      【讨论】:

        猜你喜欢
        • 2017-07-30
        • 2020-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-02
        • 1970-01-01
        • 1970-01-01
        • 2012-01-08
        相关资源
        最近更新 更多