4.Modbus RTU通讯协议控制
4.1 寄存器地址说明
机械爪支持标准Modbus RTU协议,默认波特率2Mbps,机械爪ID为0x08。目前支持的功能码有:0x03/0x06/0x10。
- 0x03: 读取寄存器
- 0x06: 写单个寄存器
- 0x10: 写多个寄存器
读取:
通讯地址 | 说明 |
---|---|
0x0000 | 运行状态 |
0x0001 | 速度(r/min) |
0x0002 | 电流百分比 |
0x0003 | 电流 |
0x0004 | 指令位置 |
0x0006 | 电机位置 |
0x0008 | 位置误差 |
0x000F | 当前报警代码 |
写入:
通讯地址 | 说明 | 设定范围 | 单位 | 出厂设定 |
---|---|---|---|---|
0x0100 | 机械爪使能 | 0-1; | 0 | |
0x010A | 控制模式 | 0-2;0:开合模式,1:位置模式。 | 0 | |
0x0303 | 速度指令 | 0-4000 | r/min | 1000 |
0x0505 | 夹取检测阈值 | 30-100 | 0.01A | 50 |
0x0506 | 保持电流限幅(力) | 10-100 | 0.01A | 50 |
0x0508 | 跌落检测阈值 | 500-2000 | r/min | 1000 |
0x0601 | 通讯波特率 | 0: 4800 1: 9600 2: 192008: 9216009: 1M10: 1.5M11: 2M | bps | 11 |
0x0700 | 位置命令高位 | 0-0xFFFF | - | 0 |
0x0701 | 位置命令低位 | 0-0xFFFF | - | 0 |
0x0702 | 位置反馈高位 | 0-0xFFFF | - | 只读 |
0x0703 | 位置反馈低位 | 0-0xFFFF | - | 只读 |
运动状态(0x0000)
位1:0 | 00:停止状态 | 位3:2 | 00:未使能 |
---|---|---|---|
01:运动状态 | 10:使能状态 | ||
10:夹取状态 | |||
11: 机械爪有错误 |
4.2读取保持寄存器
读取保持寄存器 | |||
---|---|---|---|
请求指令格式 | |||
Modbus RTU 数据 | 机械爪 ID | 1 Byte | 0x08 |
功能码 | 1 Byte | 0x03 | |
寄存器起始地址 | 2 Bytes | Address | |
寄存器数量 | 2 Bytes | N* | |
Modbus CRC 16 | 2 Bytes | CRC* | |
响应指令格式 | |||
Modbus RTU 数据 | 机械爪 ID | 1 Byte | 0x08 |
功能码 | 1 Byte | 0x03 | |
字节数 | 1 Byte | N*x2 | |
寄存器值 | N*x2 Bytes | Value | |
Modbus CRC16 | 2 Bytes | CRC* |
注: N* = 寄存器数量
Address= 寄存器起始地址(见下面列表)
CRC* = 循环冗余校验
寄存器:
寄存器起始地址 | 寄存器值 | ||
---|---|---|---|
获取机械爪状态 | 0x0000 | 2 Bytes | 未使能状态: 0x0000 使能中状态: 0x0004 使能完成状态: 0x0008 停止状态: 0x0008 运动状态: 0x0009 夹取状态: 0x000A 报错状态: 0x000B |
获取机械爪错误 | 0x000F | 2 Bytes | 有错误: 其他返回值都代表有错误(除0以外)无错误: 0x0000 |
4.3 写入寄存器
写入寄存器 | |||
---|---|---|---|
请求指令格式 | |||
Modbus RTU 数据 | 机械爪 ID | 1 Byte | 0x08 |
功能码 | 1 Byte | 0x10 | |
寄存器起始地址 | 2 Bytes | Address | |
寄存器数量 | 2 Bytes | N* | |
字节数 | 1 Byte | N*x2 | |
寄存器 | N*x2 Bytes | Value | |
Modbus CRC 16 | 2 Bytes | CRC* | |
响应指令格式 | |||
Modbus RTU 数据 | 机械爪 ID | 1 Byte | 0x08 |
功能码 | 1 Byte | 0x10 | |
寄存器起始地址 | 2 Bytes | Address | |
寄存器数量 | 2 Bytes | N* | |
Modbus CRC 16 | 2 Bytes | CRC* |
注: N* = 寄存器数量 Address= 寄存器起始地址(见下面列表) CRC* = 循环冗余校验
寄存器:
寄存器起始地址 | 寄存器值 | ||
---|---|---|---|
使能/关闭机械爪 | 0x0100 | 2 Bytes | 使能: 0x0001 停用: 0x0000 |
设置机械爪位置 | 0x0700 | 4 Bytes | 打开机械爪: 0x0000 0x0082 闭合机械爪: 0x0000 0x0032 |
设置机械爪速度 | 0x0303 | 2 Bytes | 0x0000-0x0BB8 单位: r/min |
清除机械爪错误 | 0x000F | 2 Bytes | 0x0000 |
4.4 Modbus RTU示例
使用Modbus RTU控制BIO机械爪G2开合,模式1。
- 设置机械爪模式1。地址:0x010A, 最后两位为CRC: 6D AD,断电后仍生效。
发:08 06 11 0A 00 01 6D AD
收:08 06 11 0A 00 01 6D AD
- 使能机械爪。地址:0x0100。
发:08 06 01 00 00 01 49 6F
收:08 06 01 00 00 01 49 6F
- 打开机械爪,位置150,速度3000,力50。
设置速度3000
发:08 06 03 03 0b b8 7E 55
收:08 06 03 03 0b b8 7E 55
设置力50(百分比)
发:08 06 05 06 00 32 E8 4B
收:08 06 05 06 00 32 E8 4B
打开机械爪G2到150, 发送的位置需要做转换:(150-70)*3.75=(OCT)100=(HEX)01 2c
发:08 10 07 00 00 02 04 00 00 01 2c FB 4E
收:08 10 07 00 00 02 40 25
- 关闭机械爪,位置71。
发:08 10 07 00 00 02 04 00 00 00 00 FB 03
收:08 10 07 00 00 02 40 25
- 读取机械爪位置。
机械爪位置71
发:08 03 07 02 00 02 64 26
收:08 03 04 00 00 00 00 63 33
- 读取报警代码。地址:0x000F
发:08 03 00 0F 00 01 B4 90
收:08 03 02 00 00 64 45