6.4 基于通信协议包开发

Gcode指令介绍(适用于串口、WiFi、蓝牙通信)

通信方式

串口通信

参数
波特率 115200/1000000(可通过指令修改或者屏幕设置)
数据位 8
停止位 1
校验位

WiFi通信

  • 通信方式:TCP Client模式
  • 连接方式:外部设备与屏幕连接到同一WiFi网络,外部设备作为TCP客户端连接屏幕的IP地址和端口
  • 数据格式:与串口通信相同,使用Gcode指令格式

蓝牙通信

  • 通信方式:蓝牙
  • 连接方式:屏幕开启蓝牙后,外部设备搜索并连接屏幕蓝牙设备即可通信
  • 数据格式:与串口通信相同,使用Gcode指令格式

指令格式

  • $ - 起始标记,表示数据包含校验
  • * - 校验分隔符
  • XX - 两位十六进制XOR校验值(对$之后、*之前的所有字符进行XOR计算)
  • \r\n - 行结束符

示例

  • 原始指令:G0 X10
  • 带校验指令:$G0 X10*2B\r\n(假设XOR结果为0x2B)

返回值格式

  • 成功:指令 OK指令 返回值
  • 失败:指令 ERROR:错误码
  • 运动到位反馈:EndEnd

指令分类

基础控制

  1. 读取主控版本号 指令:G6 返回值:G6 GetSystemVersion:12(例如版本V1.2) 说明:返回主次版本号,取小数点后一位。屏幕获取失败时返回G6 ERROR:0

  2. 读取修正版本号 指令:G7 返回值:G7 GetModifyVersion:5(例如修正版本号5) 说明:返回修正版本号。屏幕获取失败时返回G7 ERROR:0

  3. 读取错误状态 指令:G8 返回值:G8 ERROR:uint32_t 说明:返回32位错误状态,共32位代表32种错误,对应错误码查看"高频读取数据"中的byte43-46

  4. 升级STM32固件 指令:G11 返回值:G11 OK / G11 ERROR:0~4 说明:屏幕发送指令与主控板握手确认,握手成功后主控板进入boot进行数据接收和升级 错误情况:

  5. ERROR:0 - 未找到bin文件
  6. ERROR:1 - 升级固件打开文件失败
  7. ERROR:2 - STM32进入升级模式失败
  8. ERROR:3 - SD打开失败
  9. ERROR:4 - 文件名不匹配

  10. 读取电机使能状态 指令:M22 返回值:M22 MotorEnable:1,1,1,1,1 说明:5个电机使能状态(J1~J4 + 传送带),1为使能,0为失能

  11. 放松所有电机 指令:M17 J[0-4] 参数:J=0放松所有关节,J=1~4放松对应关节 返回值:M17 OK / M17 ERROR:0

  12. 抱紧所有电机 指令:M18 J[0-4] 参数:J=0抱紧所有关节,J=1~4抱紧对应关节 返回值:M18 OK / M18 ERROR:0

  13. 读取主控运行状态 指令:M200 返回值:M200 MainMoving:0(0-静止,1-运动中)

  14. 获取执行点位缓冲区大小 指令:M600 返回值:M600 Queue_size:50

运动控制

  • 运动控制速度范围:1-100(百分比),每1%约对应1.6°/s
  • 运动到位反馈:EndEnd
  • 限位报错自动上报:LimitError:0(1:J1超限,2:J2超限,4:J3超限,8:J4超限,16:J2/J3耦合)
  • 碰撞检测自动上报:CollisionDetectionError:1(1:J1,2:J2,3:J3)

1. 坐标控制(最大速度)

指令:G0 参数:X X轴坐标(mm),Y Y轴坐标(mm),Z Z轴坐标(mm),R R轴角度(°),F 速度(1%-100%) 返回值:EndEnd 示例:G0 X100 Y200 Z300 F100 说明:以最大速度运动到目标坐标

2. 坐标控制(规定速度)

指令:G1 参数:X X轴坐标(mm),Y Y轴坐标(mm),Z Z轴坐标(mm),R R轴角度(°),F 速度(1%-100%) 返回值:EndEnd 示例:G1 X223.500 Y0 Z-250 F100 说明:按规定速度运动到目标坐标

