<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于USB總線的機(jī)器人上下位機(jī)通信

          基于USB總線的機(jī)器人上下位機(jī)通信

          作者: 時(shí)間:2012-06-06 來源:網(wǎng)絡(luò) 收藏

          EDUROBOT-680-II型教學(xué)是上海交通大學(xué)研究所采用世界銀行貸款研制的一種五自由度多關(guān)節(jié)的。它具備工業(yè)機(jī)器的基本功能、良好的開放性以及舒適的使用界面,主要大專院校和科研機(jī)構(gòu)提供教學(xué)和科研工具。學(xué)生可以通過親手操作了解和學(xué)習(xí)工業(yè)機(jī)器人,它具備工業(yè)機(jī)器人的基本功能、良好的開放性以及舒適的使用界面,主要為大專院校和科研機(jī)構(gòu)提供教學(xué)和科研工具。學(xué)生可以通過親手操作了解和學(xué)習(xí)工業(yè)機(jī)器人,科研人員還可對它進(jìn)行二次開發(fā)。

          教學(xué)機(jī)器人的上位機(jī)(主控計(jì)算機(jī))和下位機(jī)(運(yùn)動(dòng)控制器)原先采用并行口(LPT1)的SPP方式進(jìn)行通信。利用LPT1的狀態(tài)寄存器(Status Port)具有的讀能力和每次傳送半字節(jié)(Nibble)來實(shí)現(xiàn)數(shù)據(jù)的雙向傳送功能。每次傳送的時(shí)序(次序)由軟件建立,在控制字的協(xié)調(diào)下按照教學(xué)機(jī)器人的通信協(xié)議接收和發(fā)送數(shù)據(jù)。

          目前USB越來越普及,正逐漸取代串口和并口在計(jì)算機(jī)接口中的地位。為了研究USB在實(shí)時(shí)通信時(shí)的性能,筆者已將教學(xué)機(jī)器人改用USB端口實(shí)現(xiàn)。


          1 USB特點(diǎn)及其應(yīng)用

          通用串行總線USB(Universal Serial Bus)是1994年底由Compaq、IBM、Microsoft等多家公司聯(lián)合提出的一種計(jì)算機(jī)接噪覆亡,目前已發(fā)展到USB2.0。由于USB具有以下幾方面的特點(diǎn),所以迅速普及,逐漸確定了在計(jì)算機(jī)接口中的主導(dǎo)地位。

          (1)易用性。USB支持熱插拔和即插即用。

          (2)可擴(kuò)展性。用戶可以通過連接USB集線器到一個(gè)已有的端口來增加USB端口數(shù)量,集線器上還可以連更多的集線器。理論上可以連接127個(gè)外設(shè)到上。

          (3)快速性。USB1.1版規(guī)定了兩種傳輸速率:低速傳輸和全速傳輸。低速傳輸?shù)乃俾适?.5Mbps,全速是12Mbps。這不但遠(yuǎn)遠(yuǎn)高于傳統(tǒng)的串口傳輸速率,也比并口傳輸快了好多倍。最近推出的USB2.0允許的最高傳輸速率高達(dá)480Mbps。

          (4)可靠性。USB的可靠性來自硬件設(shè)計(jì)和USB數(shù)據(jù)傳輸協(xié)議兩方面的保證。USB驅(qū)動(dòng)器、接收器和電纜的硬件規(guī)范消除了大多數(shù)可能引起數(shù)據(jù)錯(cuò)誤的噪聲;USB協(xié)議使用了差錯(cuò)校驗(yàn)和數(shù)據(jù)重傳機(jī)制,可以最大程度保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。

          (5)內(nèi)置電源。內(nèi)置電源線,可以給外設(shè)提供5V和最多500mA的電源供應(yīng),滿足大部分低功耗外設(shè)的電源要求。

          由于USB具有這些突出的優(yōu)點(diǎn),不但一些傳統(tǒng)外設(shè)開始提供USB接口,而且大量新型外設(shè)也把USB接口作為首先甚至唯一的接口,如MP3播放器、移動(dòng)硬盤等。由于USB的高可靠性和足夠快的通信速率,USB開始應(yīng)用于工業(yè)級的實(shí)時(shí)通信和控制,例如機(jī)器人系統(tǒng)中示教盒與控制器的通信。本文論述的用USB端口實(shí)現(xiàn)機(jī)器人上位機(jī)與下位機(jī)的通信也屬于這些方面的應(yīng)用。

          2 用USB實(shí)現(xiàn)計(jì)算機(jī)雙機(jī)通信

          由于USB模型是一種Host-Slave(主機(jī)-外設(shè))主從式結(jié)構(gòu),沒有辦法使兩臺主機(jī)不通過外設(shè)而直接通過通信。然而可通過增加外設(shè)控制器的方法使兩臺主機(jī)利用它們的USB端口通信。每個(gè)外設(shè)控制器連接到不同的主要,并利用共享的緩沖器交換數(shù)據(jù)。Cypress公司的EZ-Link和Prolific公司的PL-2301把兩個(gè)外設(shè)控制器和共享緩沖區(qū)集成到一塊芯片上,作為兩臺主機(jī)通過USB總線通俗訴橋梁。其它公司也提供類似的控制芯片。在教學(xué)機(jī)器人中,采用PL-2301。

          PL-2301是臺灣Prolific公司生產(chǎn)的一種全速USB控制芯片。PL-2301的結(jié)構(gòu)框圖如圖1所示。

          PL-2301包括兩套獨(dú)立的USB控制單元。在握手信號的協(xié)調(diào)下,它們通過兩個(gè)FIFO緩沖器無阻塞地交換數(shù)據(jù)。PL-2301包含四個(gè)終端:缺省的控制終端(地址00H)、中斷終端(地址81H)、塊輸出終端(地址02H)、塊輸入終端(地址83H)??刂苽鬏斢糜谠谥鳈C(jī)列舉階段完成對PL-2301的配置及在兩臺主機(jī)通信時(shí)控制PL-2301的握手信號;中斷傳輸用于PL-2301定期(每毫秒一次)向主機(jī)報(bào)告握手信號的狀態(tài);塊傳輸用于兩臺主機(jī)之間實(shí)時(shí)地交換數(shù)據(jù)。塊傳輸支持錯(cuò)誤檢測,這對實(shí)時(shí)通信和控制很重要??刂苽鬏敱淮_保擁有10%的USB總線帶寬,中斷傳輸和等時(shí)傳輸最多可以使用90%的帶寬,塊傳輸使用剩余的最大可用帶寬(最多95%)。當(dāng)總線不太忙時(shí),由于塊傳輸只有一個(gè)很小的協(xié)議頭(13字節(jié)),它是所有傳輸類型中最快的。為了確何教學(xué)機(jī)器人上下位機(jī)以最快的速度通信,滿足實(shí)時(shí)性要求,最好不要在USB總線上掛接過多的USB外設(shè)。

          PL-2301除了能對USB標(biāo)準(zhǔn)請求做出反應(yīng)外,還能對幾種廠商自定義的請求做出反應(yīng)。自定義請求ClearQuickLinkFeature和SetQuickLinkFeature用于控制兩臺主機(jī)通信時(shí)PL-2301的握手信號。這些握手信號是:

          (1)TX_RDY指示本地USB端口是否準(zhǔn)備好傳輸數(shù)據(jù)的指示信號。

          (2)S_EN掛起使能信號。置位后,PL-2301支持標(biāo)準(zhǔn)的USB掛起特性。

          (3)RESET_O塊輸出管道的復(fù)位信號,用于出現(xiàn)錯(cuò)誤時(shí)復(fù)位塊輸出通道。

          (4)RESET_IN塊輸入管道的復(fù)位信號,用于出現(xiàn)錯(cuò)誤時(shí)復(fù)位塊輸入管道。

          (5)TX_REQ塊傳輸?shù)恼埱笮盘枴?/P>

          (6)TX_C塊傳輸完成的指示信號。

          (7)PEER_E告訴對方本地端口是否連接好的指示信號。

          在這幾個(gè)握手信號的協(xié)調(diào)下,上位機(jī)和下位機(jī)可以雙向通信。圖2是主機(jī)PC A向PC B傳輸數(shù)據(jù)的流程圖。這些底層的細(xì)節(jié)問題并不需要控制,由PL-2301的驅(qū)動(dòng)程序完成。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();