200 lines
7.8 KiB
Markdown
200 lines
7.8 KiB
Markdown
# 1 数据获取
|
||
## 1.1 手动抓数据
|
||
### 1.1.1 Qfod
|
||
|
||
#### 1.1.1.1 日志 Format
|
||
|
||
`X#:Q A->B C D E`
|
||
#### 1.1.1.2 数据结构
|
||
|
||
| 字段标识 | 字段名称 | 数据类型 | 取值范围 | 说明 |
|
||
| ----- | ---------------- | ----------- | -------- | ---------------------------- |
|
||
| X | Charger Index | `uint8` | 0, 1 | 充电器索引,标识使用哪个充电器 |
|
||
| Q | Q Factor Flag | `uint8` | - | Q 值标记/标志位 |
|
||
| A | Coil Index | `uint8` | 0, 1, 2 | 线圈索引,标识检测的线圈编号 |
|
||
| B | ΔQ (Delta Q) | `int16` | - | Q 值变化量/差值,反映 Q 值的相对变化 |
|
||
| C | Current Q Factor | `float` | - | 当前实时 Q 值 |
|
||
| D | Raw Q Factor | `float` | - | 原始 Q 值(未经处理的测量值) |
|
||
| ==E== | ==FOD Type== | ==`uint8`== | ==见表 2== | ==异物类型编码,对应 Table 2 中的异物分类== |
|
||
|
||
#### 1.1.1.3 字段关系说明
|
||
|
||
- `X + A` 组合唯一标识一个检测通道(充电器 + 线圈)
|
||
- `B = C - D`(变化量 = 当前值 - 原始值)
|
||
|
||
### 1.1.2 Ploss fod
|
||
基于功率损耗的异物检测(Power Loss FOD)
|
||
|
||
#### 1.1.2.1 日志 Format
|
||
|
||
`FOD-> (1) X X X (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13)`
|
||
|
||
示例:
|
||
`FOD-> 4 2 1 127 10690 12013 35377 9904 1213 -2882 750 0 0 1 500 1`
|
||
|
||
> **说明**:括号数字表示有效字段编号,X 表示忽略该位置数据
|
||
|
||
前置参数(库内计算):
|
||
- `pow_loss` = 2005(发射端基础损耗值)
|
||
- `delta_p` = 2200(功率损耗补偿系数,**调试关键变量**)
|
||
|
||
#### 1.1.2.2 数据结构
|
||
|
||
| 编号 | 字段名称 | 数据类型 | 示例值 | 说明 |
|
||
| ---- | ---------------------- | -------- | ----- | ---------------------------------------- |
|
||
| (1) | Rx Type | `uint8` | 4 | 接收端类型标识 |
|
||
| (2) | Rx Power | `uint16` | 10690 | 接收端实际获得功率,能量去向 |
|
||
| (3) | Tx Power | `uint16` | 12013 | 发射端输出总功率,能量来源 |
|
||
| (4) | Vcoil | `uint16` | 35377 | 发射线圈电压,用于计算理论损耗 |
|
||
| (5) | Vin | `uint16` | 9904 | 输入电压,系统状态监控 |
|
||
| (6) | Isns | `uint16` | 1213 | 输入电流采样值,系统状态监控 |
|
||
| (7) | Ploss | `int32` | -2882 | **核心判定值**,计算损耗:Tx-(Rx+base_loss+delta_p) |
|
||
| (8) | Threshold | `int32` | 750 | **安全红线**,允许的最大损耗限值 |
|
||
| (9) | Trigger Count | `uint16` | 0 | 触发计数器,持续超阈值会累积 |
|
||
| (10) | FOD Result | `uint16` | 0 | 当前判定结果状态 |
|
||
| (11) | Charging Protocol Type | `uint8` | 1 | 充电协议类型 |
|
||
| (12) | PWM Duty | `uint8` | 500 | PWM 控制占空比 |
|
||
| (13) | Charging coil index | `uint8` | 1 | 充电线圈索引 |
|
||
|
||
#### 1.1.2.3 核心判定逻辑
|
||
|
||
**能量守恒定律:**
|
||
```
|
||
发射功率 = 接收功率 + 系统损耗 + 异物损耗
|
||
```
|
||
|
||
**公式一:发射功率计算**
|
||
```
|
||
(3) = (5) × (6)
|
||
```
|
||
即:`Tx Power = Vin × Isns`(通过芯片实际工作的电压和电流相乘得到动态值)
|
||
|
||
**公式二:额外损耗计算**
|
||
```
|
||
(7) = (3) - ((2) + pow_loss + delta_p)
|
||
```
|
||
即:`Ploss = Tx Power - (Rx Power + pow_loss + delta_p)`
|
||
|
||
> 含义:用"发射端总功率"减去"接收端功率"、"已知系统损耗"和"补偿系数",剩下的数值 (7) 就是无法解释的能量损耗。如果这个值很大,说明有金属异物在发热消耗能量。
|
||
|
||
#### 1.1.2.4 变量定义详解
|
||
|
||
| 变量 | 名称 | 说明 |
|
||
| --- | ---- | ---- |
|
||
| (7) | Calculated Loss | 实时计算出的功率差值,**需要重点监控的变量** |
|
||
| (8) | Threshold | Power loss 阈值,Qi 协议规定(参考 Table 4),**随功率段动态变化**(功率越大,允许的损耗越大) |
|
||
| (2) | Rx Power | 接收端(手机/手表)上报给发射端的功率值 |
|
||
| pow_loss | Tx 固有损耗 | 发射板的固有损耗,库内计算得出,无需修改 |
|
||
| delta_p | 功率补偿系数 | **工程师唯一需要调整的"旋钮"** |
|
||
|
||
**判定条件:**
|
||
- 当 (7) Ploss > (8) Threshold 时,计数器 (9) 增加
|
||
- 当计数超过设定阈值,触发 FOD 报警并停止充电
|
||
|
||
**调试目标:**
|
||
- 正常充电时,需满足:(7) Ploss < (8) Threshold
|
||
- 如正常充电时误报 FOD,需增大 `delta_p` 补偿系数
|
||
- 修改代码数组 `m_con_arr_I16PlossCoeff` 中的 `delta_p` 值进行校准
|
||
|
||
|
||
|
||
# 2 数据分析方法
|
||
|
||
## 2.1 QFOD 数据分析
|
||
|
||
### 2.1.1 阈值计算
|
||
|
||
1. 从 Log 提取两种场景的 ΔQ:
|
||
- 场景 A(纯手机):ΔQ = 25(最大值)
|
||
- 场景 B(手机+异物):ΔQ = 40 (最小值)
|
||
2. 计算阈值:Threshold = (25 + 40) / 2 = 32
|
||
|
||
### 2.1.2 分析步骤
|
||
|
||
1. 提取日志中 `#Q` 开头的行
|
||
2. 绘制 ΔQ 时序曲线,叠加 Y=Threshold 水平线
|
||
3. 验证余量:纯手机最高点 vs 阈值、有异物最低点 vs 阈值
|
||
|
||
## 2.2 Ploss FOD 数据分析
|
||
|
||
### 2.2.1 日志解析要点
|
||
|
||
**日志行识别:** 以 `FOD->` 开头的行
|
||
|
||
**关键字段提取(按位置索引):**
|
||
|
||
| 位置 | 字段 | 示例值 | 用途 |
|
||
| ---- | ---- | ------ | ---- |
|
||
| 第 6 列 | Calculated Loss (Ploss) | -634 | 核心监控值,负数表示安全 |
|
||
| 第 7 列 | Threshold | 1000 | 当前功率段的阈值 |
|
||
| 第 2 列 | Rx Power | 10690 | 用于查表确定阈值 |
|
||
| 第 3 列 | Tx Power | 12013 | 用于验证计算 |
|
||
|
||
### 2.2.2 动态阈值表 (Table 4)
|
||
|
||
阈值根据接收功率动态查表:
|
||
|
||
| 接收功率 (Rx Power) | 阈值 (Threshold) | 备注 |
|
||
| ----------------- | -------------- | ---- |
|
||
| 0 ~ 5W | 350 mW | 低功率下最敏感 |
|
||
| 5 ~ 10W | 500 mW | |
|
||
| 10 ~ 15W | 750 mW | |
|
||
| 15 ~ 30W | 1000 mW | 示例 Log 处于此区间 |
|
||
| 30 ~ 50W | 1250 mW | 高功率允许更多损耗 |
|
||
|
||
> **注意**:数据分析时必须先读取 Rx Power,查表获得正确阈值,再与计算值对比。
|
||
|
||
### 2.2.3 计算公式验证
|
||
|
||
**能量守恒公式:**
|
||
```
|
||
Ploss = Tx_Power - Rx_Power - System_Loss - delta_p
|
||
```
|
||
|
||
**等价表达:**
|
||
```
|
||
delta_p + Ploss = Tx_Power - Rx_Power - System_Loss
|
||
```
|
||
|
||
**验证示例:**
|
||
- Tx Power = 12013
|
||
- Rx Power = 10690
|
||
- System Loss (pow_loss) = 2005
|
||
- delta_p = 2200
|
||
- 计算:12013 - 10690 - 2005 - 2200 = -2882 ✓
|
||
|
||
### 2.2.4 判定逻辑
|
||
|
||
**FOD 触发条件:**
|
||
```
|
||
if (Ploss > Threshold) → 计数器累积
|
||
if (Count > Limit) → 触发 FOD 报警,停止充电
|
||
```
|
||
|
||
**安全余量监控:**
|
||
```
|
||
Margin = Threshold - Ploss
|
||
```
|
||
|
||
示例:`1000 - (-634) = 1634 mW` 余量充足
|
||
|
||
### 2.2.5 分析流程
|
||
|
||
1. **解析 (Parse)**:读取 Log 文件,找到 `FOD->` 开头的行
|
||
2. **提取 (Extract)**:
|
||
- 抓取第 6 列(计算损耗,如 -634)
|
||
- 抓取第 7 列(当前阈值,如 1000)
|
||
- 抓取 Rx Power 用于查表校验
|
||
3. **计算 (Calculate)**:
|
||
- 验证公式:`Loss = Tx_Power - Rx_Power - System_Loss - delta_p`
|
||
- 计算余量:`Margin = Threshold - Loss`
|
||
4. **可视化 (Visualize)**:
|
||
- 画横线代表阈值 (Threshold)
|
||
- 画波动线代表实时损耗 (Ploss)
|
||
- 若波动线突破阈值线,标记为 **FOD Event**
|
||
5. **调试 (Tune)**:
|
||
- 若 Ploss 频繁跳动或变正数(如 800),说明 delta_p 设置不准
|
||
- 调整 delta_p 使曲线回归安全区(负值区)
|
||
|
||
# 3 QA :
|