2011-10-12 44 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網絡連接。