3. 多关节控制

指令:G1 参数:A J1关节角度(°),B J2关节角度(°),C J3关节角度(°),D J4关节角度(°),F 速度(1%-100%) 返回值:EndEnd 示例:G1 A10 B10 C10 F20 说明:机械臂各关节根据给定速度运动到目标角度

4. 单关节控制

指令:G1 参数:A/B/C/D 目标关节角度(°),F 速度(1%-100%) 返回值:EndEnd 示例:G1 A10 F20 说明:指定关节根据给定速度运动到目标角度

5. 单坐标控制

指令:G1 参数:X/Y/Z/R 目标坐标值,F 速度(1%-100%) 返回值:EndEnd 示例:G1 X10 F20 说明:机械臂末端沿指定坐标轴直线运动到目标位置

6. 持续关节运动(JogAngle)

指令:M13 参数:J 关节(1-4),D 方向(0-负向,1-正向),F 速度(1%-100%) 返回值:EndEnd 示例:M13 J3 D0 F100 说明:指定关节从当前角度沿指定方向持续运动,直到达到限位

7. 持续坐标运动(JogCoord)

指令:M14 参数:J 坐标轴(1-X,2-Y,3-Z,4-Rx),D 方向(0-负向,1-正向),F 速度(1%-100%) 返回值:EndEnd 示例:M14 J3 D0 F100 说明:机械臂末端沿指定坐标轴方向持续运动,直到达到限位

8. 关节步进控制

指令:M19 参数:J 关节(1-4),T 步进值(°),F 速度(1%-100%) 返回值:EndEnd 示例:M19 J3 T10 F100 说明:指定关节相对当前位置运动指定角度增量

  • J1步进范围:±(0.1~316)°
  • J2步进范围:±(0.1~103)°
  • J3步进范围:±(0.1~101)°
  • J4步进范围:±(0.1~358)°

9. 坐标步进控制

指令:M20 参数:J 坐标轴(1-X,2-Y,3-Z,4-Rx),T 步进值(mm/°),F 速度(1%-100%) 返回值:EndEnd 示例:M20 J3 T10 F100 说明:机械臂末端沿指定坐标轴相对运动指定距离

  • X步进范围:±(0.1~316)mm
  • Y步进范围:±(0.1~360)mm
  • Z步进范围:91~-157mm
  • R步进范围:±180°

10. 运动急停

指令:M15 返回值:M15 OK / M15 ERROR:0 说明:立即终止当前运动,清空缓冲区所有未执行的运动规划指令

11. 碰撞检测后解锁

指令:M5 返回值:M5 OK / M5 ERROR:0 说明:碰撞后系统进入锁定状态,无法运动控制,该指令用于解除运动限制

12. 强制回零

指令:M37 返回值:EndEnd / M37 ERROR:0 说明:机械臂先回到A0B40C30D0位置,再回到零位(A0B0C90D0),防止回零中途发生耦合

13. 逆解:输入坐标读取角度

指令:M46 参数:X X轴坐标(mm),Y Y轴坐标(mm),Z Z轴坐标(mm),R R轴角度(°) 返回值:M46 angle:A-3.501 B33.398 C156.709 D-167.168 错误:M46 ERROR:1(超限),M46 ERROR:2(耦合),M46 ERROR:3(无解) 示例:M46 X215.517 Y-13.185 Z-60.710 R-170.669

14. 正解:输入角度读取坐标

指令:M47 参数:A J1关节角度(°),B J2关节角度(°),C J3关节角度(°),D J4关节角度(°) 返回值:M47 coord:X215.516 Y-13.185 Z-60.710 R-170.669 错误:M47 ERROR:1(超限),M47 ERROR:2(耦合) 示例:M47 A-3.501 B33.398 C156.709 D-167.168

15. 预览模式

