> For the complete documentation index, see [llms.txt](https://manual.rotrics.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://manual.rotrics.com/v1.0-chinese/api_and_sdk_chn/ji-xie-bi-kong-zhi-xie-yi.md).

# 机械臂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 值
