2016-06-21 63 views
0

我在API模式下使用XBee Digimesh模块在不同的工业机器之间发送数据,允许它们共享数据,信息和命令。为XBee开发通信协议

的API模式提供了一些基本的命令,主要执行寻址和为了做配置与所述的XBee模块本身交谈,等等

发送用户数据经由相应的XBee API-命令,它允许进行发送最大有效载荷为72字节的用户定义数据。

因为我想扩大这种沟通以允许整合更多的机器等。我正在考虑如何实现一个基本的通信系统,它完全适合于72字节的超小型有效载荷。

来自网络,我通常会在这里使用某种JSON,但这会很快填满有效载荷。

另外它不可能发送很多信息的帧,因为这也会很快填满有效载荷。

所以我想出了一种不同的沟通方式。相反发射挤满了信息帧,何谈发送某种消息这样的:

  • 机-A广播:谁在那儿?
  • 机-B回答:这是我,我是一个XXX-机
  • 机-C回答:这是我,我是一个XXX-机

机-A现在计算的答复,并决定一起工作Machine-B(因为Machine-C与As接口不匹配):

  • Machine-A to B:Hello B,请给我一些价值,请!
  • 机B到A:你去那里:2.349590

这可以扩展到不同的短消息。在每条消息之后,发件人将消息的类型保存在一个状态中,并且将根据状态/上下文评估回复。

我试图避免的是定义一个基于位的协议(如MIDI),它将所有事件定义为基于位的标志。由于我们现在不会在未来添加什么类型的硬件,我想要一个非常灵活的通信协议,并且不需要协调器或消息代理等。

但是由于这是我第一次思考关于通信协议我很想知道是否有一些现有的框架可以处理轻载荷上的复杂通信。

回答

0

您可能需要阅读ZigBee Cluster Library规范,重点关注一般命令。它描述了一个属性发现和检索系统。每个属性都有一个16位的ID和一个确定其大小的数据类型(各种大小的整数,枚举类型,位图)。

它是专为802.15.4网络的小型有效载荷而设计的协议,您可能会将其协议从其子集中剥离出来。其他ZigBee规范只是给定16位群集ID的定义属性(和命令)的列表。

您的主设备可以通过发现过程获取属性ID列表,然后发送一次获取多个ID值的请求。 16位ID,8位属性类型,然后是可变长度数据,将对紧急响应进行压缩。即使您的主设备不知道该ID对应的内容,它也可以将数据传递给其他知道的系统(如Web服务器)。