Files
WCTDataMiner/docs/AnalyzeCommand.md
2026-08-17 13:30:42 +08:00

184 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AnalyzeCommand 使用指南
数据分析命令,支持 Ploss 余量分析与 Qfod 标定阈值分析。
## 命令语法
```bash
WCTDataMiner analyze --type <ploss|qfod> [选项]
```
## 分析类型
| 类型 | 说明 | 必需参数 |
|------|------|----------|
| `ploss` | Ploss 余量/delta_p 分析 | `--file` |
| `qfod` | Qfod 标定阈值计算 | `--pure`, `--foreign` |
---
## Ploss 分析
### 语法
```bash
WCTDataMiner analyze --type ploss --file <日志文件路径>
```
### 参数
| 参数 | 说明 |
|------|------|
| `--file` | 日志文件路径(支持 `.log``.DAT` 格式) |
### 输出示例
```
=== Ploss Analysis: sample.DAT ===
Total: 35 (TwoLine: 35, Legacy: 0), FOD: 1, Errors: 0
Normal margin>2000: 34/34 (100.0%)
FOD margin>2000: 1/1 (100.0%)
Identity (delta_p = Tx - Rx - pow_loss - ploss): 35/35
FOD rows (delta_p back-solve):
Line 92 [two-line] pow_loss=3394 delta_p=605 ploss=1750 threshold=2000 margin=250
-> delta_p'=605
rewrite: pow_loss = 3394, delta_p = 605
```
### 输出字段说明
| 字段 | 说明 |
|------|------|
| **Total** | 总记录数按格式分类TwoLine: 两行格式Legacy: 旧单行格式) |
| **FOD** | FOD 标记行数Field12 == 1 |
| **Errors** | 解析错误行数 |
| **Normal margin>2000** | 正常行中余量 > 2000 的比例 |
| **FOD margin>2000** | FOD 行中余量 > 2000 的比例 |
| **Identity** | 恒等式成立行数delta_p = Tx - Rx - pow_loss - ploss |
### FOD 行反解
当存在 FOD 行时,输出包含 `delta_p'` 反解结果:
- `delta_p'` = 反解后的 delta_p 值
- `rewrite` = 重写后的 header 字段pow_loss, delta_p
### 支持的日志格式
#### 两行格式(推荐)
```
HEADER-> 18768 2001 -18347 3394 1750 2000 ...
FOD-> 12 18801 2001 -18447 3394 1750 2000 0 1750 2000 1 0 0 0 0 0
```
#### 旧单行格式(兼容)
```
FOD-> 0 0 0 12 18801 2001 -18447 3394 1750 2000 0 1750 2000 1 0 0 0
```
#### Field1 十六进制支持
Field1 支持以下十六进制格式:
| 格式 | 示例 | 说明 |
|------|------|------|
| `0x` 前缀 | `0xFF`, `0x0C` | 标准 C 风格十六进制 |
| `0` 前缀 | `0FF`, `0C` | 简写十六进制(仅含 A-F 时识别) |
| 十进制 | `12`, `255` | 普通十进制 |
---
## Qfod 标定
### 语法
```bash
WCTDataMiner analyze --type qfod --pure <纯手机日志> --foreign <异物日志>
```
### 参数
| 参数 | 说明 |
|------|------|
| `--pure` | 纯手机充电日志路径 |
| `--foreign` | 手机 + 异物充电日志路径 |
### 输出示例
```
=== Qfod Calibration ===
Pure phone: pure.log
count=21 min=3 max=5 avg=4.0
Foreign object: foreign.log
count=7 min=-49 max=-5 avg=-27.7
Threshold = (pureMax + foreignMin) / 2 = (5 + -49) / 2 = -22
Margin: pureMax - threshold = 27 (负为安全), foreignMin - threshold = -27 (正为安全)
```
### 输出字段说明
| 字段 | 说明 |
|------|------|
| **count** | 记录条数 |
| **min** | ΔQ 最小值 |
| **max** | ΔQ 最大值 |
| **avg** | ΔQ 平均值 |
| **Threshold** | 标定阈值 = (pureMax + foreignMin) / 2 |
### 标定原理
1. **纯手机充电**ΔQ 稳定在正值区间(如 3~5
2. **异物干扰**ΔQ 衰减到负值区间(如 -49~-5
3. **阈值计算**:取两组数据的中间值,实现最大区分度
### 安全余量解读
| 指标 | 期望值 | 说明 |
|------|--------|------|
| `pureMax - threshold` | **负值** | 纯手机数据不误触发 |
| `foreignMin - threshold` | **正值** | 异物数据可靠检出 |
---
## 错误处理
| 场景 | 输出 |
|------|------|
| 缺少 `--type` | `Required option '--type' was not specified.` |
| 未知类型 | `Unknown type: foo. Use 'ploss' or 'qfod'.` |
| Ploss 缺少文件 | `Please specify --file for Ploss analysis` |
| Qfod 缺少参数 | `Please specify --pure and --foreign for Qfod calibration` |
| 文件不存在 | `[filename] FAILED: File not found` |
---
## 典型使用场景
### 场景 1产线数据质量检验
```bash
# 检查 Ploss 余量是否达标margin > 2000 比例)
WCTDataMiner analyze --type ploss --file "产线数据.DAT"
```
### 场景 2FOD 事件溯源
```bash
# 定位 FOD 行,查看 delta_p' 反解结果
WCTDataMiner analyze --type ploss --file "异常日志.log"
```
### 场景 3Qfod 阈值标定
```bash
# 使用纯净数据 + 异物数据计算最佳阈值
WCTDataMiner analyze --type qfod \
--pure "pure.log" \
--foreign "foreign.log"
```