2011-10-12 76 views
3

我们正在运行机器人课程,Xbee是学生最喜欢的通信协议。在过去的两年里,我们帮助他们建设了大约62个不同的项目(还有40个正在建设中)。通过串口通信的任何更高级别的协议?

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

我个人觉得这是重新投入车轮。我想知道是否有任何更高级别的协议建议存在串口通信,如果没有任何特定的协议设计,我想知道是否值得为学生设计一个需要。

+2

这不是一个答案,但个人而言,尤其是在uni,我并不喜欢我为我所做的项目所做的太多事情。学习解决这些通信问题可能会成为学习体验的一部分 - 我如何解决多节点广播通信? 如果你删除了这个方面,也许你的学生不会从你的课程中学到很多东西。 因为它是一包指甲,所以我只给一位讲师的代码放在箱子里。这并不意味着你会太;-) – RichColours

+0

你是否在思考ppp或滑动? –

+0

@RichColours我同意你的看法,通过解决这些沟通问题,学生们学到了很多东西。一旦我决定设计这样的协议,它将是将自己协作和构建它的学生。一旦开发出来,它将加速下一批次的项目开发,也许这些批次将能够处理更具挑战性的问题,因为一些问题已经被老年人照顾。 –

回答

4

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

+1

或Modbus RTU,如果你想保持代码简单并减少带宽。我在不到一个工作日的时间内编写了一个占用空间小的Modbus服务器。规格在http://modbus.org免费 –

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

5

你的意思是内部只有你的系统的协议?如果是的话,通常嵌入式软件工程师倾向于推出他们自己的协议。他们中的大多数都会说让它们做出最优化的系统。

这不是理想的方法。我同意你的看法,让学生学习好的例子是很好的。

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

+0

无论我们做什么,我们都会开源。 –

2

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

0

务必使用ATAO设置为1的API模式下运行的XBee模块的“发送显式”帧(类型0x11)。您可以单播到网络上的特定bot,而不是始终播放帧。在网状ZigBee网络上,您希望尽可能避免广播。

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

如果您查看该帧类型(0x11),您会看到收件人获取了包含多个字段(源/目标端点,群集,配置文件ID)的0x91帧。您可以重新使用这些字段,因为您不想执行ZigBee网络连接。