通过串口通信的任何更高级协议?

时间:2011-10-12 16:02:28

标签: embedded communication spi xbee

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

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

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

5 个答案:

答案 0 :(得分:5)

您的意思是系统的内部唯一协议吗?如果是,通常嵌入式软件工程师倾向于推出自己的协议。他们中的大多数都认为它可以让他们制作出最优的系统。

这不是理想的方法。我同意你的观点,学生学好榜样是件好事。

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

答案 1 :(得分:4)

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

答案 2 :(得分: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

无关

答案 3 :(得分:2)

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

答案 4 :(得分:0)

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

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

如果查看该帧类型(0x11),您将看到收件人获得的0x91帧已包含多个字段(源/目标端点,群集,配置文件ID)。您可以重新使用这些字段,因为您没有尝试进行ZigBee网络。