EC機器人8055端口使用
1. 簡介
Elite 8055 端口是通過 socket 通訊向控制器發送指定格式的 json 字符串來實現的,其中機器人側為服務器,上位機為客戶端。通過 8055 端口,幾乎示教器上的所有功能都可以實現,同時在表現形式和控制方式上也有了更多的可能性。
2. 操作流程
用戶可通過 socket 通訊向控制器控制端口發送指定格式的 json 字符串來實現相關功能,只要支持收發json 字符串功能的語言都可實現功能,下文采用第三方調試助手 SOCKET TOOL測試。如下所示。(機器人需要在遠程模式)


2.1連接機器人
以 socket 助手為例,只需要知道機器人的 ip,端口填寫 8055。連接步驟和連接成功后顯示如下:



2.2端口指令
目前最新系統版本3.18.3支持:
伺服服務、參數服務、運動服務、運動學服務、io服務、變量服務、透傳服務、系統服務、
時間戳服務、profinet服務、反向驅動服務、Etherent/ip服務、外部力傳感器服務、
硬件通訊服務、TCI通訊控制服務、力控服務、等......
(詳細說明請查閱EC_SDK_SOCKET手冊_Ver3.18.3)
2.3示例
①使用8055清除報警
查閱手冊:

則使用socket tool發送:{"jsonrpc":"2.0","method":"clearAlarm","id":1},注意字符串最后需要換行

點擊發送數據,實現效果并返回:

即達到清除報警的效果
②獲取機器人模式
查閱手冊:

發送:{"jsonrpc":"2.0","method":"getRobotMode","id":1}


返回數據:
{"jsonrpc":"2.0","result":"2","id":1}
可知返回數據為2,機器人在遠程模式,與實際一致,即滿足需求
3.注意事項
1. 網絡連接穩定性:
a. 確保網絡連接穩定,避免由于網絡波動導致的連接中斷或數據丟失。確保機器人和使用設備在同一網段。
2. 超時處理:
a. 設置合理的超時時間,防止程序長時間等待而掛起。
3. 錯誤處理:
a. 在連接、發送和接收數據時,做好異常處理,并記錄錯誤日志。
b. 目前 json 協議常見返回異常有兩種:
JRPC_METHOD_NOT_FOUND -32601,JRPC_INTERNAL_ERROR -32693。
32601 為未找到對應接口,需要檢查接口名稱是否正確或確認當前版本是否支持該接口。
32693 為接口內部定義的異常,未找到相應參數,參數超出范圍,不滿足執行條件等均報
此類異常。此類錯誤只需根據錯誤信息檢查參數及其范圍還有執行條件是否滿足即可。
4. 數據完整性:
a. 在發送和接收數據時,確保數據的完整性和正確性。必要時進行數據校驗。
5. 資源管理:
a. 在程序結束或出現異常時,確保關閉所有打開的連接和文件,以釋放系統資源。
6. 安全性:
a. 避免發送敏感信息,或使用加密方法保護數據傳輸的安全性。
7. 其它:
發送的 json 字符串中間不能有空格,直接從手冊復制粘貼發送并不能使用,需要手動刪除空格
id ,可用來區分發送指令返回的指令的對應順序
8. 示例:
使用第三方調試助手“SOCKET TOOL”發送josn格式字符串測試EC機器人
啟動流程:
需要用到的指令:
獲取機器人狀態:
{"jsonrpc":"2.0","method":"getRobotState","id":1}
清除報警:
{"jsonrpc":"2.0","method":"clearAlarm","id":1}
獲取同步狀態:
{"jsonrpc":"2.0","method":"getMotorStatus","id":1}
同步伺服編碼器數據:
{"jsonrpc":"2.0","method":"syncMotorStatus","id":1}
獲取機械臂伺服狀態:
{"jsonrpc":"2.0","result":"true","id":1}
設置機械臂伺服狀態:{"jsonrpc":"2.0","method":"set_servo_status","params":{"status": 1 },"id":1}
編碼器零位校準:{"jsonrpc":"2.0","method":"calibrate_encoder_zero_position","id":1}
獲取機器人伺服編碼器精確狀態:{"jsonrpc":"2.0","method":"get_servo_precise_position_status","id":1}
運行 jbi 文件:
{"jsonrpc":"2.0","method":"runJbi","params":{"filename":“aabc“},"id":1}
SOCKET TOOL測試:
發送數據:{"jsonrpc":"2.0","method":"getRobotState","id":1}
收到數據:{"jsonrpc":"2.0","result":"0","id":1}
發送數據:{"jsonrpc":"2.0","method":"clearAlarm","id":1}
收到數據:{"jsonrpc":"2.0","result":"true","id":1}
發送數據:{"jsonrpc":"2.0","method":"getMotorStatus","id":1}
收到數據:{"jsonrpc":"2.0","result":"false","id":1}
發送數據:{"jsonrpc":"2.0","method":"syncMotorStatus","id":1}
收到數據:{"jsonrpc":"2.0","result":"true","id":1}
發送數據:{"jsonrpc":"2.0","result":"true","id":1}
收到數據:no {"jsonrpc":"2.0","result":"true","id":1} command!
收到數據:mcserver>
發送數據:{"jsonrpc":"2.0","method":"set_servo_status","params":{"status": 1 },"id":1}
收到數據:{"jsonrpc":"2.0","result":"true","id":1}
發送數據:{"jsonrpc":"2.0","method":"calibrate_encoder_zero_position","id":1}
收到數據:{"jsonrpc":"2.0","result":"true","id":1}
發送數據:{"jsonrpc":"2.0","method":"get_servo_precise_position_status","id":1}
收到數據:{"jsonrpc":"2.0","result":"1","id":1}
發送數據:{"jsonrpc":"2.0","method":"runJbi","params":{"filename":"aabc"},"id":1}
收到數據:{"jsonrpc":"2.0","result":"true","id":1}