AG-95协议

某品牌机械臂末端485透传说明

TCP连接到端口60000,随后发送HEX数据给到该端口,该端口自动通过485透传到机械臂末端夹爪(AG-95),反过来AG-95的485反馈也会回馈到TCP客户端。

Modbus-RTU

| 01 | 06 | 01 00 | 00 A5 | 48 4D 
|地址|指令码|指令|数据|CRC16低|CRC16高

而手爪使用Modbus-RTU协议和手爪的上位机(机械臂)通信。

结合TCP-485透传,机械臂的上位机可以通过Modbus-RTU Over TCP和机械臂ip:60000号端口进行通讯,使用ModbusPull工具可以进行测试。具体测试可以参考“初始化手爪”栏目。后续即可通过普通的TCP客户端通过60000号端口控制末端夹爪,便于在ROS等环境下进行开发。

注:Modbus-TCP和Modbus-RTU Over TCP的区别在于:前者无校验位(因为TCP/IP已经实现了CRC校验),后者仍然需要发送CRC校验位。

Modbus操作

初始化手爪

可以裸发送 “01 06 01 00 00 A5 48 4D ” 实现。

或者:将256(HEX:01 00)地址设置为165(A5),手爪完成初始化。

初始化状态读取地址:0x0200(DEC:512),结果含义:0 -> 未初始化, 1 -> 初始化完成, 2 -> 初始化中

读取可以发送 “01 03 02 00 00 01 85 B2”(查询ID为1,地址0x0200,一位),随后判断返回值即可。

返回结果例子:

01 03 02 00 01 79 84   # 初始化完成
01 03 02 00 02 39 85   # 初始化中

设置手爪位置

位置从0到100,先把该值乘以100,得到设置值

随后将该设置值写入线圈0x103(DEC:259)即可。

01 06 01 03 00 00 78 36 # 设置为0
01 06 01 03 03 E8 78 88 # 设置为100

如果是直接发,修改 01 03 后的两个HEX值即可(03 E8 = 1000),随后修改最后俩CRC16校验码。

读取就反过来,读取该线圈即可得到夹爪当前位置。

设置手爪力度

力度从0到100,不需要和位置一样将值乘以100

随后将该数值写入线圈0x101(DEC:257)。

01 06 01 01 00 64 D8 1D 

读取就反过来,读取该线圈即可得到夹爪当前力度。

读取夹爪状态

状态线圈0x201(DEC:513),读取值意义如下:

0 -> 运动中
1 -> 到达设置位置
2 -> 夹住了物品
3 -> 物品掉落
-1 -> 错误

也可以发送原始值获取状态。

-> 01 03 02 01 00 01 D4 72
接收结果:
01 03 02 00 01 79 84 
        |-----| -> 这里的00 01就是结果