指令:M51 参数:X X轴坐标(mm),Y Y轴坐标(mm),Z Z轴坐标(mm),R R轴角度(°) 返回值:M51 OK(坐标可到达) / M51 ERROR:0(坐标无法到达) 示例:M51 X223.500 Y0 Z50 R50 说明:输入完整坐标,判断坐标是否可达,不产生实际运动

辅助功能

配置
  1. 零位校准 指令:M30 参数:J 关节(0-4),0-所有关节,1~4-对应关节 返回值:EndEnd 示例:M30 J1 说明:机器手动移到刻度线后进行关节校准,设置J1J2J4当前位置为0度,J3为90度

  2. 读取零位校准状态 指令:M119 返回值:M119 ZEROSTATE:0,0,0,0(1-已校准,0-未校准)

  3. 零位校准状态擦除 指令:M32 参数:J 关节(1-4) 返回值:M32 OK / M32 ERROR:0

  4. 设置RGB颜色 指令:M23 参数:R 红色(0-255),G 绿色(0-255),B 蓝色(0-255) 返回值:M23 OK / M23 ERROR:0 示例:M23 R50 G50 B50

  5. 末端按钮使能 指令:M35 返回值:M35 OK / M35 ERROR:0 说明:使能后可用末端按钮进行机械臂全关节放松

  6. 末端按钮失能 指令:M36 返回值:M36 OK / M36 ERROR:0

  7. 读取末端按钮状态 指令:M64 返回值:M64 BTN:0(1-按下,0-松开)

  8. 获取碰撞检测阈值 指令:M3 返回值:M3 CollisionThreshold:0,0,0,0(范围:0.5~5)

  9. 设置碰撞检测阈值 指令:M21 参数:J 关节(0-4,0-所有),P 阈值(0.5~5°) 返回值:M21 OK / M21 ERROR:0 示例:M21 J1 P2

  10. 清除错误状态 指令:M40 返回值:M40 OK / M40 ERROR:0 说明:一次性清除所有错误状态,硬件错误需修复硬件后才可正常清除

IO控制
底座IO
  1. 设置底座IO输出 指令:M60 参数:P 引脚号(1-10),K 模式(0-输入,1-输出),S 状态(0-低电平,1-高电平) 返回值:M60 OK / M60 ERROR:0 示例:M60 P5 K0 S0 说明:默认1-5输入,6-10输出。输入模式下,上下拉仅用于提供默认电平,实际电平由外部信号决定

  2. 读取底座IO状态 指令:M61 返回值:M61 IO:0,0,0,0,0,2,2,2,2,2 说明:0-输入低电平,1-输入高电平,2-输出低电平,3-输出高电平

末端IO
  1. 设置末端IO输出 指令:M62 参数:P 引脚号(3-4,控制IO3/IO4),S 状态(0-低电平,1-高电平) 返回值:M62 OK / M62 ERROR:0 示例:M62 P3 S1 说明:IO1、IO2为输入引脚,IO3、IO4为输出引脚

  2. 读取末端IO状态 指令:M63 返回值:M63 IO:0,0,0,0 说明:0-输入低电平,1-输入高电平,2-输出低电平,3-输出高电平

夹爪控制
  1. 控制夹爪角度 指令:M25 参数:P 角度(1-100,对应实际0.5~50°),F 速度(1-100) 返回值:M25 OK / M25 ERROR:0 示例:M25 P50 F50

  2. 读取夹爪角度 指令:M50 返回值:M50 GRIPPERANGLE:50(0-100,100为张开)

  3. 设置夹爪参数 指令:M24 参数:J 地址(1-69),K 模式(1-值范围0-255,2-值范围>255),L 值(0-65535) 返回值:M24 OK / M24 ERROR:0 示例:M24 J5 K1 L20

  4. 读取夹爪参数 指令:M26 参数:J 地址(1-69),K 模式(1-值范围0-255,2-值范围>255) 返回值:M26 GripperParameters:0

  5. 读取夹爪运动状态 指令:M27 返回值:M27 MotionState:0(0-静止,1-运动)

  6. 设置夹爪使能状态 指令:M28 参数:S 状态(0-失能,1-使能) 返回值:M28 OK / M28 ERROR:0 说明:使能后人为掰动会自动复位

  7. 夹爪校准 指令:M29 返回值:M29 OK / M29 ERROR:0 说明:夹爪张开最大里程进行校准,校准后当前位置为100

