# 机械臂G-code指令和控制协议

## 串口格式

1. Speed: 115200&#x20;
2. Config: 8 个数据位，无校验位， 1 个停止位&#x20;
3. 每条指令以回车换行作为结束符 ，以下以 0D0A 表示 。&#x20;
4. 下位机收到指令， 若指令正确 会返回 ok(0D0A)，若指令错误会返回 unknow command

**示例**

```
```

## Connect指令

1. 上位机打开串口过程中，串口硬件驱动会自动复位下位机，下位机启动过程中向上位机返回 start 。
2. 上位机以是否收到 start ，判断设备是否连接成功。

## DisConnect

* 上位机断开串口即可

## 基本控制

### **复位指令**

* M1111 (0D0A)  复位到初始设置位置

### **运动模式设定**

* M2001(0D0A) 快速模式
* M2000(0D0A) 直线模式

### **基本位移指令**

* G0(0D0A) 快速非直线运动，参数：
  * X - X轴坐标值
  * Y - Y轴坐标值
  * Z - Z轴坐标值
  * E - 外接的E轴坐标值，比如传送带、滑轨或3D打印挤出机。*在开始控制前，需对E轴电机细分进行配置。*&#x5177;体说明如下：
    * M92 X() Y() Z() E()- 设置轴单位步进数，每走1mm步进电机转过的步数。比如对于官方的挤出机，设置为`M92 E379.2`&#x20;
* G1(0D0A) 快速直线运动

示例

```
;快速运动到HOME点
G0 X300 Y0 Z0

;沿直线快速运动到HOME点
G1 X300 Y0 Z0
```

* G91(0D0A) 进入相对定位模式

示例

```
;进入相对运动模式
G91
;沿着X轴运动10mm
G0 X10
```

* G90(0D0A) 进入绝对定位模式

示例

```
;进入绝对运动模式
G90
;运动到点(300, 0, 0)
G0 X300 Y0 Z0
```

### 速度控制

* G0 Fxx  设置运动速度，单位为mm/min。基础速度 F3000

示例

```
;设置运动速度为3000mm/min
G0 F3000
```

### 设定延时

* G4 - 设定机械臂等待时间，参数：
  * Pxx - 延时xx毫秒
  * Sxx - 延时xx秒

### 设定工作坐标系原点

* G92 X0 Y0 Z0 设定当前点为工作坐标系原点，后续所有运动都以当前点为参照，主要用于激光和3D打印。
* G92.1 重置工作坐标系为机械坐标系

**示例**

```
;设定当前点为工作坐标系原点，以及设定挤出机原点
G92 X0 Y0 Z0 E0

;当工作完成后，重置为机械坐标系并返回到HOME点
G92.1
G0 X300 Y0 Z0
```

## 运动参数

### 坐标位置信息获取

* M114 - 获取当前位置坐标信息
* M890 - 获取当前编码器位置读数

### 斜率相关

* M891 - 设置当前 X Y 斜率
* M892 - 获取当前 X Y 斜率

### 示教相关

* M17 - 所有步进电机上电，用于示教复现。
* M18 - 所有步进电机下电，进入示教模式。

示例

```
;进入示教模式
M18

```

### 其他

* M81 - 紧急停止
* M2007 - 机械臂软重启

## Off指令

(还需验证)顺序发送以下指令：

* M84(0D0A)
* M104 S0(0D0A)&#x20;
* M140 S0(0D0A)
* M107(0D0A)
* M81(0D0A)

## 前端模块控制

### 前端模块切换

针对不同模块，配置前端偏置参数。

* M888 - 设定当前工作模块。参数：
  * P0(0D0A) 设置前端模块为夹笔模块
  * P1(0D0A) 设置前端模块为激光模块
  * P2(0D0A) 设置前端模块为气泵模块
  * P3(0D0A) 设置前端模块为3D打印模块

### 激光模块控制

* M3 - 打开激光，设定占空比。参数：
  * S - 占空比参数，范围0-255

示例

```
;设定激光最大功率雕刻
M3 S255
```

* M5 - 关闭激光

### 气动模块控制

* M1000(0D0A) - 气泵吸气&#x20;
* M1001(0D0A) - 气泵吹气
* M1002(0D0A) - 气泵泄气(泄气气阀打开)。具体说明如下：
  * 一般用于吸盘放下物品和柔性抓闲置时恢复自然状态。
* M1003(0D0A) - 所有气泵气阀停止工作

吸盘柔性抓的动作是相反的，即当气泵吸气时，吸盘吸紧物品，柔性抓松开；当气泵吹气时，吸盘放下物品，柔性抓抓取物品。

示例

```
;吸盘吸起物品，以3000mm/min的速度移动到点(350, 100, -50)后放下物品
M1000
G0 X350 Y100 Z-50 F3000
M1002


;柔性抓抓取物品，以3000mm/min的速度移动到点(350, 100, -50)，放下物品后回到HOME点
M1001
G0 X350 Y100 Z-50 F3000
M1000
G0 X350 Y100 Z0
G0 X300 Y0 Z0 
M1002
```

### 3D打印控制

* M105(0D0A) - 获取挤出机温度
* M108(0D0A) - 获取挤出机速度
* M109 Sxx(0D0A) - 设置挤出机目标温度 x x
* M106 Sxx(0D0A) - 设置风扇转速 x x
* G0 EXXX FXXX(0D0A) - 以F速度挤出 E 长度
* M107(0D0A) - 关闭风扇
* M130(0D0A) - 设置加热棒 PID P 值
* M131(0D0A) - 设置加热棒 PID I 值
* M132(0D0A) - 设置加热棒 PID D 值


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://manual.rotrics.com/v1.0-chinese/api_and_sdk_chn/ji-xie-bi-kong-zhi-xie-yi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
