mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 13:01:12 +00:00
* Add LaiYu Liquid device integration and tests Introduce LaiYu Liquid device implementation, including backend, controllers, drivers, configuration, and resource files. Add hardware connection, tip pickup, and simplified test scripts, as well as experiment and registry configuration for LaiYu Liquid. Documentation and .gitignore for the device are also included. * feat(LaiYu_Liquid): 重构设备模块结构并添加硬件文档 refactor: 重新组织LaiYu_Liquid模块目录结构 docs: 添加SOPA移液器和步进电机控制指令文档 fix: 修正设备配置中的最大体积默认值 test: 新增工作台配置测试用例 chore: 删除过时的测试脚本和配置文件 * add * 重构: 将 LaiYu_Liquid.py 重命名为 laiyu_liquid_main.py 并更新所有导入引用 - 使用 git mv 将 LaiYu_Liquid.py 重命名为 laiyu_liquid_main.py - 更新所有相关文件中的导入引用 - 保持代码功能不变,仅改善命名一致性 - 测试确认所有导入正常工作 * 修复: 在 core/__init__.py 中添加 LaiYuLiquidBackend 导出 - 添加 LaiYuLiquidBackend 到导入列表 - 添加 LaiYuLiquidBackend 到 __all__ 导出列表 - 确保所有主要类都可以正确导入 * 修复大小写文件夹名字
221 lines
5.4 KiB
Markdown
221 lines
5.4 KiB
Markdown
# XYZ步进电机与移液器集成功能说明
|
||
|
||
## 概述
|
||
|
||
本文档描述了XYZ步进电机控制器与SOPA移液器的集成功能,实现了移液器在Z轴方向的精确运动控制,特别是在吸头装载过程中的自动定位功能。
|
||
|
||
## 新增功能
|
||
|
||
### 1. XYZ控制器集成
|
||
|
||
#### 初始化参数
|
||
```python
|
||
controller = PipetteController(
|
||
port="/dev/ttyUSB0", # 移液器串口
|
||
address=4, # 移液器Modbus地址
|
||
xyz_port="/dev/ttyUSB1" # XYZ控制器串口(可选)
|
||
)
|
||
```
|
||
|
||
#### 连接管理
|
||
- 自动检测并连接XYZ步进电机控制器
|
||
- 支持独立的移液器操作(不依赖XYZ控制器)
|
||
- 提供连接状态查询功能
|
||
|
||
### 2. Z轴运动控制
|
||
|
||
#### 相对运动功能
|
||
```python
|
||
# 向下移动10mm(用于吸头装载)
|
||
success = controller.move_z_relative(-10.0, speed=2000, acceleration=500)
|
||
|
||
# 向上移动5mm
|
||
success = controller.move_z_relative(5.0, speed=1500)
|
||
```
|
||
|
||
#### 参数说明
|
||
- `distance_mm`: 移动距离(毫米),负值向下,正值向上
|
||
- `speed`: 运动速度(100-5000 rpm)
|
||
- `acceleration`: 加速度(默认500)
|
||
|
||
#### 步距转换
|
||
- 转换比例: 1mm = 1638.4步
|
||
- 支持精确的毫米到步数转换
|
||
- 自动处理位置计算和验证
|
||
|
||
### 3. 安全检查机制
|
||
|
||
#### 运动限制
|
||
- **移动距离限制**: 单次移动最大15mm
|
||
- **速度限制**: 100-5000 rpm
|
||
- **位置限制**: Z轴位置范围 -50000 到 50000步
|
||
- **单次移动步数限制**: 最大20000步(约12mm)
|
||
|
||
#### 安全检查功能
|
||
```python
|
||
def _check_xyz_safety(self, axis: MotorAxis, target_position: int) -> bool:
|
||
"""执行XYZ轴运动前的安全检查"""
|
||
# 检查电机使能状态
|
||
# 检查错误状态
|
||
# 验证位置限制
|
||
# 验证移动距离
|
||
```
|
||
|
||
### 4. 增强的吸头装载功能
|
||
|
||
#### 自动Z轴定位
|
||
```python
|
||
def pickup_tip(self) -> bool:
|
||
"""装载吸头(包含Z轴自动定位)"""
|
||
# 检查当前吸头状态
|
||
# 执行Z轴下降运动(10mm)
|
||
# 执行移液器吸头装载
|
||
# 更新吸头状态
|
||
```
|
||
|
||
#### 工作流程
|
||
1. 检查是否已有吸头装载
|
||
2. 如果配置了XYZ控制器,执行Z轴下降10mm
|
||
3. 执行移液器的吸头装载动作
|
||
4. 更新吸头状态和统计信息
|
||
|
||
### 5. 紧急停止功能
|
||
|
||
#### 全系统停止
|
||
```python
|
||
def emergency_stop(self) -> bool:
|
||
"""紧急停止所有运动"""
|
||
# 停止移液器运动
|
||
# 停止XYZ步进电机运动
|
||
# 记录停止状态
|
||
```
|
||
|
||
#### 使用场景
|
||
- 检测到异常情况时立即停止
|
||
- 用户手动中断操作
|
||
- 系统故障保护
|
||
|
||
### 6. 状态监控
|
||
|
||
#### 设备状态查询
|
||
```python
|
||
status = controller.get_status()
|
||
# 返回包含移液器和XYZ控制器状态的字典
|
||
{
|
||
'pipette': {
|
||
'connected': True,
|
||
'tip_status': 'tip_attached',
|
||
'current_volume': 0.0,
|
||
# ...
|
||
},
|
||
'xyz_controller': {
|
||
'connected': True,
|
||
'port': '/dev/ttyUSB1'
|
||
}
|
||
}
|
||
```
|
||
|
||
## 使用示例
|
||
|
||
### 基本使用流程
|
||
|
||
```python
|
||
from unilabos.devices.LaiYu_Liquid.controllers.pipette_controller import PipetteController
|
||
|
||
# 1. 创建控制器实例
|
||
controller = PipetteController(
|
||
port="/dev/ttyUSB0",
|
||
address=4,
|
||
xyz_port="/dev/ttyUSB1" # 可选
|
||
)
|
||
|
||
# 2. 连接设备
|
||
if controller.connect():
|
||
print("设备连接成功")
|
||
|
||
# 3. 初始化
|
||
if controller.initialize():
|
||
print("设备初始化成功")
|
||
|
||
# 4. 装载吸头(自动Z轴定位)
|
||
if controller.pickup_tip():
|
||
print("吸头装载成功")
|
||
|
||
# 5. 执行液体操作
|
||
controller.aspirate(100.0) # 吸取100μL
|
||
controller.dispense(100.0) # 排出100μL
|
||
|
||
# 6. 弹出吸头
|
||
controller.eject_tip()
|
||
|
||
# 7. 断开连接
|
||
controller.disconnect()
|
||
```
|
||
|
||
### 手动Z轴控制
|
||
|
||
```python
|
||
# 精确的Z轴运动控制
|
||
controller.move_z_relative(-5.0, speed=1000) # 下降5mm
|
||
time.sleep(1) # 等待运动完成
|
||
controller.move_z_relative(5.0, speed=1000) # 上升5mm
|
||
```
|
||
|
||
## 集成测试
|
||
|
||
### 测试脚本
|
||
使用 `test_xyz_pipette_integration.py` 脚本进行完整的集成测试:
|
||
|
||
```bash
|
||
python test_xyz_pipette_integration.py
|
||
```
|
||
|
||
### 测试项目
|
||
1. **连接状态测试** - 验证设备连接
|
||
2. **Z轴运动测试** - 验证运动控制
|
||
3. **吸头装载测试** - 验证集成功能
|
||
4. **安全检查测试** - 验证安全机制
|
||
5. **紧急停止测试** - 验证停止功能
|
||
6. **液体操作测试** - 验证基本功能
|
||
|
||
## 配置要求
|
||
|
||
### 硬件要求
|
||
- SOPA移液器(支持Modbus RTU通信)
|
||
- XYZ步进电机控制器(可选)
|
||
- 串口连接线
|
||
|
||
### 软件依赖
|
||
- Python 3.7+
|
||
- pymodbus库
|
||
- pyserial库
|
||
|
||
### 串口配置
|
||
- 波特率: 9600
|
||
- 数据位: 8
|
||
- 停止位: 1
|
||
- 校验位: None
|
||
|
||
## 注意事项
|
||
|
||
### 安全提醒
|
||
1. **首次使用前必须进行安全检查**
|
||
2. **确保Z轴运动范围内无障碍物**
|
||
3. **紧急情况下立即使用紧急停止功能**
|
||
4. **定期检查设备连接状态**
|
||
|
||
### 故障排除
|
||
1. **连接失败**: 检查串口配置和设备电源
|
||
2. **运动异常**: 检查电机使能状态和位置限制
|
||
3. **吸头装载失败**: 检查Z轴位置和吸头供应
|
||
4. **通信错误**: 检查Modbus地址和通信参数
|
||
|
||
## 更新记录
|
||
|
||
- **2024-01**: 初始版本,实现基本集成功能
|
||
- **2024-01**: 添加安全检查和紧急停止功能
|
||
- **2024-01**: 完善错误处理和状态监控
|
||
|
||
## 技术支持
|
||
|
||
如有技术问题,请联系开发团队或查阅相关技术文档。 |