吸泵控制
  1. 设置吸泵开合状态 指令:M70 参数:S 状态(0-吸,1-吹,2-关) 返回值:M70 OK / M70 ERROR:0 示例:M70 S1
激光/PWM控制
  1. 开关激光 指令:M80 参数:K 状态(0-关闭,1-开启) 返回值:M80 OK / M80 ERROR:0 示例:M80 K1

  2. 设置PWM档位(激光) 指令:M81 参数:S 占空比(0-255) 返回值:M81 OK / M81 ERROR:0 示例:M81 S50

  3. 开关自定义PWM 指令:M82 参数:K 状态(0-关闭,1-开启) 返回值:M82 OK / M82 ERROR:0 示例:M82 K1

  4. 设置PWM档位(自定义) 指令:M83 参数:S 占空比(0-255) 返回值:M83 OK / M83 ERROR:0 示例:M83 S50

  5. 读取PWM设置状态 指令:M84 返回值:M84 PWM:0,0,0,0(激光开关状态,激光档位,自定义PWM开关状态,自定义PWM档位)

传送带控制
  1. 传送带控制 指令:M38 参数:J 开关(1-开,0-关),K 方向(0-向前,1-向后),L 速度(1-125mm/s),S 距离(0-连续运动,1-1200mm) 返回值:M38 OK / M38 ERROR:0 示例:M38 J1 K1 L20 S1000

  2. 传送带停止 指令:M39 返回值:M39 OK / M39 ERROR:0 说明:传送带在运动状态下缓慢停止,减速时间约500ms

状态查询
  1. 读取角度 指令:M405 返回值:M405 angles:0.00,0.00,0.00,0.00

  2. 读取坐标 指令:M406 返回值:M406 coords:0.00,0.00,0.00,0.00

  3. 开启或关闭定时上报角度数据 指令:M407 参数:S 模式(0-关,1-串口1定时上报,2-串口0定时上报,3-WiFi定时上报,4-蓝牙定时上报) 返回值:M407 angles:...;coords:...;pwr:1;run:0;err:0

  4. 读屏幕主次版本 指令:M401 返回值:M401 GetSystemVersion:12(例如版本V1.2)

  5. 读屏幕更正版本 指令:M402 返回值:M402 GetModifyVersion:5(例如更正版本号5)

  6. 获取屏幕是否在控制页面 指令:M601 返回值:M601 ControlPage:1(1-控制页面,0-非控制页面)

  7. 通知屏幕PC是否在控制页面 指令:M602 参数:S 状态(1-PC在控制页面,0-PC不在控制页面) 返回值:M602 OK / M602 ERROR:0

  8. 获取限位开关状态 指令:M52 返回值:M52 SIG:0

I2C通信
  1. I2C数据写操作 指令:M300 参数:I 会话号(0-255),U 包号(0-255),S 操作(1-写),L 从机地址(0-125),H 寄存器地址(0-65535),N 数据长度(1-255),K 数据(十六进制,长度由N决定) 返回值:M300 OK / M300 ERROR:0~7 示例:M300 I1 U1 S1 L13 H45 N2 K8f 1E 说明:ERROR:1-缺少必要参数,ERROR:2-数据长度N和实际数据数量不匹配,ERROR:3-缺少K参数,ERROR:4-地址错/设备未接,ERROR:5-从机无应答,ERROR:6-参数非法,ERROR:7-二进制帧CRC错误

  2. I2C数据读操作 指令:M300 参数:I 会话号(0-255),U 包号(0-255),S 操作(0-读),L 从机地址(0-125),H 寄存器地址(0-65535),N 数据长度(1-255) 返回值:M300 data:0f 24(读取的数据)/ M300 ERROR:0~7 示例:M300 I1 U1 S0 L23 HFFFF N2

Modbus指令介绍(适用于RS485通信)

通信参数

