# SOPA气动式移液器RS485控制指令合集

## 1. RS485通信基本配置

### 1.1 支持的设备型号
- **仅SC-STxxx-00-13支持RS485通信**
- 其他型号主要使用CAN通信

### 1.2 通信参数
- **波特率**: 9600, 115200（默认值）
- **地址范围**: 1~254个设备，255为广播地址
- **通信接口**: RS485差分信号

### 1.3 引脚分配（10位LIF连接器）
- **引脚7**: RS485+ (RS485通信正极)
- **引脚8**: RS485- (RS485通信负极)

## 2. RS485通信协议格式

### 2.1 发送数据格式
```
头码 | 地址 | 命令/数据 | 尾码 | 校验和
```

### 2.2 从机回应格式
```
头码 | 地址 | 数据（固定9字节） | 尾码 | 校验和
```

### 2.3 格式详细说明
- **头码**: 
  - 终端调试: '/' (0x2F)
  - OEM通信: '[' (0x5B) 
- **地址**: 设备节点地址，1~254，多字节ASCII（注意：地址不可为47，69，91）
- **命令/数据**: ASCII格式的命令字符串
- **尾码**: 'E' (0x45)
- **校验和**: 以上数据的累加值，1字节

## 3. 初始化和基本控制指令

### 3.1 初始化指令
```bash
# 初始化活塞驱动机构
HE

# 示例（OEM通信）：
# 主机发送: 5B 32 48 45 1A
# 从机回应开始: 2F 02 06 0A 30 00 00 00 00 00 00 45 B6
# 从机回应完成: 2F 02 06 00 30 00 00 00 00 00 00 45 AC
```

### 3.2 枪头操作指令
```bash
# 顶出枪头
RE

# 枪头检测状态报告
Q28  # 返回枪头存在状态（0=不存在，1=存在）
```

## 4. 移液控制指令

### 4.1 位置控制指令
```bash
# 绝对位置移动（微升）
A[n]E
# 示例：移动到位置0
A0E

# 相对抽吸（向上移动）
P[n]E
# 示例：抽吸200微升
P200E

# 相对分配（向下移动）  
D[n]E
# 示例：分配200微升
D200E
```

### 4.2 速度设置指令
```bash
# 设置最高速度（0.1ul/秒为单位）
s[n]E
# 示例：设置最高速度为2000（200ul/秒）
s2000E

# 设置启动速度
b[n]E
# 示例：设置启动速度为100（10ul/秒）
b100E

# 设置断流速度
c[n]E
# 示例：设置断流速度为100（10ul/秒）
c100E

# 设置加速度
a[n]E
# 示例：设置加速度为30000
a30000E
```

## 5. 液体检测和安全控制指令

### 5.1 吸排液检测控制
```bash
# 开启吸排液检测
f1E  # 开启
f0E  # 关闭

# 设置空吸门限
$[n]E
# 示例：设置空吸门限为4
$4E

# 设置泡沫门限
![n]E
# 示例：设置泡沫门限为20
!20E

# 设置堵塞门限
%[n]E
# 示例：设置堵塞门限为350
%350E
```

### 5.2 液位检测指令
```bash
# 压力式液位检测
m0E  # 设置为压力探测模式
L[n]E  # 执行液位检测，[n]为灵敏度(3~40)
k[n]E  # 设置检测速度(100~2000)

# 电容式液位检测  
m1E  # 设置为电容探测模式
```

## 6. 状态查询和报告指令

### 6.1 基本状态查询
```bash
# 查询固件版本
V

# 查询设备状态
Q[n]
# 常用查询参数：
Q01  # 报告加速度
Q02  # 报告启动速度  
Q03  # 报告断流速度
Q06  # 报告最大速度
Q08  # 报告节点地址
Q11  # 报告波特率
Q18  # 报告当前位置
Q28  # 报告枪头存在状态
Q29  # 报告校准系数
Q30  # 报告空吸门限
Q31  # 报告堵针门限
Q32  # 报告泡沫门限
```

## 7. 配置和校准指令

### 7.1 校准参数设置
```bash
# 设置校准系数
j[n]E
# 示例：设置校准系数为1.04
j1.04E

# 设置补偿偏差
e[n]E  
# 示例：设置补偿偏差为2.03
e2.03E

# 设置吸头容量
C[n]E
# 示例：设置1000ul吸头
C1000E
```

### 7.2 高级控制参数
```bash
# 设置回吸粘度
][n]E
# 示例：设置回吸粘度为30
]30E

# 延时控制
M[n]E
# 示例：延时1000毫秒
M1000E
```

## 8. 复合操作指令示例

### 8.1 标准移液操作
```bash
# 完整的200ul移液操作
a30000b200c200s2000P200E
# 解析：设置加速度30000 + 启动速度200 + 断流速度200 + 最高速度2000 + 抽吸200ul + 执行
```

### 8.2 带检测的移液操作
```bash
# 带空吸检测的200ul抽吸
a30000b200c200s2000f1P200f0E
# 解析：设置参数 + 开启检测 + 抽吸200ul + 关闭检测 + 执行
```

### 8.3 液面检测操作
```bash
# 压力式液面检测
m0k200L5E
# 解析：压力模式 + 检测速度200 + 灵敏度5 + 执行检测

# 电容式液面检测  
m1L3E
# 解析：电容模式 + 灵敏度3 + 执行检测
```

## 9. 错误处理

### 9.1 状态字节说明
- **00h**: 无错误
- **01h**: 上次动作未完成
- **02h**: 设备未初始化  
- **03h**: 设备过载
- **04h**: 无效指令
- **05h**: 液位探测故障
- **0Dh**: 空吸
- **0Eh**: 堵针
- **10h**: 泡沫
- **11h**: 吸液超过吸头容量

### 9.2 错误查询
```bash
# 查询当前错误状态
Q  # 返回状态字节和错误代码
```

## 10. 通信示例

### 10.1 基本通信流程
1. **执行命令**: 主机发送命令 → 从机确认 → 从机执行 → 从机回应完成
2. **读取数据**: 主机发送查询 → 从机确认 → 从机返回数据

### 10.2 快速指令表
| 操作 | 指令 | 说明 |
|------|------|------|
| 初始化 | `HE` | 初始化设备 |
| 退枪头 | `RE` | 顶出枪头 |
| 吸液200ul | `a30000b200c200s2000P200E` | 基本吸液 |
| 带检测吸液 | `a30000b200c200s2000f1P200f0E` | 开启空吸检测 |
| 吐液200ul | `a300000b500c500s6000D200E` | 基本分配 |
| 压力液面检测 | `m0k200L5E` | pLLD检测 |
| 电容液面检测 | `m1L3E` | cLLD检测 |

## 11. 注意事项

1. **地址限制**: RS485地址不可设为47、69、91
2. **校验和**: 终端调试时不关心校验和，OEM通信需要校验
3. **ASCII格式**: 所有命令和参数都使用ASCII字符
4. **执行指令**: 大部分命令需要以'E'结尾才能执行
5. **设备支持**: 只有SC-STxxx-00-13型号支持RS485通信
6. **波特率设置**: 默认115200，可设置为9600