docs: V2.0.0 培训手册

V2 vs V1 新增内容:
- 波动测试模式 (B4) 及完整流程说明
- 线圈参数管理 + 模拟车辆参数管理
- 工装配置关联线圈/车辆 + 新设备配置检查清单
- 测试信息三视图 + ECharts 图表
- 精确时间筛选(日期+时分秒)
- 自动化测试间隔/超时配置
- Admin 数据删除、继电器状态重构
- 全量操作日志覆盖
This commit is contained in:
wangfq
2026-06-08 12:04:50 +08:00
parent 78ff0a6c2c
commit 92c2c2b408

View File

@@ -0,0 +1,834 @@
# VD 测试工装 V2.0.0 培训手册
> **版本**: V2.0.0
> **日期**: 2026-06-08
> **作者**: wangfq
> **适用对象**: 测试工程师、生产操作员、系统管理员
---
## 目录
1. [项目概述](#1-项目概述)
2. [V2.0.0 新增功能总览](#2-v200-新增功能总览)
3. [系统架构](#3-系统架构)
4. [硬件环境](#4-硬件环境)
5. [EDC 服务](#5-edc-服务-edc_server)
6. [EDC 管理系统](#6-edc-管理系统-edc-web)
7. [通信协议](#7-通信协议)
8. [操作指南](#8-操作指南)
9. [常见问题](#9-常见问题)
10. [附录](#10-附录)
---
## 1. 项目概述
### 1.1 项目简介
**VD 测试工装**vd_test_fixture是一套车检器自动化测试系统用于**批量检测车检器Vehicle Detector的核心性能指标**。
**核心能力**:
- **灵敏度测试B2**: 检测车检器对不同信号强度的响应,含峰峰值、频率、距离、速度等指标
- **波动测试B4** 🆕: 模拟车辆往复运动,动态检测车检器在工作范围内的距离/频率/速度波动
- **产品一致性测试**: 批量产品之间的性能差异分析
- **自动化测试**: 支持设定间隔时间和超时时间,自动循环执行,实时进度反馈
- **工装配置管理**: 支持 DG430 V2.0.x 协议的设备参数配置、版本查询、出厂初始化,可关联线圈参数和模拟车辆参数 🆕
- **数据可视化** 🆕: 测试数据图表视图ECharts支持多 Y 轴、缩放、图片导出
### 1.2 术语说明
| 术语 | 全称 | 说明 |
|------|------|------|
| **EDC** | Edge Data Center | 边缘数据中心,系统的核心服务 |
| **DNT** | Data Network Terminal | 联网终端PGLC连接设备与 EDC |
| **DG430** | — | 地感测试工装硬件,执行实际测试动作 |
| **VD** | Vehicle Detector | 车检器(被测设备) |
| **SerialNet** | Serial Network | 串口网络透传,通过 UDP 将指令转发到 DG430 串口 |
| **B2** | — | 灵敏度测试数据来源标识0xB2 指令上报) |
| **B4** | — | 波动测试数据来源标识0xB4 指令上报) 🆕 |
| **线圈参数** | Coil Info | 地感线圈的物理参数(形状、尺寸、电感量、圈数等) 🆕 |
| **模拟车辆** | Simulate Car | 用于模拟车辆通过的金属板参数(形状、尺寸、材质) 🆕 |
### 1.3 V2.0.0 vs V1.0 对比
| 功能 | V1.0 | V2.0.0 |
|------|:----:|:------:|
| 灵敏度测试 | ✓ | ✓ |
| 波动测试 | ✗ | ✓ **新增** |
| 测试信息查询 | 单表显示 | 三视图标签页 + ECharts 图表 |
| 工装配置 | 基本参数 | +波动参数 +线圈/模拟车辆关联 |
| 线圈参数管理 | ✗ | ✓ **新增** |
| 模拟车辆参数管理 | ✗ | ✓ **新增** |
| 时间筛选 | 仅日期范围 | 日期 + 时分秒 |
| Admin 数据删除 | ✗ | ✓ **新增** |
| 继电器状态 | 文本 | 编码值 + 解码显示 + 图表系列 |
| 自动化测试 | 固定间隔 | 可配置间隔/超时 |
| 操作日志 | 部分 | 全覆盖(创建/更新/删除) |
---
## 2. V2.0.0 新增功能总览
### 2.1 波动测试模式
V2.0.0 最重要的新增功能。在原有灵敏度测试B2基础上增加了**波动测试模式B4**。
**测试原理**: 工装控制电机驱动金属板(模拟车辆)在地感线圈上方往复运动,通过车检器在不同位置的工作频率、距离、速度等指标变化,评估车检器性能的稳定性。
**与灵敏度测试的区别**:
| 对比维度 | 灵敏度测试 (B2) | 波动测试 (B4) |
|----------|:-------------:|:------------:|
| 运动方式 | 单次进入→离开 | 多次往复运动 |
| 测试指标 | 峰峰值、进入/离开频率、距离、速度 | 工作频率、当前距离、速度、剩余次数、最近/最远距离 |
| 完成判定 | 一次进入离开 | 达到设定来回次数 |
| 继电器 | 存在+脉冲 | 实时变化 |
### 2.2 线圈参数管理
新增线圈参数管理功能,用于记录和维护测试环境中的地感线圈信息:
- 线圈编号、名称
- 电感量μH
- 形状(矩形/圆形),尺寸(长宽/半径 cm
- 圈数、电阻(Ω)
- 材质(铜线等)、备注
线圈参数在工装配置页可关联到具体工装,测试数据中自动记录关联的线圈信息,为后续数据分析提供环境参考。
### 2.3 模拟车辆参数管理
管理用于模拟车辆通过的金属板参数:
- 模拟编号、名称
- 形状(矩形/圆形),尺寸(长宽/半径 cm
- 材质(铁板、合金等)、备注
模拟车辆参数同样可关联到工装配置,测试记录时自动写入。
### 2.4 测试信息三视图 + 图表
测试信息查询页面拆分为三个标签页:
- **全部数据**: 所有测试记录汇总视图
- **灵敏度测试0xB2**: B2 专用列布局(含故障信息、继电器、进入/离开频率等)
- **波动测试0xB4**: B4 专用列布局(含工作频率、当前距离、剩余次数、最近/最远距离等)
**图表视图**: 点击「📈 图表」按钮可切换为 ECharts 交互式图表,支持:
- B2峰峰值、频率4条、距离2条、速度2条+ 继电器状态
- B4工作频率、当前距离、速度、最近/最远距离、进入/离开高度 + 继电器状态
- 四 Y 轴独立刻度
- dataZoom 滑块缩放
- 图例切换显隐
- 2x 高清图片导出
### 2.5 精确时间筛选
搜索栏时间筛选从"仅日期"升级为"日期 + 时分秒"
- 只填日期不填时间 → 行为不变date_to 自动取 23:59:59
- 日期 + 时间都填 → 精确到秒过滤
---
## 3. 系统架构
### 3.1 整体架构图
```
┌──────────────────┐ 浏览器 HTTP
│ edc-web │ ◄────────────────────── 操作人员
│ Flask (Flask-Login) │
│ 前端管理界面 │
└────────┬─────────┘
│ pymysql (同步)
┌──────────────────┐
│ MySQL │
│ 数据库: edc │
│ (共享存储) │
└────────┬─────────┘
│ aiomysql (异步)
┌──────────────────┐ UDP :4900 ┌──────────────┐ RS485/TTL ┌────────────┐
│ edc_server │ ◄──────────────► │ PGLC 联网终端 │ ◄───────────► │ DG430 工装 │
│ Python/uvloop │ SerialNet 透传 │ (DNT) │ 串口协议 │ (测试硬件) │
│ │ └──────────────┘ └──────┬─────┘
│ UDP :5500/:5505 │ │
│ TCP :5550 │ ▼
└──────────────────┘ ┌──────────────┐
│ 车检器(VD) │
│ (被测设备) │
└──────────────┘
```
### 3.2 通信链路
```
操作员浏览器 → edc-web (Flask, port 5000) → MySQL → edc_server (asyncio) → DNT → DG430 → 车检器
MySQL (共享)
```
**关键点**:
- edc_server 和 edc-web 共享同一 MySQL 数据库
- edc_server 使用 aiomysql (异步)edc-web 使用 pymysql (同步),互不冲突
- 前端通过 edc-web 的 REST API 下发指令,实际执行由 edc_server 的轮询任务完成
### 3.3 端口分配
| 端口 | 方向 | 协议 | 说明 |
|------|------|------|------|
| **5500** | 监听 | UDP | EDC 设备发现 / 心跳 |
| **5505** | 监听 | UDP | EDC 消息监听 |
| **5550** | 监听 | TCP | EDC 时间同步 / 数据上报 / 串口透传 |
| **4900** | 发送 | UDP | 向设备发送 SerialNet 透传指令 |
| **5550** | 发送 | TCP | 向设备发送 TCP 数据 |
| **5000** | 监听 | HTTP | edc-web Flask 管理界面 |
### 3.4 项目结构
```
vd_test_fixture/
├── edc_server/ # EDC 边缘数据中心(后端服务)
│ └── src/
│ ├── server.py # UDP/TCP 异步网络服务
│ ├── handlers.py # 业务处理 + parse_loop/serialnet_loop 轮询
│ ├── models.py # 数据库 DDL + aiomysql CRUD
│ ├── dg430.py # DG430 二进制协议解析 (B2/B4/4C/4B)
│ └── protocol.py # PGLC JSON 协议解析
├── edc-web/ # Flask Web 管理系统(前端)
│ └── app/
│ ├── models.py # pymysql 同步数据库操作
│ ├── auth.py # Flask-Login 认证
│ ├── routes/ # 页面路由 (fixture/test_data/test_op/devices/users/logs)
│ ├── templates/ # Jinja2 HTML 模板
│ │ ├── fixture.html # 工装配置页(含线圈/车辆关联)
│ │ ├── test_data.html # 测试信息查询页(三视图 + 图表)
│ │ ├── test_op.html # 测试操作页(自动化 + 波动数据显示)
│ │ ├── coil_info.html # 线圈参数管理页 🆕
│ │ ├── simulate_car.html # 模拟车辆管理页 🆕
│ │ └── vehicle_base_test.html # 车检器基准管理页
│ └── static/
│ ├── css/style.css
│ └── js/
│ ├── fixture.js # 工装配 JS线圈/车辆选择联动)
│ ├── test_data.js # 测试信息 JS三视图/图表/分页)
│ ├── coil_info.js # 线圈管理 JS 🆕
│ ├── simulate_car.js # 模拟车辆管理 JS 🆕
│ └── ...
└── docs/ # 协议文档 + 培训手册
```
---
## 4. 硬件环境
### 4.1 DG430 地感测试工装
DG430 是执行测试的核心硬件,负责控制电机驱动模拟车辆经过地感线圈,并采集车检器的响应数据。
**接口**:
| 接口 | 连接 | 说明 |
|------|------|------|
| IN1/GND | 地感存在信号 | 检测线圈是否有车 |
| IN2/GND | 地感脉冲信号 | 检测脉冲继电器 |
| IN3/COM | 按钮 | 按下开始测试 |
| IN4/COM | 按钮 | 按下复原位置 |
| PU+/PU-/DR+/DR-/MF+/MF- | 电机驱动器 | 控制电机前进/后退 |
| +5V/GND/NO/NC | 限位开关 | 有信号电机停转 |
| 485A/485B | RS485 | 接 PGLC 联网终端 |
| GND/LP | 地感线圈 | 模拟车辆通过 |
| SW3 | 激光探头 | 检测进入/离开 |
**拨码开关**:
- DIP1=OFF, DIP2=OFF → 测试 132 系列地感
- DIP1=ON, DIP2=OFF → 测试 110 系列地感
**声音提示**:
| 声音 | 含义 |
|------|------|
| 2 声 | 工作频率/峰峰值异常 |
| 3 声 | 灵敏度异常 |
| 4 声 | 灵敏度提升异常 (132 DIP5) |
| 5 声 | 非离开脉冲 |
| 6 声 | 脉冲继电器无输入 |
### 4.2 PGLC 联网终端 (DNT)
PGLC 终端是连接 EDC 服务和 DG430 工装的**网络桥接设备**:
- 通过 **RS485/TTL 串口** 连接 DG430 工装
- 通过 **TCP/UDP 网络** 连接 EDC 服务
- 负责串口数据与网络数据的双向透传
### 4.3 测试环境准备 🆕
V2.0.0 新增了测试环境记录能力。在实际测试中,需要准备的硬件包括:
1. **地感线圈**: 安装在地面的感应线圈,需记录形状/尺寸/电感量/圈数等参数
2. **模拟车辆(金属板)**: 安装在工装电机上的金属板,用于模拟车辆通过线圈
以上两类参数需要在 edc-web 中预先录入,并在工装配置页关联到具体设备。
---
## 5. EDC 服务 (edc_server)
### 5.1 功能概述
EDC 服务是整个系统的**数据中枢**,负责:
1. **设备管理**: 发现、注册、心跳检测、在线状态维护
2. **数据采集**: 接收设备上报的测试数据、原始传感数据
3. **协议解析**: 解析 DG430 二进制协议提取测试结果B2 + B4
4. **指令透传**: SerialNet 透传机制,将前端指令下发给设备
5. **后台轮询**: 自动化测试调度、超时检测、状态流转
### 5.2 启动方式
```bash
cd edc_server
source .venv/bin/activate
# 配置环境变量
export EDC_MYSQL_HOST=127.0.0.1
export EDC_MYSQL_USER=dg
export EDC_MYSQL_PASSWORD=123456
export EDC_MYSQL_DB=edc
# 启动
python run.py
```
> ⚠️ 启动时自动执行数据库表创建和 ALTER TABLE 迁移,无需手动建表。
### 5.3 数据库表结构
| 表名 | 用途 | 关键字段 |
|------|------|----------|
| `dnt_info` | 联网终端信息 | serial(唯一), ip, state(在线/离线) |
| `tb_state_tst` | 设备测试状态 | dnt_id, test_mode, data_source, ppvalue, idle_freq, …, coil_id, simulate_car_id 🆕 |
| `tb_serialnet` | 透传发送队列 | dnt_id, send_pkg, rcv_pkg, state(0未发→1已发→2完成→3超时) |
| `tb_fixture_param` | 工装测试参数 | dnt_id(UNIQUE), DevType, TestMode, FarTol…, coil_id, simulate_car_id 🆕 |
| `tb_coil_info` 🆕 | 线圈参数 | coil_num, name, induct, shape, length/width/radius, turns, resistance, material |
| `tb_simulate_car` 🆕 | 模拟车辆参数 | simulate_num, name, shape, length/width/radius, material |
| `tb_vechicle_base_test` | 车检器基准参数 | type_num(编码), SensMin/SensMax, FreMin/FreMax, PeakMin/PeakMax |
| `tb_user` | 用户账号 | username, password_hash, role(admin/operator) |
| `tb_log` | 操作日志 | user_id, action_type, target, detail, result, ip |
| `tb_collect_{DeviceID}` | 设备原始数据采集表 | dat_type, raw_data, state(0未处理/1已处理) |
### 5.4 关键流程
#### 设备注册流程
```
设备上电 → TCP 时间同步 → UDP 上报 Count_Off → EDC 检查 serial
├─ 已注册 → 更新 IP/网关 + last_login
└─ 未注册 → 插入 dnt_info + 创建 tb_collect_{DeviceID}
```
#### SerialNet 透传流程
```
前端 → edc-web → INSERT tb_serialnet (state=0)
→ serialnet_loop 轮询 → UDP 发送到设备 (state=1)
→ 设备回复 TSReport(dat_type=8 或 9)
→ parse_loop 解析 → UPDATE tb_serialnet (state=2, rcv_pkg=...)
→ 前端轮询 api/fixture/serialnet/{id} → 显示结果
```
#### 测试数据写入流程 🆕
```
parse_loop 解析 B2/B4 数据 → 查询 tb_fixture_param
├─ B2: 提取 coil_id, simulate_car_id → 写入 tb_state_tst
└─ B4: 提取 coil_id, simulate_car_id + DevType → 写入 tb_state_tst (含 sub_type, str_type)
```
---
## 6. EDC 管理系统 (edc-web)
### 6.1 功能概述
edc-web 是基于 Flask 的 Web 管理系统,提供图形化操作界面。
**功能模块**:
| 模块 | URL | 功能 | V2 变化 |
|------|-----|------|:------:|
| **登录** | `/login` | 用户认证 (Flask-Login) | — |
| **设备管理** | `/` | 联网终端列表、在线状态、名称修改 | — |
| **测试操作** | `/test-op/<dnt_id>` | 单次测试、手动控制、自动化测试、波动数据显示 | 🆕 新增波动测试区 |
| **测试信息** | `/test-data` | 三视图(全部/B2/B4+ ECharts 图表 + 时间精筛 + Admin 删除 | 🆕 大幅增强 |
| **工装配置** | `/fixture/<dnt_id>` | DG430 参数配置 + 波动参数 + 线圈/车辆关联 | 🆕 新增关联 |
| **线圈参数** 🆕 | `/coil-info` | 线圈参数增删改查 | 🆕 新增 |
| **模拟车辆** 🆕 | `/simulate-car` | 模拟车辆参数增删改查 | 🆕 新增 |
| **车检器基准** | `/vehicle-base-test` | 车检器测试基准参数管理 | — |
| **用户管理** | `/users` | 账号管理 (admin only) | — |
| **操作日志** | `/logs` | 操作记录审计 | 🆕 覆盖更全 |
### 6.2 启动方式
```bash
cd edc-web
source .venv/bin/activate
# 配置环境变量(与 edc_server 相同)
export EDC_MYSQL_HOST=127.0.0.1
export EDC_MYSQL_USER=dg
export EDC_MYSQL_PASSWORD=123456
export EDC_MYSQL_DB=edc
# 启动(默认 5000 端口)
python run.py
```
**首次启动**: 自动创建默认管理员 `admin / admin123`
### 6.3 用户角色
| 角色 | 权限 |
|------|------|
| **admin** | 全部功能:设备管理、测试操作、数据删除、用户管理、日志查看、参数管理 |
| **operator** | 受限功能:设备管理、测试操作、数据查看(无删除权限) |
---
## 7. 通信协议
### 7.1 DG430 串口协议
DG430 与 PGLC 终端之间的通信协议,采用**一问一答**方式。
**数据包格式** (7 字节):
```
┌──────┬──────┬──────┬──────┬──────┬──────┬──────┐
│ STX │ ADDR │ LEN │ CMD │ DATA │ XOR │ SUM │
│ 0x7F │ 1B │ 1B │ 1B │ LEN-1│ 1B │ 1B │
└──────┴──────┴──────┴──────┴──────┴──────┴──────┘
```
#### 测试操作指令
| 指令 | CMD | Hex (addr=0x01) | 说明 |
|------|-----|-----------------|------|
| 开始测试 | B0 | `7F 81 01 B0 30 32` | 启动一次测试流程 |
| 测试复原 | B1 | `7F 81 01 B1 31 33` | 恢复到初始位置 |
| 电机前进 | BA | `7F 81 01 BA 3A 3C` | 电机正转 |
| 电机后退 | BB | `7F 81 01 BB 3B 3D` | 电机反转 |
| 电机停止 | BC | `7F 81 01 BC 3C 3E` | 电机停止 |
#### 工装配置指令 (V2.0.x)
| 指令 | CMD | 说明 |
|------|-----|------|
| 获取版本号 | 4A | 查询 DG430 固件和硬件版本 |
| 配置测试参数 | 4B | 下发工装参数(含波动参数),动态构造 |
| 查询测试参数 | 4C | 查询当前全部参数 |
| 出厂初始化 | 4D | 恢复出厂设置 |
| 设备复位 | 4E | 重启 DG430 设备 |
> ⚠️ **端序注意**: B2 上报和 0x4B/0x4C 的 2 字节字段**统一用小端** (`_le16`)。
#### B2 状态上报(灵敏度测试)
| 字段 | 说明 | 范围 |
|------|------|------|
| State | 设备状态 | 正常/故障 |
| Mode | 工作模式 | — |
| Sens | 灵敏度 | 实际值 |
| PPValue | 峰峰值 | mV |
| IdleFreq | 开始工作频率 | kHz |
| EnterFreq | 进入工作频率 | kHz |
| EnterDist | 进入距离 | mm |
| ExitDist | 离开距离 | mm |
| EnterSpeed | 进入速度 | dm/s |
| ExitSpeed | 离开速度 | dm/s |
#### B4 状态上报(波动测试)🆕
| 字段 | 说明 | 范围 |
|------|------|------|
| RemainCount | 剩余波动次数 | — |
| WorkFreq | 当前工作频率 | Hz |
| CurrDist | 当前距离 | mm |
| Speed | 当前速度 | dm/s |
| NearDist | 最近距离 | mm |
| FarDist | 最远距离 | mm |
| EnterDist | 进入高度 | mm |
| LeaveDist | 离开高度 | mm |
| RelayOut | 继电器输出 | 0x00~0x03 |
#### 0x4B 配置参数结构 (V2.0.3)
| 字段 | 字节 | 说明 |
|------|:---:|------|
| Addr | 1 | 工装设备地址 |
| DevType | 1 | 被检设备型号类型编码1=PD132, 2=DLD110 |
| TestMode | 1 | 0=灵敏度测试, 1=波动测试 |
| RestDis | 1 | 复位距离 cm |
| MinusDis | 1 | 皮距/开始距离 cm |
| SensMin/Max | 2+2 LE | 灵敏度范围 |
| FreMin/Max | 2+2 LE | 频率范围 Hz |
| PeakMin/Max | 2+2 LE | 峰峰值范围 |
| FarTol | 1 | 最远容差 cm 🆕 |
| NearTol | 1 | 最近容差 cm 🆕 |
| StepTol | 1 | 步进容差 cm 🆕 |
| BackForth | 1 | 来回次数 🆕 |
| NearStay | 2 LE | 最近停留时间 ms 🆕 |
| FarStay | 2 LE | 最远停留时间 ms 🆕 |
### 7.2 PGLC 网络接口协议
EDC 服务与 PGLC 终端之间的 JSON 协议。
| Method | 方向 | 说明 |
|--------|------|------|
| `TimeStamp` | 设备→EDC | 时间同步请求 |
| `Count_Off` | 设备→EDC | 设备注册/发现 |
| `TSReport` | 设备→EDC | 子设备数据上报 |
| `SerialNet` | EDC→设备 | 串口透传指令下发 |
| `Heartbeat` | 设备→EDC | 心跳包 |
---
## 8. 操作指南
### 8.1 登录系统
1. 浏览器访问 `http://<服务器IP>:5000/login`
2. 默认账号: `admin` / `admin123`
3. 登录后跳转到设备管理页
### 8.2 设备管理
**查看设备列表**:
- 首页展示所有联网终端
- 显示序列号、名称、IP、在线状态
**修改设备名称**:
- 点击设备行的名称编辑图标
- 输入新名称后提交保存
**进入测试**: 点击设备行右侧的「测试」按钮
**进入工装配置**: 点击「工装配」按钮 🆕
### 8.3 工装配置(重要:新设备必做)🆕
> ⚠️ **新设备首次使用,必须先完成工装配置并保存到数据库,然后才能进行测试。**
#### 8.3.1 配置前置准备
1. 进入「线圈参数管理」页面(`/coil-info`),录入测试使用的线圈参数
2. 进入「模拟车辆参数管理」页面(`/simulate-car`),录入金属板参数
3. 进入「车检器测试基准参数管理」页面(`/vehicle-base-test`),录入车检器型号基准
#### 8.3.2 工装参数配置
从设备页面点击「工装配」进入配置页:
**左侧 - 工装测试参数**:
1. 设置**工装设备地址**(默认 1
2. 选择**测试模式**:灵敏度测试(0) 或 波动测试(1)
3. 设置复位距离、皮距
4. 从下拉框选择**被检设备型号**(自动填充灵敏度/频率/峰峰值范围)
5. 如选择波动测试模式,还需配置 6 个波动参数:
- 最远容差 / 最近容差 / 步进容差cm
- 来回次数
- 最近停留时间 / 最远停留时间ms
**右侧 - 关联参数**:
6. 在「关联线圈参数」下拉框选择使用的线圈
7. 在「关联模拟车辆参数」下拉框选择使用的金属板
#### 8.3.3 保存配置
点击 **「💾 保存」** 按钮将参数保存到数据库。
> 保存会自动记录操作日志。线圈和模拟车辆关联**不需要下发透传到工装硬件**,仅记录在数据库中用于测试环境追溯。
#### 8.3.4 其他工装操作
| 按钮 | 指令 | 说明 |
|------|------|------|
| 📋 获取版本号 | 0x4A | 查询 DG430 固件/硬件版本 |
| 🔍 查询参数 | 0x4C | 从设备读取当前参数(结果自动更新表单) |
| 📤 配置参数 | 0x4B | 下发配置到 DG430 设备(同时自动保存到数据库) |
| 🏭 出厂初始化 | 0x4D | 恢复 DG430 出厂设置 |
| 🔄 设备复位 | 0x4E | 重启 DG430 设备 |
**通信日志**: 每次操作后自动显示 hex 收发记录和结果。
### 8.4 手动测试操作
在测试操作页面(点击设备行的「测试」按钮):
1. **单次测试**: 点击「开始测试」按钮DG430 执行一次完整测试流程
2. **手动控制** (仅 admin):
- 测试复原: 恢复初始位置
- 电机前进/后退/停止: 手动控制电机
3. **实时数据**: 页面自动显示设备上报的最新测试数据
### 8.5 自动化测试 🆕
V2.0.0 自动化测试支持可配置的间隔和超时:
1. 设置**间隔时间**(秒,默认 100 表示无间隔连续测试)
2. 设置**超时时间**(秒,默认 5单次测试最大等待时间
3. 填入**测试次数**
4. 点击「开始」按钮
- 进度条显示 `已完成/总数`
- 成功/失败计数实时更新
- 平均值区域持续刷新
- 波动测试数据区实时显示 B4 上报 🆕
5. 如需中途停止,点击「结束」按钮
**自动化流程**:
```
开始 → INSERT tb_serialnet (0xB0, state=0)
→ serialnet_loop 发送 UDP (state=1)
→ 等待设备 B2/B4 上报
→ parse_loop 解析存入 tb_state_tst含线圈/车辆关联)
→ 匹配 serialnet 记录 (state=2)
→ 前端轮询进度 → 等待间隔 → 自动发送下一次 0xB0
→ ...重复...
→ 全部完成 / 超时(fail) / 手动结束
```
**超时处理**: 单次测试超时计入失败,跳过间隔时间立即发送下一条。连续超时不阻塞。
### 8.6 测试数据查询 🆕
#### 8.6.1 三视图切换
进入「测试信息」页面,顶部三个标签页:
- **全部数据**: 显示所有测试记录(灵敏度+波动),通用列布局
- **灵敏度测试 (0xB2)**: 仅显示 B2 来源数据,含故障信息、继电器、进入/离开频率等专属列
- **波动测试 (0xB4)**: 仅显示 B4 来源数据,含工作频率、当前距离、剩余次数等专属列
#### 8.6.2 搜索筛选
| 筛选项 | 说明 |
|--------|------|
| 设备编码 | 模糊搜索 serial |
| 时间范围 | 日期 + 时分秒(可选),只填日期不填时间则 date_to 自动取 23:59:59 |
| 每页 | 20 / 50 / 100 条 |
「测试环境」列显示关联的线圈编号和模拟车辆编号。 🆕
#### 8.6.3 图表视图
点击「📈 图表」按钮切换为 ECharts 交互式图表:
- **B2 图表**: 峰峰值(V)、开始/进入/离开频率(Hz)、进入/离开距离(mm)、进入/离开速度(dm/s) + 继电器状态
- **B4 图表**: 工作频率(Hz)、当前距离(mm)、速度(dm/s)、最近/最远距离(mm)、进入/离开高度(mm) + 继电器状态
- **操作**: dataZoom 缩放、图例点击显隐、右键保存为 2x PNG
> 图表切换到「全部」视图时自动跳转到 B2 视图。
#### 8.6.4 导出 CSV
点击「导出 CSV」按钮下载当前筛选条件下的全部数据为 CSV 文件。
#### 8.6.5 Admin 数据删除 🆕
仅 admin 可见「🗑 删除」按钮:
1. 设置筛选条件(设备编码 / 时间范围 / 数据来源)
2. 点击「🗑 删除」
3. 确认框显示筛选条件,确认后执行删除
4. 删除操作记录到 tb_log
5. ⚠️ 无筛选条件时不删除任何数据
### 8.7 参数管理 🆕
#### 线圈参数管理 (`/coil-info`)
支持线圈参数的全生命周期管理:
- **新增**: 填写线圈编号、名称、电感量、形状、尺寸、圈数、电阻、材质、备注
- **编辑**: 点击表格行的「编辑」按钮修改
- **删除**: 点击「删除」按钮(需确认)
- **搜索**: 按编号或名称模糊搜索
- 所有操作自动记录到操作日志
#### 模拟车辆参数管理 (`/simulate-car`)
支持模拟车辆(金属板)参数的全生命周期管理:
- 模拟编号、名称、形状、尺寸、材质、备注
- 操作方式和线圈管理一致
#### 车检器测试基准管理 (`/vehicle-base-test`)
管理不同型号车检器的测试基准参数:
- 类型编码、型号名称
- 灵敏度/频率/峰峰值范围
- 备注
### 8.8 用户管理 (admin only)
1. 点击「用户管理」菜单
2. 功能: 添加新用户、修改角色、删除用户
### 8.9 操作日志
1. 点击「操作日志」菜单
2. V2.0.0 覆盖更全的操作类型:
- `login` / `logout`: 登录/登出
- `command`: 指令下发(工装配/测试操作)
- `create` / `update` / `delete`: 参数管理操作(线圈/车辆/基准/工装)
---
## 9. 常见问题
### 9.1 新设备如何开始测试?
1. 确保设备在线(设备列表显示"在线"
2. **录入线圈参数**`/coil-info` 添加测试使用的线圈
3. **录入模拟车辆参数**`/simulate-car` 添加金属板参数
4. **录入车检器基准**`/vehicle-base-test` 添加车检器型号
5. **配置工装参数** → 进入工装配页,设置参数、关联线圈和车辆,点击「💾 保存」
6. 进入测试操作页开始测试
### 9.2 波动测试和灵敏度测试有什么区别?
| 维度 | 灵敏度测试 | 波动测试 |
|------|:--------:|:------:|
| 目的 | 检测车检器灵敏度、峰峰值等静态指标 | 检测车检器在工作范围内的动态稳定性 |
| 运动方式 | 单次进入→离开 | 多次往复运动 |
| 数据标识 | data_source=B2 | data_source=B4 |
| 配置 | TestMode=0 | TestMode=1需配波动参数 |
| 查询 | 选「灵敏度测试」标签 | 选「波动测试」标签 |
### 9.3 线圈/模拟车辆关联有什么用?
线圈和模拟车辆关联**不会下发到硬件**,仅记录在数据库中。当测试记录写入 `tb_state_tst` 时,会自动带上当时的线圈和车辆信息,方便后续数据分析时了解测试环境(例如"某批次测试用了哪种线圈、哪种金属板")。
### 9.4 设备离线
**现象**: 设备列表显示"离线"
**排查**:
1. 检查设备供电是否正常
2. 检查网络连接ping 设备 IP
3. 查看 edc_server 日志,确认是否收到心跳
4. 设备超时阈值: 默认 120 秒(`EDC_DEVICE_TIMEOUT`
### 9.5 测试超时
**现象**: 自动化测试中连续超时
**排查**:
1. 检查 DG430 工装是否正常上电
2. 检查 RS485 连接是否正确
3. 在工装配页发送「获取设备版本号」(0x4A),验证通信链路
4. 可调整超时时间(默认 5 秒)
### 9.6 速度显示异常
**现象**: 速度值看起来偏大 10 倍
**原因**: DG430 协议存储的是 dm/s分米/秒),系统已自动转换为 m/s米/秒)。如果发现显示值异常,检查转换逻辑。
### 9.7 时间显示偏移 8 小时
**现象**: 测试数据时间比实际晚 8 小时
**已修复**: V2.0.0 已修复 Flask jsonify 的 "GMT" 后缀导致的时区偏移问题所有时间按服务器本地时间UTC+8显示。
---
## 10. 附录
### A. DG430 指令速查
```
┌──────────────────────────────────────────────────────────────────┐
│ DG430 指令速查表 │
├────────┬──────────┬──────────────────────────────────────────────┤
│ CMD │ 指令 │ Hex (addr=0x01) │
├────────┼──────────┼──────────────────────────────────────────────┤
│ 0xB0 │ 开始测试 │ 7F 81 01 B0 30 32 │
│ 0xB1 │ 测试复原 │ 7F 81 01 B1 31 33 │
│ 0xBA │ 电机前进 │ 7F 81 01 BA 3A 3C │
│ 0xBB │ 电机后退 │ 7F 81 01 BB 3B 3D │
│ 0xBC │ 电机停止 │ 7F 81 01 BC 3C 3E │
│ 0x4A │ 版本查询 │ 7F 81 01 4A CA CC │
│ 0x4B │ 配置参数 │ 动态构造(含波动参数) │
│ 0x4C │ 查询参数 │ 7F 81 01 4C CC CE │
│ 0x4D │ 出厂初始化 │ 7F 81 01 4D CD CF │
│ 0x4E │ 设备复位 │ 7F 81 01 4E CE D0 │
└────────┴──────────┴──────────────────────────────────────────────┘
```
### B. 数据库快速参考
```sql
-- 查看在线设备
SELECT serial, name, ip, state, last_login FROM dnt_info WHERE state=1;
-- 查看最近灵敏度测试数据
SELECT s.*, d.serial
FROM tb_state_tst s JOIN dnt_info d ON s.dnt_id = d.id
WHERE s.data_source='B2' ORDER BY s.create_time DESC LIMIT 20;
-- 查看最近波动测试数据
SELECT s.*, d.serial
FROM tb_state_tst s JOIN dnt_info d ON s.dnt_id = d.id
WHERE s.data_source='B4' ORDER BY s.create_time DESC LIMIT 20;
-- 查看测试环境(线圈+车辆关联)
SELECT t.create_time, d.serial, c.coil_num, c.name as coil_name,
sc.simulate_num, sc.name as car_name
FROM tb_state_tst t
JOIN dnt_info d ON t.dnt_id = d.id
LEFT JOIN tb_coil_info c ON t.coil_id = c.id
LEFT JOIN tb_simulate_car sc ON t.simulate_car_id = sc.id
ORDER BY t.create_time DESC LIMIT 20;
-- 查看待发送指令
SELECT * FROM tb_serialnet WHERE state=0;
-- 查看操作日志
SELECT l.*, u.username
FROM tb_log l JOIN tb_user u ON l.user_id = u.id
ORDER BY l.create_time DESC LIMIT 50;
```
### C. 环境变量速查
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `EDC_MYSQL_HOST` | 127.0.0.1 | MySQL 地址 |
| `EDC_MYSQL_PORT` | 3306 | MySQL 端口 |
| `EDC_MYSQL_USER` | dg | 数据库用户 |
| `EDC_MYSQL_PASSWORD` | 123456 | 数据库密码 |
| `EDC_MYSQL_DB` | edc | 数据库名 |
| `EDC_UDP_PORT` | 5500 | UDP 设备发现 |
| `EDC_UDP_MSG_PORT` | 5505 | UDP 消息监听 |
| `EDC_TCP_PORT` | 5550 | TCP 数据上报 |
| `EDC_DEVICE_UDP_PORT` | 4900 | 设备端 UDP |
| `EDC_DEVICE_TCP_PORT` | 5550 | 设备端 TCP |
| `EDC_DEVICE_TIMEOUT` | 120 | 设备离线超时(秒) |
| `EDC_PARSE_POLL_INTERVAL` | 0.5 | 解析轮询间隔(秒) |
| `EDC_LOG_LEVEL` | INFO | 日志级别 |
| `EDC_WEB_PORT` | 5000 | Web 管理端口 |
### D. 新设备配置检查清单
- [ ] 设备上电,确认在线状态
- [ ] `/coil-info` 录入线圈参数
- [ ] `/simulate-car` 录入模拟车辆参数
- [ ] `/vehicle-base-test` 录入车检器基准
- [ ] 工装配页:设置测试模式、被检设备型号
- [ ] 工装配页:关联线圈和模拟车辆
- [ ] 工装配页:点击「💾 保存」
- [ ] (可选)「📤 配置参数」下发到 DG430
- [ ] 进入测试操作页开始测试
### E. 修订历史
| 版本 | 日期 | 说明 | 作者 |
|------|------|------|------|
| V1.0 | 2026-05-31 | 初始版本(灵敏度测试 + 基本工装配置) | wangfq |
| V2.0.0 | 2026-06-08 | 新增波动测试、线圈/车辆管理、三视图图表、时间精筛、自动化增强 | wangfq |