参数
波特率 115200
数据位 8
停止位 1
校验位
设备地址 46(0x2E)
写功能码 16(0x10)
读功能码 03(0x03)

说明:校验位(串口硬件层)和校验码(Modbus协议层)是不同的概念:

  • 校验位:UART串口通信层面的硬件校验,本协议采用"无校验位"(8N1模式)
  • 校验码:Modbus协议层面的软件校验,采用CRC-16循环冗余校验,附加在数据帧末尾

收发格式

通信帧格式

1. 写命令(主机 → 设备)
字段 长度 说明
地址 1字节 设备地址:46(0x2E)
功能码 1字节 0x10(写多个寄存器)
起始寄存器地址 2字节 寄存器起始地址(高字节在前)
寄存器数量 2字节 要写入的寄存器数量N
数据字节数 1字节 数据字节数 = 2×N
数据 2×N字节 实际数据(高字节在前)
校验码 2字节 Modbus CRC16(低字节在前)

格式: [地址-0x2E][功能码-0x10][寄存器地址-2字节][寄存器数量-2字节][数据字节数-1字节][数据-2*N字节][校验码-2字节]

2. 写反馈(设备 → 主机)
字段 长度 说明
地址 1字节 0x2E
功能码 1字节 0x10
起始寄存器地址 2字节 寄存器起始地址
寄存器数量 2字节 已写入的寄存器数量
校验码 2字节 Modbus CRC16(低字节在前)
3. 读命令(主机 → 设备)
字段 长度 说明
地址 1字节 0x2E
功能码 1字节 0x03
起始寄存器地址 2字节 寄存器起始地址
寄存器数量 2字节 要读取的寄存器数量N
校验码 2字节 Modbus CRC16(低字节在前)
4. 读反馈(设备 → 主机)
字段 长度 说明
地址 1字节 0x2E
功能码 1字节 0x03
数据字节数 1字节 数据字节数 = 2×N
数据 2×N字节 读取的数据
校验码 2字节 Modbus CRC16(低字节在前)

注意: 寄存器地址00 xx表示转发给STM32的指令,01 xx表示屏幕本地指令。 Modbus中使用16位补码表示有符号整数。 校验码计算使用Modbus CRC16,低字节在前。

案例
  1. 读取主次版本号:2E 03 00 01 00 CRC1 CRC2 反馈:2E 03 00 01 02 00 0C CRC1 CRC2(版本V1.2)

  2. 坐标控制:2E 10 00 04 0A XX XX XX XX XX XX XX XX XX XX CRC1 CRC2 到位反馈:2E 10 00 5B 00 CRC1 CRC2

Modbus指令列表

基础控制

指令(只是作为参考Gcode指令,并不是Modbus指令内容) 功能码 寄存器地址 数据字节数 数据格式 返回字节数 返回数据格式 说明
G6 03 00 01 0 - 2 byte1-2: 主次版本号(如V1.2则为12) 读取主控主次版本号
G7 03 00 02 0 - 2 byte1-2: 更正版本号 读取主控更正版本号
G8 03 01 06 0 - 4 byte1-4: 32位错误状态 读错误状态(32位)
G11 16 01 08 0 - 2 byte1: 成功1/失败0, byte2: 失败种类 升级STM32固件
M5 16 00 09 0 - 2 byte1: 成功1/失败0, byte2: 失败种类 碰撞检测后解锁
M17 16 00 10 2 byte1-2: J(0-4, 0=所有关节) 2 byte1: 成功1/失败0, byte2: 失败种类 放松电机
M18 16 00 11 2 byte1-2: J(0-4, 0=所有关节) 2 byte1: 成功1/失败0, byte2: 失败种类 抱紧电机
M22 03 00 12 0 - 5 byte1-5: J1~J4+传送带使能状态(1=使能,0=失能) 读电机使能状态
M200 03 01 07 0 - 1 byte1: 1=运动中,0=静止 读取主控运行状态
M600 03 01 09 0 - 2 byte1-2: 缓冲区大小 获取执行点位缓冲区大小

运动控制

