2026-01-24 02:54:01 +08:00
|
|
|
|
# 模拟电动扳手服务器使用说明
|
|
|
|
|
|
|
|
|
|
|
|
## 概述
|
|
|
|
|
|
|
|
|
|
|
|
`wrench_simulator.py` 是一个模拟电动扳手服务器,用于测试和开发。它模拟真实扳手的行为,接收设定参数并返回正确的响应。
|
|
|
|
|
|
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
|
|
|
|
|
|
1. **接收参数设置(功能码0x10)**:接收并解析扭矩参数设置,返回应答
|
|
|
|
|
|
2. **接收启停控制(功能码0x01)**:接收启动/停止命令,返回应答
|
|
|
|
|
|
3. **自动返回成功结果(功能码0x15)**:启动后等待1秒,自动发送成功结果
|
|
|
|
|
|
4. **支持远程控制(功能码0x11)**:支持启用/停止远程控制
|
|
|
|
|
|
5. **多客户端支持**:支持多个客户端同时连接
|
|
|
|
|
|
|
|
|
|
|
|
## 使用方法
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 启动模拟扳手服务器
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
python wrench_simulator.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
服务器将监听 `0.0.0.0:7888`(默认配置),等待客户端连接。
|
|
|
|
|
|
|
|
|
|
|
|
### 2. 运行测试脚本
|
|
|
|
|
|
|
|
|
|
|
|
在另一个终端运行:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
python test_simulator.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
或者直接使用 `wrench_controller.py`:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
python wrench_controller.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 工作流程
|
|
|
|
|
|
|
|
|
|
|
|
1. **客户端连接**:客户端连接到服务器
|
|
|
|
|
|
2. **启用远程控制**:发送功能码0x11启用远程控制
|
|
|
|
|
|
3. **设定参数**:发送功能码0x10设定扭矩参数
|
|
|
|
|
|
4. **启动扳手**:发送功能码0x01启动扳手(正转或反转)
|
|
|
|
|
|
5. **等待结果**:服务器等待1秒后自动发送成功结果(功能码0x15)
|
|
|
|
|
|
|
|
|
|
|
|
## 协议支持
|
|
|
|
|
|
|
|
|
|
|
|
### 已实现的功能码
|
|
|
|
|
|
|
|
|
|
|
|
- **0x11**: 启停远程控制
|
|
|
|
|
|
- **0x01**: 扳手启停控制
|
|
|
|
|
|
- **0x06**: 应答控制
|
|
|
|
|
|
- **0x10**: 参数设置
|
|
|
|
|
|
- **0x15**: 执行结果反馈
|
|
|
|
|
|
- **0x17**: 结果反馈确认
|
|
|
|
|
|
|
|
|
|
|
|
### 返回状态码
|
|
|
|
|
|
|
|
|
|
|
|
- **0x00**: 成功-OK
|
|
|
|
|
|
- **0x01**: 成功-扭矩到达(默认)
|
|
|
|
|
|
- **0x02**: 成功-位置到达
|
|
|
|
|
|
|
|
|
|
|
|
## 配置说明
|
|
|
|
|
|
|
|
|
|
|
|
可以在代码中修改以下参数:
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
simulator = WrenchSimulator(
|
|
|
|
|
|
host="0.0.0.0", # 监听地址
|
|
|
|
|
|
port=7888, # 监听端口
|
|
|
|
|
|
address=0x01 # 设备地址码
|
|
|
|
|
|
)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 注意事项
|
|
|
|
|
|
|
|
|
|
|
|
1. 确保端口7888未被占用
|
|
|
|
|
|
2. 模拟服务器会自动递增螺栓号
|
|
|
|
|
|
3. 实际扭矩值会略高于目标扭矩值(+5 Nm)以模拟成功
|
|
|
|
|
|
4. 只有在启用远程控制后,启停命令才会生效
|
|
|
|
|
|
|
|
|
|
|
|
## 测试场景
|
|
|
|
|
|
|
|
|
|
|
|
### 场景1:基本测试
|
|
|
|
|
|
- 启用远程控制
|
|
|
|
|
|
- 设定扭矩参数(M1模式,300Nm)
|
|
|
|
|
|
- 启动扳手
|
|
|
|
|
|
- 接收成功结果
|
|
|
|
|
|
|
|
|
|
|
|
### 场景2:角度模式测试
|
|
|
|
|
|
- 启用远程控制
|
|
|
|
|
|
- 设定扭矩参数(M2模式,目标角度90°)
|
|
|
|
|
|
- 启动扳手
|
|
|
|
|
|
- 接收成功结果
|
|
|
|
|
|
|
|
|
|
|
|
## 调试信息
|
|
|
|
|
|
|
|
|
|
|
|
服务器会输出详细的调试信息:
|
|
|
|
|
|
- 📥 接收到的数据(十六进制)
|
|
|
|
|
|
- 📤 发送的响应(十六进制)
|
|
|
|
|
|
- 📋 处理的功能码
|
|
|
|
|
|
- ✅ 成功操作
|
|
|
|
|
|
- ❌ 错误信息
|
|
|
|
|
|
|
|
|
|
|
|
## 故障排除
|
|
|
|
|
|
|
|
|
|
|
|
1. **连接被拒绝**:检查服务器是否已启动
|
|
|
|
|
|
2. **端口被占用**:修改端口号或关闭占用端口的程序
|
|
|
|
|
|
3. **无响应**:检查网络连接和防火墙设置
|
|
|
|
|
|
|
2026-02-04 11:35:09 +08:00
|
|
|
|
|
|
|
|
|
|
|