2016-06-21 53 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服務器)。