指令(只是作为参考Gcode指令,并不是Modbus指令内容) 功能码 寄存器地址 数据字节数 数据格式 返回字节数 返回数据格式 说明
G0 16 00 03 10 byte1-2:X100, byte3-4:Y100, byte5-6:Z100, byte7-8:R100, byte9-10:F*100 - 到位反馈: 2E 10 00 5B 00 CRC 坐标控制(最大速度)
G1 16 00 04 10 byte1-2:X100, byte3-4:Y100, byte5-6:Z100, byte7-8:R100, byte9-10:F*100 - 到位反馈: 2E 10 00 5B 00 CRC 坐标控制(规定速度)
G1 16 00 05 10 byte1-2:A100, byte3-4:B100, byte5-6:C100, byte7-8:D100, byte9-10:F*100 - 到位反馈: 2E 10 00 5B 00 CRC 多关节控制
G1 16 00 06 6 byte1-2:坐标(1-4=X-R), byte3-4:数据100, byte5-6:F100 - 到位反馈: 2E 10 00 5B 00 CRC 单坐标控制
G1 16 00 07 6 byte1-2:关节(1-4=A-D), byte3-4:角度100, byte5-6:F100 - 到位反馈: 2E 10 00 5B 00 CRC 单关节控制
M13 16 00 0A 6 byte1-2:关节(1-4), byte3-4:方向(0=负,1=正), byte5-6:F*100 - 到位反馈: 2E 10 00 5B 00 CRC 持续关节运动
M14 16 00 0B 6 byte1-2:坐标(1-4=X-R), byte3-4:方向(0=负,1=正), byte5-6:F*100 - 到位反馈: 2E 10 00 5B 00 CRC 持续坐标运动
M15 16 00 0F 0 - 2 byte1: 成功1/失败0, byte2: 失败种类 运动急停
M19 16 00 0C 6 byte1-2:关节(1-4), byte3-4:步进角度100, byte5-6:F100 - 到位反馈: 2E 10 00 5B 00 CRC 关节步进控制
M20 16 00 0D 6 byte1-2:坐标(1-4=X-R), byte3-4:步进值100, byte5-6:F100 - 到位反馈: 2E 10 00 5B 00 CRC 坐标步进控制
M37 16 00 1A 0 - 2 byte1: 成功1/失败0, byte2: 失败种类 强制回零
M46 03 00 33 8 byte1-2:X100, byte3-4:Y100, byte5-6:Z100, byte7-8:R100 8 byte1-2:A100, byte3-4:B100, byte5-6:C100, byte7-8:D100 逆解:输入坐标读取角度
M47 03 00 34 8 byte1-2:A100, byte3-4:B100, byte5-6:C100, byte7-8:D100 8 byte1-2:X100, byte3-4:Y100, byte5-6:Z100, byte7-8:R100 正解:输入角度读取坐标
M51 03 00 1D 8 byte1-2:X100, byte3-4:Y100, byte5-6:Z100, byte7-8:R100 2 byte1: 可达1/不可达0, byte2: 失败种类 预览模式

配置

指令(只是作为参考Gcode指令,并不是Modbus指令内容) 功能码 寄存器地址 数据字节数 数据格式 返回字节数 返回数据格式 说明
M23 16 00 13 6 byte1-2:R(0-255), byte3-4:G(0-255), byte5-6:B(0-255) 2 byte1: 成功1/失败0, byte2: 失败种类 RGB末端灯控制
M30 16 00 14 2 byte1-2:J(0-4, 0=所有关节) - 到位反馈: 2E 10 00 5B 00 CRC 零位校准
M32 16 00 16 2 byte1-2:J(1-4) 2 byte1: 成功1/失败0, byte2: 失败种类 零位校准状态擦除
M35 16 00 18 0 - 2 byte1: 成功1/失败0, byte2: 失败种类 末端按钮使能
M36 16 00 19 0 - 2 byte1: 成功1/失败0, byte2: 失败种类 末端按钮失能
M40 16 00 1C 0 - 2 byte1: 成功1/失败0, byte2: 失败种类 清除错误状态
M119 03 00 1F 0 - 4 byte1-4: J1~J4校准状态(1=已校准,0=未校准) 读零位校准状态

