2026-01-24 02:54:01 +08:00
|
|
|
|
# 电动扳手系统架构说明
|
|
|
|
|
|
|
|
|
|
|
|
## 目录结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
TorqueWrench/
|
|
|
|
|
|
├── backend/ # 后端API服务器
|
|
|
|
|
|
│ ├── app.py # Flask API服务器
|
|
|
|
|
|
│ ├── work_orders.json # 工单数据文件
|
|
|
|
|
|
│ ├── claimed_orders.json # 已认领工单(自动生成)
|
|
|
|
|
|
│ └── requirements.txt # Python依赖
|
|
|
|
|
|
│
|
|
|
|
|
|
├── frontend/ # 前端GUI应用
|
|
|
|
|
|
│ ├── wrench_gui.py # 图形界面程序
|
|
|
|
|
|
│ └── requirements.txt # Python依赖
|
|
|
|
|
|
│
|
|
|
|
|
|
├── wrench_controller.py # 扳手控制模块(共享)
|
|
|
|
|
|
├── wrench_simulator.py # 模拟扳手服务器(测试用)
|
|
|
|
|
|
└── config.json # 配置文件
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 系统架构
|
|
|
|
|
|
|
|
|
|
|
|
### 后端API服务器 (backend/app.py)
|
|
|
|
|
|
|
|
|
|
|
|
提供RESTful API接口:
|
|
|
|
|
|
|
|
|
|
|
|
1. **GET /api/work-orders** - 查询工单列表
|
|
|
|
|
|
- 参数: `trace_id` (追溯号), `process_id` (工序号)
|
|
|
|
|
|
- 返回: 符合条件的未认领工单列表
|
|
|
|
|
|
|
|
|
|
|
|
2. **POST /api/work-orders/claim** - 认领工单
|
|
|
|
|
|
- 参数: `trace_id`, `process_id`, `operator`
|
|
|
|
|
|
- 返回: 工单详情
|
|
|
|
|
|
|
|
|
|
|
|
3. **POST /api/work-orders/submit** - 提交工单数据
|
|
|
|
|
|
- 参数: `trace_id`, `process_id`, `bolts` (螺栓数据)
|
|
|
|
|
|
- 返回: 提交结果
|
|
|
|
|
|
|
|
|
|
|
|
4. **POST /api/work-orders/release** - 释放工单
|
|
|
|
|
|
- 参数: `trace_id`
|
|
|
|
|
|
- 返回: 释放结果
|
|
|
|
|
|
|
|
|
|
|
|
5. **GET /api/health** - 健康检查
|
|
|
|
|
|
|
|
|
|
|
|
### 前端GUI (frontend/wrench_gui.py)
|
|
|
|
|
|
|
|
|
|
|
|
主要功能:
|
|
|
|
|
|
|
|
|
|
|
|
1. **轮询查询工单列表**
|
|
|
|
|
|
- 根据追溯号和工序号自动轮询可用工单
|
|
|
|
|
|
- 默认每3秒查询一次
|
|
|
|
|
|
|
|
|
|
|
|
2. **认领工单**
|
|
|
|
|
|
- 从工单列表中选择并认领工单
|
|
|
|
|
|
- 认领后显示工单详情和螺栓列表
|
|
|
|
|
|
|
|
|
|
|
|
3. **自动拧紧流程**
|
|
|
|
|
|
- 连接扳手设备
|
|
|
|
|
|
- 按顺序拧紧所有螺栓
|
|
|
|
|
|
- 实时更新进度和状态
|
|
|
|
|
|
|
|
|
|
|
|
4. **自动提交数据**
|
|
|
|
|
|
- 工作完成后自动提交结果到后端
|
|
|
|
|
|
- 包含每个螺栓的详细数据
|
|
|
|
|
|
|
|
|
|
|
|
## 数据格式
|
|
|
|
|
|
|
|
|
|
|
|
### 工单数据结构
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"trace_id": "TR20260119001", // 追溯号(原工单号)
|
|
|
|
|
|
"process_id": "P001", // 工序号
|
|
|
|
|
|
"process_name": "前轮装配", // 工序名称
|
|
|
|
|
|
"product_name": "汽车底盘组件",
|
|
|
|
|
|
"station": "装配工位A1",
|
|
|
|
|
|
"operator": "张三",
|
|
|
|
|
|
"status": "pending",
|
|
|
|
|
|
"bolts": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"bolt_id": 1,
|
|
|
|
|
|
"name": "前轮螺栓1",
|
|
|
|
|
|
"target_torque": 280,
|
|
|
|
|
|
"mode": 1,
|
|
|
|
|
|
"torque_tolerance": 0.10,
|
|
|
|
|
|
"angle_min": 1,
|
|
|
|
|
|
"angle_max": 360,
|
|
|
|
|
|
"status": "pending"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 提交数据格式
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"trace_id": "TR20260119001",
|
|
|
|
|
|
"process_id": "P001",
|
|
|
|
|
|
"bolts": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"bolt_id": 1,
|
|
|
|
|
|
"name": "前轮螺栓1",
|
|
|
|
|
|
"target_torque": 280,
|
|
|
|
|
|
"actual_torque": 285,
|
|
|
|
|
|
"actual_angle": 0,
|
|
|
|
|
|
"status": "success",
|
|
|
|
|
|
"timestamp": "2026-01-19 10:30:00",
|
|
|
|
|
|
"result": {
|
|
|
|
|
|
"success": true,
|
|
|
|
|
|
"status": "成功-扭矩到达",
|
|
|
|
|
|
...
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 使用说明
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 安装依赖
|
|
|
|
|
|
|
|
|
|
|
|
**后端:**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd backend
|
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**前端:**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd frontend
|
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 启动后端服务器
|
|
|
|
|
|
|
|
|
|
|
|
**Windows:**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd backend
|
|
|
|
|
|
start_backend.bat
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Linux/Mac:**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd backend
|
|
|
|
|
|
chmod +x start_backend.sh
|
|
|
|
|
|
./start_backend.sh
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
后端服务器将在 `http://localhost:5000` 启动
|
|
|
|
|
|
|
|
|
|
|
|
### 3. 启动前端GUI
|
|
|
|
|
|
|
|
|
|
|
|
**Windows:**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd frontend
|
|
|
|
|
|
start_frontend.bat
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**Linux/Mac:**
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd frontend
|
|
|
|
|
|
chmod +x start_frontend.sh
|
|
|
|
|
|
./start_frontend.sh
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 4. 使用流程
|
|
|
|
|
|
|
|
|
|
|
|
1. **设置查询条件**
|
|
|
|
|
|
- 在界面中输入追溯号和工序号
|
|
|
|
|
|
- 点击"查询工单"或等待自动轮询
|
|
|
|
|
|
|
|
|
|
|
|
2. **认领工单**
|
|
|
|
|
|
- 从工单列表中选择要处理的工单
|
|
|
|
|
|
- 点击"认领工单"按钮
|
|
|
|
|
|
|
|
|
|
|
|
3. **开始工作**
|
|
|
|
|
|
- 认领成功后,点击"开始拧紧"
|
|
|
|
|
|
- 系统自动连接扳手并执行拧紧流程
|
|
|
|
|
|
|
|
|
|
|
|
4. **自动提交**
|
|
|
|
|
|
- 所有螺栓拧紧完成后,系统自动提交数据到后端
|
|
|
|
|
|
- 提交成功后,可以认领下一个工单
|
|
|
|
|
|
|
|
|
|
|
|
## 注意事项
|
|
|
|
|
|
|
|
|
|
|
|
1. **追溯号和工序号必须同时匹配**才能查询到工单
|
|
|
|
|
|
2. **工单只能被认领一次**,认领后其他客户端无法再认领
|
|
|
|
|
|
3. **工作完成后会自动提交数据**,无需手动操作
|
|
|
|
|
|
4. **轮询功能默认开启**,会自动刷新工单列表
|
|
|
|
|
|
5. 后端数据文件保存在 `backend/` 目录下
|
|
|
|
|
|
|
|
|
|
|
|
## API配置
|
|
|
|
|
|
|
|
|
|
|
|
前端默认连接 `http://localhost:5000`,如需修改,编辑 `frontend/wrench_gui.py` 中的 `api_base_url` 变量。
|
|
|
|
|
|
|
2026-02-04 11:35:09 +08:00
|
|
|
|
|
|
|
|
|
|
|