使用睿尔曼机械臂末端MODBUS-RTU控制OHand灵巧手

Forrest 2024-08-10

OHand 参数:


尺寸:



大拇指旋转:0 ~ 90°

大拇指弯曲:-13.28 ~ 36.33°

食指:36.22 ~ 170.25°

中指:39.96 ~ 169.81°

无名指:38.33 ~ 167.05°

 

小拇指:42.77 ~ 167.23°

储存、运输和使用环境


技术参数

载荷和速度


重量:


# OHand ModBus-RTU 协议

## 1. ModBus 通信协议概要

ModBus-RTU 协议使用的是主从请求应答通讯方式,协议帧包括了功能码、数据域、和 CRC16 校验。

ModBus-RTU 主控单元通过读写 ROH 灵巧手内部寄存器来实现对灵巧手的状态获取和控制。

*读寄存器*是指上位系统读取 ROH 灵巧手内部寄存器数值(可成组读取,成组的是指若干名称相同地址相邻寄存器),上位系统向 ROH 灵巧手发送读请求帧(包含寄存器组首地址、寄存器组的长度等内容),ROH 灵巧手收到请求帧并校验成功后,灵巧手将包含寄存器数据内容的应答帧返回给上位系统。

*写寄存器*是指上位系统向 ROH 灵巧手内部寄存器写入相应的数据(可成组写入),上位系统向 ROH 灵巧手发送写请求帧(包含寄存器组首地址、欲写入的数据内容)发送给灵巧手,ROH 灵巧手收到请求帧并校验成功后,返回应答帧给上位系统。

ROH ModBus 协议支持 读取保持寄存器(功能码 0x03)、预置单寄存器(功能码 0x06)、预置多寄存器(功能码 0x10)操作。

## 2. RS232、RS485 通讯参数

RS232、RS485 通讯参数都是 115200bps、8 数据位、1 停止位、无奇偶校验。

## 3. ROH ModBus 数据帧格式

### 3.1. 读取保持寄存器(功能码 0x03)

主站请求帧格式:

含义:读 17 号(0x11)号从站保持寄存器,起始地址=0x006B;寄存器个数=0x0002,结束地址=0x006B+2-1=0x006C,即读 17 号从站保持寄存器 0x006B-0x006C,共两个寄存器。

从站应答帧格式:

含义:返回 17(0x11)号从站保持寄存器 0x006B-0x006C,共两个寄存器,0x006B 寄存器数值是 0x0001,0x0062 寄存器数值是 0x0002。

从站执行请求帧发生错误时,应答帧格式:

其中,功能码为请求帧功能码和 0x80 位或后的值。

### 3.2. 预置单寄存器(功能码 0x06)

主站请求帧格式:

含义:设置 17 号(0x11)号从站保持寄存器,寄存器地址 0x006B,数据内容是 0x1000。

从站应答帧格式:

含义:为请求帧的原样复制。

从站执行请求帧发生错误时,应答帧格式:

其中,功能码为请求帧功能码和 0x80 位或后的值。

### 3.3 预置多寄存器(功能码 0x10)

主站请求帧格式:

含义:设置 17 号(0x11)号从站保持寄存器,寄存器起始地址 0x0001,寄存器个数为 0x0002,数据内容字节计数是 0x04,数据内容分别是 0x000A、0x0102。

从站应答帧格式:

含义:从站地址、功能码 、起始寄存器、寄存器数量和请求帧保持一致。

从站执行请求帧发生错误时,应答帧格式:

 

其中,功能码为请求帧功能码和 0x80 位或后的值。

## 3.4. ROH 灵巧手错误代码

在错误码为 EC04_SERVER_DEVICE_FAILURE 的情况下,寄存器 ROH_SUB_EXCEPTION 保存了具体的错误代码:

## 4. ModBus 寄存器说明

### 4.1. 寄存器表

### 4.3. ROH_FINGER_STATUS 状态码

使用睿尔曼机械臂JSON和API的控制示例:

 打开机械臂末端modbus RTU

JSON:   {"command":"set_modbus_mode","port":1,"baudrate":115200,"timeout":2}

 

API:    Set_Modbus_Mode (1,115200,1,True)

打开末端24V电源,“voltage_type”:电源输出类型,范围:0~3。,0-0V,1-5V,2-12V,3-24V,电源输出设置为 5V 时,工具端的IO 暂不支持输入输出功

 JSON:    {"command":"set_tool_voltage","voltage_type":3}

API:  Set_Tool_Voltage(3, True)

 

 手闭合动作(分两步)

 闭合动作1(除拇指外,其他手指完全闭合)

JSON:   {"command":"write_registers","port":1,"address":1135,"num":6,"data":[0,0,255,255,255,255,255,255,255,255,0,0],"device":2}

  API:  Write_Registers(1,1125,6,single_data, 2, True)

 

 闭合动作2(拇指贴近食指)

{"command":"write_registers","port":1,"address":1135,"num":6,"data:[230,0,255,255,255,255,255,255,255,255,255,255],"device":2}

 手张开动作(分两步)

    张开动作1(拇指展开)

{"command":"write_registers","port":1,"address":1135,"num":6,"data"[0,0,255,255,255,255,255,255,255,255,0,0],"device":2}

    张开动作2(手指完全展开)

{"command":"write_registers","port":1,"address":1135,"num":6,"data":[0,0,0,0,0,0,0,0,0,0,0,0],"device":2}

拇指立起

 {"command":"write_registers","port":1,"address":1135,"num":6,"data":[0,0,0,0,0,0,0,0,0,0,255,0],"device":2}

握住瓶子、哑铃

 {"command":"write_registers","port":1,"address":1135,"num":6,"data":[255,0,255,0,255,0,255,0,255,0,255,0],"device":2} 

使用睿尔曼机械臂在线编程的控制示例:

进制转换说明
以写入1125地址的寄存器数据为例:
手指角度:高字节0XFF 低字节0X00
使用JSON协议写入的示例为:
 {"command":"write_registers","port":1,"address":1135,"num":6,"data":[255,0,255,0,255,0,255,0,255,0,255,0],"device":2} 
高低位组合,以16进制表示位:
0XFF00
使用在线编程写入则需要将0XFF00转换为10进制 65280

 

0 条评论

关于作者

Forrest

让机械臂成为智能、易用、可靠、通用的作业工具,走入千行百业、千家万户。

选择发帖板块
选择发帖板块