IO控制

指令(只是作为参考Gcode指令,并不是Modbus指令内容) 功能码 寄存器地址 数据字节数 数据格式 返回字节数 返回数据格式 说明
M60 16 00 28 6 byte1-2:P(1-10), byte3-4:K(0=输入,1=输出), byte5-6:S(0=低,1=高) 2 byte1: 成功1/失败0, byte2: 失败种类 设置底座IO输出
M61 03 00 29 0 - 10 byte1-10: 10个IO状态(0=输入低,1=输入高,2=输出低,3=输出高) 读取底座IO状态
M62 16 00 2A 4 byte1-2:P(3-4), byte3-4:S(0=低,1=高) 2 byte1: 成功1/失败0, byte2: 失败种类 设置末端IO输出
M63 03 00 2B 0 - 4 byte1-4: 4个IO状态(0=输入低,1=输入高,2=输出低,3=输出高) 读取末端IO状态
M64 03 01 0C 0 - 1 byte1: 1=按下,0=松开 读取末端按钮状态

夹爪控制

指令(只是作为参考Gcode指令,并不是Modbus指令内容) 功能码 寄存器地址 数据字节数 数据格式 返回字节数 返回数据格式 说明
M24 16 00 22 4 byte1-2:J(1-69), byte3-4:L(0-65535) 2 byte1: 成功1/失败0, byte2: 失败种类 设置夹爪参数
M25 16 00 21 4 byte1-2:P(1-100)*100, byte3-4:F(1-100) 2 byte1: 成功1/失败0, byte2: 失败种类 控制夹爪角度
M26 03 00 23 2 byte1-2:J(1-69) 2 byte1-2: 夹爪参数值 读取夹爪参数
M27 03 00 24 0 - 2 byte1-2: 运动状态(0=静止,1=运动) 读取夹爪运动状态
M28 16 00 25 2 byte1-2:S(0=失能,1=使能) 2 byte1: 成功1/失败0, byte2: 失败种类 设置夹爪使能状态
M29 16 00 26 0 - 2 byte1: 成功1/失败0, byte2: 失败种类 夹爪零位校准
M50 03 00 20 0 - 2 byte1-2: 夹爪角度*100 读取夹爪角度

吸泵/激光/PWM/传送带

指令(只是作为参考Gcode指令,并不是Modbus指令内容) 功能码 寄存器地址 数据字节数 数据格式 返回字节数 返回数据格式 说明
M70 16 00 27 2 byte1-2:S(0=吸,1=吹,2=关) 2 byte1: 成功1/失败0, byte2: 失败种类 设置吸泵开合状态
M80 16 00 2C 2 byte1-2:K(0=关,1=开) 2 byte1: 成功1/失败0, byte2: 失败种类 开关激光
M81 16 00 2D 2 byte1-2:S(0-255) 2 byte1: 成功1/失败0, byte2: 失败种类 设置PWM档位(激光)
M82 16 00 2E 2 byte1-2:K(0=关,1=开) 2 byte1: 成功1/失败0, byte2: 失败种类 开关自定义PWM
M83 16 00 2F 2 byte1-2:S(0-255) 2 byte1: 成功1/失败0, byte2: 失败种类 设置PWM档位(自定义)
M84 03 00 32 0 - 4 byte1:激光开关, byte2:激光档位, byte3:自定义PWM开关, byte4:自定义PWM档位 读取PWM设置状态
M38 16 00 1B 10 byte1-2:J(0-1), byte3-4:K(0=前,1=后), byte5-8:L(50-500000), byte9-10:S(0=连续,1-1200mm) 2 byte1: 成功1/失败0, byte2: 失败种类 传送带控制
M39 16 00 35 0 - 2 byte1: 成功1/失败0, byte2: 失败种类 传送带停止

I2C通信

