3

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

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

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

4

5 回答 5

5

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

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

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

于 2011-10-12T18:15:35.973 回答
4

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

于 2011-10-12T20:57:17.970 回答
2

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

于 2011-10-14T16:54:36.850 回答
2

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 无关

于 2011-10-12T16:18:16.783 回答
0

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

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

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

于 2012-01-04T20:52:05.567 回答