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}