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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于TCP/IP協(xié)議實現上位機對UR機器人的遠程控制

          基于TCP/IP協(xié)議實現上位機對UR機器人的遠程控制

          作者: 時間:2016-12-19 來源:網絡 收藏

          表4編程口

            這三個端口另一個共同的特點就是,一旦客戶端打開端口,就會按照一定的頻率收到來自機器人的信息。需要注意的是30003端口是實時反饋端口,客戶端每8ms能收到一次來自機器人的信息。另外,通過測試,客戶端通過30001和30002只能每200ms左右收到來自機器人的信息。

            其實客戶端通過這三個端口收到的機器人信息也稍有不同。通過30003端口收到信息是最豐富的,包含了通過30002收到的信息以及通過30001收到的大部分信息。

            所以說通過實時反饋端口,客戶端收到機器人信息效率是最高的,內容也是最全的。通過實時反饋端口每次收到的數據包有1044個字節(jié),這些字節(jié)以標準的格式排列。注意在極少情況下客戶端會收到小于1044個字節(jié),但是字節(jié)排列的格式不變。下表是1044字節(jié)排列的順序表。

            字節(jié)順序內容

            1-4整個數據包的字節(jié)數

            5-12控制器通電時間,斷電清零

            13-444關節(jié)目標位置、速度、加速度、電流、扭矩,實際位置、速度、電流,控制電流

            445-684TCP位置、速度、力,0目標位置、速度

            685-692輸入位狀態(tài)

            693-740電機溫度

            740-748程序掃描時間

            749-756保留

            757-820機器人模式,關節(jié)模式,安全模式

            821-868保留

            869-892TCP加速度

            893-940保留

            941-948速度比例

            949-956機器人當前動量值

            957-972保留

            973-996控制板電壓,機器人電壓,機器人電流

            997-1044關節(jié)電壓

          表5實時反饋數據包

            有了這些數據,上位機的數據表現就會十分豐富。下面有2張上位機界面圖,“點動圖”獲取了關節(jié)位置、TCP位置;“初始化圖”獲取了關節(jié)模式、關節(jié)實際電流、關節(jié)電壓以及其他數據。

          圖5點動圖

          圖6初始化圖

          7、結束語

            綜上所述,機器人作為ModbusTCP服務器,上位機通過502端口可以控制機器人的所有IO;上位機可以通過30001或30002或30003端口遠程下載程序到機器人;上位機通過29999端口可以遠程控制程序運行狀態(tài);上位機通過30003端口可以實時得到機器人的狀態(tài)信息。也就是說,利用UR機器人開放的基于TCP/IP協(xié)議的端口,可以制作自己的Polyscope軟件,實現上位機的遠程控制。


          上一頁 1 2 3 下一頁

          評論


          技術專區(qū)

          關閉
          看屁屁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); })();