32 lines
931 B
Markdown
32 lines
931 B
Markdown
# IEC-101 帧搜索方案(修订)
|
||
|
||
## 设计
|
||
|
||
在现有 `self_ptl_search_iec_frame()` 中增加 IEC-101 搜索分支,**由上到下串行匹配,命中即退出**:
|
||
|
||
```
|
||
self_ptl_search_iec_frame(p_data, len, p_pos, p_valid_len):
|
||
for i in 0..len:
|
||
① 尝试 IEC-101 短帧 (0x10)
|
||
0x10 | ctrl | addr(LSB) | [addr(MSB)] | cks | 0x16
|
||
→ 5或6字节,校验 cks = data 累加和
|
||
② 尝试 IEC-101 长帧 (0x68)
|
||
0x68 | len | len | 0x68 | ctrl | addr(2B) | data.. | cks | 0x16
|
||
→ 验证 len重复 + 第4位0x68 + tail 0x16 + cks
|
||
③ 尝试 IEC-104 帧 (0x68) — 保持现有逻辑
|
||
0x68 | len | ctrl1..4 | asdu..
|
||
排除:若满足 101 长帧特征则跳过(len重复+第4位=0x68)
|
||
```
|
||
|
||
## 涉及文件
|
||
|
||
| 文件 | 改动 |
|
||
|------|------|
|
||
| `self_ptl.cpp` | 修改 `self_ptl_search_iec_frame()` 增加 101 分支 |
|
||
|
||
## 编译验证
|
||
|
||
```bash
|
||
./release/build.sh
|
||
```
|