# 电动扳手系统架构说明 ## 目录结构 ``` 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` 变量。