Embedded 串行端口通信是否有更高级别的协议?

Embedded 串行端口通信是否有更高级别的协议?,embedded,communication,spi,xbee,Embedded,Communication,Spi,Xbee,我们正在开设机器人学课程,Xbee是学生最喜欢的通信协议。在过去两年中,我们帮助他们建设了大约62个不同的项目(另有40个项目正在筹备中) 所有的项目都涉及到向机器人发送不同类型的数据。有时它是一个1字节的命令,有时它是一个要解释的长字符串。有时,当一个xbee在广播模式下用于向多个机器人中的特定机器人发送消息时,我们会面临寻址机器人的问题。学生们每次都用他们的创造力来解决这个问题 我个人认为这是对车轮的再投资。我想知道是否有更高层次的协议建议用于串行端口通信,如果没有任何特定的协议设计,我想知

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

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


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

Comli是一种主/从协议,在一些较旧的设备中使用,或者在无法使用以太网时使用。如果你要求的话,你可能会从ABB那里得到规格——这不是秘密

也就是说,您可以将OPC服务器/客户端体系结构置于其之上,以获得更强大的通信功能,例如

+--------------+    +--------------+         +--------+
| OPC UA Client| -- | OPC UA Server| -comli- | Device |
+--------------+    +--------------+         +--------+
这将使您的OPC UA客户端协议独立,从而使事情变得更容易

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

我相信OPC将为您提供所需的高级操作


另外,OPC UA与旧的OLE版本不同,因此与COM/DCOM无关。您是指系统的内部协议吗?如果是,嵌入式软件工程师往往倾向于推出自己的协议。他们中的大多数人都说这可以让他们制造出最佳的系统

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


不幸的是,我不知道任何协议栈适合机器人技术应用。但我建议您尝试使用该系统,它能够简化构建协议引擎的大部分工作,并且它也可以与普通c一起工作。

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

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

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

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


如果查看该帧类型(0x11),您将看到收件人获取的0x91帧已经包含多个字段(源/目标端点、集群、概要文件ID)。你可以重新设定这些领域的用途,因为你没有尝试使用ZigBee网络。

这不是一个答案,但就个人而言,尤其是在大学,我不喜欢为我的项目做太多的事情。学习如何解决这些通信问题可能是学习体验的一部分-如何解决多节点广播通信?如果你去掉这一点,也许你的学生就不会从你的课程中学到那么多。就我而言,我经常收到讲师的代码,但由于它是一袋钉子,我只能把它放进垃圾箱。这并不意味着你的也将如此;-)你是在考虑ppp还是slip?@richcolors我同意你的观点,通过解决这些沟通问题,学生们学到了很多东西。一旦我下定决心设计这样的协议,学生们就会合作并自己构建它。一旦开发完成,它将加快下一批的项目开发,也许这些批次将能够解决更具挑战性的问题,因为一些问题已经由他们的前辈解决。我们将开放源代码,无论我们做什么。或者Modbus RTU,如果您想保持代码简单并减少带宽。我在不到一个工作日的时间里编写了一个低占用空间的Modbus服务器。规格免费提供