基于USB總線的機器人上下位機通信
EDUROBOT-680-II型教學機器人是上海交通大學機器人研究所采用世界銀行貸款研制的一種五自由度多關節的機器人。它具備工業機器的基本功能、良好的開放性以及舒適的使用界面,主要大專院校和科研機構提供教學和科研工具。學生可以通過親手操作了解和學習工業機器人,它具備工業機器人的基本功能、良好的開放性以及舒適的使用界面,主要為大專院校和科研機構提供教學和科研工具。學生可以通過親手操作了解和學習工業機器人,科研人員還可對它進行二次開發。
教學機器人的上位機(主控計算機)和下位機(運動控制器)原先采用并行口(LPT1)的SPP方式進行通信。利用LPT1的狀態寄存器(Status Port)具有的讀能力和每次傳送半字節(Nibble)來實現數據的雙向傳送功能。每次傳送的時序(次序)由軟件建立,在控制字的協調下按照教學機器人的通信協議接收和發送數據。
目前USB越來越普及,正逐漸取代串口和并口在計算機接口中的地位。為了研究USB在實時通信時的性能,筆者已將教學機器人上下位機通信改用USB端口實現。
1 USB特點及其應用
通用串行總線USB(Universal Serial Bus)是1994年底由Compaq、IBM、Microsoft等多家公司聯合提出的一種計算機接噪覆亡,目前已發展到USB2.0。由于USB具有以下幾方面的特點,所以迅速普及,逐漸確定了在計算機接口中的主導地位。
(1)易用性。USB支持熱插拔和即插即用。
(2)可擴展性。用戶可以通過連接USB集線器到一個已有的端口來增加USB端口數量,集線器上還可以連更多的集線器。理論上可以連接127個外設到USB總線上。
(3)快速性。USB1.1版規定了兩種傳輸速率:低速傳輸和全速傳輸。低速傳輸的速率是1.5Mbps,全速是12Mbps。這不但遠遠高于傳統的串口傳輸速率,也比并口傳輸快了好多倍。最近推出的USB2.0允許的最高傳輸速率高達480Mbps。
(4)可靠性。USB的可靠性來自硬件設計和USB數據傳輸協議兩方面的保證。USB驅動器、接收器和電纜的硬件規范消除了大多數可能引起數據錯誤的噪聲;USB協議使用了差錯校驗和數據重傳機制,可以最大程度保證數據傳輸的準確性。
(5)內置電源。USB總線內置電源線,可以給外設提供5V和最多500mA的電源供應,滿足大部分低功耗外設的電源要求。
由于USB具有這些突出的優點,不但一些傳統外設開始提供USB接口,而且大量新型外設也把USB接口作為首先甚至唯一的接口,如MP3播放器、移動硬盤等。由于USB的高可靠性和足夠快的通信速率,USB開始應用于工業級的實時通信和控制,例如機器人系統中示教盒與控制器的通信。本文論述的用USB端口實現機器人上位機與下位機的通信也屬于這些方面的應用。
2 用USB實現計算機雙機通信
由于USB模型是一種Host-Slave(主機-外設)主從式結構,沒有辦法使兩臺主機不通過外設而直接通過USB總線通信。然而可通過增加外設控制器的方法使兩臺主機利用它們的USB端口通信。每個外設控制器連接到不同的主要,并利用共享的緩沖器交換數據。Cypress公司的EZ-Link和Prolific公司的PL-2301把兩個外設控制器和共享緩沖區集成到一塊芯片上,作為兩臺主機通過USB總線通俗訴橋梁。其它公司也提供類似的控制芯片。在教學機器人中,采用PL-2301。
PL-2301是臺灣Prolific公司生產的一種全速USB控制芯片。PL-2301的結構框圖如圖1所示。
PL-2301包括兩套獨立的USB控制單元。在握手信號的協調下,它們通過兩個FIFO緩沖器無阻塞地交換數據。PL-2301包含四個終端:缺省的控制終端(地址00H)、中斷終端(地址81H)、塊輸出終端(地址02H)、塊輸入終端(地址83H)。控制傳輸用于在主機列舉階段完成對PL-2301的配置及在兩臺主機通信時控制PL-2301的握手信號;中斷傳輸用于PL-2301定期(每毫秒一次)向主機報告握手信號的狀態;塊傳輸用于兩臺主機之間實時地交換數據。塊傳輸支持錯誤檢測,這對實時通信和控制很重要。控制傳輸被確保擁有10%的USB總線帶寬,中斷傳輸和等時傳輸最多可以使用90%的帶寬,塊傳輸使用剩余的最大可用帶寬(最多95%)。當總線不太忙時,由于塊傳輸只有一個很小的協議頭(13字節),它是所有傳輸類型中最快的。為了確何教學機器人上下位機以最快的速度通信,滿足實時性要求,最好不要在USB總線上掛接過多的USB外設。
PL-2301除了能對USB標準請求做出反應外,還能對幾種廠商自定義的請求做出反應。自定義請求ClearQuickLinkFeature和SetQuickLinkFeature用于控制兩臺主機通信時PL-2301的握手信號。這些握手信號是:
(1)TX_RDY指示本地USB端口是否準備好傳輸數據的指示信號。
(2)S_EN掛起使能信號。置位后,PL-2301支持標準的USB掛起特性。
(3)RESET_O塊輸出管道的復位信號,用于出現錯誤時復位塊輸出通道。
(4)RESET_IN塊輸入管道的復位信號,用于出現錯誤時復位塊輸入管道。
(5)TX_REQ塊傳輸的請求信號。
(6)TX_C塊傳輸完成的指示信號。
(7)PEER_E告訴對方本地端口是否連接好的指示信號。
在這幾個握手信號的協調下,上位機和下位機可以雙向通信。圖2是主機PC A向PC B傳輸數據的流程圖。這些底層的細節問題并不需要控制,由PL-2301的驅動程序完成。
評論