指令(只是作为参考Gcode指令,并不是Modbus指令内容) 功能码 寄存器地址 数据字节数 数据格式 返回字节数 返回数据格式 说明
M300写 16 00 36 N+6 byte1:I(0-255), byte2:U(0-255), byte3:L(0-125), byte4-5:H(0-65535), byte6:N(1-255), byte7-(6+N):K数据 2 byte1: 成功1/失败0, byte2: 失败种类 I2C数据写操作
M300读 03 00 37 6 byte1:I(0-255), byte2:U(0-255), byte3:L(0-125), byte4-5:H(0-65535), byte6:N(1-255) 1-255 byte1~N: 读取的数据(十六进制) I2C数据读操作(注意:错误时可能返回寄存器地址00 36)

状态查询

指令(只是作为参考Gcode指令,并不是Modbus指令内容) 功能码 寄存器地址 数据字节数 数据格式 返回字节数 返回数据格式 说明
M52 03 00 38 0 - 1 byte1: 限位开关返回值 获取限位开关状态

屏幕相关

指令(只是作为参考Gcode指令,并不是Modbus指令内容) 功能码 寄存器地址 数据字节数 数据格式 返回字节数 返回数据格式 说明
M401 03 01 01 0 - 2 byte1-2: 屏幕主次版本号 读屏幕主次版本
M402 03 01 02 0 - 2 byte1-2: 屏幕更正版本号 读屏幕更正版本
M405 03 01 04 0 - 8 byte1-2:J1100, byte3-4:J2100, byte5-6:J3100, byte7-8:J4100 读角度
M406 03 01 05 0 - 8 byte1-2:X100, byte3-4:Y100, byte5-6:Z100, byte7-8:R100 读坐标
M601 03 01 0A 0 - 2 byte1: 1=控制页面,0=非控制页面, byte2: 失败种类 获取屏幕是否在控制页面
M602 16 01 0B 2 byte1-2:S(1=PC控制中,0=PC非控制中) 2 byte1: 成功1/失败0, byte2: 失败种类 通知屏幕PC是否在控制页面

自动上报

事件 功能码 寄存器地址 数据字节数 数据格式 返回字节数 返回数据格式 说明
限位报错 16 00 30 - - 1 byte1: 错误值(1=J1,2=J2,4=J3,8=J4,16=耦合) 运动触发限位时自动上报
碰撞检测 16 00 31 - - 1 byte1: 碰撞关节(1=J1,2=J2,3=J3) 运动触发碰撞时自动上报

报错信息表

错误状态位(高频读取byte43-46,共32位)

说明 说明 说明
0 J1关节超限 8 J1编码器报错 16 J1驱动板过温
1 J2关节超限 9 J2编码器报错 17 J2驱动板过温
2 J3关节超限 10 J3编码器报错 18 J3驱动板过温
3 J4关节超限 11 J4编码器报错 19 J4驱动板过温
4 J1关节碰撞 12 J1关节失能 20 传送带驱动板过温
5 J2关节碰撞 13 J2关节失能 21 J2/J3耦合
6 J3关节碰撞 14 J3关节失能 22 坐标无解
7 J4关节碰撞 15 J4关节失能 23~31 预留

限位报错(LimitError)

说明
0 正常
1 J1关节超限
2 J2关节超限
4 J3关节超限
8 J4关节超限
16 J2/J3关节耦合

碰撞检测报错(CollisionDetectionError)

说明
1 J1关节碰撞
2 J2关节碰撞
3 J3关节碰撞

坐标无解

说明
1 坐标无解(运动到最远可到达位置后主动上报)

逆解/正解错误

错误码 说明
ERROR:1 关节超限
ERROR:2 关节耦合
ERROR:3 运动学无解

常见问题

  1. 机械臂无法运动?

    • 查看机械臂是否已使能(M22)、关节电机有无报错(G8)、关节有无超限
    • 碰撞后需先执行M5解锁
  2. 指令无响应

    • 检查XOR校验码是否正确
    • 检查指令格式是否符合$指令*XX\r\n规范
    • 检查通信波特率是否匹配
  3. 坐标无解

    • 检查目标坐标是否在机械臂工作范围内
    • 使用M51预览模式验证坐标是否可达
    • 靠近奇异点时使用关节控制离开

← 上一章 | 下一章 →

results matching ""

    No results matching ""